## org.h2.table
Class TableView

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

All Implemented Interfaces:
  DbObject, SchemaObject

    public class TableView

extends Table

A view is a virtual table that is defined by a query.

Field Summary

Fields inherited from class org.h2.table.Table
`columns, compareMode, EXTERNAL_TABLE_ENGINE, isHidden, SYSTEM_TABLE, TABLE, TABLE_LINK, TYPE_CACHED, TYPE_MEMORY, VIEW`

Fields inherited from class org.h2.engine.DbObjectBase
`comment, database, trace`

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
`TableView(Schema schema, int id, java.lang.String name, java.lang.String querySQL, java.util.ArrayList<Parameter> params, java.lang.String[] columnNames, Session session, boolean recursive)`

Method Summary
`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` `canGetRowCount()` Check if the row count can be retrieved quickly.
`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.
`static TableView` `createTempView(Session session, User owner, java.lang.String name, Query query, Query topQuery)` Create a temporary view out of the given query.
`PlanItem` `getBestPlanItem(Session session, int[] masks)` Get the best plan for the given search mask.
`java.lang.String` `getCreateSQL()` Build a SQL statement to re-create this object.
`java.lang.String` `getCreateSQL(boolean orReplace, boolean force)` Generate "CREATE" SQL statement for the view.
`java.lang.String` `getCreateSQLForCopy(Table table, java.lang.String quotedName)` Build a SQL statement to re-create the object, or to create a copy of the object with a different name or referencing a different table
`java.lang.String` `getDropSQL()` Build a SQL statement to drop this object.
`java.util.ArrayList<Index>` `getIndexes()` Get all indexes for this table.
`long` `getMaxDataModificationId()` Get the last data modification id.
`User` `getOwner()`
`int` `getParameterOffset()`
`java.lang.String` `getQuery()`
`ResultInterface` `getRecursiveResult()`
`long` `getRowCount(Session session)` Get the row count for this table.
`long` `getRowCountApproximation()` Get the approximated row count for this table.
`Index` `getScanIndex(Session session)` Get the scan index to iterate through all rows.
`java.lang.String` `getSQL()` Get the SQL name of this object (may be quoted).
`java.lang.String` `getTableType()` Get the table type name
`Index` `getUniqueIndex()` Get any unique index for this table if one exists.
`boolean` `isDeterministic()` Check if the table is deterministic.
`boolean` `isInvalid()` Check if this view is currently invalid.
`boolean` `isLockedExclusively()` Check if this table is locked exclusively.
`boolean` `isTableExpression()`
`void` `lock(Session session, boolean exclusive, boolean force)` Lock the table for the given session.
`DbException` `recompile(Session session, boolean force)` Re-compile the view query and all views that depend on this object.
`void` `removeChildrenAndResources(Session session)` Remove all dependent objects and free all resources (files, blocks in files) of this object.
`void` `removeRow(Session session, Row row)` Remove a row from the table and all indexes.
`void` `replace(java.lang.String querySQL, java.lang.String[] columnNames, Session session, boolean recursive, boolean force)` Try to replace the SQL statement of the view and re-compile this and all dependent views.
`void` `setRecursiveResult(LocalResult value)`
`void` `setTableExpression(boolean tableExpression)`
`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, addSequence, addTrigger, addView, canReference, canTruncate, checkDeadlock, checkWritingAllowed, commit, compareTypeSave, doesColumnExist, dropSingleColumnConstraintsAndIndexes, findPrimaryKey, fire, fireAfterRow, fireBeforeRow, fireRow, getCheckForeignKeyConstraints, getChildren, getColumn, getColumn, getColumns, getCompareMode, getConstraints, getDefaultValue, getIndexForColumn, getOnCommitDrop, getOnCommitTruncate, getPrimaryKey, getRowIdColumn, getTemplateRow, getTemplateSimpleRow, getType, getViews, hasSelectTrigger, isGlobalTemporary, isHidden, isLockedExclusivelyBy, isPersistData, isPersistIndexes, removeConstraint, removeIndex, removeIndexOrTransferOwnership, removeSequence, removeTrigger, removeView, rename, renameColumn, setCheckForeignKeyConstraints, setColumns, setOnCommitDrop, setOnCommitTruncate, updateRows, validateConvertUpdateSequence`

Methods inherited from class org.h2.schema.SchemaObjectBase
`getSchema, initSchemaObjectBase`

Methods inherited from class org.h2.engine.DbObjectBase
`getComment, getDatabase, getId, getModificationId, getName, initDbObjectBase, invalidate, isTemporary, 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

