public class MultiVersionIndex extends java.lang.Object implements Index
AGGREGATE, COMMENT, CONSTANT, CONSTRAINT, FUNCTION_ALIAS, INDEX, RIGHT, ROLE, SCHEMA, SEQUENCE, SETTING, SYNONYM, TABLE_OR_VIEW, TRIGGER, USER, USER_DATATYPE| Constructor and Description |
|---|
MultiVersionIndex(Index base,
RegularTable table) |
| Modifier and Type | Method and Description |
|---|---|
void |
add(Session session,
Row row)
Add a row to the index.
|
boolean |
canFindNext()
Check if the index can get the next higher value.
|
boolean |
canGetFirstOrLast()
Check if the index can directly look up the lowest or highest value of a
column.
|
boolean |
canScan()
Can this index iterate over all rows?
|
void |
checkRename()
Check if renaming is allowed.
|
void |
close(Session session)
Close this index.
|
void |
commit(int operation,
Row row)
Commit the operation for a row.
|
int |
compareRows(SearchRow rowData,
SearchRow compare)
Compare two rows.
|
IndexLookupBatch |
createLookupBatch(TableFilter[] filters,
int filter)
Creates new lookup batch.
|
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 |
findFirstOrLast(Session session,
boolean first)
Find the first (or last) value of this index.
|
Cursor |
findNext(Session session,
SearchRow first,
SearchRow last)
Find a row or a list of rows that is larger and create a cursor to
iterate over the result.
|
Index |
getBaseIndex() |
java.util.ArrayList<DbObject> |
getChildren()
Get the list of dependent children (for tables, this includes indexes and
so on).
|
int |
getColumnIndex(Column col)
Get the index of a column in the list of index columns
|
Column[] |
getColumns()
Get the indexed columns.
|
java.lang.String |
getComment()
Get the current comment of this object.
|
double |
getCost(Session session,
int[] masks,
TableFilter[] filters,
int filter,
SortOrder sortOrder,
java.util.HashSet<Column> allColumnsSet)
Estimate the cost to search for rows given the search mask.
|
java.lang.String |
getCreateSQL()
Construct the original CREATE ...
|
java.lang.String |
getCreateSQLForCopy(Table forTable,
java.lang.String quotedName)
Build a SQL statement to re-create the object, or to create a copy of the
object with a different name or referencing a different table
|
Database |
getDatabase()
Get the database.
|
long |
getDiskSpaceUsed()
Get the used disk space for this index.
|
java.lang.String |
getDropSQL()
Construct a DROP ...
|
int |
getId()
Get the unique object id.
|
IndexColumn[] |
getIndexColumns()
Get the indexed columns as index columns (with ordering information).
|
IndexType |
getIndexType()
Get the index type.
|
java.lang.String |
getName()
Get the name.
|
java.lang.String |
getPlanSQL()
Get the message to show in a EXPLAIN statement.
|
Row |
getRow(Session session,
long key)
Get the row with the given key.
|
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.
|
Schema |
getSchema()
Get the schema in which this object is defined
|
java.lang.String |
getSQL()
Get the SQL name of this object (may be quoted).
|
Table |
getTable()
Get the table on which this index is based.
|
int |
getType()
Get the object type.
|
boolean |
isFindUsingFullTableScan()
Returns
true if find() implementation performs scan over all
index, false if find() performs the fast lookup. |
boolean |
isFirstColumn(Column column)
Check if the given column is the first for this index
|
boolean |
isHidden()
Check whether this is a hidden object that doesn't appear in the meta
data and in the script, and is not dropped on DROP ALL OBJECTS.
|
boolean |
isRowIdIndex()
Does this index support lookup by row id?
|
boolean |
isTemporary()
Check if this object is temporary (for example, a temporary table).
|
boolean |
isUncommittedFromOtherSession(Session session,
Row row)
Check if there is an uncommitted row with the given key
within a different session.
|
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 |
removeChildrenAndResources(Session session)
Delete all dependent children objects and resources of this object.
|
void |
rename(java.lang.String newName)
Rename the object.
|
void |
setComment(java.lang.String comment)
Change the comment of this object.
|
void |
setSortedInsertMode(boolean sortedInsertMode)
Enable or disable the 'sorted insert' optimizations (rows are inserted in
ascending or descending order) if applicable for this index
implementation.
|
void |
setTemporary(boolean temporary)
Tell this object that it is temporary or not.
|
void |
truncate(Session session)
Remove all rows from the index.
|
public MultiVersionIndex(Index base, RegularTable table)
public void add(Session session, Row row)
Indexpublic boolean isFindUsingFullTableScan()
Indextrue if find() implementation performs scan over all
index, false if find() performs the fast lookup.isFindUsingFullTableScan in interface Indextrue if find() implementation performs scan over all
index, false if find() performs the fast lookuppublic Cursor find(TableFilter filter, SearchRow first, SearchRow last)
Indexpublic Cursor find(Session session, SearchRow first, SearchRow last)
Indexpublic Cursor findNext(Session session, SearchRow first, SearchRow last)
Indexpublic boolean canFindNext()
IndexcanFindNext in interface Indexpublic boolean canGetFirstOrLast()
IndexcanGetFirstOrLast in interface Indexpublic Cursor findFirstOrLast(Session session, boolean first)
IndexfindFirstOrLast in interface Indexsession - the sessionfirst - true if the first (lowest for ascending indexes) or last
value should be returnedpublic double getCost(Session session, int[] masks, TableFilter[] filters, int filter, SortOrder sortOrder, java.util.HashSet<Column> allColumnsSet)
IndexgetCost in interface Indexsession - 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 columnspublic boolean needRebuild()
IndexneedRebuild in interface Indexpublic boolean isUncommittedFromOtherSession(Session session, Row row)
session - the original sessionrow - the row (only the key is checked)public void remove(Session session, Row row)
Indexpublic void remove(Session session)
Indexpublic void truncate(Session session)
Indexpublic void commit(int operation,
Row row)
Indexpublic int compareRows(SearchRow rowData, SearchRow compare)
IndexcompareRows in interface IndexrowData - the first rowcompare - the second rowpublic int getColumnIndex(Column col)
IndexgetColumnIndex in interface Indexcol - the columnpublic boolean isFirstColumn(Column column)
IndexisFirstColumn in interface Indexcolumn - the columnpublic Column[] getColumns()
IndexgetColumns in interface Indexpublic IndexColumn[] getIndexColumns()
IndexgetIndexColumns in interface Indexpublic java.lang.String getCreateSQL()
DbObjectgetCreateSQL in interface DbObjectpublic java.lang.String getCreateSQLForCopy(Table forTable, java.lang.String quotedName)
DbObjectgetCreateSQLForCopy in interface DbObjectforTable - the new tablequotedName - the quoted namepublic java.lang.String getDropSQL()
DbObjectgetDropSQL in interface DbObjectpublic IndexType getIndexType()
IndexgetIndexType in interface Indexpublic java.lang.String getPlanSQL()
IndexgetPlanSQL in interface Indexpublic long getRowCount(Session session)
IndexgetRowCount in interface Indexsession - the sessionpublic Table getTable()
Indexpublic int getType()
DbObjectpublic void removeChildrenAndResources(Session session)
DbObjectremoveChildrenAndResources in interface DbObjectsession - the sessionpublic java.lang.String getSQL()
DbObjectpublic Schema getSchema()
SchemaObjectgetSchema in interface SchemaObjectpublic void checkRename()
DbObjectcheckRename in interface DbObjectpublic java.util.ArrayList<DbObject> getChildren()
DbObjectgetChildren in interface DbObjectpublic java.lang.String getComment()
DbObjectgetComment in interface DbObjectpublic Database getDatabase()
DbObjectgetDatabase in interface DbObjectpublic int getId()
DbObjectpublic java.lang.String getName()
DbObjectpublic boolean isTemporary()
DbObjectisTemporary in interface DbObjectpublic void rename(java.lang.String newName)
DbObjectpublic void setComment(java.lang.String comment)
DbObjectsetComment in interface DbObjectcomment - the new comment, or null for no commentpublic void setTemporary(boolean temporary)
DbObjectsetTemporary in interface DbObjecttemporary - the new valuepublic long getRowCountApproximation()
IndexgetRowCountApproximation in interface Indexpublic long getDiskSpaceUsed()
IndexgetDiskSpaceUsed in interface Indexpublic Index getBaseIndex()
public Row getRow(Session session, long key)
Indexpublic boolean isHidden()
SchemaObjectisHidden in interface SchemaObjectpublic boolean isRowIdIndex()
IndexisRowIdIndex in interface Indexpublic boolean canScan()
Indexpublic void setSortedInsertMode(boolean sortedInsertMode)
IndexsetSortedInsertMode in interface IndexsortedInsertMode - the new valuepublic IndexLookupBatch createLookupBatch(TableFilter[] filters, int filter)
IndexIndexLookupBatch
instance can be used multiple times.createLookupBatch in interface Indexfilters - the table filtersfilter - the filter index (0, 1,...)null if batched lookup is not supported
by this index.