com.mckoi.database
Class V1MasterTableDataSource

java.lang.Object
  extended by com.mckoi.database.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
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
V1MasterTableDataSource(TransactionSystem system, com.mckoi.database.StoreSystem store_system, com.mckoi.database.OpenTransactionList open_transactions)
          The Constructor.
 
Method Summary
 void checkAndRepair(java.lang.String file_name, UserTerminal terminal)
          Performs a complete check and repair of the table.
 void checkForCleanup()
          Checks to determine if it is safe to clean up any resources in the table, and if it is safe to do so, the space is reclaimed.
protected  void clearAllRootLocks()
          Clears all root locks on the table.
 DebugLogger Debug()
          Returns the DebugLogger object that can be used to log debug messages.
protected  void doOpeningScan()
          This is called by the 'open' method.
 java.lang.String getName()
          Returns the name of this table source.
 java.lang.String getSchema()
          Returns the schema name of this table source.
 TransactionSystem getSystem()
          Returns the TransactionSystem for this table.
 TableName getTableName()
          Returns the TableName of this table source.
protected  void loadInternal()
          Loads the internal variables.
protected static java.lang.String makeTableFileName(TransactionSystem system, int table_id, TableName table_name)
          Creates a unique table name to give a file.
protected  TableDataSource minimalTableDataSource(IntegerListInterface master_index)
          Creates a minimal TableDataSource object that represents this MasterTableDataSource.
protected  void setupDataIndexSetDef()
          Sets up the DataIndexSetDef object from the information set in this object.
protected  void setupDataTableDef(DataTableDef table_def)
          Sets up the DataTableDef.
protected  com.mckoi.database.StoreSystem storeSystem()
          Returns the StoreSystem object used to manage stores in the persistence system.
 java.lang.String toString()
          For diagnostic.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

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()
Checks to determine if it is safe to clean up any resources in the table, and if it is safe to do so, the space is reclaimed.


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.