## org.h2.index
Class PageDataIndex

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

All Implemented Interfaces:
  DbObject, Index, SchemaObject

    public class PageDataIndex

extends PageIndex

The scan index allows to access a row by key. It can 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.PageIndex
`rootPageId`

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
`PageDataIndex(RegularTable table, int id, IndexColumn[] columns, IndexType indexType, boolean create, Session session)`

Method Summary
`void` `add(Session session, Row row)` Add a row to this index.
`boolean` `canGetFirstOrLast()` Check if this index can quickly find the first or last value.
`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)` Create a cursor to iterate over a number of rows.
`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)` Calculate the cost to find rows.
`java.lang.String` `getCreateSQL()` Build a SQL statement to re-create this object.
`DbException` `getDuplicateKeyException()` Create a duplicate key exception with a message that contains the index name
`int` `getMainIndexColumn()`
`java.lang.String` `getPlanSQL()` Get the message to show in a EXPLAIN statement.
`Row` `getRow(long key)` Get the row with the given key.
`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 this index needs to be re-built.
`void` `remove(Session session)` Remove the index.
`void` `remove(Session session, Row row)` Remove a row from the index.
`void` `setMainIndexColumn(int mainIndexColumn)`
`java.lang.String` `toString()`
`void` `truncate(Session session)` Truncate the index.
`void` `writeRowCount()` Write back the row count if it has changed.

Methods inherited from class org.h2.index.PageIndex
`getRootPageId, setSortedInsertMode`

Methods inherited from class org.h2.index.BaseIndex
`canFindNext, compareKeys, compareRows, containsNullAndAllowMultipleNull, findNext, getColumnListSQL, getColumns, getCostRangeIndex, getCreateSQLForCopy, getDropSQL, getIndexColumns, getIndexType, getLookupCost, getTable, getType, initBaseIndex, 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`

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

### PageDataIndex

    public PageDataIndex(RegularTable table,
                         int id,
                         IndexColumn[] columns,
                         IndexType indexType,
                         boolean create,
                         Session session)

Method Detail

### getDuplicateKeyException

    public DbException getDuplicateKeyException()

  Description copied from interface: `Index`
  Create a duplicate key exception with a message that contains the index name

  Specified by:
    `getDuplicateKeyException` in interface `Index`
  Overrides:
    `getDuplicateKeyException` in class `BaseIndex`
  Returns:
    the exception

### add

    public void add(Session session,
                    Row row)

  Description copied from class: `BaseIndex`
  Add a row to this index.

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

### canGetFirstOrLast

    public boolean canGetFirstOrLast()

  Description copied from class: `BaseIndex`
  Check if this index can quickly find the first or last value.

  Specified by:
    `canGetFirstOrLast` in interface `Index`
  Specified by:
    `canGetFirstOrLast` in class `BaseIndex`
  Returns:
    true if it can

### find

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

  Description copied from class: `BaseIndex`
  Create a cursor to iterate over a number of rows.

  Specified by:
    `find` in interface `Index`
  Specified by:
    `find` in class `BaseIndex`
  Parameters:
    `session` - the session
    `first` - the first row to return (null if no limit)
    `last` - the last row to return (null if no limit)
  Returns:
    the cursor to iterate over the results

### findFirstOrLast

    public Cursor findFirstOrLast(Session session,
                                  boolean first)

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

  Specified by:
    `findFirstOrLast` in interface `Index`
  Specified by:
    `findFirstOrLast` in class `BaseIndex`
  Parameters:
    `session` - the session
    `first` - true for the first value, false for the last
  Returns:
    a cursor (never null)

### getCost

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

  Description copied from class: `BaseIndex`
  Calculate the cost to find rows.

  Specified by:
    `getCost` in interface `Index`
  Specified by:
    `getCost` in class `BaseIndex`
  Parameters:
    `session` - the session
    `masks` - the condition mask
  Returns:
    the cost

### needRebuild

    public boolean needRebuild()

  Description copied from class: `BaseIndex`
  Check if this index needs to be re-built.

  Specified by:
    `needRebuild` in interface `Index`
  Specified by:
    `needRebuild` in class `BaseIndex`
  Returns:
    true if it must be re-built.

### remove

    public void remove(Session session,
                       Row row)

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

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

### remove

    public void remove(Session session)

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

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

### truncate

    public void truncate(Session session)

  Description copied from class: `BaseIndex`
  Truncate the index.

  Specified by:
    `truncate` in interface `Index`
  Specified by:
    `truncate` in class `BaseIndex`
  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`

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

### getRow

    public Row getRow(long key)

  Get the row with the given key.

  Parameters:
    `key` - the key
  Returns:
    the row

### getRowCountApproximation

    public long getRowCountApproximation()

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

  Returns:
    the approximated row count

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

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

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

### close

    public void close(Session session)

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

  Specified by:
    `close` in interface `Index`
  Specified by:
    `close` in class `BaseIndex`
  Parameters:
    `session` - the session

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

### setMainIndexColumn

    public void setMainIndexColumn(int mainIndexColumn)

### getMainIndexColumn

    public int getMainIndexColumn()

### toString

    public java.lang.String toString()

  Overrides:
    `toString` in class `DbObjectBase`

### writeRowCount

    public void writeRowCount()

  Description copied from class: `PageIndex`
  Write back the row count if it has changed.

  Specified by:
    `writeRowCount` in class `PageIndex`

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