Package org.h2.mvstore.db

# Class MVTable

java.lang.Object
org.h2.engine.DbObject
org.h2.schema.SchemaObject
org.h2.table.Table
org.h2.table.TableBase
org.h2.mvstore.db.MVTable

All Implemented Interfaces:
  `HasSQL`

public class MVTable extends TableBase
A table stored in a MVStore.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final DebuggingThreadLocal<ArrayList<String>>`
`EXCLUSIVE_LOCKS`
The table names this thread has exclusively locked.
`static final DebuggingThreadLocal<ArrayList<String>>`
`SHARED_LOCKS`
The tables names this thread has a shared lock on.
`static final DebuggingThreadLocal<String>`
`WAITING_FOR_LOCK`
The table name this thread is waiting to lock.

### Fields inherited from class org.h2.table.Table

`columns, compareMode, EXCLUSIVE_LOCK, READ_LOCK, TYPE_CACHED, TYPE_MEMORY, WRITE_LOCK`

### 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
`MVTable(CreateTableData data, Store store)`

## Method Summary

Modifier and Type
Method
Description
`Index`
`addIndex(SessionLocal session, String indexName, int indexId, IndexColumn[] cols, int uniqueColumnCount, IndexType indexType, boolean create, String indexComment)`
Create an index for this table
`void`
`addRow(SessionLocal session, Row row)`
Add a row to the table and all indexes.
`void`
`afterCommit()`
Called after commit to increment database data modification counter for this table.
`boolean`
`canDrop()`
Check if this table can be dropped.
`boolean`
`canGetRowCount(SessionLocal session)`
Check if the row count can be retrieved quickly.
`boolean`
`canTruncate()`
Check if this table can be truncated.
`ArrayList<SessionLocal>`
`checkDeadlock(SessionLocal session, SessionLocal clash, Set<SessionLocal> visited)`
Check if a deadlock occurred.
`void`
`checkSupportAlter()`
Check if this table supports ALTER TABLE.
`void`
`close(SessionLocal session)`
Close the table object and flush changes.
`boolean`
`getContainsLargeObject()`
`long`
`getDiskSpaceUsed(boolean total, boolean approximate)`
`ArrayList<Index>`
`getIndexes()`
Get all indexes for this table.
`int`
`getMainIndexColumn()`
Returns ID of main index column, or `SearchRow.ROWID_INDEX`.
`String`
`getMapName()`
`long`
`getMaxDataModificationId()`
Get the last data modification id.
`Row`
`getRow(SessionLocal session, long key)`
Get the given row.
`long`
`getRowCount(SessionLocal session)`
Get the row count for this table.
`long`
`getRowCountApproximation(SessionLocal session)`
Get the approximated row count for this table.
`Column`
`getRowIdColumn()`
Get the row id column if this table has one.
`Index`
`getScanIndex(SessionLocal session)`
Get the scan index to iterate through all rows.
`TableType`
`getTableType()`
Get the table type name
`protected void`
`invalidate()`
Set the main attributes to null to make sure the object is no longer used.
`boolean`
`isDeterministic()`
Check if the table is deterministic.
`boolean`
`isLockedExclusively()`
Check if this table is locked exclusively.
`boolean`
`isLockedExclusivelyBy(SessionLocal session)`
Check if the table is exclusively locked by this session.
`boolean`
`isRowLockable()`
Views, function tables, links, etc.
`boolean`
`lock(SessionLocal session, int lockType)`
Lock the table for the given session.
`Row`
`lockRow(SessionLocal session, Row row, int timeoutMillis)`
Locks row, preventing any updated to it, except from the session specified.
`void`
`removeChildrenAndResources(SessionLocal session)`
Delete all dependent children objects and resources of this object.
`void`
`removeRow(SessionLocal session, Row row)`
Remove a row from the table and all indexes.
`String`
`toString()`
`long`
`truncate(SessionLocal session)`
Remove all rows from the table and indexes.
`void`
`unlock(SessionLocal s)`
Release the lock for this session.
`void`
`updateRow(SessionLocal session, Row oldRow, Row newRow)`
Update a row to the table and all indexes.

### Methods inherited from class org.h2.table.TableBase

`getCreateSQL, getCreateSQLForMeta, getDropSQL, getMainIndexColumn, isGlobalTemporary`

### Methods inherited from class org.h2.table.Table

`addConstraint, addDependencies, addDependentMaterializedView, addDependentView, addSequence, addSynonym, addTrigger, canReference, checkWritingAllowed, compareValues, convertInsertRow, convertUpdateRow, createRow, doesColumnExist, dropMultipleColumnsConstraintsAndIndexes, findColumn, findPrimaryKey, fire, fireAfterRow, fireBeforeRow, fireRow, getBestPlanItem, getCheckForeignKeyConstraints, getChildren, getColumn, getColumn, getColumn, getColumns, getCompareMode, getConstraints, getDependentMaterializedViews, getDependentViews, getIdentityColumn, getIndex, getIndexForColumn, getNullRow, getOnCommitDrop, getOnCommitTruncate, getPrimaryKey, getRowFactory, getScanIndex, getSQLTableType, getTemplateRow, getTemplateSimpleRow, getTriggers, getType, getVisibleColumns, hasSelectTrigger, isInsertable, isPersistData, isPersistIndexes, isQueryComparable, isView, removeColumnExpressionsDependencies, removeConstraint, removeDependentMaterializedView, removeDependentView, removeIndex, removeIndexOrTransferOwnership, removeSequence, removeSynonym, removeTrigger, rename, renameColumn, setCheckForeignKeyConstraints, setColumns, setOnCommitDrop, setOnCommitTruncate, updateRows`

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

`getSchema, getSQL, getSQL`

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

`checkRename, getComment, getCreateSQLForCopy, getDatabase, getId, getModificationId, getName, isTemporary, isValid, 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.util.HasSQL

