Top Fields Constructors Methods
org.apache.derby.impl.store.access

public Class RAMTransaction

extends Object
implements XATransactionController, TransactionManager
Class Inheritance
All Implemented Interfaces
org.apache.derby.iapi.store.access.conglomerate.TransactionManager, org.apache.derby.iapi.store.access.TransactionController, org.apache.derby.iapi.services.property.PersistentSet, org.apache.derby.iapi.store.access.XATransactionController
Imports
java.util.ArrayList, .HashMap, .Iterator, .Properties, org.apache.derby.shared.common.reference.SQLState, org.apache.derby.iapi.services.context.ContextManager, org.apache.derby.iapi.services.io.Storable, .FormatableBitSet, org.apache.derby.iapi.services.daemon.Serviceable, org.apache.derby.iapi.services.locks.CompatibilitySpace, org.apache.derby.shared.common.sanity.SanityManager, org.apache.derby.shared.common.error.StandardException, org.apache.derby.iapi.store.access.conglomerate.Conglomerate, .ConglomerateFactory, .ScanManager, .MethodFactory, .ScanControllerRowSource, .Sort, .SortFactory, .TransactionManager, org.apache.derby.iapi.store.access.AccessFactory, .AccessFactoryGlobals, .ColumnOrdering, .ConglomerateController, .DynamicCompiledOpenConglomInfo, .FileResource, .GroupFetchScanController, .Qualifier, .RowLocationRetRowSource, .ScanController, .SortController, .SortCostController, .SortObserver, .StaticCompiledOpenConglomInfo, .StoreCostController, .TransactionController, .XATransactionController, .DatabaseInstant, .BackingStoreHashtable, org.apache.derby.iapi.store.raw.ContainerHandle, .ContainerKey, .LockingPolicy, .Loggable, .Transaction, org.apache.derby.iapi.types.DataValueDescriptor, org.apache.derby.impl.store.access.conglomerate.ConglomerateUtil, java.io.Serializable

Field Summary

Modifier and TypeField and Description
protected RAMAccessManager
accessmanager

The access manager this transaction is under.

private boolean
alterTableCallMade

Set by alter table to indicate that the conglomerate cache needs to be invalidated if a transaction aborting error is encountered, cleared after cleanup.

private ArrayList<ConglomerateController>
protected RAMTransactionContext
context

The context this transaction is being managed by.

private ArrayList<Integer>
freeSortIds

List of sort identifiers (represented as Integer objects) which can be reused.

private long
nextTempConglomId

Next id to use for a temporary conglomerate.

protected RAMTransaction
parent_tran

The parent transaction if this is a nested user transaction.

protected Transaction
rawtran

The corresponding raw store transaction.

private ArrayList<ScanManager>
private ArrayList<SortController>
private ArrayList<Sort>
protected HashMap<Long, Conglomerate>
tempCongloms

Where to look for temporary conglomerates.

private int
transaction_lock_level

The lock level of the transaction.

Constructor Summary

AccessConstructor and Description
protected
RAMTransaction(RAMAccessManager myaccessmanager, Transaction theRawTran, RAMTransaction parent_transaction)

pack-priv
RAMTransaction(RAMAccessManager myaccessmanager, RAMTransaction tc, int format_id, byte[] global_id, byte[] branch_id)

pack-priv

Method Summary

Modifier and TypeMethod and Description
public void
abort()

Implements org.apache.derby.iapi.store.access.TransactionController.abort.

Abort all changes made by this transaction since the last commit, abort or the point the transaction was started, whichever is the most recent.

public void
addColumnToConglomerate(long
The identifier of the conglomerate to drop.
conglomId
,
int
The column number to add this column at.
column_id
,
Storable
An instance of the column to be added to table.
template_column
,
int
collation id of the added column.
collation_id
)

Implements org.apache.derby.iapi.store.access.TransactionController.addColumnToConglomerate.

Add a column to a conglomerate.

public void
addPostCommitWork(Serviceable
The post commit work to do.
work
)

Implements org.apache.derby.iapi.store.access.conglomerate.TransactionManager.addPostCommitWork.

Add to the list of post commit work.

public boolean
anyoneBlocked()

Implements org.apache.derby.iapi.store.access.TransactionController.anyoneBlocked.

Return true if any transaction is blocked (even if not by this one).

public boolean

Returns:

true if the database has been upgraded to the required level, false otherwise.
checkVersion
(int
required database Engine major version
requiredMajorVersion
,
int
required database Engine minor version
requiredMinorVersion
,
String
Non-null to throw an exception, null to return the state of the version match.
feature
)

Implements org.apache.derby.iapi.store.access.conglomerate.TransactionManager.checkVersion.

