Package org.h2.table
Class MetaTable
- java.lang.Object
-
- org.h2.engine.DbObject
-
- org.h2.schema.SchemaObject
-
- org.h2.table.Table
-
- org.h2.table.MetaTable
-
- All Implemented Interfaces:
HasSQL
- Direct Known Subclasses:
InformationSchemaTable
,InformationSchemaTableLegacy
,PgCatalogTable
public abstract class MetaTable extends Table
This class is responsible to build the database meta data pseudo tables.
-
-
Field Summary
Fields Modifier and Type Field Description protected int
indexColumn
The indexed column.protected MetaIndex
metaIndex
The index for this table.static long
ROW_COUNT_APPROXIMATION
The approximate number of rows of a meta table.protected int
type
The table type.-
Fields inherited from class org.h2.table.Table
columns, compareMode, EXCLUSIVE_LOCK, isHidden, 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
-
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected void
add(SessionLocal session, java.util.ArrayList<Row> rows, java.lang.Object... stringsOrValues)
Add a row to a list.Index
addIndex(SessionLocal session, java.lang.String indexName, int indexId, IndexColumn[] cols, int uniqueColumnCount, IndexType indexType, boolean create, java.lang.String indexComment)
Create an index for this tablevoid
addRow(SessionLocal session, Row row)
Add a row to the table and all indexes.boolean
canDrop()
Check if this table can be dropped.boolean
canGetRowCount(SessionLocal session)
Check if the row count can be retrieved quickly.boolean
canReference()
Check if this table can be referenced.protected boolean
checkIndex(SessionLocal session, java.lang.String value, Value indexFrom, Value indexTo)
Checks index conditions.void
checkRename()
Check if renaming is allowed.void
checkSupportAlter()
Check if this table supports ALTER TABLE.void
close(SessionLocal session)
Close the table object and flush changes.(package private) Column
column(java.lang.String name)
Creates a column with the specified name and character string data type.protected Column
column(java.lang.String name, TypeInfo type)
Creates a column with the specified name and data type.abstract java.util.ArrayList<Row>
generateRows(SessionLocal session, SearchRow first, SearchRow last)
Generate the data for the given metadata table using the given first and last row filters.java.lang.String
getCreateSQL()
Construct the CREATE ...java.util.ArrayList<Index>
getIndexes()
Get all indexes for this table.long
getRowCount(SessionLocal session)
Get the row count for this table.long
getRowCountApproximation(SessionLocal session)
Get the approximated row count for this table.Index
getScanIndex(SessionLocal session)
Get the scan index to iterate through all rows.TableType
getTableType()
Get the table type nameprotected boolean
hideTable(Table table, SessionLocal session)
Check whether to hide the table.protected java.lang.String
identifier(java.lang.String s)
If needed, convert the identifier to lower case.boolean
isDeterministic()
Check if the table is deterministic.boolean
isInsertable()
Returns whether this table is insertable.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.protected void
setMetaTableName(java.lang.String upperName)
long
truncate(SessionLocal session)
Remove all rows from the table and indexes.-
Methods inherited from class org.h2.table.Table
addConstraint, addDependencies, addDependentView, addSequence, addSynonym, addTrigger, canTruncate, checkDeadlock, checkWritingAllowed, compareValues, convertInsertRow, convertUpdateRow, createRow, doesColumnExist, dropMultipleColumnsConstraintsAndIndexes, findColumn, findPrimaryKey, fire, fireAfterRow, fireBeforeRow, fireRow, getBestPlanItem, getCheckForeignKeyConstraints, getChildren, getColumn, getColumn, getColumn, getColumns, getCompareMode, getConstraints, getCreateSQLForCopy, getDependentViews, getDiskSpaceUsed, getIdentityColumn, getIndex, getIndexForColumn, getMainIndexColumn, getMaxDataModificationId, getNullRow, getOnCommitDrop, getOnCommitTruncate, getPrimaryKey, getRow, getRowFactory, getRowIdColumn, getScanIndex, getSQLTableType, getTemplateRow, getTemplateSimpleRow, getTriggers, getType, hasSelectTrigger, isGlobalTemporary, isHidden, isLockedExclusively, isLockedExclusivelyBy, isPersistData, isPersistIndexes, isQueryComparable, isRowLockable, isTableExpression, isView, lock, lockRow, removeColumnExpressionsDependencies, removeConstraint, removeDependentView, removeIndex, removeIndexOrTransferOwnership, removeSequence, removeSynonym, removeTrigger, rename, renameColumn, setCheckForeignKeyConstraints, setColumns, setHidden, setOnCommitDrop, setOnCommitTruncate, setTableExpression, unlock, updateRow, updateRows
-
Methods inherited from class org.h2.schema.SchemaObject
getSchema, getSQL, getSQL
-
Methods inherited from class org.h2.engine.DbObject
getComment, getCreateSQLForMeta, getDatabase, getDropSQL, 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.util.HasSQL
getTraceSQL
-
-
-
-
Field Detail
-
ROW_COUNT_APPROXIMATION
public static final long ROW_COUNT_APPROXIMATION
The approximate number of rows of a meta table.- See Also:
- Constant Field Values
-
type
protected final int type
The table type.
-
indexColumn
protected int indexColumn
The indexed column.
-
metaIndex
protected MetaIndex metaIndex
The index for this table.
-
-
Constructor Detail
-
MetaTable
protected MetaTable(Schema schema, int id, int type)
Create a new metadata table.- Parameters:
schema
- the schemaid
- the object idtype
- the meta table type
-
-
Method Detail
-
setMetaTableName
protected final void setMetaTableName(java.lang.String upperName)
-
column
final Column column(java.lang.String name)
Creates a column with the specified name and character string data type.- Parameters:
name
- the uppercase column name- Returns:
- the column
-
column
protected final Column column(java.lang.String name, TypeInfo type)
Creates a column with the specified name and data type.- Parameters:
name
- the uppercase column nametype
- the data type- Returns:
- the column
-
getCreateSQL
public final java.lang.String getCreateSQL()
Description copied from class:DbObject
Construct the CREATE ... SQL statement for this object.- Specified by:
getCreateSQL
in classDbObject
- Returns:
- the SQL statement
-
addIndex
public final Index addIndex(SessionLocal session, java.lang.String indexName, int indexId, IndexColumn[] cols, int uniqueColumnCount, IndexType indexType, boolean create, java.lang.String indexComment)
Description copied from class:Table
Create an index for this table- Specified by:
addIndex
in classTable
- Parameters:
session
- the sessionindexName
- the name of the indexindexId
- the idcols
- the index columnsuniqueColumnCount
- the count of unique columnsindexType
- the index typecreate
- whether this is a new indexindexComment
- the comment- Returns:
- the index
-
identifier
protected final java.lang.String identifier(java.lang.String s)
If needed, convert the identifier to lower case.- Parameters:
s
- the identifier to convert- Returns:
- the converted identifier
-
checkIndex
protected final boolean checkIndex(SessionLocal session, java.lang.String value, Value indexFrom, Value indexTo)
Checks index conditions.- Parameters:
session
- the sessionvalue
- the valueindexFrom
- the lower bound of value, ornull
indexTo
- the higher bound of value, ornull
- Returns:
- whether row should be included into result
-
hideTable
protected final boolean hideTable(Table table, SessionLocal session)
Check whether to hide the table. Tables are never hidden in the system session.- Parameters:
table
- the tablesession
- the session- Returns:
- whether the table is hidden
-
generateRows
public abstract java.util.ArrayList<Row> generateRows(SessionLocal session, SearchRow first, SearchRow last)
Generate the data for the given metadata table using the given first and last row filters.- Parameters:
session
- the sessionfirst
- the first row to returnlast
- the last row to return- Returns:
- the generated rows
-
isInsertable
public boolean isInsertable()
Description copied from class:Table
Returns whether this table is insertable.- Overrides:
isInsertable
in classTable
- Returns:
- whether this table is insertable
-
removeRow
public final void removeRow(SessionLocal session, Row row)
Description copied from class:Table
Remove a row from the table and all indexes.
-
addRow
public final void addRow(SessionLocal session, Row row)
Description copied from class:Table
Add a row to the table and all indexes.
-
removeChildrenAndResources
public final void removeChildrenAndResources(SessionLocal session)
Description copied from class:DbObject
Delete all dependent children objects and resources of this object.- Overrides:
removeChildrenAndResources
in classTable
- Parameters:
session
- the session
-
close
public final void close(SessionLocal session)
Description copied from class:Table
Close the table object and flush changes.
-
add
protected final void add(SessionLocal session, java.util.ArrayList<Row> rows, java.lang.Object... stringsOrValues)
Add a row to a list.- Parameters:
session
- the sessionrows
- the original row liststringsOrValues
- the values, or strings
-
checkRename
public final void checkRename()
Description copied from class:DbObject
Check if renaming is allowed. Does nothing when allowed.- Overrides:
checkRename
in classDbObject
-
checkSupportAlter
public final void checkSupportAlter()
Description copied from class:Table
Check if this table supports ALTER TABLE.- Specified by:
checkSupportAlter
in classTable
-
truncate
public final long truncate(SessionLocal session)
Description copied from class:Table
Remove all rows from the table and indexes.
-
getRowCount
public long getRowCount(SessionLocal session)
Description copied from class:Table
Get the row count for this table.- Specified by:
getRowCount
in classTable
- Parameters:
session
- the session- Returns:
- the row count
-
canGetRowCount
public boolean canGetRowCount(SessionLocal session)
Description copied from class:Table
Check if the row count can be retrieved quickly.- Specified by:
canGetRowCount
in classTable
- Parameters:
session
- the session- Returns:
- true if it can
-
canDrop
public final boolean canDrop()
Description copied from class:Table
Check if this table can be dropped.
-
getTableType
public final TableType getTableType()
Description copied from class:Table
Get the table type name- Specified by:
getTableType
in classTable
- Returns:
- the table type name
-
getScanIndex
public final Index getScanIndex(SessionLocal session)
Description copied from class:Table
Get the scan index to iterate through all rows.- Specified by:
getScanIndex
in classTable
- Parameters:
session
- the session- Returns:
- the index
-
getIndexes
public final java.util.ArrayList<Index> getIndexes()
Description copied from class:Table
Get all indexes for this table.- Specified by:
getIndexes
in classTable
- Returns:
- the list of indexes
-
getRowCountApproximation
public long getRowCountApproximation(SessionLocal session)
Description copied from class:Table
Get the approximated row count for this table.- Specified by:
getRowCountApproximation
in classTable
- Parameters:
session
- the session- Returns:
- the approximated row count
-
isDeterministic
public final boolean isDeterministic()
Description copied from class:Table
Check if the table is deterministic.- Specified by:
isDeterministic
in classTable
- Returns:
- true if it is
-
canReference
public final boolean canReference()
Description copied from class:Table
Check if this table can be referenced.- Overrides:
canReference
in classTable
- Returns:
- true if it can
-
-