Top Description Fields Methods
org.apache.derby.iapi.store.access

public Interface TransactionController

extends PersistentSet
Known Direct Subinterfaces
org.apache.derby.iapi.store.access.XATransactionController, org.apache.derby.iapi.store.access.conglomerate.TransactionManager
Imports
java.util.Properties, org.apache.derby.iapi.services.context.ContextManager, org.apache.derby.iapi.services.locks.CompatibilitySpace, org.apache.derby.iapi.services.property.PersistentSet, org.apache.derby.iapi.services.io.Storable, .FormatableBitSet, org.apache.derby.shared.common.error.StandardException, org.apache.derby.iapi.store.raw.Loggable, .Transaction, org.apache.derby.iapi.types.DataValueDescriptor

The TransactionController interface provides methods that an access client can use to control a transaction, which include the methods for gaining access to resources (conglomerates, scans, etc.) in the transaction controller's storage manager. TransactionControllers are obtained from an AccessFactory via the getTransaction method.

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:

Transactions are obtained from an AccessFactory.
See Also
AccessFactory#getTransaction, org.apache.derby.shared.common.error.StandardException, PersistentSet

Field Summary

Modifier and TypeField 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

Method Summary

Modifier and TypeMethod 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
anyoneBlocked()

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

public void
commit()

Commit this transaction.

public DatabaseInstant
commitNoSync(int commitflag)

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

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.
conglomerateExists
(long
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.
countOpens
(int
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.
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
)

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

Create a conglomerate.

public long

Returns:

The sort identifier which can be used subsequently to open sort controllers and scans.
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
)

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

Compress table in place.

public void
destroy()

Abort the current transaction and pop the context.

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

Drop a conglomerate.

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

sortid
)

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).
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.
findConglomid
(long containerid)

For debugging, find the conglomid given the containerid.

public long

Returns:

the containerid of container implementing conglomerate with "conglomid."
findContainerid
(long conglomid)

For debugging, find the containerid given the conglomid.

public AccessFactory

Returns:

The AccessFactory which started this transaction.
getAccessManager
()

Get reference to access factory which started this transaction.

public String

Returns:

The string which identifies the transaction.
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
()

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
)

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

public FileResource
getFileHandler()

Get an object to handle non-transactional files.

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 getOwner() on that object, guarantees that the lock will be removed on a commit or an abort.

public StaticCompiledOpenConglomInfo

Returns:

The static compiled information.
getStaticCompiledConglomInfo
(long
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.
getTransactionIdString
()

Get string id of the transaction.

public Properties

Returns:

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

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

Reveals whether the transaction has ever read or written data.

public boolean

Returns:

true If the transaction is read only to this point.
isPristine
()

Reveals whether the transaction is read only.

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

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

public ConglomerateController

Returns:

The identifier to be used to open the conglomerate later.
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
)

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

public ScanController

Returns:

The identifier to be used to open the conglomerate later.
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
)

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

public ConglomerateController

Returns:

a ConglomerateController to manipulate the conglomerate.
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
)

Open a conglomerate for use.

public GroupFetchScanController

Returns:

The GroupFetchScanController to be used to fetch the rows.
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
)

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.
openSort
(long
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

Returns:

The open StoreCostController.
openSortCostController
()

Return an open SortCostController.

public RowLocationRetRowSource

Returns:

The RowSource
openSortRowSource
(long
The 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.
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
)

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
)

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

Release the save point of the given name.

public int

Returns:

returns savepoint position in the stack.
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
)

Rollback all changes made since the named savepoint was set.

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

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

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
)

Get an nested user transaction.

Inherited from org.apache.derby.iapi.services.property.PersistentSet:
getPropertiesgetPropertygetPropertyDefaultpropertyDefaultIsVisiblesetPropertysetPropertyDefault