Check to see if a database has been upgraded to the required level in order to use a store feature.

protected void
closeControllers(boolean closeHeldControllers)

Private/Protected methods of This class:

public void
closeMe(ConglomerateController conglom_control)

Implements org.apache.derby.iapi.store.access.conglomerate.TransactionManager.closeMe.

The ConglomerateController.close() method has been called on "conglom_control".

public void
closeMe(SortController sort_control)

Implements org.apache.derby.iapi.store.access.conglomerate.TransactionManager.closeMe.

The SortController.close() method has been called on "sort_control".

public void
closeMe(ScanManager scan)

Implements org.apache.derby.iapi.store.access.conglomerate.TransactionManager.closeMe.

The ScanManager.close() method has been called on "scan".

public void
public DatabaseInstant
commitNoSync(int commitflag)

Implements org.apache.derby.iapi.store.access.TransactionController.commitNoSync.

"Commit" this transaction without sync'ing the log.

public void
compressConglomerate(long
Id of the conglomerate to purge.
conglomId
)

Implements org.apache.derby.iapi.store.access.TransactionController.compressConglomerate.

Return free space from the conglomerate back to the OS.

public boolean
conglomerateExists(long
The identifier of the conglomerate to check for.
conglomId
)

Implements org.apache.derby.iapi.store.access.TransactionController.conglomerateExists.

Check whether a conglomerate exists.

private final int
public int

Returns:

The nunber of open's of a type indicated by "which_to_count" parameter.
countOpens
(int
Which kind of open to report on.
which_to_count
)

Implements org.apache.derby.iapi.store.access.TransactionController.countOpens.

Report on the number of open conglomerates in the transaction.

public long
createAndLoadConglomerate(String
Specifies what kind of conglomerate to create. THE WAY THAT THE IMPLEMENTATION IS CHOSEN STILL NEEDS SOME WORK. For now, use "BTREE" or "heap" for a local access manager.
implementation
,
DataValueDescriptor[]
A row which describes the prototypical row that the conglomerate will be holding. Typically this row gives the conglomerate information about the number and type of columns it will be holding. The implementation may require a specific subclass of row type. Note that the createConglomerate call reads the template and makes a copy of any necessary information from the template, no reference to the template is kept (and thus this template can be re-used in subsequent calls - such as openScan()). This field is required when creating either a heap or btree conglomerate.
template
,
ColumnOrdering[]
Specifies the colummns sort order. Useful only when the conglomerate is of type BTREE, default value is 'null', which means all columns needs to be sorted in Ascending order.
columnOrder
,
int[]
Specifies the collation id of each of the columns in the new conglomerate. Collation id along with format id may be used to create DataValueDescriptor's which may subsequently be used for comparisons. For instance the correct collation specific order and searching is maintained by correctly specifying the collation id of the columns in the index when the index is created.
collationIds
,
Properties
Implementation-specific properties of the conglomerate.
properties
,
int temporaryFlag, RowLocationRetRowSource
the interface to recieve rows to load into the conglomerate.
rowSource
,
long[]
- if not null the number of rows loaded into the table will be returned as the first element of the array.
rowCount
)

Implements org.apache.derby.iapi.store.access.TransactionController.createAndLoadConglomerate.

Create a conglomerate and populate it with rows from rowSource.

public BackingStoreHashtable
createBackingStoreHashtableFromScan(long
see openScan()
conglomId
,
int
see openScan()
open_mode
,
int
see openScan()
lock_level
,
int
see openScan()
isolation_level
,
FormatableBitSet
see openScan()
scanColumnList
,
DataValueDescriptor[]
see openScan()
startKeyValue
,
int
see openScan()
startSearchOperator
,
Qualifier[][]
see openScan()
qualifier
,
DataValueDescriptor[]
see openScan()
stopKeyValue
,
int
see openScan()
stopSearchOperator
,
long
The maximum number of rows to insert into the HashSet. Pass in -1 if there is no maximum.
max_rowcnt
,
int[]
The column numbers of the columns in the scan result row to be the key to the Hashtable. "0" is the first column in the scan result row (which may be different than the first row in the table of the scan).
key_column_numbers
,
boolean
Should the HashSet automatically remove duplicates, or should it create the Vector of duplicates?
remove_duplicates
,
long
The number of rows that the caller estimates will be inserted into the sort. -1 indicates that the caller has no idea. Used by the sort to make good choices about in-memory vs. external sorting, and to size merge runs.
estimated_rowcnt
,
long
The number of rows at which the underlying Hashtable implementation should cut over from an in-memory hash to a disk based access method.
max_inmemory_rowcnt
,
int
If not "-1" used to initialize the java Hashtable.
initialCapacity
,
float
If not "-1" used to initialize the java Hashtable.
loadFactor
,
boolean
If true will collect up runtime stats during scan processing for retrieval by BackingStoreHashtable.getRuntimeStats().
collect_runtimestats
,
boolean
Whether or not to skip rows with 1 or more null key columns
skipNullKeyColumns
,
boolean
If true then keep hash table after commit
keepAfterCommit
,
boolean
If true then rows should include RowLocations.
includeRowLocations
)

