## org.h2.index
Class ViewIndex

    java.lang.Object
      org.h2.engine.DbObjectBase
          org.h2.schema.SchemaObjectBase
              org.h2.index.BaseIndex
                  org.h2.index.ViewIndex

All Implemented Interfaces:
  DbObject, Index, SchemaObject

    public class ViewIndex

extends BaseIndex

This object represents a virtual index for a query. Actually it only represents a prepared SELECT statement.

Field Summary

Fields inherited from class org.h2.index.BaseIndex
`columnIds, columns, indexColumns, indexType, isMultiVersion, table`

Fields inherited from class org.h2.engine.DbObjectBase
`comment, database, trace`

Fields inherited from interface org.h2.engine.DbObject
`AGGREGATE, COMMENT, CONSTANT, CONSTRAINT, FUNCTION_ALIAS, INDEX, RIGHT, ROLE, SCHEMA, SEQUENCE, SETTING, TABLE_OR_VIEW, TRIGGER, USER, USER_DATATYPE`

Constructor Summary
`ViewIndex(TableView view, java.lang.String querySQL, java.util.ArrayList<Parameter> originalParameters, boolean recursive)`
`ViewIndex(TableView view, ViewIndex index, Session session, int[] masks)`

Method Summary
`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.
`double` `getCost(Session session, int[] masks)` Estimate the cost to search for rows given the search mask.
`java.lang.String` `getPlanSQL()` Get the message to show in a EXPLAIN statement.
`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.
`Session` `getSession()`
`boolean` `isRecursive()`
`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` `setRecursive(boolean value)`
`void` `truncate(Session session)` Remove all rows from the index.

Methods inherited from class org.h2.index.BaseIndex
`canFindNext, commit, compareRows, findNext, getColumnIndex, getColumns, getCreateSQL, getCreateSQLForCopy, getDropSQL, getIndexColumns, getIndexType, getRow, getTable, getType, initBaseIndex, isHidden, isRowIdIndex, removeChildrenAndResources`

Methods inherited from class org.h2.schema.SchemaObjectBase
`getSchema, getSQL, initSchemaObjectBase`

Methods inherited from class org.h2.engine.DbObjectBase
`getChildren, getComment, getDatabase, getId, getModificationId, getName, initDbObjectBase, invalidate, isTemporary, 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.schema.SchemaObject
`getSchema`

Methods inherited from interface org.h2.engine.DbObject
`getChildren, getComment, getDatabase, getId, getModificationId, getName, getSQL, isTemporary, rename, setComment, setModified, setTemporary`

Constructor Detail

### ViewIndex

    public ViewIndex(TableView view,
                     java.lang.String querySQL,
                     java.util.ArrayList<Parameter> originalParameters,
                     boolean recursive)

### ViewIndex

    public ViewIndex(TableView view,
                     ViewIndex index,
                     Session session,
                     int[] masks)

Method Detail

### getSession

    public Session getSession()

### getPlanSQL

    public java.lang.String getPlanSQL()

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

  Specified by:
    `getPlanSQL` in interface `Index`
  Overrides:
    `getPlanSQL` in class `BaseIndex`
  Returns:
    the plan

### close

    public void close(Session session)

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

  Parameters:
    `session` - the session used to write data

### add

    public void add(Session session,
                    Row row)

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

  Parameters:
    `session` - the session to use
    `row` - the row to add

### remove

    public void remove(Session session,
                       Row row)

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

  Parameters:
    `session` - the session
    `row` - the row

### getCost

    public double getCost(Session session,
                          int[] masks)

  Description copied from interface: `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.

  Parameters:
    `session` - the session
    `masks` - the search mask
  Returns:
    the estimated cost

### find

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

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

  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

### remove

    public void remove(Session session)

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

  Parameters:
    `session` - the session

### truncate

    public void truncate(Session session)

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

  Parameters:
    `session` - the session

### checkRename

    public void checkRename()

  Description copied from class: `DbObjectBase`
  Check if this object can be renamed. System objects may not be renamed.

  Specified by:
    `checkRename` in interface `DbObject`
  Specified by:
    `checkRename` in class `DbObjectBase`

### needRebuild

    public boolean needRebuild()

  Description copied from interface: `Index`
  Check if the index needs to be rebuilt. This method is called after opening an index.

  Returns:
    true if a rebuild is required.

### canGetFirstOrLast

    public boolean canGetFirstOrLast()

  Description copied from interface: `Index`
  Check if the index can directly look up the lowest or highest value of a column.

  Returns:
    true if it can

### findFirstOrLast

    public Cursor findFirstOrLast(Session session,
                                  boolean first)

  Description copied from interface: `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.

  Parameters:
    `session` - the session
    `first` - true if the first (lowest for ascending indexes) or last value should be returned
  Returns:
    a cursor (never null)

### setRecursive

    public void setRecursive(boolean value)

### getRowCount

    public long getRowCount(Session session)

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

  Parameters:
    `session` - the session
  Returns:
    the row count

### getRowCountApproximation

    public long getRowCountApproximation()

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

  Returns:
    the approximated row count

### isRecursive

    public boolean isRecursive()