Each transaction controller is associated with a transaction context which provides error cleanup when standard exceptions are thrown anywhere in the system. The transaction context performs the following actions in response to cleanupOnError:
AccessFactory#getTransaction, org.apache.derby.shared.common.error.StandardException , PersistentSet
| Modifier and Type | Field and Description |
|---|---|
| public static final byte | |
| public static final byte | |
| public static final byte | |
| public static final int | ISOLATION_NOLOCK
No locks are requested for data that is read only. |
| public static final int | ISOLATION_READ_COMMITTED
No lost updates, no dirty reads, only committed data is returned. |
| public static final int | ISOLATION_READ_COMMITTED_NOHOLDLOCK
No lost updates, no dirty reads, only committed data is returned. |
| public static final int | ISOLATION_READ_UNCOMMITTED
No locks are requested for data that is read only. |
| public static final int | ISOLATION_REPEATABLE_READ
Read and write locks are held until end of transaction, but no phantom protection is performed (ie no previous key locking). |
| public static final int | ISOLATION_SERIALIZABLE
Gray's isolation degree 3, "Serializable, Repeatable Read". |
| public static final int | |
| public static final int | MODE_RECORD
Constant used for the lock_level argument to openConglomerate() and openScan() calls. |
| public static final int | MODE_TABLE
Constant used for the lock_level argument to openConglomerate() and openScan() calls. |
| public static final int | OPEN_CONGLOMERATE
Constants used for the countOpen() call. |
| public static final int | |
| public static final int | |
| public static final int | |
| public static final int | |
| public static final int | OPENMODE_BASEROW_INSERT_LOCKED
Use this mode to the openConglomerate() call used to open the secondary indices of a table for inserting new rows in the table. |
| public static final int | OPENMODE_FOR_LOCK_ONLY
Use this mode to the openConglomerate() call used to just get the table lock on the conglomerate without actually doing anything else. |
| public static final int | OPENMODE_FORUPDATE
open table for update, if not specified table will be opened for read. |
| public static final int | OPENMODE_LOCK_NOWAIT
The table lock request will not wait. |
| public static final int | OPENMODE_LOCK_ROW_NOWAIT
The row lock request will not wait. |
| public static final int | OPENMODE_SECONDARY_LOCKED
Use this mode to the openConglomerate() call which opens the base table to be used in a index to base row probe. |
| public static final int | OPENMODE_USE_UPDATE_LOCKS
Use this mode to the openScan() call to indicate the scan should get update locks during scan, and either promote the update locks to exclusive locks if the row is changed or demote the lock if the row is not updated. |
| public static final int | |
| public static final int |
| Modifier and Type | Method and Description |
|---|---|
| public void | 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 alter. 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)Add a column to a conglomerate. |
| public boolean | |
| public void | |
| public DatabaseInstant | |
| public void | compressConglomerate(long
Id of the conglomerate to purge. conglomId)Return free space from the conglomerate back to the OS. |
| public boolean | Returns: true if the conglomerate exists, false otherwise.The identifier of the conglomerate to check for. conglomId)Check whether a conglomerate exists. |
| public int | Returns: The nunber of open's of a type indicated by "which_to_count" parameter.Which kind of open to report on. which_to_count)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)Create a conglomerate and load (filled) it with rows that comes from the row source without loggging. |
| public BackingStoreHashtable | Returns: the BackingStoreHashtable which was created.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)Create a HashSet which contains all rows that qualify for the described scan. |
| public long | Returns: The identifier to be used to open the conglomerate later.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)Create a conglomerate. |
| public long | Returns: The sort identifier which can be used subsequently to open sort controllers and scans.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)Create a sort. |
| public Object | createXATransactionFromLocalTransaction(int 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)Convert a local transaction to a global transaction. |
| public String | Returns: String with debugging information.Return a string with debug information about opened congloms/scans/sorts. |
| public GroupFetchScanController | Returns: The GroupFetchScanController to be used to fetch the rows.see openScan() conglomId, boolean online, boolean see openScan() hold, int see openScan() open_mode, int see openScan() lock_level, int see openScan() isolation_level)Compress table in place. |
| public void | |
| public void | |
| public void | |
| public boolean | Returns: boolean indicating if a row was found and retrieved or not.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). 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[] The row to retrieve the maximum value into. fetchRow)Retrieve the maximum value row in an ordered conglomerate. |
| public long | Returns: the conglomid, which contains the container with containerid.For debugging, find the conglomid given the containerid. |
| public long | Returns: the containerid of container implementing conglomerate with "conglomid."For debugging, find the containerid given the conglomid. |
| public AccessFactory | Returns: The AccessFactory which started this transaction.Get reference to access factory which started this transaction. |
| public String | Returns: The string which identifies the transaction.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.Get the context manager that the transaction was created with. |
| public DynamicCompiledOpenConglomInfo | Returns: The dynamic information.The identifier of the conglomerate to open. conglomId)Return dynamic information about the conglomerate to be dynamically reused in repeated execution of a statement. |
| public FileResource | |
| public CompatibilitySpace | getLockSpace()
Return an object that when used as the compatibility space for a lock
request, and the group object is the one returned by a
call to |
| public StaticCompiledOpenConglomInfo | Returns: The static compiled information.The identifier of the conglomerate to open. conglomId)Return static information about the conglomerate to be included in a a compiled plan. |
| public String | Returns: The a string which identifies the transaction.Get string id of the transaction. |
| public Properties | Returns: The superset of properties that "users" can specify.A superset of properties that "users" can specify. |
| public boolean | Returns: true If the transaction was either started by AccessFactory.startXATransaction() or was morphed to a global transaction by calling createXATransactionFromLocalTransaction().Reveals whether the transaction is a global or local transaction. |
| public boolean | Returns: true If the transaction has never read or written data.Reveals whether the transaction has ever read or written data. |
| public boolean | Returns: true If the transaction is read only to this point.Reveals whether the transaction is read only. |
| public void | |
| public ConglomerateController | Returns: The identifier to be used to open the conglomerate later.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)Open a conglomerate for use, optionally include "compiled" info. |
| public ScanController | Returns: The identifier to be used to open the conglomerate later.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)Open a scan on a conglomerate, optionally providing compiled info. |
| public ConglomerateController | Returns: a ConglomerateController to manipulate the conglomerate.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)Open a conglomerate for use. |
| public GroupFetchScanController | Returns: The GroupFetchScanController to be used to fetch the rows.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)Open a scan which gets copies of multiple rows at a time. |
| 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)Open a scan on a conglomerate. |
| public SortController | Returns: A sort controller to use for inserting.The identifier of the sort to open, as returned from
createSort. id)Open a sort controller for a sort previously created in this transaction. |
| public SortCostController | |
| public RowLocationRetRowSource | Returns: The RowSourceThe identifier of the sort to scan, as returned
from createSort. id)Open a scan for retrieving rows from a sort. |
| public ScanController | Returns: The sort controller.The identifier of the sort to scan, as returned from createSort. id, boolean If true, this scan will be maintained open over commits. hold)Open a scan for retrieving rows from a sort. |
| public StoreCostController | Returns: The open StoreCostController.The identifier of the conglomerate to open. conglomId)Return an open StoreCostController for the given conglomid. |
| public void | purgeConglomerate(long
Id of the conglomerate to purge. conglomId)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)Recreate a conglomerate and possibly load it with new rows that come from the new row source. |
| public int | Returns: returns savepoint position in the stack.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)Release the save point of the given name. |
| public int | Returns: returns savepoint position in the stack.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)Rollback all changes made since the named savepoint was set. |
| public void | setNoLockWait(boolean
if noWait)true never wait for a lock in this transaction,
but time out immediatelyTell this transaction whether it should time out immediately if a lock cannot be granted without waiting. |
| public int | Returns: returns savepoint position in the stack.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)Set a save point in the current transaction. |
| public TransactionController | Returns: The new nested user transaction.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)Get an nested user transaction. |