Implements org.apache.derby.iapi.store.access.TransactionController.createBackingStoreHashtableFromScan.

Create a BackingStoreHashtable which contains all rows that qualify for the described scan.

public long
createConglomerate(String
Specifies what kind of conglomerate to create. THE WAY THAT THE IMPLEMENTATION IS CHOSEN STILL NEEDS SOME WORK. For now, use "BTREE" or "heap" for a local access manager.
implementation
,
DataValueDescriptor[]
A row which describes the prototypical row that the conglomerate will be holding. Typically this row gives the conglomerate information about the number and type of columns it will be holding. The implementation may require a specific subclass of row type. Note that the createConglomerate call reads the template and makes a copy of any necessary information from the template, no reference to the template is kept (and thus this template can be re-used in subsequent calls - such as openScan()). This field is required when creating either a heap or btree conglomerate.
template
,
ColumnOrdering[]
Specifies the colummns sort order. Useful only when the conglomerate is of type BTREE, default value is 'null', which means all columns needs to be sorted in Ascending order.
columnOrder
,
int[]
Specifies the collation id of each of the columns in the new conglomerate. Collation id along with format id may be used to create DataValueDescriptor's which may subsequently be used for comparisons. For instance the correct collation specific order and searching is maintained by correctly specifying the collation id of the columns in the index when the index is created.
collationIds
,
Properties
Implementation-specific properties of the conglomerate.
properties
,
int
Where temporaryFlag can have the following values: IS_DEFAULT - no bit is set. IS_TEMPORARY - if set, the conglomerate is temporary IS_KEPT - only looked at if IS_TEMPORARY, if set, the temporary container is not removed automatically by store when transaction terminates. If IS_TEMPORARY is set, the conglomerate is temporary. Temporary conglomerates are only visible through the transaction controller that created them. Otherwise, they are opened, scanned, and dropped in the same way as permanent conglomerates. Changes to temporary conglomerates persist across commits, but temporary conglomerates are truncated on abort (or rollback to savepoint). Updates to temporary conglomerates are not locked or logged. A temporary conglomerate is only visible to the transaction controller that created it, even if the conglomerate IS_KEPT when the transaction termination. All temporary conglomerate is removed by store when the conglomerate controller is destroyed, or if it is dropped by an explicit dropConglomerate. If Derby reboots, all temporary conglomerates are removed.
temporaryFlag
)

Implements org.apache.derby.iapi.store.access.TransactionController.createConglomerate.

Create a new conglomerate.

public long
createSort(Properties
Properties which help in choosing implementation-specific sort options. If null, a "generally useful" sort will be used.
implParameters
,
DataValueDescriptor[]
A row which is prototypical for the sort. All rows inserted into the sort controller must have exactly the same number of columns as the template row. Every column in an inserted row must have the same type as the corresponding column in the template.
template
,
ColumnOrdering[]
An array which specifies which columns participate in ordering - see interface ColumnOrdering for details. The column referenced in the 0th columnOrdering object is compared first, then the 1st, etc. To sort on a single column specify an array with a single entry.
columnOrdering
,
SortObserver
An object that is used to observe the sort. It is used to provide a callback into the sorter. If the sortObserver is null, then the sort proceeds as normal. If the sortObserver is non null, then it is called as rows are loaded into the sorter. It can be used to implement a distinct sort, aggregates, etc.
sortObserver
,
boolean
Indicates that the rows inserted into the sort controller will already be in order. This is used to perform aggregation only.
alreadyInOrder
,
long
The number of rows that the caller estimates will be inserted into the sort. -1 indicates that the caller has no idea. Used by the sort to make good choices about in-memory vs. external sorting, and to size merge runs.
estimatedRows
,
int
The estimated average row size of the rows being sorted. This is the client portion of the rowsize, it should not attempt to calculate Store's overhead. -1 indicates that the caller has no idea (and the sorter will use 100 bytes in that case. Used by the sort to make good choices about in-memory vs. external sorting, and to size merge runs. The client is not expected to estimate the per column/ per row overhead of raw store, just to make a guess about the storage associated with each row (ie. reasonable estimates for some implementations would be 4 for int, 8 for long, 102 for char(100), 202 for varchar(200), a number out of hat for user types, ...).
estimatedRowSize
)

