Package org.h2.index

# Class LinkedIndex

java.lang.Object
org.h2.engine.DbObject
org.h2.schema.SchemaObject
org.h2.index.Index
org.h2.index.LinkedIndex

All Implemented Interfaces:
  `HasSQL`

public class LinkedIndex extends Index
A linked index is a index for a linked (remote) table. It is backed by an index on the remote table which is accessed over JDBC.

## Field Summary

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

`columnIds, columns, indexColumns, indexType, table, uniqueColumnColumn`

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

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

### Fields inherited from interface org.h2.util.HasSQL

`ADD_PLAN_INFORMATION, DEFAULT_SQL_FLAGS, NO_CASTS, QUOTE_ONLY_WHEN_REQUIRED, REPLACE_LOBS_FOR_TRACE, TRACE_SQL_FLAGS`

## Constructor Summary

Constructors
Constructor
Description
`LinkedIndex(TableLink table, int id, IndexColumn[] columns, int uniqueColumnCount, IndexType indexType)`

## Method Summary

Modifier and Type
Method
Description
`void`
`add(SessionLocal session, Row row)`
Add a row to the index.
`void`
`checkRename()`
Check if renaming is allowed.
`void`
`close(SessionLocal session)`
Close this index.
`Cursor`
`find(SessionLocal session, SearchRow first, SearchRow last, boolean reverse)`
Find a row or a list of rows and create a cursor to iterate over the result.
`double`
`getCost(SessionLocal session, int[] masks, TableFilter[] filters, int filter, SortOrder sortOrder, AllColumnsForPlan allColumnsSet)`
Estimate the cost to search for rows given the search mask.
`String`
`getCreateSQL()`
Construct the CREATE ...
`long`
`getRowCount(SessionLocal session)`
Get the row count of this table, for the given session.
`long`
`getRowCountApproximation(SessionLocal session)`
Get the approximated row count for this table.
`boolean`
`needRebuild()`
Check if the index needs to be rebuilt.
`void`
`remove(SessionLocal session)`
Remove the index.
`void`
`remove(SessionLocal session, Row row)`
Remove a row from the index.
`void`
`truncate(SessionLocal session)`
Remove all rows from the index.
`void`
`update(Row oldRow, Row newRow, SessionLocal session)`
Update a row using a UPDATE statement.

### Methods inherited from class org.h2.index.Index

`canFindNext, canGetFirstOrLast, canScan, checkIndexColumnTypes, compareRows, findFirstOrLast, findNext, getColumnIndex, getColumns, getCostRangeIndex, getCreateSQLForCopy, getDiskSpaceUsed, getDuplicateKeyException, getDuplicatePrimaryKeyMessage, getIndexColumns, getIndexType, getPlanSQL, getRow, getRowFactory, getTable, getType, getUniqueColumnCount, getUniqueRowFactory, isFindUsingFullTableScan, isFirstColumn, isRowIdIndex, needsUniqueCheck, removeChildrenAndResources, update`

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

`getSchema, getSQL, getSQL`

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

`getChildren, getComment, getCreateSQLForMeta, getDatabase, getDropSQL, 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.util.HasSQL

`getTraceSQL`

## Constructor Details

### LinkedIndex

public LinkedIndex(TableLink table, int id, IndexColumn[] columns, int uniqueColumnCount, IndexType indexType)

## Method Details

### getCreateSQL

public String getCreateSQL()
Description copied from class: `DbObject`
Construct the CREATE ... SQL statement for this object.

Overrides:
  `getCreateSQL` in class `Index`
Returns:
  the SQL statement

### close

public void close(SessionLocal session)
Description copied from class: `Index`
Close this index.

Specified by:
  `close` in class `Index`
Parameters:
  `session` - the session used to write data

### add

public void add(SessionLocal session, Row row)
Description copied from class: `Index`
Add a row to the index.

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

### find

public Cursor find(SessionLocal session, SearchRow first, SearchRow last, boolean reverse)
Description copied from class: `Index`
Find a row or a list of rows and create a cursor to iterate over the result.

Specified by:
  `find` in class `Index`
Parameters:
  `session` - the session
  `first` - the first row, or null for no limit
  `last` - the last row, or null for no limit
  `reverse` - if true, iterate in reverse (descending) order
Returns:
  the cursor to iterate over the results

### getCost

public double getCost(SessionLocal session, int[] masks, TableFilter[] filters, int filter, SortOrder sortOrder, AllColumnsForPlan allColumnsSet)
Description copied from class: `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.

Specified by:
  `getCost` in class `Index`
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

### remove

public void remove(SessionLocal session)
Description copied from class: `Index`
Remove the index.

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

### truncate

public void truncate(SessionLocal session)
Description copied from class: `Index`
Remove all rows from the index.

Specified by:
  `truncate` in class `Index`
Parameters:
  `session` - the session

### checkRename

public void checkRename()
Description copied from class: `DbObject`
Check if renaming is allowed. Does nothing when allowed.

Overrides:
  `checkRename` in class `DbObject`

### needRebuild

public boolean needRebuild()
Description copied from class: `Index`
Check if the index needs to be rebuilt. This method is called after opening an index.

Specified by:
  `needRebuild` in class `Index`
Returns:
  true if a rebuild is required.

### remove

public void remove(SessionLocal session, Row row)
Description copied from class: `Index`
Remove a row from the index.

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

### update

public void update(Row oldRow, Row newRow, SessionLocal session)
Update a row using a UPDATE statement. This method is to be called if the emit updates option is enabled.

Parameters:
  `oldRow` - the old data
  `newRow` - the new data
  `session` - the session

### getRowCount

public long getRowCount(SessionLocal session)
Description copied from class: `Index`
Get the row count of this table, for the given session.

Specified by:
  `getRowCount` in class `Index`
Parameters:
  `session` - the session
Returns:
  the row count

### getRowCountApproximation

public long getRowCountApproximation(SessionLocal session)
Description copied from class: `Index`
Get the approximated row count for this table.

Specified by:
  `getRowCountApproximation` in class `Index`
Parameters:
  `session` - the session
Returns:
  the approximated row count