Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.apache.derby.iapi.store.access.conglomerate
Interface Conglomerate  view Conglomerate download Conglomerate.java

All Superinterfaces:
org.apache.derby.iapi.types.DataValueDescriptor, java.io.Externalizable, org.apache.derby.iapi.services.io.Formatable, org.apache.derby.iapi.types.Orderable, java.io.Serializable, org.apache.derby.iapi.services.io.Storable, org.apache.derby.iapi.services.io.TypedFormat

public interface Conglomerate
extends org.apache.derby.iapi.services.io.Storable, org.apache.derby.iapi.types.DataValueDescriptor

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).


Field Summary
 
Fields inherited from interface org.apache.derby.iapi.types.Orderable
ORDER_OP_EQUALS, ORDER_OP_GREATEROREQUALS, ORDER_OP_GREATERTHAN, ORDER_OP_LESSOREQUALS, ORDER_OP_LESSTHAN
 
Method Summary
 void addColumn(TransactionManager xact_manager, int column_id, org.apache.derby.iapi.services.io.Storable template_column)
          Add a column to the conglomerate.
 void compressConglomerate(TransactionManager xact_manager, org.apache.derby.iapi.store.raw.Transaction rawtran)
           
 ScanManager defragmentConglomerate(TransactionManager xact_manager, org.apache.derby.iapi.store.raw.Transaction rawtran, boolean hold, int open_mode, int lock_level, org.apache.derby.iapi.store.raw.LockingPolicy locking_policy, int isolation_level)
          Online compress table.
 void drop(TransactionManager xact_manager)
          Drop this conglomerate.
 boolean fetchMaxOnBTree(TransactionManager xact_manager, org.apache.derby.iapi.store.raw.Transaction rawtran, long conglomId, int open_mode, int lock_level, org.apache.derby.iapi.store.raw.LockingPolicy locking_policy, int isolation_level, org.apache.derby.iapi.services.io.FormatableBitSet scanColumnList, org.apache.derby.iapi.types.DataValueDescriptor[] fetchRow)
          Retrieve the maximum value row in an ordered conglomerate.
 long getContainerid()
          Get the containerid of conglomerate.
 org.apache.derby.iapi.store.access.DynamicCompiledOpenConglomInfo getDynamicCompiledConglomInfo(long conglomId)
          Return dynamic information about the conglomerate to be dynamically reused in repeated execution of a statement.
 org.apache.derby.iapi.store.raw.ContainerKey getId()
          Get the id of the container of the conglomerate.
 org.apache.derby.iapi.store.access.StaticCompiledOpenConglomInfo getStaticCompiledConglomInfo(org.apache.derby.iapi.store.access.TransactionController tc, long conglomId)
          Return static information about the conglomerate to be included in a a compiled plan.
 boolean isTemporary()
          Is this conglomerate temporary?
 long load(TransactionManager xact_manager, boolean createConglom, org.apache.derby.iapi.store.access.RowLocationRetRowSource rowSource)
          Bulk load into the conglomerate.
 org.apache.derby.iapi.store.access.ConglomerateController open(TransactionManager xact_manager, org.apache.derby.iapi.store.raw.Transaction rawtran, boolean hold, int open_mode, int lock_level, org.apache.derby.iapi.store.raw.LockingPolicy locking_policy, org.apache.derby.iapi.store.access.StaticCompiledOpenConglomInfo static_info, org.apache.derby.iapi.store.access.DynamicCompiledOpenConglomInfo dynamic_info)
          Open a conglomerate controller.
 ScanManager openScan(TransactionManager xact_manager, org.apache.derby.iapi.store.raw.Transaction rawtran, boolean hold, int open_mode, int lock_level, org.apache.derby.iapi.store.raw.LockingPolicy locking_policy, int isolation_level, org.apache.derby.iapi.services.io.FormatableBitSet scanColumnList, org.apache.derby.iapi.types.DataValueDescriptor[] startKeyValue, int startSearchOperator, org.apache.derby.iapi.store.access.Qualifier[][] qualifier, org.apache.derby.iapi.types.DataValueDescriptor[] stopKeyValue, int stopSearchOperator, org.apache.derby.iapi.store.access.StaticCompiledOpenConglomInfo static_info, org.apache.derby.iapi.store.access.DynamicCompiledOpenConglomInfo dynamic_info)
          Open a scan controller.
 org.apache.derby.iapi.store.access.StoreCostController openStoreCost(TransactionManager xact_manager, org.apache.derby.iapi.store.raw.Transaction rawtran)
          Return an open StoreCostController for the conglomerate.
 void purgeConglomerate(TransactionManager xact_manager, org.apache.derby.iapi.store.raw.Transaction rawtran)
           
 
Methods inherited from interface org.apache.derby.iapi.services.io.Storable
isNull, restoreToNull
 
Methods inherited from interface java.io.Externalizable
readExternal, writeExternal
 
Methods inherited from interface org.apache.derby.iapi.services.io.TypedFormat
getTypeFormatId
 