Implements org.apache.derby.iapi.store.access.TransactionController.createSort.

Create a sort.

public Object
createXATransactionFromLocalTransaction(int
the format id part of the Xid - ie. Xid.getFormatId().
format_id
,
byte[]
the global transaction identifier part of XID - ie. Xid.getGlobalTransactionId().
global_id
,
byte[]
The branch qualifier of the Xid - ie. Xid.getBranchQaulifier()
branch_id
)

Implements org.apache.derby.iapi.store.access.TransactionController.createXATransactionFromLocalTransaction.

Convert a local transaction to a global transaction.

public String

Returns:

String with debugging information.
debugOpened
()

Implements org.apache.derby.iapi.store.access.TransactionController.debugOpened.

Return a string with debug information about opened congloms/scans/sorts.

public GroupFetchScanController

Returns:

The GroupFetchScanController to be used to fetch the rows.
defragmentConglomerate
(long
see openScan()
conglomId
,
boolean online, boolean
see openScan()
hold
,
int
see openScan()
open_mode
,
int
see openScan()
lock_level
,
int
see openScan()
isolation_level
)

Implements org.apache.derby.iapi.store.access.TransactionController.defragmentConglomerate.

Compress table in place.

public void
destroy()

Implements org.apache.derby.iapi.store.access.TransactionController.destroy.

Abort the current transaction and pop the context.

private int
determine_lock_level(int requested_lock_level)

private LockingPolicy
determine_locking_policy(int requested_lock_level, int isolation_level)

Determine correct locking policy for a conglomerate open.

public void
dropConglomerate(long
The identifier of the conglomerate to drop.
conglomId
)

Implements org.apache.derby.iapi.store.access.TransactionController.dropConglomerate.

Drop a conglomerate.

public void
dropSort(long
The identifier of the sort to drop, as returned from createSort.
sortid
)

Implements org.apache.derby.iapi.store.access.TransactionController.dropSort.

Drop a sort.

public boolean

Returns:

boolean indicating if a row was found and retrieved or not.
fetchMaxOnBtree
(long
The identifier of the conglomerate to open the scan for.
conglomId
,
int
Specifiy flags to control opening of table. OPENMODE_FORUPDATE - if set open the table for update otherwise open table shared.
open_mode
,
int
One of (MODE_TABLE, MODE_RECORD, or MODE_NONE).
lock_level
,
int
The isolation level to lock the conglomerate at. One of (ISOLATION_READ_COMMITTED or ISOLATION_SERIALIZABLE).
isolation_level
,
FormatableBitSet
A description of which columns to return from every fetch in the scan. template, and scanColumnList work together to describe the row to be returned by the scan - see RowUtil for description of how these three parameters work together to describe a "row".
scanColumnList
,
DataValueDescriptor[]
The row to retrieve the maximum value into.
fetchRow
)

Implements org.apache.derby.iapi.store.access.TransactionController.fetchMaxOnBtree.

Retrieve the maximum value row in an ordered conglomerate.

private Conglomerate
findConglomerate(long conglomId)

public long
findConglomid(long container_id)

Implements org.apache.derby.iapi.store.access.TransactionController.findConglomid.

For debugging, find the conglomid given the containerid.

public long
findContainerid(long conglom_id)

Implements org.apache.derby.iapi.store.access.TransactionController.findContainerid.

For debugging, find the containerid given the conglomid.

private Conglomerate
findExistingConglomerate(long conglomId)

public Conglomerate

Returns:

If successful returns
findExistingConglomerateFromKey
(ContainerKey
container key of target conglomerate.
container_key
)

Implements org.apache.derby.iapi.store.access.conglomerate.TransactionManager.findExistingConglomerateFromKey.

Return existing Conglomerate after doing lookup by ContainerKey

Throws exception if it can't find a matching conglomerate for the ContainerKey.

public AccessFactory

Returns:

The AccessFactory which started this transaction.
getAccessManager
()

Implements org.apache.derby.iapi.store.access.TransactionController.getAccessManager.

Get reference to access factory which started this transaction.

public String
getActiveStateTxIdString()

Implements org.apache.derby.iapi.store.access.TransactionController.getActiveStateTxIdString.

Get string id of the transaction that would be when the Transaction is IN active state.

public ContextManager

Returns:

The context manager that the transaction was created with.
getContextManager
()

Implements org.apache.derby.iapi.store.access.TransactionController.getContextManager.

Get the context manager that the transaction was created with.

public DynamicCompiledOpenConglomInfo

Returns:

The dynamic information.
getDynamicCompiledConglomInfo
(long
The identifier of the conglomerate to open.
conglomId
)

Implements org.apache.derby.iapi.store.access.TransactionController.getDynamicCompiledConglomInfo.

