org.h2.pagestore.db

## Class HashIndex

- java.lang.Object
- - org.h2.engine.DbObjectBase
  - - org.h2.schema.SchemaObjectBase
    - - org.h2.index.BaseIndex
      - - org.h2.pagestore.db.HashIndex

All Implemented Interfaces:
  DbObject, Index, SchemaObject

    public class HashIndex
    extends BaseIndex

A unique index based on an in-memory hash map.

### Field Summary

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

`columnIds, columns, indexColumns, indexType, table`

### Fields inherited from class org.h2.engine.DbObjectBase

`comment, database, trace`

### Fields inherited from interface org.h2.engine.DbObject

`AGGREGATE, COMMENT, CONSTANT, CONSTRAINT, DOMAIN, FUNCTION_ALIAS, INDEX, RIGHT, ROLE, SCHEMA, SEQUENCE, SETTING, SYNONYM, TABLE_OR_VIEW, TRIGGER, USER`

### Constructor Summary

Constructors
Constructor and Description
`HashIndex(PageStoreTable table, int id, java.lang.String indexName, IndexColumn[] columns, IndexType indexType)`

### Method Summary

Methods
`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.
`boolean` `canScan()` Can this index iterate over all rows?
`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, TableFilter[] filters, int filter, SortOrder sortOrder, AllColumnsForPlan allColumnsSet)` Estimate the cost to search for rows given the search mask.
`long` `getDiskSpaceUsed()` Get the used disk space for this index.
`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, checkIndexColumnTypes, compareKeys, compareRows, createLookupBatch, find, findNext, getColumnIndex, getColumns, getCostRangeIndex, getCreateSQL, getCreateSQLForCopy, getDropSQL, getDuplicateKeyException, getDuplicatePrimaryKeyMessage, getIndexColumns, getIndexType, getPlanSQL, getRow, getTable, getType, isFindUsingFullTableScan, isFirstColumn, isHidden, isRowIdIndex, mayHaveNullDuplicates, removeChildrenAndResources, setSortedInsertMode, update`

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

`getSchema, getSQL, getSQL`

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

`getChildren, getComment, getDatabase, 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.schema.SchemaObject

`getSchema`

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

`getChildren, getComment, getDatabase, getId, getName, getSQL, getSQL, isTemporary, rename, setComment, setTemporary`

### Constructor Detail

#### HashIndex

    public HashIndex(PageStoreTable table,
             int id,
             java.lang.String indexName,
             IndexColumn[] columns,
             IndexType indexType)

### Method Detail

#### truncate

    public void truncate(Session session)

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

Parameters:
  `session` - the session

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

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

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

#### getDiskSpaceUsed

    public long getDiskSpaceUsed()

Description copied from interface: `Index`
Get the used disk space for this index.

Returns:
  the estimated number of bytes

#### close

    public void close(Session session)

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

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

#### remove

    public void remove(Session session)

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

Parameters:
  `session` - the session

#### getCost

    public double getCost(Session session,
                 int[] masks,
                 TableFilter[] filters,
                 int filter,
                 SortOrder sortOrder,
                 AllColumnsForPlan allColumnsSet)

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

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

#### canScan

    public boolean canScan()

Description copied from interface: `Index`
Can this index iterate over all rows?

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