## org.h2.index
Class ScanIndex

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

All Implemented Interfaces:
  DbObject, Index, SchemaObject

    public class ScanIndex

extends BaseIndex

The scan index is not really an 'index' in the strict sense, because it can not be used for direct lookup. It can only be used to iterate over all rows of a table. Each regular table has one such object, even if no primary key or indexes are defined.

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
`ScanIndex(RegularTable table, int id, IndexColumn[] columns, IndexType indexType)`

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.
`void` `commit(int operation, Row row)` Commit the operation for a row.
`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)` Estimate the cost to search for rows given the search mask.
`java.lang.String` `getCreateSQL()` Build a SQL statement to re-create this object.
`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.
`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` `truncate(Session session)` Remove all rows from the index.

Methods inherited from class org.h2.index.BaseIndex
`canFindNext, compareRows, findNext, getColumns, getCreateSQLForCopy, getDropSQL, getIndexColumns, getIndexType, 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

### ScanIndex

    public ScanIndex(RegularTable table,
                     int id,
                     IndexColumn[] columns,
                     IndexType indexType)

Method Detail

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

### getCreateSQL

    public java.lang.String getCreateSQL()

  Description copied from class: `DbObjectBase`
  Build a SQL statement to re-create this object.

  Specified by:
    `getCreateSQL` in interface `DbObject`
  Overrides:
    `getCreateSQL` in class `BaseIndex`
  Returns:
    the SQL statement

### close

    public void close(Session session)

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

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

### getRow

    public Row getRow(Session session,
                      long key)

  Description copied from interface: `Index`
  Get the row with the given key.

  Specified by:
    `getRow` in interface `Index`
  Overrides:
    `getRow` in class `BaseIndex`
  Parameters:
    `session` - the session
    `key` - the unique key
  Returns:
    the row

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

### commit

    public void commit(int operation,
                       Row row)

  Description copied from interface: `Index`
  Commit the operation for a row. This is only important for multi-version indexes.

  Specified by:
    `commit` in interface `Index`
  Overrides:
    `commit` in class `BaseIndex`
  Parameters:
    `operation` - the operation type
    `row` - the row

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

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

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

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

### getColumnIndex

    public int getColumnIndex(Column col)

  Description copied from interface: `Index`
  Get the index of a column in the list of index columns

  Specified by:
    `getColumnIndex` in interface `Index`
  Overrides:
    `getColumnIndex` in class `BaseIndex`
  Parameters:
    `col` - the column
  Returns:
    the index (0 meaning first column)

### 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)

### getRowCountApproximation

    public long getRowCountApproximation()

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

  Returns:
    the approximated row count

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