Return dynamic information about the conglomerate to be dynamically reused in repeated execution of a statement.

public FileResource
getFileHandler()

Implements org.apache.derby.iapi.store.access.TransactionController.getFileHandler.

Get an object to handle non-transactional files.

public TransactionManager

Returns:

The new internal transaction.
getInternalTransaction
()

Implements org.apache.derby.iapi.store.access.conglomerate.TransactionManager.getInternalTransaction.

Get an Internal transaction.

public CompatibilitySpace
getLockSpace()

Implements org.apache.derby.iapi.store.access.TransactionController.getLockSpace.

Return an object that when used as the compatibility space, and the object returned when calling getOwner() on that object is used as group for a lock request, guarantees that the lock will be removed on a commit or an abort.

public Properties
getProperties()

Implements org.apache.derby.iapi.services.property.PersistentSet.getProperties.

Get properties that can be stored in a java.util.Properties object.

public Serializable
getProperty(String
The "key" of the property that is being requested.
key
)

Implements org.apache.derby.iapi.services.property.PersistentSet.getProperty.

Gets a value for a stored property.

public Serializable
getPropertyDefault(String
The "key" of the property that is being requested.
key
)

Implements org.apache.derby.iapi.services.property.PersistentSet.getPropertyDefault.

Gets a default value for a stored property.

public Transaction

Returns:

The raw store transaction.
getRawStoreXact
()

Implements org.apache.derby.iapi.store.access.conglomerate.TransactionManager.getRawStoreXact.

Get the Transaction from the Transaction manager.

public StaticCompiledOpenConglomInfo

Returns:

The static compiled information.
getStaticCompiledConglomInfo
(long
The identifier of the conglomerate to open.
conglomId
)

Implements org.apache.derby.iapi.store.access.TransactionController.getStaticCompiledConglomInfo.

Return static information about the conglomerate to be included in a a compiled plan.

public String

Returns:

The a string which identifies the transaction.
getTransactionIdString
()

Implements org.apache.derby.iapi.store.access.TransactionController.getTransactionIdString.

Get string id of the transaction.

public Properties

Returns:

The superset of properties that "users" can specify.
getUserCreateConglomPropList
()

Implements org.apache.derby.iapi.store.access.TransactionController.getUserCreateConglomPropList.

A superset of properties that "users" can specify.

private final void
init(RAMAccessManager myaccessmanager, Transaction theRawTran, RAMTransaction parent_tran)

Constructors for This class:

protected void
invalidateConglomerateCache()

Invalidate the conglomerate cache, if necessary.

public boolean

Returns:

true If the transaction was either started by AccessFactory.startXATransaction() or was morphed to a global transaction by calling AccessFactory.createXATransactionFromLocalTransaction().
isGlobal
()

Implements org.apache.derby.iapi.store.access.TransactionController.isGlobal.

Reveals whether the transaction is a global or local transaction.

public boolean

Returns:

true If the transaction has never read or written data.
isIdle
()

Implements org.apache.derby.iapi.store.access.TransactionController.isIdle.

Reveals whether the transaction has ever read or written data.

public boolean

Returns:

true If the transaction is Pristine.
isPristine
()

Implements org.apache.derby.iapi.store.access.TransactionController.isPristine.

Reveals whether the transaction is currently pristine.

public long

Returns:

true The number of rows loaded.
loadConglomerate
(long
The conglomerate Id.
conglomId
,
boolean
If true, the conglomerate is being created in the same operation as the loadConglomerate. The enables further optimization as recovery does not require page allocation to be logged.
createConglom
,
RowLocationRetRowSource
Where the rows come from.
rowSource
)

Bulk load into the conglomerate.

public void
loadConglomerate(long
the conglomerate Id
conglomId
,
RowLocationRetRowSource
where the rows to be loaded comes from
rowSource
)

Use this for incremental load in the future.

public void
logAndDo(Loggable
the operation that is to be applied
operation
)

Implements org.apache.derby.iapi.store.access.TransactionController.logAndDo.

Log an operation and then action it in the context of this transaction.

public ConglomerateController
openCompiledConglomerate(boolean
If true, will be maintained open over commits.
hold
,
int
Specifiy flags to control opening of table.
open_mode
,
int
One of (MODE_TABLE, MODE_RECORD).
lock_level
,
int
The isolation level to lock the conglomerate at. One of (ISOLATION_READ_COMMITTED, ISOLATION_REPEATABLE_READ or ISOLATION_SERIALIZABLE).
isolation_level
,
StaticCompiledOpenConglomInfo
object returned from getStaticCompiledConglomInfo() call on this id.
static_info
,
DynamicCompiledOpenConglomInfo
object returned from getDynamicCompiledConglomInfo() call on this id.
dynamic_info
)