`getTraceSQL`

## Field Details

### WAITING_FOR_LOCK

public static final DebuggingThreadLocal<String> WAITING_FOR_LOCK
The table name this thread is waiting to lock.

### EXCLUSIVE_LOCKS

public static final DebuggingThreadLocal<ArrayList<String>> EXCLUSIVE_LOCKS
The table names this thread has exclusively locked.

### SHARED_LOCKS

public static final DebuggingThreadLocal<ArrayList<String>> SHARED_LOCKS
The tables names this thread has a shared lock on.

## Constructor Details

### MVTable

public MVTable(CreateTableData data, Store store)

## Method Details

### getMapName

public String getMapName()

### lock

public boolean lock(SessionLocal session, int lockType)
Description copied from class: `Table`
Lock the table for the given session. This method waits until the lock is granted.

Overrides:
  `lock` in class `Table`
Parameters:
  `session` - the session
  `lockType` - the type of lock
Returns:
  true if the table was already exclusively locked by this session.

### unlock

public void unlock(SessionLocal s)
Description copied from class: `Table`
Release the lock for this session.

Overrides:
  `unlock` in class `Table`
Parameters:
  `s` - the session

### close

public void close(SessionLocal session)
Description copied from class: `Table`
Close the table object and flush changes.

Specified by:
  `close` in class `Table`
Parameters:
  `session` - the session

### getRow

public Row getRow(SessionLocal session, long key)
Description copied from class: `Table`
Get the given row.

Overrides:
  `getRow` in class `Table`
Parameters:
  `session` - the session
  `key` - the primary key
Returns:
  the row

### addIndex

public Index addIndex(SessionLocal session, String indexName, int indexId, IndexColumn[] cols, int uniqueColumnCount, IndexType indexType, boolean create, String indexComment)
Description copied from class: `Table`
Create an index for this table

Specified by:
  `addIndex` in class `Table`
Parameters:
  `session` - the session
  `indexName` - the name of the index
  `indexId` - the id
  `cols` - the index columns
  `uniqueColumnCount` - the count of unique columns
  `indexType` - the index type
  `create` - whether this is a new index
  `indexComment` - the comment
Returns:
  the index

### removeRow

public void removeRow(SessionLocal session, Row row)
Description copied from class: `Table`
Remove a row from the table and all indexes.

Specified by:
  `removeRow` in class `Table`
Parameters:
  `session` - the session
  `row` - the row

### truncate

public long truncate(SessionLocal session)
Description copied from class: `Table`
Remove all rows from the table and indexes.

Specified by:
  `truncate` in class `Table`
Parameters:
  `session` - the session
Returns:
  number of removed rows, possibly including uncommitted rows

### addRow

public void addRow(SessionLocal session, Row row)
Description copied from class: `Table`
Add a row to the table and all indexes.

Specified by:
  `addRow` in class `Table`
Parameters:
  `session` - the session
  `row` - the row

### updateRow

public void updateRow(SessionLocal session, Row oldRow, Row newRow)
Description copied from class: `Table`
Update a row to the table and all indexes.

Overrides:
  `updateRow` in class `Table`
Parameters:
  `session` - the session
  `oldRow` - the row to update
  `newRow` - the row with updated values (_rowid_ suppose to be the same)

### lockRow

public Row lockRow(SessionLocal session, Row row, int timeoutMillis)
Description copied from class: `Table`
Locks row, preventing any updated to it, except from the session specified.

Overrides:
  `lockRow` in class `Table`
Parameters:
  `session` - the session
  `row` - to lock
  `timeoutMillis` - timeout in milliseconds, `-1` for default, `-2` to skip locking if row is already locked by another session
Returns:
  locked row, or null if row does not exist anymore or if it was skipped

