org.h2.index
Class PageDataIndex

java.lang.Object
  extended by org.h2.engine.DbObjectBase
      extended by org.h2.schema.SchemaObjectBase
          extended by org.h2.index.BaseIndex
              extended by org.h2.index.PageIndex
                  extended by org.h2.index.PageDataIndex
All Implemented Interfaces:
DbObject, Index, RowIndex, SchemaObject

public class PageDataIndex
extends PageIndex
implements RowIndex

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.index.Index
EMPTY_HEAD
 
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(TableData table, int id, IndexColumn[] columns, IndexType indexType, int headPos, 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.
 java.sql.SQLException getDuplicateKeyException()
          Create a duplicate key exception with a message that contains the index name
 int getMainIndexColumn()
           
 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)
           
 void truncate(Session session)
          Truncate the index.
 
Methods inherited from class org.h2.index.PageIndex
getHeadPos, getRootPageId
 
Methods inherited from class org.h2.index.BaseIndex
canFindNext, compareKeys, compareRows, containsNullAndAllowMultipleNull, findNext, getColumnListSQL, getColumns, getCostRangeIndex, getCreateSQLForCopy, getDropSQL, getIndexColumns, getIndexType, getLookupCost, getPlanSQL, getTable, getType, 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.index.Index
canFindNext, compareKeys, compareRows, containsNullAndAllowMultipleNull, findNext, getColumnListSQL, getColumns, getCostRangeIndex, getIndexColumns, getIndexType, getLookupCost, getPlanSQL, getRootPageId, getTable
 
Methods inherited from interface org.h2.schema.SchemaObject
getSchema
 
Methods inherited from interface org.h2.engine.DbObject
getChildren, getComment, getCreateSQLForCopy, getDatabase, getDropSQL, getHeadPos, getId, getModificationId, getName, getSQL, getType, isTemporary, removeChildrenAndResources, rename, setComment, setModified, setTemporary
 

Constructor Detail

PageDataIndex

public PageDataIndex(TableData table,
                     int id,
                     IndexColumn[] columns,
                     IndexType indexType,
                     int headPos,
                     Session session)
              throws java.sql.SQLException
Throws:
java.sql.SQLException
Method Detail

getDuplicateKeyException

public java.sql.SQLException 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)
         throws java.sql.SQLException
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
Throws:
java.sql.SQLException

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)
            throws java.sql.SQLException
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
Throws:
java.sql.SQLException

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)
            throws java.sql.SQLException
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
Throws:
java.sql.SQLException

remove

public void remove(Session session)
            throws java.sql.SQLException
Description copied from class: BaseIndex
Remove the index.

Specified by:
remove in interface Index
Specified by:
remove in class BaseIndex
Parameters:
session - the session
Throws:
java.sql.SQLException

truncate

public void truncate(Session session)
              throws java.sql.SQLException
Description copied from class: BaseIndex
Truncate the index.

Specified by:
truncate in interface Index
Specified by:
truncate in class BaseIndex
Parameters:
session - the session
Throws:
java.sql.SQLException

checkRename

public void checkRename()
                 throws java.sql.SQLException
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
Throws:
java.sql.SQLException - if renaming is not allowed

getRow

public Row getRow(Session session,
                  long key)
           throws java.sql.SQLException
Description copied from interface: RowIndex
Get the row with the given key.

Specified by:
getRow in interface RowIndex
Parameters:
session - the session
key - the unique key
Returns:
the row
Throws:
java.sql.SQLException

getRow

public Row getRow(long key)
           throws java.sql.SQLException
Get the row with the given key.

Parameters:
key - the key
Returns:
the row
Throws:
java.sql.SQLException

getRowCountApproximation

public long getRowCountApproximation()
Description copied from interface: Index
Get the approximated row count for this table.

Specified by:
getRowCountApproximation in interface Index
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.

Specified by:
getRowCount in interface Index
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)
           throws java.sql.SQLException
Description copied from class: BaseIndex
Close this index.

Specified by:
close in interface Index
Specified by:
close in class BaseIndex
Parameters:
session - the session
Throws:
java.sql.SQLException

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