Implements org.apache.derby.iapi.store.access.TransactionController.openCompiledConglomerate.

Open a conglomerate for use, optionally include "compiled" info.

public ScanController
openCompiledScan(boolean hold, int
see openScan()
open_mode
,
int
see openScan()
lock_level
,
int
see openScan()
isolation_level
,
FormatableBitSet
see openScan()
scanColumnList
,
DataValueDescriptor[]
see openScan()
startKeyValue
,
int
see openScan()
startSearchOperator
,
Qualifier[][]
see openScan()
qualifier
,
DataValueDescriptor[]
see openScan()
stopKeyValue
,
int
see openScan()
stopSearchOperator
,
StaticCompiledOpenConglomInfo
object returned from getStaticCompiledConglomInfo() call on this id.
static_info
,
DynamicCompiledOpenConglomInfo
object returned from getDynamicCompiledConglomInfo() call on this id.
dynamic_info
)

Implements org.apache.derby.iapi.store.access.TransactionController.openCompiledScan.

Open a scan on a conglomerate, optionally providing compiled info.

private ConglomerateController
openConglomerate(Conglomerate conglom, boolean hold, int open_mode, int lock_level, int isolation_level, StaticCompiledOpenConglomInfo static_info, DynamicCompiledOpenConglomInfo dynamic_info)

public ConglomerateController
openConglomerate(long
The identifier of the conglomerate to open.
conglomId
,
boolean
If true, will be maintained open over commits.
hold
,
int
Specifiy flags to control opening of table. OPENMODE_FORUPDATE - if set open the table for update otherwise open table shared.
open_mode
,
int
One of (MODE_TABLE, MODE_RECORD).
lock_level
,
int
The isolation level to lock the conglomerate at. One of (ISOLATION_READ_COMMITTED, ISOLATION_REPEATABLE_READ or ISOLATION_SERIALIZABLE).
isolation_level
)

Implements org.apache.derby.iapi.store.access.TransactionController.openConglomerate.

Open a conglomerate for use.

public GroupFetchScanController
openGroupFetchScan(long
see openScan()
conglomId
,
boolean hold, int
see openScan()
open_mode
,
int
see openScan()
lock_level
,
int
see openScan()
isolation_level
,
FormatableBitSet
see openScan()
scanColumnList
,
DataValueDescriptor[]
see openScan()
startKeyValue
,
int
see openScan()
startSearchOperator
,
Qualifier[][]
see openScan()
qualifier
,
DataValueDescriptor[]
see openScan()
stopKeyValue
,
int
see openScan()
stopSearchOperator
)

Implements org.apache.derby.iapi.store.access.TransactionController.openGroupFetchScan.

Open a scan which gets copies of multiple rows at a time.

private ScanController
openScan(Conglomerate conglom, boolean hold, int open_mode, int lock_level, int isolation_level, FormatableBitSet scanColumnList, DataValueDescriptor[] startKeyValue, int startSearchOperator, Qualifier[][] qualifier, DataValueDescriptor[] stopKeyValue, int stopSearchOperator, StaticCompiledOpenConglomInfo static_info, DynamicCompiledOpenConglomInfo dynamic_info)

public ScanController
openScan(long
The identifier of the conglomerate to open the scan for.
conglomId
,
boolean
If true, this scan will be maintained open over commits.
hold
,
int
Specifiy flags to control opening of table. OPENMODE_FORUPDATE - if set open the table for update otherwise open table shared.
open_mode
,
int
One of (MODE_TABLE, MODE_RECORD).
lock_level
,
int
The isolation level to lock the conglomerate at. One of (ISOLATION_READ_COMMITTED, ISOLATION_REPEATABLE_READ or ISOLATION_SERIALIZABLE).
isolation_level
,
FormatableBitSet
A description of which columns to return from every fetch in the scan. template, and scanColumnList work together to describe the row to be returned by the scan - see RowUtil for description of how these three parameters work together to describe a "row".
scanColumnList
,
DataValueDescriptor[]
An indexable row which holds a (partial) key value which, in combination with the startSearchOperator, defines the starting position of the scan. If null, the starting position of the scan is the first row of the conglomerate. The startKeyValue must only reference columns included in the scanColumnList.
startKeyValue
,
int
an operator which defines how the startKeyValue is to be searched for. If startSearchOperation is ScanController.GE, the scan starts on the first row which is greater than or equal to the startKeyValue. If startSearchOperation is ScanController.GT, the scan starts on the first row whose key is greater than startKeyValue. The startSearchOperation parameter is ignored if the startKeyValue parameter is null.
startSearchOperator
,
Qualifier[][]
A 2 dimensional array encoding a conjunctive normal form (CNF) datastructure of of qualifiers which, applied to each key, restrict the rows returned by the scan. Rows for which the CNF expression returns false are not returned by the scan. If null, all rows are returned. Qualifiers can only reference columns which are included in the scanColumnList. The column id that a qualifier returns is the column id the table, not the column id in the partial row being returned. For detailed description of 2-dimensional array passing @see Qualifier
qualifier
,
DataValueDescriptor[]
An indexable row which holds a (partial) key value which, in combination with the stopSearchOperator, defines the ending position of the scan. If null, the ending position of the scan is the last row of the conglomerate. The stopKeyValue must only reference columns included in the scanColumnList.
stopKeyValue
,
int
an operator which defines how the stopKeyValue is used to determine the scan stopping position. If stopSearchOperation is ScanController.GE, the scan stops just before the first row which is greater than or equal to the stopKeyValue. If stopSearchOperation is ScanController.GT, the scan stops just before the first row whose key is greater than startKeyValue. The stopSearchOperation parameter is ignored if the stopKeyValue parameter is null.
stopSearchOperator
)

