org.h2.index
Class SpatialTreeIndex

java.lang.Object
  extended by org.h2.engine.DbObjectBase
      extended by org.h2.schema.SchemaObjectBase
          extended by org.h2.index.BaseIndex
              extended by org.h2.index.SpatialTreeIndex
All Implemented Interfaces:
DbObject, Index, SpatialIndex, SchemaObject

public class SpatialTreeIndex
extends BaseIndex
implements SpatialIndex

This is an index based on a MVR-TreeMap.


Field Summary
 
Fields inherited from class org.h2.index.BaseIndex
columnIds, columns, indexColumns, indexType, isMultiVersion, table
 
Fields inherited from class org.h2.engine.DbObjectBase
comment, database, trace
 
Fields inherited from interface org.h2.engine.DbObject
AGGREGATE, COMMENT, CONSTANT, CONSTRAINT, FUNCTION_ALIAS, INDEX, RIGHT, ROLE, SCHEMA, SEQUENCE, SETTING, TABLE_OR_VIEW, TRIGGER, USER, USER_DATATYPE
 
Constructor Summary
SpatialTreeIndex(Table table, int id, java.lang.String indexName, IndexColumn[] columns, IndexType indexType, boolean persistent, boolean create, Session session)
          Constructor.
 
Method Summary
 void add(Session session, Row row)
          Add a row to the index.
 boolean canGetFirstOrLast()
          Check if the index can directly look up the lowest or highest value of a column.
 void checkRename()
          Check if this object can be renamed.
 void close(Session session)
          Close this index.
 Cursor find(Session session, SearchRow first, SearchRow last)
          Find a row or a list of rows and create a cursor to iterate over the result.
 Cursor find(TableFilter filter, SearchRow first, SearchRow last)
          Find a row or a list of rows and create a cursor to iterate over the result.
 Cursor findByGeometry(TableFilter filter, SearchRow intersection)
          Find a row or a list of rows and create a cursor to iterate over the result.
 Cursor findFirstOrLast(Session session, boolean first)
          Find the first (or last) value of this index.
 double getCost(Session session, int[] masks, TableFilter filter, SortOrder sortOrder)
          Estimate the cost to search for rows given the search mask.
protected  long getCostRangeIndex(int[] masks, long rowCount, TableFilter filter, SortOrder sortOrder)
          Calculate the cost for the given mask as if this index was a typical b-tree range index.
 long getDiskSpaceUsed()
          Get the used disk space for this index.
 long getRowCount(Session session)
          Get the row count of this table, for the given session.
 long getRowCountApproximation()
          Get the approximated row count for this table.
 boolean needRebuild()
          Check if the index needs to be rebuilt.
 void remove(Session session)
          Remove the index.
 void remove(Session session, Row row)
          Remove a row from the index.
 void truncate(Session session)
          Remove all rows from the index.
 
Methods inherited from class org.h2.index.BaseIndex
canFindNext, canScan, checkIndexColumnTypes, commit, compareRows, containsNullAndAllowMultipleNull, findNext, getColumnIndex, getColumns, getCreateSQL, getCreateSQLForCopy, getDropSQL, getDuplicateKeyException, getIndexColumns, getIndexType, getPlanSQL, getRow, getTable, getType, initBaseIndex, isHidden, isRowIdIndex, removeChildrenAndResources, setSortedInsertMode
 
Methods inherited from class org.h2.schema.SchemaObjectBase
getSchema, getSQL, initSchemaObjectBase
 
Methods inherited from class org.h2.engine.DbObjectBase
getChildren, getComment, getDatabase, getId, getModificationId, getName, initDbObjectBase, invalidate, isTemporary, rename, setComment, setModified, setObjectName, setTemporary, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.h2.index.Index
canFindNext, canScan, commit, compareRows, findNext, getColumnIndex, getColumns, getIndexColumns, getIndexType, getPlanSQL, getRow, getTable, isRowIdIndex, setSortedInsertMode
 
Methods inherited from interface org.h2.schema.SchemaObject
getSchema, isHidden
 
Methods inherited from interface org.h2.engine.DbObject
getChildren, getComment, getCreateSQL, getCreateSQLForCopy, getDatabase, getDropSQL, getId, getName, getSQL, getType, isTemporary, removeChildrenAndResources, rename, setComment, setTemporary
 

Constructor Detail

SpatialTreeIndex

public SpatialTreeIndex(Table table,
                        int id,
                        java.lang.String indexName,
                        IndexColumn[] columns,
                        IndexType indexType,
                        boolean persistent,
                        boolean create,
                        Session session)
