Package org.h2.table

Class 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 Details

    • ROW_COUNT_APPROXIMATION

      public static final long ROW_COUNT_APPROXIMATION
      The approximate number of rows of a meta table.
      See Also:
    • 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 Details

    • MetaTable

      protected MetaTable(Schema schema, int id, int type)
      Create a new metadata table.
      Parameters:
      schema - the schema
      id - the object id
      type - the meta table type
  • Method Details

    • setMetaTableName

      protected final void setMetaTableName(String upperName)
    • column

      final Column column(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(String name, TypeInfo type)
      Creates a column with the specified name and data type.
      Parameters:
      name - the uppercase column name
      type - the data type
      Returns:
      the column
    • getCreateSQL

      public final String getCreateSQL()
      Description copied from class: DbObject
      Construct the CREATE ... SQL statement for this object.
      Specified by:
      getCreateSQL in class DbObject
      Returns:
      the SQL statement
    • addIndex

      public final 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
    • identifier

      protected final String identifier(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, String value, Value indexFrom, Value indexTo)
      Checks index conditions.
      Parameters:
      session - the session
      value - the value
      indexFrom - the lower bound of value, or null
      indexTo - the higher bound of value, or null
      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 table
      session - the session
      Returns:
      whether the table is hidden
    • generateRows

      public abstract 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 session
      first - the first row to return
      last - 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 class Table
      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.
      Specified by:
      removeRow in class Table
      Parameters:
      session - the session
      row - the row
    • addRow

      public final 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
    • 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 class Table
      Parameters:
      session - the session
    • close

      public final 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
    • add

      protected final void add(SessionLocal session, ArrayList<Row> rows, Object... stringsOrValues)
      Add a row to a list.
      Parameters:
      session - the session
      rows - the original row list
      stringsOrValues - 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 class DbObject
    • checkSupportAlter

      public final void checkSupportAlter()
      Description copied from class: Table
      Check if this table supports ALTER TABLE.
      Specified by:
      checkSupportAlter in class Table
    • truncate

      public final 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
    • 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
    • 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
    • canDrop

      public final 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 final TableType getTableType()
      Description copied from class: Table
      Get the table type name
      Specified by:
      getTableType in class Table
      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 class Table
      Parameters:
      session - the session
      Returns:
      the index
    • getIndexes

      public final 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
    • 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
    • isDeterministic

      public final boolean isDeterministic()
      Description copied from class: Table
      Check if the table is deterministic.
      Specified by:
      isDeterministic in class Table
      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 class Table
      Returns:
      true if it can