Class MVSpatialIndex

All Implemented Interfaces:
SpatialIndex, HasSQL

public class MVSpatialIndex extends MVIndex<Spatial,Value> implements SpatialIndex
This is an index based on a MVRTreeMap.
  • Field Details

  • Constructor Details

    • MVSpatialIndex

      public MVSpatialIndex(Database db, MVTable table, int id, String indexName, IndexColumn[] columns, int uniqueColumnCount, IndexType indexType)
      Constructor.
      Parameters:
      db - the database
      table - the table instance
      id - the index id
      indexName - the index name
      columns - the indexed columns (only one geometry column allowed)
      uniqueColumnCount - count of unique columns (0 or 1)
      indexType - the index type (only spatial index)
  • Method Details

    • addRowsToBuffer

      public void addRowsToBuffer(List<Row> rows, String bufferName)
      Description copied from class: MVIndex
      Add the rows to a temporary storage (not to the index yet). The rows are sorted by the index columns. This is to more quickly build the index.
      Specified by:
      addRowsToBuffer in class MVIndex<Spatial,Value>
      Parameters:
      rows - the rows
      bufferName - the name of the temporary storage
    • addBufferedRows

      public void addBufferedRows(List<String> bufferNames)
      Description copied from class: MVIndex
      Add all the index data from the buffers to the index. The index will typically use merge sort to add the data more quickly in sorted order.
      Specified by:
      addBufferedRows in class MVIndex<Spatial,Value>
      Parameters:
      bufferNames - the names of the temporary storage
    • close

      public void close(SessionLocal session)
      Description copied from class: Index
      Close this index.
      Specified by:
      close in class Index
      Parameters:
      session - the session used to write data
    • add

      public void add(SessionLocal session, Row row)
      Description copied from class: Index
      Add a row to the index.
      Specified by:
      add in class Index
      Parameters:
      session - the session to use
      row - the row to add
    • remove

      public void remove(SessionLocal session, Row row)
      Description copied from class: Index
      Remove a row from the index.
      Specified by:
      remove in class Index
      Parameters:
      session - the session
      row - the row
    • find

      public Cursor find(SessionLocal session, SearchRow first, SearchRow last)
      Description copied from class: Index
      Find a row or a list of rows and create a cursor to iterate over the result.
      Specified by:
      find in class Index
      Parameters:
      session - the session
      first - the first row, or null for no limit
      last - the last row, or null for no limit
      Returns:
      the cursor to iterate over the results
    • findByGeometry

      public Cursor findByGeometry(SessionLocal session, SearchRow first, SearchRow last, SearchRow intersection)
      Description copied from interface: SpatialIndex
      Find a row or a list of rows and create a cursor to iterate over the result.
      Specified by:
      findByGeometry in interface SpatialIndex
      Parameters:
      session - the session
      first - the lower bound
      last - the upper bound
      intersection - the geometry which values should intersect with, or null for anything
      Returns:
      the cursor to iterate over the results
    • getBounds

      public Value getBounds(SessionLocal session)
      Returns the minimum bounding box that encloses all keys.
      Parameters:
      session - the session
      Returns:
      the minimum bounding box that encloses all keys, or null
    • getEstimatedBounds

      public Value getEstimatedBounds(SessionLocal session)
      Returns the estimated minimum bounding box that encloses all keys. The returned value may be incorrect.
      Parameters:
      session - the session
      Returns:
      the estimated minimum bounding box that encloses all keys, or null
    • getKey

      private SpatialKey getKey(SearchRow row)
    • getTable

      public MVTable getTable()
      Description copied from class: Index
      Get the table on which this index is based.
      Overrides:
      getTable in class Index
      Returns:
      the table
    • getCost

      public double getCost(SessionLocal session, int[] masks, TableFilter[] filters, int filter, SortOrder sortOrder, AllColumnsForPlan allColumnsSet)
      Description copied from class: Index
      Estimate the cost to search for rows given the search mask. There is one element per column in the search mask. For possible search masks, see IndexCondition.
      Specified by:
      getCost in class Index
      Parameters:
      session - the session
      masks - per-column comparison bit masks, null means 'always false', see constants in IndexCondition
      filters - all joined table filters
      filter - the current table filter index
      sortOrder - the sort order
      allColumnsSet - the set of all columns
      Returns:
      the estimated cost
    • getCostRangeIndex

      public static long getCostRangeIndex(int[] masks, Column[] columns)
      Compute spatial index cost
      Parameters:
      masks - Search mask
      columns - Table columns
      Returns:
      Index cost hint
    • remove

      public void remove(SessionLocal session)
      Description copied from class: Index
      Remove the index.
      Specified by:
      remove in class Index
      Parameters:
      session - the session
    • truncate

      public void truncate(SessionLocal session)
      Description copied from class: Index
      Remove all rows from the index.
      Specified by:
      truncate in class Index
      Parameters:
      session - the session
    • needRebuild

      public boolean needRebuild()
      Description copied from class: Index
      Check if the index needs to be rebuilt. This method is called after opening an index.
      Specified by:
      needRebuild in class Index
      Returns:
      true if a rebuild is required.
    • getRowCount

      public long getRowCount(SessionLocal session)
      Description copied from class: Index
      Get the row count of this table, for the given session.
      Specified by:
      getRowCount in class Index
      Parameters:
      session - the session
      Returns:
      the row count
    • getRowCountApproximation

      public long getRowCountApproximation(SessionLocal session)
      Description copied from class: Index
      Get the approximated row count for this table.
      Specified by:
      getRowCountApproximation in class Index
      Parameters:
      session - the session
      Returns:
      the approximated row count
    • getDiskSpaceUsed

      public long getDiskSpaceUsed()
      Description copied from class: Index
      Get the used disk space for this index.
      Overrides:
      getDiskSpaceUsed in class Index
      Returns:
      the estimated number of bytes
    • getMap

      private TransactionMap<Spatial,Value> getMap(SessionLocal session)
      Get the map to store the data.
      Parameters:
      session - the session
      Returns:
      the map
    • getMVMap

      public MVMap<Spatial,VersionedValue<Value>> getMVMap()
      Specified by:
      getMVMap in class MVIndex<Spatial,Value>