Package org.h2.mvstore.db
Class MVPrimaryIndex
- All Implemented Interfaces:
HasSQL
A table stored in a MVStore.
-
Field Summary
Fields inherited from class org.h2.index.Index
columnIds, columns, indexColumns, indexType, table, uniqueColumnColumnFields inherited from class org.h2.engine.DbObject
AGGREGATE, comment, COMMENT, CONSTANT, CONSTRAINT, database, DOMAIN, FUNCTION_ALIAS, INDEX, RIGHT, ROLE, SCHEMA, SEQUENCE, SETTING, SYNONYM, TABLE_OR_VIEW, trace, TRIGGER, USERFields inherited from interface org.h2.util.HasSQL
ADD_PLAN_INFORMATION, DEFAULT_SQL_FLAGS, NO_CASTS, QUOTE_ONLY_WHEN_REQUIRED, REPLACE_LOBS_FOR_TRACE, TRACE_SQL_FLAGS -
Constructor Summary
ConstructorsConstructorDescriptionMVPrimaryIndex(Database db, MVTable table, int id, IndexColumn[] columns, IndexType indexType) -
Method Summary
Modifier and TypeMethodDescriptionvoidadd(SessionLocal session, Row row) Add a row to the index.voidaddBufferedRows(List<String> bufferNames) Add all the index data from the buffers to the index.voidaddRowsToBuffer(List<Row> rows, String bufferName) Add the rows to a temporary storage (not to the index yet).booleanCheck if the index can directly look up the lowest or highest value of a column.voidclose(SessionLocal session) Close this index.find(SessionLocal session, SearchRow first, SearchRow last, boolean reverse) Find a row or a list of rows and create a cursor to iterate over the result.findFirstOrLast(SessionLocal session, boolean first) Find the first (or last) value of this index.intgetColumnIndex(Column col) Get the index of a column in the list of index columnsdoublegetCost(SessionLocal session, int[] masks, TableFilter[] filters, int filter, SortOrder sortOrder, AllColumnsForPlan allColumnsSet) Estimate the cost to search for rows given the search mask.Construct the CREATE ...intgetMVMap()Get the message to show in a EXPLAIN statement.getRow(SessionLocal session, long key) Get the row with the given key.longgetRowCount(SessionLocal session) Get the row count of this table, for the given session.longgetRowCountApproximation(SessionLocal session) Get the approximated row count for this table.longThe maximum number of rows, including uncommitted rows of any session.getTable()Get the table on which this index is based.booleanisFirstColumn(Column column) Check if the given column is the first for this indexbooleanDoes this index support lookup by row id?booleanCheck if the index needs to be rebuilt.voidremove(SessionLocal session) Remove the index.voidremove(SessionLocal session, Row row) Remove a row from the index.voidsetMainIndexColumn(int mainIndexColumn) voidtruncate(SessionLocal session) Remove all rows from the index.voidupdate(SessionLocal session, Row oldRow, Row newRow) Update index after row change.Methods inherited from class org.h2.mvstore.db.MVIndex
getDiskSpaceUsedMethods inherited from class org.h2.index.Index
canFindNext, canScan, checkIndexColumnTypes, compareRows, findNext, getColumns, getCostRangeIndex, getCreateSQLForCopy, getDuplicateKeyException, getDuplicatePrimaryKeyMessage, getIndexColumns, getIndexType, getRowFactory, getType, getUniqueColumnCount, getUniqueRowFactory, isFindUsingFullTableScan, needsUniqueCheck, removeChildrenAndResourcesMethods inherited from class org.h2.schema.SchemaObject
getSchema, getSQL, getSQLMethods inherited from class org.h2.engine.DbObject
checkRename, getChildren, getComment, getCreateSQLForMeta, getDatabase, getDropSQL, getId, getModificationId, getName, invalidate, isTemporary, isValid, rename, setComment, setModified, setObjectName, setTemporary, toStringMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.h2.util.HasSQL
getTraceSQL
-
Constructor Details
-
MVPrimaryIndex
public MVPrimaryIndex(Database db, MVTable table, int id, IndexColumn[] columns, IndexType indexType)
-
-
Method Details
-
getCreateSQL
Description copied from class:DbObjectConstruct the CREATE ... SQL statement for this object.- Overrides:
getCreateSQLin classIndex- Returns:
- the SQL statement
-
getPlanSQL
Description copied from class:IndexGet the message to show in a EXPLAIN statement.- Overrides:
getPlanSQLin classIndex- Returns:
- the plan
-
setMainIndexColumn
public void setMainIndexColumn(int mainIndexColumn) -
getMainIndexColumn
public int getMainIndexColumn() -
close
Description copied from class:IndexClose this index. -
add
Description copied from class:IndexAdd a row to the index. -
remove
Description copied from class:IndexRemove a row from the index. -
update
Description copied from class:IndexUpdate index after row change. -
find
Description copied from class:IndexFind a row or a list of rows and create a cursor to iterate over the result. -
getTable
Description copied from class:IndexGet the table on which this index is based. -
getRow
Description copied from class:IndexGet the row with the given key. -
getCost
public double getCost(SessionLocal session, int[] masks, TableFilter[] filters, int filter, SortOrder sortOrder, AllColumnsForPlan allColumnsSet) Description copied from class:IndexEstimate 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:
getCostin classIndex- Parameters:
session- the sessionmasks- per-column comparison bit masks, null means 'always false', see constants in IndexConditionfilters- all joined table filtersfilter- the current table filter indexsortOrder- the sort orderallColumnsSet- the set of all columns- Returns:
- the estimated cost
-
getColumnIndex
Description copied from class:IndexGet the index of a column in the list of index columns- Overrides:
getColumnIndexin classIndex- Parameters:
col- the column- Returns:
- the index (0 meaning first column)
-
isFirstColumn
Description copied from class:IndexCheck if the given column is the first for this index- Overrides:
isFirstColumnin classIndex- Parameters:
column- the column- Returns:
- true if the given columns is the first
-
remove
Description copied from class:IndexRemove the index. -
truncate
Description copied from class:IndexRemove all rows from the index. -
canGetFirstOrLast
public boolean canGetFirstOrLast()Description copied from class:IndexCheck if the index can directly look up the lowest or highest value of a column.- Overrides:
canGetFirstOrLastin classIndex- Returns:
- true if it can
-
findFirstOrLast
Description copied from class:IndexFind 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.- Overrides:
findFirstOrLastin classIndex- Parameters:
session- the sessionfirst- true if the first (lowest for ascending indexes) or last value should be returned- Returns:
- a cursor (never null)
-
needRebuild
public boolean needRebuild()Description copied from class:IndexCheck if the index needs to be rebuilt. This method is called after opening an index.- Specified by:
needRebuildin classIndex- Returns:
- true if a rebuild is required.
-
getRowCount
Description copied from class:IndexGet the row count of this table, for the given session.- Specified by:
getRowCountin classIndex- Parameters:
session- the session- Returns:
- the row count
-
getRowCountMax
public long getRowCountMax()The maximum number of rows, including uncommitted rows of any session.- Returns:
- the maximum number of rows
-
getRowCountApproximation
Description copied from class:IndexGet the approximated row count for this table.- Specified by:
getRowCountApproximationin classIndex- Parameters:
session- the session- Returns:
- the approximated row count
-
getMapName
-
addRowsToBuffer
Description copied from class:MVIndexAdd 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:
addRowsToBufferin classMVIndex<Long,SearchRow> - Parameters:
rows- the rowsbufferName- the name of the temporary storage
-
addBufferedRows
Description copied from class:MVIndexAdd 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:
addBufferedRowsin classMVIndex<Long,SearchRow> - Parameters:
bufferNames- the names of the temporary storage
-
isRowIdIndex
public boolean isRowIdIndex()Description copied from class:IndexDoes this index support lookup by row id?- Overrides:
isRowIdIndexin classIndex- Returns:
- true if it does
-
getMVMap
-