Package org.h2.index
Class ViewIndex
java.lang.Object
org.h2.engine.DbObject
org.h2.schema.SchemaObject
org.h2.index.Index
org.h2.index.ViewIndex
- All Implemented Interfaces:
SpatialIndex,HasSQL
This object represents a virtual index for a query.
Actually it only represents a prepared SELECT statement.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final SessionLocalprivate final longThe time in nanoseconds when this index (and its cost) was calculated.private final int[]private static final longprivate Queryprivate final Stringprivate booleanprivate final TableViewFields 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
ConstructorsConstructorDescriptionViewIndex(TableView view, String querySQL, ArrayList<Parameter> originalParameters, boolean recursive) Constructor for the original index inTableView.ViewIndex(TableView view, ViewIndex index, SessionLocal session, int[] masks, TableFilter[] filters, int filter, SortOrder sortOrder) Constructor for plan item generation. -
Method Summary
Modifier and TypeMethodDescriptionvoidadd(SessionLocal session, Row row) Add a row to the index.voidCheck if renaming is allowed.voidclose(SessionLocal session) Close this index.find(SessionLocal session, SearchRow first, SearchRow last) Find a row or a list of rows and create a cursor to iterate over the result.private Cursorfind(SessionLocal session, SearchRow first, SearchRow last, SearchRow intersection) findByGeometry(SessionLocal session, SearchRow first, SearchRow last, SearchRow intersection) Find a row or a list of rows and create a cursor to iterate over the result.private CursorfindRecursive(SearchRow first, SearchRow last) doublegetCost(SessionLocal session, int[] masks, TableFilter[] filters, int filter, SortOrder sortOrder, AllColumnsForPlan allColumnsSet) Estimate the cost to search for rows given the search mask.Get the message to show in a EXPLAIN statement.getQuery()private QuerygetQuery(SessionLocal session, int[] masks) 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.booleanbooleanbooleanCheck if the index needs to be rebuilt.voidremove(SessionLocal session) Remove the index.voidremove(SessionLocal session, Row row) Remove a row from the index.private static voidsetParameter(ArrayList<Parameter> paramList, int x, Value v) voidsetRecursive(boolean value) voidsetupQueryParameters(SessionLocal session, SearchRow first, SearchRow last, SearchRow intersection) Set the query parameters.voidtruncate(SessionLocal session) Remove all rows from the index.Methods inherited from class org.h2.index.Index
canFindNext, canGetFirstOrLast, canScan, checkIndexColumnTypes, compareRows, findFirstOrLast, findNext, getColumnIndex, getColumns, getCostRangeIndex, getCreateSQL, getCreateSQLForCopy, getDiskSpaceUsed, getDuplicateKeyException, getDuplicatePrimaryKeyMessage, getIndexColumns, getIndexType, getRow, getRowFactory, getTable, getType, getUniqueColumnCount, getUniqueRowFactory, isFindUsingFullTableScan, isFirstColumn, isHidden, isRowIdIndex, mayHaveNullDuplicates, removeChildrenAndResources, updateMethods inherited from class org.h2.schema.SchemaObject
getSchema, getSQL, getSQLMethods inherited from class org.h2.engine.DbObject
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
-
Field Details
-
MAX_AGE_NANOS
private static final long MAX_AGE_NANOS -
view
-
querySQL
-
originalParameters
-
recursive
private boolean recursive -
indexMasks
private final int[] indexMasks -
query
-
createSession
-
evaluatedAt
private final long evaluatedAtThe time in nanoseconds when this index (and its cost) was calculated.
-
-
Constructor Details
-
ViewIndex
public ViewIndex(TableView view, String querySQL, ArrayList<Parameter> originalParameters, boolean recursive) Constructor for the original index inTableView.- Parameters:
view- the table viewquerySQL- the query SQLoriginalParameters- the original parametersrecursive- if the view is recursive
-
ViewIndex
public ViewIndex(TableView view, ViewIndex index, SessionLocal session, int[] masks, TableFilter[] filters, int filter, SortOrder sortOrder) Constructor for plan item generation. Over this index the query will be executed.- Parameters:
view- the table viewindex- the view indexsession- the sessionmasks- the masksfilters- table filtersfilter- current filtersortOrder- sort order
-
-
Method Details
-
getSession
-
isExpired
public boolean isExpired() -
getPlanSQL
Description copied from class:IndexGet the message to show in a EXPLAIN statement.- Overrides:
getPlanSQLin classIndex- Returns:
- the plan
-
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. -
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
-
find
Description copied from class:IndexFind a row or a list of rows and create a cursor to iterate over the result. -
findByGeometry
public Cursor findByGeometry(SessionLocal session, SearchRow first, SearchRow last, SearchRow intersection) Description copied from interface:SpatialIndexFind a row or a list of rows and create a cursor to iterate over the result.- Specified by:
findByGeometryin interfaceSpatialIndex- Parameters:
session- the sessionfirst- the lower boundlast- the upper boundintersection- the geometry which values should intersect with, or null for anything- Returns:
- the cursor to iterate over the results
-
findRecursive
-
setupQueryParameters
public void setupQueryParameters(SessionLocal session, SearchRow first, SearchRow last, SearchRow intersection) Set the query parameters.- Parameters:
session- the sessionfirst- the lower boundlast- the upper boundintersection- the intersection
-
find
-
setParameter
-
getQuery
-
getQuery
-
remove
Description copied from class:IndexRemove the index. -
truncate
Description copied from class:IndexRemove all rows from the index. -
checkRename
public void checkRename()Description copied from class:DbObjectCheck if renaming is allowed. Does nothing when allowed.- Overrides:
checkRenamein classDbObject
-
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.
-
setRecursive
public void setRecursive(boolean value) -
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
-
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
-
isRecursive
public boolean isRecursive()
-