### getScanIndex

public Index getScanIndex(SessionLocal session)
Description copied from class: `Table`
Get the scan index to iterate through all rows.

Specified by:
  `getScanIndex` in class `Table`
Parameters:
  `session` - the session
Returns:
  the index

### getIndexes

public ArrayList<Index> getIndexes()
Description copied from class: `Table`
Get all indexes for this table.

Specified by:
  `getIndexes` in class `Table`
Returns:
  the list of indexes

### getMaxDataModificationId

public long getMaxDataModificationId()
Description copied from class: `Table`
Get the last data modification id.

Specified by:
  `getMaxDataModificationId` in class `Table`
Returns:
  the modification id

### removeChildrenAndResources

public void removeChildrenAndResources(SessionLocal session)
Description copied from class: `DbObject`
Delete all dependent children objects and resources of this object.

Overrides:
  `removeChildrenAndResources` in class `Table`
Parameters:
  `session` - the session

### getRowCount

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

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

### getRowCountApproximation

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

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

### getDiskSpaceUsed

public long getDiskSpaceUsed(boolean total, boolean approximate)

Overrides:
  `getDiskSpaceUsed` in class `Table`

### isRowLockable

public boolean isRowLockable()
Description copied from class: `Table`
Views, function tables, links, etc. do not support locks

Overrides:
  `isRowLockable` in class `Table`
Returns:
  true if table supports row-level locks

### afterCommit

public void afterCommit()
Called after commit to increment database data modification counter for this table.

### getMainIndexColumn

public int getMainIndexColumn()
Description copied from class: `Table`
Returns ID of main index column, or `SearchRow.ROWID_INDEX`.

Overrides:
  `getMainIndexColumn` in class `Table`
Returns:
  ID of main index column, or `SearchRow.ROWID_INDEX`

### canDrop

public boolean canDrop()
Description copied from class: `Table`
Check if this table can be dropped.

Specified by:
  `canDrop` in class `Table`
Returns:
  true if it can

### canGetRowCount

public boolean canGetRowCount(SessionLocal session)
Description copied from class: `Table`
Check if the row count can be retrieved quickly.

Specified by:
  `canGetRowCount` in class `Table`
Parameters:
  `session` - the session
Returns:
  true if it can

### canTruncate

public boolean canTruncate()
Description copied from class: `Table`
Check if this table can be truncated.

Overrides:
  `canTruncate` in class `Table`
Returns:
  true if it can

### checkDeadlock

public ArrayList<SessionLocal> checkDeadlock(SessionLocal session, SessionLocal clash, Set<SessionLocal> visited)
Description copied from class: `Table`
Check if a deadlock occurred. This method is called recursively. There is a circle if the session to be tested has already being visited. If this session is part of the circle (if it is the clash session), the method must return an empty object array. Once a deadlock has been detected, the methods must add the session to the list. If this session is not part of the circle, or if no deadlock is detected, this method returns null.

Overrides:
  `checkDeadlock` in class `Table`
Parameters:
  `session` - the session to be tested for
  `clash` - set with sessions already visited, and null when starting verification
  `visited` - set with sessions already visited, and null when starting verification
Returns:
  an object array with the sessions involved in the deadlock, or null

### checkSupportAlter

public void checkSupportAlter()
Description copied from class: `Table`
Check if this table supports ALTER TABLE.

Specified by:
  `checkSupportAlter` in class `Table`

### getContainsLargeObject

public boolean getContainsLargeObject()

### getRowIdColumn

public Column getRowIdColumn()
Description copied from class: `Table`
Get the row id column if this table has one.

Overrides:
  `getRowIdColumn` in class `Table`
Returns:
  the row id column, or null

### getTableType

public TableType getTableType()
Description copied from class: `Table`
Get the table type name

Specified by:
  `getTableType` in class `Table`
Returns:
  the table type name

### isDeterministic

public boolean isDeterministic()
Description copied from class: `Table`
Check if the table is deterministic.

Specified by:
  `isDeterministic` in class `Table`
Returns:
  true if it is

### isLockedExclusively

public boolean isLockedExclusively()
Description copied from class: `Table`
Check if this table is locked exclusively.

Overrides:
  `isLockedExclusively` in class `Table`
Returns:
  true if it is.

### isLockedExclusivelyBy

public boolean isLockedExclusivelyBy(SessionLocal session)
Description copied from class: `Table`
Check if the table is exclusively locked by this session.

Overrides:
  `isLockedExclusivelyBy` in class `Table`
Parameters:
  `session` - the session
Returns:
  true if it is

### invalidate

protected void invalidate()
Description copied from class: `DbObject`
Set the main attributes to null to make sure the object is no longer used.

Overrides:
  `invalidate` in class `DbObject`

### toString

public String toString()

Overrides:
  `toString` in class `DbObject`