Implements org.apache.derby.iapi.store.access.TransactionController.openScan.

Open a scan on a conglomerate.

public SortController
openSort(long
The identifier of the sort to open, as returned from createSort.
id
)

Implements org.apache.derby.iapi.store.access.TransactionController.openSort.

Open a sort controller for a sort previously created in this transaction.

public SortCostController

Returns:

The open StoreCostController.
openSortCostController
()

Implements org.apache.derby.iapi.store.access.TransactionController.openSortCostController.

Return an open SortCostController.

public RowLocationRetRowSource
openSortRowSource(long
The identifier of the sort to scan, as returned from createSort.
id
)

Implements org.apache.derby.iapi.store.access.TransactionController.openSortRowSource.

Open a scan for retrieving rows from a sort.

public ScanController
openSortScan(long
The identifier of the sort to scan, as returned from createSort.
id
,
boolean
If true, this scan will be maintained open over commits.
hold
)

Implements org.apache.derby.iapi.store.access.TransactionController.openSortScan.

Open a scan for retrieving rows from a sort.

public StoreCostController

Returns:

The open StoreCostController.
openStoreCost
(long
The identifier of the conglomerate to open.
conglomId
)

Implements org.apache.derby.iapi.store.access.TransactionController.openStoreCost.

Return an open StoreCostController for the given conglomid.

public boolean
propertyDefaultIsVisible(String
The "key" of the property that is being requested.
key
)

Implements org.apache.derby.iapi.services.property.PersistentSet.propertyDefaultIsVisible.

Return true if the default property is visible.

public void
purgeConglomerate(long
Id of the conglomerate to purge.
conglomId
)

Implements org.apache.derby.iapi.store.access.TransactionController.purgeConglomerate.

Purge all committed deleted rows from the conglomerate.

public long
recreateAndLoadConglomerate(String
Specifies what kind of conglomerate to create. THE WAY THAT THE IMPLEMENTATION IS CHOSEN STILL NEEDS SOME WORK. For now, use "BTREE" or "heap" for a local access manager.
implementation
,
boolean
If false, and the rowsource used to load the new conglomerate returns no rows, then the original conglomid will be returned. To the client it will be as if no call was made. Underlying implementations may actually create and drop a container. If true, then a new empty container will be created and it's conglomid will be returned.
recreate_ifempty
,
DataValueDescriptor[]
A row which describes the prototypical row that the conglomerate will be holding. Typically this row gives the conglomerate information about the number and type of columns it will be holding. The implementation may require a specific subclass of row type. Note that the createConglomerate call reads the template and makes a copy of any necessary information from the template, no reference to the template is kept (and thus this template can be re-used in subsequent calls - such as openScan()). This field is required when creating either a heap or btree conglomerate.
template
,
ColumnOrdering[]
Specifies the colummns sort order. Useful only when the conglomerate is of type BTREE, default value is 'null', which means all columns needs to be sorted in Ascending order.
columnOrder
,
int[]
Specifies the collation id of each of the columns in the new conglomerate. Collation id along with format id may be used to create DataValueDescriptor's which may subsequently be used for comparisons. For instance the correct collation specific order and searching is maintained by correctly specifying the collation id of the columns in the index when the index is created.
collationIds
,
Properties
Implementation-specific properties of the conglomerate.
properties
,
int
If true, the conglomerate is temporary. Temporary conglomerates are only visible through the transaction controller that created them. Otherwise, they are opened, scanned, and dropped in the same way as permanent conglomerates. Changes to temporary conglomerates persist across commits, but temporary conglomerates are truncated on abort (or rollback to savepoint). Updates to temporary conglomerates are not locked or logged.
temporaryFlag
,
long
The conglomid of the original conglomerate.
orig_conglomId
,
RowLocationRetRowSource
interface to receive rows to load into the conglomerate.
rowSource
,
long[]
- if not null the number of rows loaded into the table will be returned as the first element of the array.
rowCount
)