Constructor.

Parameters:
table - the table instance
id - the index id
indexName - the index name
columns - the indexed columns (only one geometry column allowed)
persistent - whether the index should be persisted
indexType - the index type (only spatial index)
create - whether to create a new index
session - the session.
Method Detail

close

public void close(Session session)
Description copied from interface: Index
Close this index.

Specified by:
close in interface Index
Parameters:
session - the session used to write data

add

public void add(Session session,
                Row row)
Description copied from interface: Index
Add a row to the index.

Specified by:
add in interface Index
Parameters:
session - the session to use
row - the row to add

remove

public void remove(Session session,
                   Row row)
Description copied from interface: Index
Remove a row from the index.

Specified by:
remove in interface Index
Parameters:
session - the session
row - the row

find

public Cursor find(TableFilter filter,
                   SearchRow first,
                   SearchRow last)
Description copied from interface: Index
Find a row or a list of rows and create a cursor to iterate over the result.

Specified by:
find in interface Index
Overrides:
find in class BaseIndex
Parameters:
filter - the table filter (which possibly knows about additional conditions)
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

find

public Cursor find(Session session,
                   SearchRow first,
                   SearchRow last)
Description copied from interface: Index
Find a row or a list of rows and create a cursor to iterate over the result.

Specified by:
find in interface 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(TableFilter filter,
                             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:
filter - the table filter (which possibly knows about additional conditions)
intersection - the geometry which values should intersect with, or null for anything
Returns:
the cursor to iterate over the results

getCostRangeIndex

protected long getCostRangeIndex(int[] masks,
                                 long rowCount,
                                 TableFilter filter,
                                 SortOrder sortOrder)
Description copied from class: BaseIndex
Calculate the cost for the given mask as if this index was a typical b-tree range index. This is the estimated cost required to search one row, and then iterate over the given number of rows.

Overrides:
getCostRangeIndex in class BaseIndex
Parameters:
masks - the search mask
rowCount - the number of rows in the index
filter - the table filter
sortOrder - the sort order
Returns:
the estimated cost

getCost

public double getCost(Session session,
                      int[] masks,
                      TableFilter filter,
                      SortOrder sortOrder)
Description copied from interface: 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 interface Index
Parameters:
session - the session
masks - per-column comparison bit masks, null means 'always false', see constants in IndexCondition
filter - the table filter
sortOrder - the sort order
Returns:
the estimated cost

remove

public void remove(Session session)
Description copied from interface: Index
Remove the index.

Specified by:
remove in interface Index
Parameters:
session - the session

truncate

public void truncate(Session session)
Description copied from interface: Index
Remove all rows from the index.

Specified by:
truncate in interface Index
Parameters:
session - the session

checkRename

public void checkRename()
Description copied from class: DbObjectBase
Check if this object can be renamed. System objects may not be renamed.

Specified by:
checkRename in interface DbObject
Specified by:
checkRename in class DbObjectBase

needRebuild

public boolean needRebuild()
Description copied from interface: Index
Check if the index needs to be rebuilt. This method is called after opening an index.

Specified by:
needRebuild in interface Index
Returns:
true if a rebuild is required.

canGetFirstOrLast

public boolean canGetFirstOrLast()
Description copied from interface: Index
Check if the index can directly look up the lowest or highest value of a column.

Specified by:
canGetFirstOrLast in interface Index
Returns:
true if it can

findFirstOrLast

public Cursor findFirstOrLast(Session session,
                              boolean first)
Description copied from interface: Index
Find the first (or last) value of this index. The cursor returned is positioned on the correct row, or on null if no row has been found.

Specified by:
findFirstOrLast in interface Index
Parameters:
session - the session
first - true if the first (lowest for ascending indexes) or last value should be returned
Returns:
a cursor (never null)

getRowCount

public long getRowCount(Session session)
Description copied from interface: Index
Get the row count of this table, for the given session.

Specified by:
getRowCount in interface Index
Parameters:
session - the session
Returns:
the row count

getRowCountApproximation

public long getRowCountApproximation()
Description copied from interface: Index
Get the approximated row count for this table.

Specified by:
getRowCountApproximation in interface Index
Returns:
the approximated row count

getDiskSpaceUsed

public long getDiskSpaceUsed()
Description copied from interface: Index
Get the used disk space for this index.

Specified by:
getDiskSpaceUsed in interface Index
Returns:
the estimated number of bytes