Class V1MasterTableDataSource

java.lang.Object
com.mckoi.database.V1MasterTableDataSource

public final class V1MasterTableDataSource extends Object
A MasterTableDataSource that uses IndexStore and VariableSizeDataStore as its backing mechanism for representing the table structure in a file on disk.

The MasterTableDataSource is basically backed by a VariableSizeDataStore for data and an IndexStore for storing indexing information.

Author:
Tobias Downer
  • Field Details

    • table_id

      protected int table_id
      An integer that uniquely identifies this data source within the conglomerate.
    • is_closed

      protected boolean is_closed
      True if this table source is closed.
    • table_def

      protected DataTableDef table_def
      A DataTableDef object that describes the table topology. This includes the name and columns of the table.
    • index_def

      protected DataIndexSetDef index_def
      A DataIndexSetDef object that describes the indexes on the table.
    • table_indices

      protected com.mckoi.database.MultiVersionTableIndices table_indices
      A multi-version representation of the table indices kept for this table including the row list and the scheme indices. This contains the transaction journals.
    • column_rid_list

      protected com.mckoi.database.RIDList[] column_rid_list
      The list of RIDList objects for each column in this table. This is a sorting optimization.
    • DATA_CELL_CACHING

      protected boolean DATA_CELL_CACHING
      Set to false to disable cell caching.
    • cache

      protected final com.mckoi.database.DataCellCache cache
      A reference to the DataCellCache object.
    • column_count

      protected int column_count
      The number of columns in this table. This is a cached optimization.
    • garbage_collector

      protected com.mckoi.database.MasterTableGarbageCollector garbage_collector
      Manages scanning and deleting of rows marked as deleted within this data source.
    • blob_store_interface

      protected BlobStoreInterface blob_store_interface
      An abstracted reference to a BlobStore for managing blob references and blob data.
    • root_lock_key

      protected String root_lock_key
      The keys we use for Database.stats() for information for this table.
    • total_hits_key

      protected String total_hits_key
    • file_hits_key

      protected String file_hits_key
    • delete_hits_key

      protected String delete_hits_key
    • insert_hits_key

      protected String insert_hits_key
  • Constructor Details

    • V1MasterTableDataSource

      public V1MasterTableDataSource(TransactionSystem system, com.mckoi.database.StoreSystem store_system, com.mckoi.database.OpenTransactionList open_transactions)
      The Constructor.
  • Method Details

    • checkAndRepair

      public void checkAndRepair(String file_name, UserTerminal terminal) throws IOException
      Performs a complete check and repair of the table. The table must not have been opened before this method is called. The given UserTerminal parameter is an implementation of a user interface that is used to ask any questions and output the results of the check.
      Throws:
      IOException
    • checkForCleanup

      public void checkForCleanup()
    • toString

      public String toString()
      For diagnostic.
      Overrides:
      toString in class Object
    • getSystem

      public final TransactionSystem getSystem()
      Returns the TransactionSystem for this table.
    • Debug

      public final DebugLogger Debug()
      Returns the DebugLogger object that can be used to log debug messages.
    • getTableName

      public TableName getTableName()
      Returns the TableName of this table source.
    • getName

      public String getName()
      Returns the name of this table source.
    • getSchema

      public String getSchema()
      Returns the schema name of this table source.
    • makeTableFileName

      protected static String makeTableFileName(TransactionSystem system, int table_id, TableName table_name)
      Creates a unique table name to give a file. This could be changed to suit a particular OS's style of filesystem namespace. Or it could return some arbitarily unique number. However, for debugging purposes it's often a good idea to return a name that a user can recognise.

      The 'table_id' is a guarenteed unique number between all tables.

    • minimalTableDataSource

      protected TableDataSource minimalTableDataSource(IntegerListInterface master_index)
      Creates a minimal TableDataSource object that represents this MasterTableDataSource. It does not implement the 'getColumnScheme' method.
    • setupDataIndexSetDef

      protected void setupDataIndexSetDef()
      Sets up the DataIndexSetDef object from the information set in this object. This will only setup a default IndexSetDef on the information in the DataTableDef.
    • setupDataTableDef

      protected void setupDataTableDef(DataTableDef table_def)
      Sets up the DataTableDef. This would typically only ever be called from the 'create' method.
    • loadInternal

      protected void loadInternal()
      Loads the internal variables.
    • storeSystem

      protected com.mckoi.database.StoreSystem storeSystem()
      Returns the StoreSystem object used to manage stores in the persistence system.
    • doOpeningScan

      protected void doOpeningScan() throws IOException
      This is called by the 'open' method. It performs a scan of the records and marks any rows that are uncommitted as deleted. It also checks that the row is not within the master index.
      Throws:
      IOException
    • clearAllRootLocks

      protected void clearAllRootLocks()
      Clears all root locks on the table. Should only be used during cleanup of the table and will by definition invalidate the table.