### TableView

    public TableView(Schema schema,
                     int id,
                     java.lang.String name,
                     java.lang.String querySQL,
                     java.util.ArrayList<Parameter> params,
                     java.lang.String[] columnNames,
                     Session session,
                     boolean recursive)

Method Detail

### replace

    public void replace(java.lang.String querySQL,
                        java.lang.String[] columnNames,
                        Session session,
                        boolean recursive,
                        boolean force)

  Try to replace the SQL statement of the view and re-compile this and all dependent views.

  Parameters:
    `querySQL` - the SQL statement
    `columnNames` - the column names
    `session` - the session
    `recursive` - whether this is a recursive view
    `force` - if errors should be ignored

### recompile

    public DbException recompile(Session session,
                                 boolean force)

  Re-compile the view query and all views that depend on this object.

  Parameters:
    `session` - the session
    `force` - if exceptions should be ignored
  Returns:
    the exception if re-compiling this or any dependent view failed (only when force is disabled)

### isInvalid

    public boolean isInvalid()

  Check if this view is currently invalid.

  Returns:
    true if it is

### getBestPlanItem

    public PlanItem getBestPlanItem(Session session,
                                    int[] masks)

  Description copied from class: `Table`
  Get the best plan for the given search mask.

  Overrides:
    `getBestPlanItem` in class `Table`
  Parameters:
    `session` - the session
    `masks` - null means 'always false'
  Returns:
    the plan item

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

### getCreateSQLForCopy

    public java.lang.String getCreateSQLForCopy(Table table,
                                                java.lang.String quotedName)

  Description copied from interface: `DbObject`
  Build a SQL statement to re-create the object, or to create a copy of the object with a different name or referencing a different table

  Specified by:
    `getCreateSQLForCopy` in interface `DbObject`
  Overrides:
    `getCreateSQLForCopy` in class `Table`
  Parameters:
    `table` - the new table
    `quotedName` - the quoted name
  Returns:
    the SQL statement

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

### getCreateSQL

    public java.lang.String getCreateSQL(boolean orReplace,
                                         boolean force)

  Generate "CREATE" SQL statement for the view.

  Parameters:
    `orReplace` - if true, then include the OR REPLACE clause
    `force` - if true, then include the FORCE clause
  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`

### lock

    public void lock(Session session,
                     boolean exclusive,
                     boolean force)

  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
    `force` - lock even in the MVCC mode

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

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

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

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

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

### getRowCount

    public long getRowCount(Session 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

### canGetRowCount

    public boolean canGetRowCount()

  Description copied from class: `Table`
  Check if the row count can be retrieved quickly.

  Specified by:
    `canGetRowCount` 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

### getTableType

    public java.lang.String getTableType()

  Description copied from class: `Table`
  Get the table type name

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

### removeChildrenAndResources

    public void removeChildrenAndResources(Session session)

  Description copied from class: `DbObjectBase`
  Remove all dependent objects and free all resources (files, blocks in files) of this object.

  Specified by:
    `removeChildrenAndResources` in interface `DbObject`
  Overrides:
    `removeChildrenAndResources` in class `Table`
  Parameters:
    `session` - the session

### getSQL

    public java.lang.String getSQL()

  Description copied from interface: `DbObject`
  Get the SQL name of this object (may be quoted).

  Specified by:
    `getSQL` in interface `DbObject`
  Overrides:
    `getSQL` in class `SchemaObjectBase`
  Returns:
    the SQL name

### getQuery

    public java.lang.String getQuery()

### getScanIndex

    public Index getScanIndex(Session 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 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

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

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

### getOwner

    public User getOwner()

### createTempView

    public static TableView createTempView(Session session,
                                           User owner,
                                           java.lang.String name,
                                           Query query,
                                           Query topQuery)

  Create a temporary view out of the given query.

  Parameters:
    `session` - the session
    `owner` - the owner of the query
    `name` - the view name
    `query` - the query
    `topQuery` - the top level query
  Returns:
    the view table

### getRowCountApproximation

    public long getRowCountApproximation()

  Description copied from class: `Table`
  Get the approximated row count for this table.

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

### getParameterOffset

    public int getParameterOffset()

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

### setRecursiveResult

    public void setRecursiveResult(LocalResult value)

### getRecursiveResult

    public ResultInterface getRecursiveResult()

### setTableExpression

    public void setTableExpression(boolean tableExpression)

### isTableExpression

    public boolean isTableExpression()