Package org.h2.mvstore.db
Class MVSecondaryIndex
- All Implemented Interfaces:
HasSQL
An index stored in a MVStore.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static final class
A cursor.private static final class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final TransactionMap
<SearchRow, Value> private final MVTable
The multi-value table.Fields inherited from class org.h2.index.Index
columnIds, columns, indexColumns, indexType, table, uniqueColumnColumn
Fields 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, USER
Fields 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
ConstructorsConstructorDescriptionMVSecondaryIndex
(Database db, MVTable table, int id, String indexName, IndexColumn[] columns, int uniqueColumnCount, IndexType indexType) -
Method Summary
Modifier and TypeMethodDescriptionvoid
add
(SessionLocal session, Row row) Add a row to the index.void
addBufferedRows
(List<String> bufferNames) Add all the index data from the buffers to the index.void
addRowsToBuffer
(List<Row> rows, String bufferName) Add the rows to a temporary storage (not to the index yet).boolean
Check if the index can get the next higher value.boolean
Check if the index can directly look up the lowest or highest value of a column.private void
checkUnique
(boolean repeatableRead, TransactionMap<SearchRow, Value> map, SearchRow row, long newKey) void
close
(SessionLocal session) Close this index.private SearchRow
convertToKey
(SearchRow r, Boolean minMax) private Cursor
find
(SessionLocal session, SearchRow first, boolean bigger, SearchRow last) find
(SessionLocal session, SearchRow first, SearchRow last) 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.findNext
(SessionLocal session, SearchRow higherThan, SearchRow last) Find a row or a list of rows that is larger and create a cursor to iterate over the result.double
getCost
(SessionLocal session, int[] masks, TableFilter[] filters, int filter, SortOrder sortOrder, AllColumnsForPlan allColumnsSet) Estimate the cost to search for rows given the search mask.long
Get the used disk space for this index.private TransactionMap
<SearchRow, Value> getMap
(SessionLocal session) Get the map to store the data.getMVMap()
long
getRowCount
(SessionLocal session) Get the row count of this table, for the given session.long
getRowCountApproximation
(SessionLocal session) Get the approximated row count for this table.getTable()
Get the table on which this index is based.boolean
Check if the index needs to be rebuilt.void
remove
(SessionLocal session) Remove the index.void
remove
(SessionLocal session, Row row) Remove a row from the index.private boolean
rowsAreEqual
(SearchRow rowOne, SearchRow rowTwo) void
truncate
(SessionLocal session) Remove all rows from the index.void
update
(SessionLocal session, Row oldRow, Row newRow) Update index after row change.Methods inherited from class org.h2.index.Index
canScan, checkIndexColumnTypes, compareRows, getColumnIndex, getColumns, getCostRangeIndex, getCreateSQL, getCreateSQLForCopy, getDuplicateKeyException, getDuplicatePrimaryKeyMessage, getIndexColumns, getIndexType, getPlanSQL, getRow, getRowFactory, getType, getUniqueColumnCount, getUniqueRowFactory, isFindUsingFullTableScan, isFirstColumn, isHidden, isRowIdIndex, mayHaveNullDuplicates, removeChildrenAndResources
Methods inherited from class org.h2.schema.SchemaObject
getSchema, getSQL, getSQL
Methods inherited from class org.h2.engine.DbObject
checkRename, getChildren, getComment, getCreateSQLForMeta, getDatabase, getDropSQL, getId, getModificationId, getName, invalidate, isTemporary, isValid, 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.util.HasSQL
getTraceSQL
-
Field Details
-
mvTable
The multi-value table. -
dataMap
-
-
Constructor Details
-
MVSecondaryIndex
public MVSecondaryIndex(Database db, MVTable table, int id, String indexName, IndexColumn[] columns, int uniqueColumnCount, IndexType indexType)
-
-
Method Details
-
addRowsToBuffer
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 classMVIndex<SearchRow,
Value> - Parameters:
rows
- the rowsbufferName
- the name of the temporary storage
-
addBufferedRows
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 classMVIndex<SearchRow,
Value> - Parameters:
bufferNames
- the names of the temporary storage
-
openMap
-
close
Description copied from class:Index
Close this index. -
add
Description copied from class:Index
Add a row to the index. -
checkUnique
private void checkUnique(boolean repeatableRead, TransactionMap<SearchRow, Value> map, SearchRow row, long newKey) -
remove
Description copied from class:Index
Remove a row from the index. -
update
Description copied from class:Index
Update index after row change. -
rowsAreEqual
-
find
Description copied from class:Index
Find a row or a list of rows and create a cursor to iterate over the result. -
find
-
convertToKey
-
getTable
Description copied from class:Index
Get the table on which this index is based. -
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 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
-
remove
Description copied from class:Index
Remove the index. -
truncate
Description copied from class:Index
Remove all rows from the index. -
canGetFirstOrLast
public boolean canGetFirstOrLast()Description copied from class:Index
Check if the index can directly look up the lowest or highest value of a column.- Overrides:
canGetFirstOrLast
in classIndex
- Returns:
- true if it can
-
findFirstOrLast
Description copied from class: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.- Overrides:
findFirstOrLast
in 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:Index
Check if the index needs to be rebuilt. This method is called after opening an index.- Specified by:
needRebuild
in classIndex
- Returns:
- true if a rebuild is required.
-
getRowCount
Description copied from class:Index
Get the row count of this table, for the given session.- Specified by:
getRowCount
in classIndex
- Parameters:
session
- the session- Returns:
- the row count
-
getRowCountApproximation
Description copied from class:Index
Get the approximated row count for this table.- Specified by:
getRowCountApproximation
in classIndex
- 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 classIndex
- Returns:
- the estimated number of bytes
-
canFindNext
public boolean canFindNext()Description copied from class:Index
Check if the index can get the next higher value.- Overrides:
canFindNext
in classIndex
- Returns:
- true if it can
-
findNext
Description copied from class:Index
Find a row or a list of rows that is larger and create a cursor to iterate over the result. -
getMap
Get the map to store the data.- Parameters:
session
- the session- Returns:
- the map
-
getMVMap
-