public class MVPrimaryIndex extends BaseIndex
columnIds, columns, indexColumns, indexType, isMultiVersion, tablecomment, database, traceAGGREGATE, COMMENT, CONSTANT, CONSTRAINT, FUNCTION_ALIAS, INDEX, RIGHT, ROLE, SCHEMA, SEQUENCE, SETTING, SYNONYM, TABLE_OR_VIEW, TRIGGER, USER, USER_DATATYPE| Constructor and Description |
|---|
MVPrimaryIndex(Database db,
MVTable table,
int id,
IndexColumn[] columns,
IndexType indexType) |
| Modifier and Type | Method and Description |
|---|---|
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 |
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[] 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()
Build a SQL statement to re-create this object.
|
long |
getDiskSpaceUsed()
Get the used disk space for this index.
|
int |
getMainIndexColumn() |
java.lang.String |
getMapName() |
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.
|
long |
getRowCountMax()
The maximum number of rows, including uncommitted rows of any session.
|
MVTable |
getTable()
Get the table on which this index is based.
|
boolean |
isFirstColumn(Column column)
Check if the given column is the first for this index
|
boolean |
isRowIdIndex()
Does this index support lookup by row id?
|
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 |
setMainIndexColumn(int mainIndexColumn) |
void |
truncate(Session session)
Remove all rows from the index.
|
canFindNext, canScan, checkIndexColumnTypes, commit, compareRows, createLookupBatch, find, findNext, getColumns, getCostRangeIndex, getCreateSQLForCopy, getDropSQL, getDuplicateKeyException, getIndexColumns, getIndexType, getType, initBaseIndex, isFindUsingFullTableScan, isHidden, mayHaveNullDuplicates, removeChildrenAndResources, setSortedInsertModegetSchema, getSQL, initSchemaObjectBasegetChildren, getComment, getDatabase, getId, getModificationId, getName, initDbObjectBase, invalidate, isTemporary, isValid, rename, setComment, setModified, setObjectName, setTemporary, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetSchemagetChildren, getComment, getDatabase, getId, getName, getSQL, isTemporary, rename, setComment, setTemporarypublic MVPrimaryIndex(Database db, MVTable table, int id, IndexColumn[] columns, IndexType indexType)
public java.lang.String getCreateSQL()
DbObjectBasegetCreateSQL in interface DbObjectgetCreateSQL in class BaseIndexpublic java.lang.String getPlanSQL()
IndexgetPlanSQL in interface IndexgetPlanSQL in class BaseIndexpublic void setMainIndexColumn(int mainIndexColumn)
public int getMainIndexColumn()
public void close(Session session)
Indexsession - the session used to write datapublic void add(Session session, Row row)
Indexsession - the session to userow - the row to addpublic void remove(Session session, Row row)
Indexsession - the sessionrow - the rowpublic Cursor find(Session session, SearchRow first, SearchRow last)
Indexsession - the sessionfirst - the first row, or null for no limitlast - the last row, or null for no limitpublic MVTable getTable()
Indexpublic Row getRow(Session session, long key)
Indexpublic double getCost(Session session, int[] masks, TableFilter[] filters, int filter, SortOrder sortOrder, java.util.HashSet<Column> allColumnsSet)
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 int getColumnIndex(Column col)
IndexgetColumnIndex in interface IndexgetColumnIndex in class BaseIndexcol - the columnpublic boolean isFirstColumn(Column column)
IndexisFirstColumn in interface IndexisFirstColumn in class BaseIndexcolumn - the columnpublic void remove(Session session)
Indexsession - the sessionpublic void truncate(Session session)
Indexsession - the sessionpublic boolean canGetFirstOrLast()
Indexpublic Cursor findFirstOrLast(Session session, boolean first)
Indexsession - the sessionfirst - true if the first (lowest for ascending indexes) or last
value should be returnedpublic boolean needRebuild()
Indexpublic long getRowCount(Session session)
Indexsession - the sessionpublic long getRowCountMax()
public long getRowCountApproximation()
Indexpublic long getDiskSpaceUsed()
Indexpublic java.lang.String getMapName()
public void checkRename()
DbObjectBasecheckRename in interface DbObjectcheckRename in class DbObjectBasepublic boolean isRowIdIndex()
IndexisRowIdIndex in interface IndexisRowIdIndex in class BaseIndex