Implements org.apache.derby.iapi.store.access.TransactionController.recreateAndLoadConglomerate.

recreate a conglomerate and populate it with rows from rowSource.

public int
releaseSavePoint(String
The user provided name of the savepoint, set by the user in the setSavePoint() call.
name
,
Object
A NULL value means it is an internal savepoint (ie not a user defined savepoint) Non NULL value means it is a user defined savepoint which can be a SQL savepoint or a JDBC savepoint A String value for kindOfSavepoint would mean it is SQL savepoint A JDBC Savepoint object value for kindOfSavepoint would mean it is JDBC savepoint
kindOfSavepoint
)

Implements org.apache.derby.iapi.store.access.TransactionController.releaseSavePoint.

Release the save point of the given name.

public int
rollbackToSavePoint(String
The identifier of the SavePoint to roll back to.
name
,
boolean
boolean indicating whether or not the controller should close open controllers.
close_controllers
,
Object
A NULL value means it is an internal savepoint (ie not a user defined savepoint) Non NULL value means it is a user defined savepoint which can be a SQL savepoint or a JDBC savepoint A String value for kindOfSavepoint would mean it is SQL savepoint A JDBC Savepoint object value for kindOfSavepoint would mean it is JDBC savepoint
kindOfSavepoint
)

Implements org.apache.derby.iapi.store.access.TransactionController.rollbackToSavePoint.

Rollback all changes made since the named savepoint was set.

pack-priv void
public void
setNoLockWait(boolean
if true never wait for a lock in this transaction, but time out immediately
noWait
)

Implements org.apache.derby.iapi.store.access.TransactionController.setNoLockWait.

Tell this transaction whether it should time out immediately if a lock cannot be granted without waiting.

public void
setProperty(String
The key used to lookup this property.
key
,
Serializable
The value to be associated with this key. If null, delete the property from the properties list.
value
,
boolean
True if property is only ever searched for int the database properties.
dbOnlyProperty
)

Implements org.apache.derby.iapi.services.property.PersistentSet.setProperty.

Sets the Serializable object associated with a property key.

public void
setPropertyDefault(String
The key used to lookup this propertyDefault.
key
,
Serializable
The default value to be associated with this key. If null, delete the property default from the properties list.
value
)

Implements org.apache.derby.iapi.services.property.PersistentSet.setPropertyDefault.

Sets the Serializable object default value associated with a property key.

public int
setSavePoint(String
The user provided name of the savepoint.
name
,
Object
A NULL value means it is an internal savepoint (ie not a user defined savepoint) Non NULL value means it is a user defined savepoint which can be a SQL savepoint or a JDBC savepoint A String value for kindOfSavepoint would mean it is SQL savepoint A JDBC Savepoint object value for kindOfSavepoint would mean it is JDBC savepoint
kindOfSavepoint
)

Implements org.apache.derby.iapi.store.access.TransactionController.setSavePoint.

Set a save point in the current transaction.

public TransactionController

Returns:

The new nested user transaction.
startNestedUserTransaction
(boolean
Is transaction readonly? Only 1 non-read only nested transaction is allowed per transaction.
readOnly
,
boolean
By default should the transaction commit and abort be synced to the log. Normal usage should pick true, unless there is specific performance need and usage works correctly if a commit can be lost on system crash.
flush_log_on_xact_end
)

Implements org.apache.derby.iapi.store.access.TransactionController.startNestedUserTransaction.

Get an nested user transaction.

public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

public void
xa_commit(boolean
If true, the resource manager should use a one-phase commit protocol to commit the work done on behalf of current xid.
onePhase
)

Implements org.apache.derby.iapi.store.access.XATransactionController.xa_commit.

This method is called to commit the current XA global transaction.

public int

Returns:

A value indicating the resource manager's vote on the the outcome of the transaction. The possible values are: XA_RDONLY or XA_OK. If the resource manager wants to roll back the transaction, it should do so by throwing an appropriate XAException in the prepare method.
xa_prepare
()

Implements org.apache.derby.iapi.store.access.XATransactionController.xa_prepare.

This method is called to ask the resource manager to prepare for a transaction commit of the transaction specified in xid.

public void
xa_rollback()

Implements org.apache.derby.iapi.store.access.XATransactionController.xa_rollback.

rollback the current global transaction.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAllwaitwaitwait