| org.apache.derby.iapi.store.access.conglomerate.Conglomerate
All known Subclasses: org.apache.derby.impl.store.access.conglomerate.GenericConglomerate, org.apache.derby.impl.store.access.heap.Heap,
Conglomerate | public interface Conglomerate extends Storable,DataValueDescriptor(Code) | | A conglomerate is an abstract storage structure (they
correspond to access methods). The Conglomerate interface
corresponds to a single instance of a conglomerate. In
other words, for each conglomerate in the system, there
will be one object implementing Conglomerate.
The Conglomerate interface is implemented by each access method.
The implementation must maintain enough information to properly
open the conglomerate and scans, and to drop the conglomerate.
This information typically will include the id of the container
or containers in which the conglomerate is stored, and my also
include property information.
Conglomerates are created by a conglomerate factory. The access
manager stores them in a directory (which is why they implement
Storable).
|
Method Summary | |
public void | addColumn(TransactionManager xact_manager, int column_id, Storable template_column) Add a column to the conglomerate. | void | compressConglomerate(TransactionManager xact_manager, Transaction rawtran) | ScanManager | defragmentConglomerate(TransactionManager xact_manager, Transaction rawtran, boolean hold, int open_mode, int lock_level, LockingPolicy locking_policy, int isolation_level) Online compress table.
Returns a ScanManager which can be used to move rows
around in a table, creating a block of free pages at the end of the
table. | void | drop(TransactionManager xact_manager) Drop this conglomerate. | boolean | fetchMaxOnBTree(TransactionManager xact_manager, Transaction rawtran, long conglomId, int open_mode, int lock_level, LockingPolicy locking_policy, int isolation_level, FormatableBitSet scanColumnList, DataValueDescriptor[] fetchRow) Retrieve the maximum value row in an ordered conglomerate.
Returns true and fetches the rightmost row of an ordered conglomerate
into "fetchRow" if there is at least one row in the conglomerate. | long | getContainerid() Get the containerid of conglomerate. | public DynamicCompiledOpenConglomInfo | getDynamicCompiledConglomInfo(long conglomId) Return dynamic information about the conglomerate to be dynamically
reused in repeated execution of a statement.
The dynamic info is a set of variables to be used in a given
ScanController or ConglomerateController. | ContainerKey | getId() Get the id of the container of the conglomerate.
Will have to change when a conglomerate could have more than one
container. | public StaticCompiledOpenConglomInfo | getStaticCompiledConglomInfo(TransactionController tc, long conglomId) Return static information about the conglomerate to be included in a
a compiled plan.
The static info would be valid until any ddl was executed on the
conglomid, and would be up to the caller to throw away when that
happened. | boolean | isTemporary() | public long | load(TransactionManager xact_manager, boolean createConglom, RowLocationRetRowSource rowSource) Bulk load into the conglomerate.
Individual rows that are loaded into the conglomerate are not
logged. | ConglomerateController | open(TransactionManager xact_manager, Transaction rawtran, boolean hold, int open_mode, int lock_level, LockingPolicy locking_policy, StaticCompiledOpenConglomInfo static_info, DynamicCompiledOpenConglomInfo dynamic_info) Open a conglomerate controller. | ScanManager | openScan(TransactionManager xact_manager, Transaction rawtran, boolean hold, int open_mode, int lock_level, LockingPolicy locking_policy, int isolation_level, FormatableBitSet scanColumnList, DataValueDescriptor[] startKeyValue, int startSearchOperator, Qualifier qualifier, DataValueDescriptor[] stopKeyValue, int stopSearchOperator, StaticCompiledOpenConglomInfo static_info, DynamicCompiledOpenConglomInfo dynamic_info) Open a scan controller. | StoreCostController | openStoreCost(TransactionManager xact_manager, Transaction rawtran) Return an open StoreCostController for the conglomerate.
Return an open StoreCostController which can be used to ask about
the estimated row counts and costs of ScanController and
ConglomerateController operations, on the given conglomerate.
Parameters: xact_manager - The TransactionController under which this operation takes place. Parameters: rawtran - raw transaction context in which scan is managed. | void | purgeConglomerate(TransactionManager xact_manager, Transaction rawtran) |
addColumn | public void addColumn(TransactionManager xact_manager, int column_id, Storable template_column) throws StandardException(Code) | | Add a column to the conglomerate.
This routine update's the in-memory object version of the
Conglomerate to have one more column of the type described by the
input template column.
Note that not all conglomerates may support this feature.
Parameters: xact_manager - The TransactionController under which this operation takes place. Parameters: column_id - The column number to add this column at. Parameters: template_column - An instance of the column to be added to table. exception: StandardException - Standard exception policy. |
defragmentConglomerate | ScanManager defragmentConglomerate(TransactionManager xact_manager, Transaction rawtran, boolean hold, int open_mode, int lock_level, LockingPolicy locking_policy, int isolation_level) throws StandardException(Code) | | Online compress table.
Returns a ScanManager which can be used to move rows
around in a table, creating a block of free pages at the end of the
table. The process of executing the scan will move rows from the end
of the table toward the beginning. The GroupFetchScanController will
return the old row location, the new row location, and the actual data
of any row moved. Note that this scan only returns moved rows, not an
entire set of rows, the scan is designed specifically to be
used by either explicit user call of the SYSCS_ONLINE_COMPRESS_TABLE()
procedure, or internal background calls to compress the table.
The old and new row locations are returned so that the caller can
update any indexes necessary.
This scan always returns all collumns of the row.
All inputs work exactly as in openScan(). The return is
a GroupFetchScanController, which only allows fetches of groups
of rows from the conglomerate.
Note that all Conglomerates may not implement openCompressScan(),
currently only the Heap conglomerate implements this scan.
The GroupFetchScanController to be used to fetch the rows. Parameters: hold - see openScan() Parameters: open_mode - see openScan() Parameters: lock_level - see openScan() Parameters: isolation_level - see openScan() exception: StandardException - Standard exception policy. |
fetchMaxOnBTree | boolean fetchMaxOnBTree(TransactionManager xact_manager, Transaction rawtran, long conglomId, int open_mode, int lock_level, LockingPolicy locking_policy, int isolation_level, FormatableBitSet scanColumnList, DataValueDescriptor[] fetchRow) throws StandardException(Code) | | Retrieve the maximum value row in an ordered conglomerate.
Returns true and fetches the rightmost row of an ordered conglomerate
into "fetchRow" if there is at least one row in the conglomerate. If
there are no rows in the conglomerate it returns false.
Non-ordered conglomerates will not implement this interface, calls
will generate a StandardException.
RESOLVE - this interface is temporary, long term equivalent (and more)
functionality will be provided by the openBackwardScan() interface.
Parameters: xact_manager - The TransactionController under which this operation takes place. Parameters: rawtran - The raw store xact to associate all ops with. Parameters: conglomId - The identifier of the conglomerateto open the scan for. Parameters: open_mode - Specifiy flags to control opening of table. OPENMODE_FORUPDATE - if set open the table forupdate otherwise open table shared. Parameters: lock_level - One of (MODE_TABLE, MODE_RECORD, or MODE_NONE). Parameters: locking_policy - The LockingPolicy to use to open the conglomerate. Parameters: isolation_level - The isolation level to lock the conglomerate at.One of (ISOLATION_READ_COMMITTED, ISOLATION_REPEATABLE_READ, or ISOLATION_SERIALIZABLE). Parameters: scanColumnList - A description of which columns to return from every fetch in the scan. fetchRow and scanColumnList work togetherto describe the row to be returned by the scan - see RowUtil for description of how these three parameters work together to describe a "row". Parameters: fetchRow - The row to retrieve the maximum value into. boolean indicating if a row was found and retrieved or not. exception: StandardException - Standard exception policy. |
getContainerid | long getContainerid()(Code) | | Get the containerid of conglomerate.
Will have to change when a conglomerate could have more than one
containerid.
The containerid. exception: StandardException - Standard exception policy. |
getDynamicCompiledConglomInfo | public DynamicCompiledOpenConglomInfo getDynamicCompiledConglomInfo(long conglomId) throws StandardException(Code) | | Return dynamic information about the conglomerate to be dynamically
reused in repeated execution of a statement.
The dynamic info is a set of variables to be used in a given
ScanController or ConglomerateController. It can only be used in one
controller at a time. It is up to the caller to insure the correct
thread access to this info. The type of info in this is a scratch
template for btree traversal, other scratch variables for qualifier
evaluation, ...
The dynamic information. Parameters: conglomId - The identifier of the conglomerate to open. exception: StandardException - Standard exception policy. |
getId | ContainerKey getId()(Code) | | Get the id of the container of the conglomerate.
Will have to change when a conglomerate could have more than one
container. The ContainerKey is a combination of the container id
and segment id.
The ContainerKey. exception: StandardException - Standard exception policy. |
getStaticCompiledConglomInfo | public StaticCompiledOpenConglomInfo getStaticCompiledConglomInfo(TransactionController tc, long conglomId) throws StandardException(Code) | | Return static information about the conglomerate to be included in a
a compiled plan.
The static info would be valid until any ddl was executed on the
conglomid, and would be up to the caller to throw away when that
happened. This ties in with what language already does for other
invalidation of static info. The type of info in this would be
containerid and array of format id's from which templates can be created.
The info in this object is read only and can be shared among as many
threads as necessary.
The static compiled information. Parameters: tc - The TransactionController under which this operation takes place. Parameters: conglomId - The identifier of the conglomerate to open. exception: StandardException - Standard exception policy. |
isTemporary | boolean isTemporary()(Code) | | Is this conglomerate temporary?
whether conglomerate is temporary or not. |
load | public long load(TransactionManager xact_manager, boolean createConglom, RowLocationRetRowSource rowSource) throws StandardException(Code) | | Bulk load into the conglomerate.
Individual rows that are loaded into the conglomerate are not
logged. After this operation, the underlying database must be backed up
with a database backup rather than an transaction log backup (when we
have them). This warning is put here for the benefit of future
generation.
Parameters: xact_manager - The TransactionController under which this operationtakes place. Parameters: createConglom - If true, the conglomerate is being created in the same operation as the openAndLoadConglomerate. The enables further optimization as recovery doesnot require page allocation to be logged. Parameters: rowSource - Where the rows come from. The number of rows loaded. exception: StandardException - Standard exception policy. If conglomerage supports uniqueness checks and has been created to disallow duplicates, and one of the rows being loaded had key columns which were duplicate of a row already in the conglomerate, then raise SQLState.STORE_CONGLOMERATE_DUPLICATE_KEY_EXCEPTION. |
openScan | ScanManager openScan(TransactionManager xact_manager, Transaction rawtran, boolean hold, int open_mode, int lock_level, LockingPolicy locking_policy, int isolation_level, FormatableBitSet scanColumnList, DataValueDescriptor[] startKeyValue, int startSearchOperator, Qualifier qualifier, DataValueDescriptor[] stopKeyValue, int stopSearchOperator, StaticCompiledOpenConglomInfo static_info, DynamicCompiledOpenConglomInfo dynamic_info) throws StandardException(Code) | | Open a scan controller.
exception: StandardException - Standard exception policy. |
openStoreCost | StoreCostController openStoreCost(TransactionManager xact_manager, Transaction rawtran) throws StandardException(Code) | | Return an open StoreCostController for the conglomerate.
Return an open StoreCostController which can be used to ask about
the estimated row counts and costs of ScanController and
ConglomerateController operations, on the given conglomerate.
Parameters: xact_manager - The TransactionController under which this operation takes place. Parameters: rawtran - raw transaction context in which scan is managed. The open StoreCostController. exception: StandardException - Standard exception policy. See Also: StoreCostController |
|
|