Class V1MasterTableDataSource


  • public final class V1MasterTableDataSource
    extends java.lang.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 Summary

      Fields 
      Modifier and Type Field Description
      protected BlobStoreInterface blob_store_interface
      An abstracted reference to a BlobStore for managing blob references and blob data.
      protected com.mckoi.database.DataCellCache cache
      A reference to the DataCellCache object.
      protected int column_count
      The number of columns in this table.
      protected com.mckoi.database.RIDList[] column_rid_list
      The list of RIDList objects for each column in this table.
      protected boolean DATA_CELL_CACHING
      Set to false to disable cell caching.
      protected java.lang.String delete_hits_key  
      protected java.lang.String file_hits_key  
      protected com.mckoi.database.MasterTableGarbageCollector garbage_collector
      Manages scanning and deleting of rows marked as deleted within this data source.
      protected DataIndexSetDef index_def
      A DataIndexSetDef object that describes the indexes on the table.
      protected java.lang.String insert_hits_key  
      protected boolean is_closed
      True if this table source is closed.
      protected java.lang.String root_lock_key
      The keys we use for Database.stats() for information for this table.
      protected DataTableDef table_def
      A DataTableDef object that describes the table topology.
      protected int table_id
      An integer that uniquely identifies this data source within the conglomerate.
      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.
      protected java.lang.String total_hits_key  
    • Constructor Summary

      Constructors 
      Constructor Description
      V1MasterTableDataSource​(TransactionSystem system, com.mckoi.database.StoreSystem store_system, com.mckoi.database.OpenTransactionList open_transactions)
      The Constructor.
    • Field Detail

      • 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 java.lang.String root_lock_key
        The keys we use for Database.stats() for information for this table.
      • total_hits_key

        protected java.lang.String total_hits_key
      • file_hits_key

        protected java.lang.String file_hits_key
      • delete_hits_key

        protected java.lang.String delete_hits_key
      • insert_hits_key

        protected java.lang.String insert_hits_key
    • Constructor Detail

      • V1MasterTableDataSource

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

      • checkAndRepair

        public void checkAndRepair​(java.lang.String file_name,
                                   UserTerminal terminal)
                            throws java.io.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:
        java.io.IOException
      • checkForCleanup

        public void checkForCleanup()
      • toString

        public java.lang.String toString()
        For diagnostic.
        Overrides:
        toString in class java.lang.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 java.lang.String getName()
        Returns the name of this table source.
      • getSchema

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

        protected static java.lang.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 java.io.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:
        java.io.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.