org.h2.table

## Class VirtualTable

- java.lang.Object
- - org.h2.engine.DbObjectBase
  - - org.h2.schema.SchemaObjectBase
    - - org.h2.table.Table
      - - org.h2.table.VirtualTable

All Implemented Interfaces:
  DbObject, SchemaObject

Direct Known Subclasses:
  DualTable, RangeTable, VirtualConstructedTable

    public abstract class VirtualTable
    extends Table

A base class for virtual tables.

### Field Summary

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

`columns, compareMode, isHidden, TYPE_CACHED, TYPE_MEMORY`

### 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
`protected` `VirtualTable(Schema schema, int id, java.lang.String name)`

### Method Summary

Methods
`Index` `addIndex(Session session, java.lang.String indexName, int indexId, IndexColumn[] cols, IndexType indexType, boolean create, java.lang.String indexComment)` Create an index for this table
`void` `addRow(Session session, Row row)` Add a row to the table and all indexes.
`boolean` `canDrop()` Check if this table can be dropped.
`boolean` `canReference()` Check if this table can be referenced.
`void` `checkRename()` Check if this object can be renamed.
`void` `checkSupportAlter()` Check if this table supports ALTER TABLE.
`void` `close(Session session)` Close the table object and flush changes.
`java.lang.String` `getCreateSQL()` Build a SQL statement to re-create this object.
`long` `getDiskSpaceUsed()`
`java.lang.String` `getDropSQL()` Build a SQL statement to drop this object.
`java.util.ArrayList<Index>` `getIndexes()` Get all indexes for this table.
`TableType` `getTableType()` Get the table type name
`Index` `getUniqueIndex()` Get any unique index for this table if one exists.
`boolean` `isLockedExclusively()` Check if this table is locked exclusively.
`boolean` `lock(Session session, boolean exclusive, boolean forceLockEvenInMvcc)` Lock the table for the given session.
`void` `removeRow(Session session, Row row)` Remove a row from the table and all indexes.
`void` `truncate(Session session)` Remove all rows from the table and indexes.
`void` `unlock(Session s)` Release the lock for this session.

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

`addConstraint, addDependencies, addDependentView, addSequence, addSynonym, addTrigger, canGetRowCount, canTruncate, checkDeadlock, checkWritingAllowed, compareValues, createRow, doesColumnExist, dropMultipleColumnsConstraintsAndIndexes, findColumn, findPrimaryKey, fire, fireAfterRow, fireBeforeRow, fireRow, getBestPlanItem, getCheckForeignKeyConstraints, getChildren, getColumn, getColumn, getColumn, getColumns, getCompareMode, getConstraints, getCreateSQLForCopy, getDefaultValue, getDependentViews, getIndex, getIndexForColumn, getMaxDataModificationId, getOnCommitDrop, getOnCommitTruncate, getOnUpdateValue, getPrimaryKey, getRow, getRowCount, getRowCountApproximation, getRowIdColumn, getScanIndex, getScanIndex, getTemplateRow, getTemplateSimpleRow, getType, hasInsteadOfTrigger, hasSelectTrigger, isDeterministic, isGlobalTemporary, isHidden, isLockedExclusivelyBy, isMVStore, isPersistData, isPersistIndexes, isQueryComparable, isTableExpression, isView, lockRow, removeChildrenAndResources, removeColumnExpressionsDependencies, removeConstraint, removeDependentView, removeIndex, removeIndexOrTransferOwnership, removeSequence, removeSynonym, removeTrigger, rename, renameColumn, setCheckForeignKeyConstraints, setColumns, setHidden, setOnCommitDrop, setOnCommitTruncate, setTableExpression, updateRow, updateRows, validateConvertUpdateSequence`

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

`getSchema, getSQL, getSQL`

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

`getComment, getDatabase, getId, getModificationId, getName, invalidate, isTemporary, isValid, 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.engine.DbObject

`getComment, getDatabase, getId, getName, isTemporary, setComment, setTemporary`

### Constructor Detail

#### VirtualTable

    protected VirtualTable(Schema schema,
                int id,
                java.lang.String name)

### Method Detail

#### lock

    public boolean lock(Session session,
               boolean exclusive,
               boolean forceLockEvenInMvcc)

Description copied from class: `Table`
Lock the table for the given session. This method waits until the lock is granted.

Specified by:
  `lock` in class `Table`
Parameters:
  `session` - the session
  `exclusive` - true for write locks, false for read locks
  `forceLockEvenInMvcc` - lock even in the MVCC mode
Returns:
  true if the table was already exclusively locked by this session.

#### close

    public void close(Session session)

Description copied from class: `Table`
Close the table object and flush changes.

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

#### unlock

    public void unlock(Session s)

Description copied from class: `Table`
Release the lock for this session.

Specified by:
  `unlock` in class `Table`
Parameters:
  `s` - the session

#### addIndex

    public Index addIndex(Session session,
                 java.lang.String indexName,
                 int indexId,
                 IndexColumn[] cols,
                 IndexType indexType,
                 boolean create,
                 java.lang.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
  `indexType` - the index type
  `create` - whether this is a new index
  `indexComment` - the comment
Returns:
  the index

#### removeRow

    public void removeRow(Session 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 void truncate(Session session)

Description copied from class: `Table`
Remove all rows from the table and indexes.

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

#### addRow

    public void addRow(Session 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

#### checkSupportAlter

    public void checkSupportAlter()

Description copied from class: `Table`
Check if this table supports ALTER TABLE.

Specified by:
  `checkSupportAlter` in class `Table`

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

#### getUniqueIndex

    public Index getUniqueIndex()

Description copied from class: `Table`
Get any unique index for this table if one exists.

Specified by:
  `getUniqueIndex` in class `Table`
Returns:
  a unique index

#### getIndexes

    public java.util.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

#### isLockedExclusively

    public boolean isLockedExclusively()

Description copied from class: `Table`
Check if this table is locked exclusively.

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

#### canReference

    public boolean canReference()

Description copied from class: `Table`
Check if this table can be referenced.

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

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

#### getDiskSpaceUsed

    public long getDiskSpaceUsed()

Specified by:
  `getDiskSpaceUsed` in class `Table`

#### 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`
Specified by:
  `getCreateSQL` in class `DbObjectBase`
Returns:
  the SQL statement

#### getDropSQL

    public java.lang.String getDropSQL()

Description copied from class: `DbObjectBase`
Build a SQL statement to drop this object.

Specified by:
  `getDropSQL` in interface `DbObject`
Specified by:
  `getDropSQL` in class `DbObjectBase`
Returns:
  the SQL statement

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