Methods inherited from interface org.apache.derby.iapi.types.DataValueDescriptor
checkHostVariable, coalesce, compare, compare, equals, estimateMemoryUsage, getBoolean, getByte, getBytes, getClone, getDate, getDouble, getFloat, getInt, getLength, getLong, getNewNull, getObject, getShort, getStream, getString, getTime, getTimestamp, getTypeName, greaterOrEquals, greaterThan, in, isNotNull, isNullOp, lessOrEquals, lessThan, normalize, notEquals, readExternalFromArray, setBigDecimal, setInto, setInto, setObjectForCast, setToNull, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValueFromResultSet, typePrecedence, typeToBigDecimal
 

Method Detail

addColumn

public void addColumn(TransactionManager xact_manager,
                      int column_id,
                      org.apache.derby.iapi.services.io.Storable template_column)
               throws org.apache.derby.iapi.error.StandardException
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.


drop

public void drop(TransactionManager xact_manager)
          throws org.apache.derby.iapi.error.StandardException
Drop this conglomerate.


fetchMaxOnBTree

public boolean fetchMaxOnBTree(TransactionManager xact_manager,
                               org.apache.derby.iapi.store.raw.Transaction rawtran,
                               long conglomId,
                               int open_mode,
                               int lock_level,
                               org.apache.derby.iapi.store.raw.LockingPolicy locking_policy,
                               int isolation_level,
                               org.apache.derby.iapi.services.io.FormatableBitSet scanColumnList,
                               org.apache.derby.iapi.types.DataValueDescriptor[] fetchRow)
                        throws org.apache.derby.iapi.error.StandardException
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.


getContainerid

public long getContainerid()
Get the containerid of conglomerate.

Will have to change when a conglomerate could have more than one containerid.


getId

public org.apache.derby.iapi.store.raw.ContainerKey getId()
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.


getStaticCompiledConglomInfo

public org.apache.derby.iapi.store.access.StaticCompiledOpenConglomInfo getStaticCompiledConglomInfo(org.apache.derby.iapi.store.access.TransactionController tc,
                                                                                                     long conglomId)
                                                                                              throws org.apache.derby.iapi.error.StandardException
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.


getDynamicCompiledConglomInfo

public org.apache.derby.iapi.store.access.DynamicCompiledOpenConglomInfo getDynamicCompiledConglomInfo(long conglomId)
                                                                                                throws org.apache.derby.iapi.error.StandardException
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, ...


isTemporary

public boolean isTemporary()
Is this conglomerate temporary?


load

public long load(TransactionManager xact_manager,
                 boolean createConglom,
                 org.apache.derby.iapi.store.access.RowLocationRetRowSource rowSource)
          throws org.apache.derby.iapi.error.StandardException
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.


open

public org.apache.derby.iapi.store.access.ConglomerateController open(TransactionManager xact_manager,
                                                                      org.apache.derby.iapi.store.raw.Transaction rawtran,
                                                                      boolean hold,
                                                                      int open_mode,
                                                                      int lock_level,
                                                                      org.apache.derby.iapi.store.raw.LockingPolicy locking_policy,
                                                                      org.apache.derby.iapi.store.access.StaticCompiledOpenConglomInfo static_info,
                                                                      org.apache.derby.iapi.store.access.DynamicCompiledOpenConglomInfo dynamic_info)
                                                               throws org.apache.derby.iapi.error.StandardException
Open a conglomerate controller.


openScan

public ScanManager openScan(TransactionManager xact_manager,
                            org.apache.derby.iapi.store.raw.Transaction rawtran,
                            boolean hold,
                            int open_mode,
                            int lock_level,
                            org.apache.derby.iapi.store.raw.LockingPolicy locking_policy,
                            int isolation_level,
                            org.apache.derby.iapi.services.io.FormatableBitSet scanColumnList,
                            org.apache.derby.iapi.types.DataValueDescriptor[] startKeyValue,
                            int startSearchOperator,
                            org.apache.derby.iapi.store.access.Qualifier[][] qualifier,
                            org.apache.derby.iapi.types.DataValueDescriptor[] stopKeyValue,
                            int stopSearchOperator,
                            org.apache.derby.iapi.store.access.StaticCompiledOpenConglomInfo static_info,
                            org.apache.derby.iapi.store.access.DynamicCompiledOpenConglomInfo dynamic_info)
                     throws org.apache.derby.iapi.error.StandardException
Open a scan controller.


defragmentConglomerate

public ScanManager defragmentConglomerate(TransactionManager xact_manager,
                                          org.apache.derby.iapi.store.raw.Transaction rawtran,
                                          boolean hold,
                                          int open_mode,
                                          int lock_level,
                                          org.apache.derby.iapi.store.raw.LockingPolicy locking_policy,
                                          int isolation_level)
                                   throws org.apache.derby.iapi.error.StandardException
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.


purgeConglomerate

public void purgeConglomerate(TransactionManager xact_manager,
                              org.apache.derby.iapi.store.raw.Transaction rawtran)
                       throws org.apache.derby.iapi.error.StandardException

compressConglomerate

public void compressConglomerate(TransactionManager xact_manager,
                                 org.apache.derby.iapi.store.raw.Transaction rawtran)
                          throws org.apache.derby.iapi.error.StandardException

openStoreCost

public org.apache.derby.iapi.store.access.StoreCostController openStoreCost(TransactionManager xact_manager,
                                                                            org.apache.derby.iapi.store.raw.Transaction rawtran)
                                                                     throws org.apache.derby.iapi.error.StandardException
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.