org.h2.index

## Class QueryExpressionIndex

- java.lang.Object
- - org.h2.engine.DbObject
  - - org.h2.schema.SchemaObject
    - - org.h2.index.Index
      - - org.h2.index.QueryExpressionIndex

All Implemented Interfaces:
  SpatialIndex, HasSQL

    public class QueryExpressionIndex
    extends Index
    implements SpatialIndex

This object represents a virtual index for a query expression.

### Field Summary

### Fields inherited from class org.h2.index.Index

`columnIds, columns, indexColumns, indexType, 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

Constructors
Constructor and Description
`QueryExpressionIndex(QueryExpressionTable table, QueryExpressionIndex index, SessionLocal session, int[] masks, TableFilter[] filters, int filter, SortOrder sortOrder)` Constructor for plan item generation.
`QueryExpressionIndex(QueryExpressionTable table, java.lang.String querySQL, java.util.ArrayList<Parameter> originalParameters, boolean recursive)` Constructor for the original index in `TableView`.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `add(SessionLocal session, Row row)` Add a row to the index.
`void` `checkRename()` Check if renaming is allowed.
`void` `close(SessionLocal session)` Close this index.
`Cursor` `find(SessionLocal session, SearchRow first, SearchRow last)` Find a row or a list of rows and create a cursor to iterate over the result.
`Cursor` `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.
`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.
`java.lang.String` `getPlanSQL()` Get the message to show in a EXPLAIN statement.
`Query` `getQuery()`
`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.
`SessionLocal` `getSession()`
`boolean` `isExpired()`
`boolean` `isRecursive()`
`boolean` `needRebuild()` 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.
`void` `setRecursive(boolean value)`
`void` `setupQueryParameters(SessionLocal session, SearchRow first, SearchRow last, SearchRow intersection)` Set the query parameters.
`void` `truncate(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, needsUniqueCheck, removeChildrenAndResources, update`

### Methods inherited from class org.h2.schema.SchemaObject

`getSchema, getSQL, getSQL`

### Methods inherited from class org.h2.engine.DbObject

`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`

### Constructor Detail

#### QueryExpressionIndex

    public QueryExpressionIndex(QueryExpressionTable table,
                                java.lang.String querySQL,
                                java.util.ArrayList<Parameter> originalParameters,
                                boolean recursive)

Constructor for the original index in `TableView`.

Parameters:
  `table` - the query expression table
  `querySQL` - the query SQL
  `originalParameters` - the original parameters
  `recursive` - if the view is recursive

#### QueryExpressionIndex

    public QueryExpressionIndex(QueryExpressionTable table,
                                QueryExpressionIndex 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:
  `table` - the query expression table
  `index` - the main index
  `session` - the session
  `masks` - the masks
  `filters` - table filters
  `filter` - current filter
  `sortOrder` - sort order

### Method Detail

#### getSession

    public SessionLocal getSession()

#### isExpired

    public boolean isExpired()

#### getPlanSQL

    public java.lang.String getPlanSQL()

Description copied from class: `Index`
Get the message to show in a EXPLAIN statement.

Overrides:
  `getPlanSQL` in class `Index`
Returns:
  the plan

#### close

    public void close(SessionLocal session)

Description copied from class: `Index`
Close this index.

Specified by:
  `close` in class `Index`
Parameters:
  `session` - the session used to write data

#### add

    public void add(SessionLocal session,
                    Row row)

Description copied from class: `Index`
Add a row to the index.

Specified by:
  `add` in class `Index`
Parameters:
  `session` - the session to use
  `row` - the row to add

#### remove

    public void remove(SessionLocal session,
                       Row row)

Description copied from class: `Index`
Remove a row from the index.

Specified by:
  `remove` in class `Index`
Parameters:
  `session` - the session
  `row` - the row

#### 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 class `Index`
Parameters:
  `session` - the session
  `masks` - per-column comparison bit masks, null means 'always false', see constants in IndexCondition
  `filters` - all joined table filters
  `filter` - the current table filter index
  `sortOrder` - the sort order
  `allColumnsSet` - the set of all columns
Returns:
  the estimated cost

#### find

    public Cursor find(SessionLocal session,
                       SearchRow first,
                       SearchRow last)

Description copied from class: `Index`
Find a row or a list of rows and create a cursor to iterate over the result.

Specified by:
  `find` in class `Index`
Parameters:
  `session` - the session
  `first` - the first row, or null for no limit
  `last` - the last row, or null for no limit
Returns:
  the cursor to iterate over the results

#### findByGeometry

    public Cursor findByGeometry(SessionLocal session,
                                 SearchRow first,
                                 SearchRow last,
                                 SearchRow intersection)

Description copied from interface: `SpatialIndex`
Find a row or a list of rows and create a cursor to iterate over the result.

Specified by:
  `findByGeometry` in interface `SpatialIndex`
Parameters:
  `session` - the session
  `first` - the lower bound
  `last` - the upper bound
  `intersection` - the geometry which values should intersect with, or null for anything
Returns:
  the cursor to iterate over the results

#### setupQueryParameters

    public void setupQueryParameters(SessionLocal session,
                                     SearchRow first,
                                     SearchRow last,
                                     SearchRow intersection)

Set the query parameters.

Parameters:
  `session` - the session
  `first` - the lower bound
  `last` - the upper bound
  `intersection` - the intersection

#### getQuery

    public Query getQuery()

#### remove

    public void remove(SessionLocal session)

Description copied from class: `Index`
Remove the index.

Specified by:
  `remove` in class `Index`
Parameters:
  `session` - the session

#### truncate

    public void truncate(SessionLocal session)

Description copied from class: `Index`
Remove all rows from the index.

Specified by:
  `truncate` in class `Index`
Parameters:
  `session` - the session

#### checkRename

    public void checkRename()

Description copied from class: `DbObject`
Check if renaming is allowed. Does nothing when allowed.

Overrides:
  `checkRename` in class `DbObject`

#### 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 class `Index`
Returns:
  true if a rebuild is required.

#### setRecursive

    public void setRecursive(boolean value)

#### getRowCount

    public long getRowCount(SessionLocal session)

Description copied from class: `Index`
Get the row count of this table, for the given session.

Specified by:
  `getRowCount` in class `Index`
Parameters:
  `session` - the session
Returns:
  the row count

#### getRowCountApproximation

    public long getRowCountApproximation(SessionLocal session)

Description copied from class: `Index`
Get the approximated row count for this table.

Specified by:
  `getRowCountApproximation` in class `Index`
Parameters:
  `session` - the session
Returns:
  the approximated row count

#### isRecursive

    public boolean isRecursive()