org.h2.mvstore.db
Class MVDelegateIndex

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.mvstore.db.MVDelegateIndex
All Implemented Interfaces:
DbObject, Index, MVIndex, SchemaObject

public class MVDelegateIndex
extends BaseIndex
implements MVIndex

An index that delegates indexing to another index.


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
MVDelegateIndex(MVTable table, int id, java.lang.String name, MVPrimaryIndex mainIndex, IndexType indexType)
           
 
Method Summary
 void add(Session session, Row row)
          Add a row to the index.
 void addBufferedRows(java.util.List<java.lang.String> bufferNames)
          Add all the index data from the buffers to the index.
 void addRowsToBuffer(java.util.List<Row> rows, java.lang.String bufferName)
          Add the rows to a temporary storage (not to the index yet).
 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 findFirstOrLast(Session session, boolean first)
          Find the first (or last) value of this index.
 int getColumnIndex(Column col)
          Get the index of a column in the list of index columns
 double getCost(Session session, int[] masks, TableFilter filter, SortOrder sortOrder)
          Estimate the cost to search for rows given the search mask.
 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, find, findNext, getColumns, getCostRangeIndex, 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, find, findNext, 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

MVDelegateIndex

public MVDelegateIndex(MVTable table,
                       int id,
                       java.lang.String name,
                       MVPrimaryIndex mainIndex,
                       IndexType indexType)
Method Detail

addRowsToBuffer

public void addRowsToBuffer(java.util.List<Row> rows,
                            java.lang.String bufferName)
Description copied from interface: 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 interface MVIndex
Parameters:
rows - the rows
bufferName - the name of the temporary storage

addBufferedRows

public void addBufferedRows(java.util.List<java.lang.String> bufferNames)
Description copied from interface: 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 interface MVIndex
Parameters:
bufferNames - the names of the temporary storage

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

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

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

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

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)

getColumnIndex

public int getColumnIndex(Column col)
Description copied from interface: Index
Get the index of a column in the list of index columns

Specified by:
getColumnIndex in interface Index
Overrides:
getColumnIndex in class BaseIndex
Parameters:
col - the column
Returns:
the index (0 meaning first column)

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

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.

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

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

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