Package org.apache.derby.diag
Class TransactionTable
- java.lang.Object
-
- org.apache.derby.vti.VTITemplate
-
- org.apache.derby.diag.TransactionTable
-
- All Implemented Interfaces:
java.lang.AutoCloseable
,java.sql.ResultSet
,java.sql.Wrapper
,AwareVTI
,VTICosting
public class TransactionTable extends VTITemplate implements VTICosting
TransactionTable is a virtual table that shows all transactions currently in the database. This virtual table can be invoked by calling it directlyselect * from SYSCS_DIAG.TRANSACTION_TABLE
The TransactionTable virtual table takes a snap shot of the transaction table while the system is in flux, so it is possible that some transactions may be in transition state while the snap shot is taken. We choose to do this rather then impose extraneous timing restrictions so that the use of this tool will not alter the normal timing and flow of execution in the application.
The TransactionTable virtual table has the following columns:
- XID varchar(15) - not nullable. The transaction id, this can be joined with the LockTable virtual table's XID.
- GLOBAL_XID varchar(140) - nullable. The global transaction id, only set if this transaction is a participant in a distributed transaction.
- USERNAME varchar(128) - nullable. The user name, or APP by default. May appear null if the transaction is started by Derby.
- TYPE varchar(30) - not nullable. UserTransaction or an internal transaction spawned by Derby.
- STATUS varchar(8) - not nullable. IDLE or ACTIVE. A transaction is IDLE only when it is first created or right after it commits. Any transaction that holds or has held any resource in the database is ACTIVE. Accessing the TransactionTable virtual table without using the class alias will not activate the transaction.
- FIRST_INSTANT varchar(20) - nullable. If null, this is a read only transaction. If not null, this is the first log record instant written by the transaction.
- SQL_TEXT VARCHAR(32672) - nullable. if null, this transaction is currently not being executed in the database. If not null, this is the SQL statement currently being executed in the database.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.derby.vti.VTITemplate
VTITemplate.ColumnDescriptor
-
-
Field Summary
Fields Modifier and Type Field Description private static ResultColumnDescriptor[]
columnInfo
(package private) int
currentRow
(package private) boolean
initialized
private static java.sql.ResultSetMetaData
metadata
private TransactionInfo[]
transactionTable
private boolean
wasNull
-
Fields inherited from interface java.sql.ResultSet
CLOSE_CURSORS_AT_COMMIT, CONCUR_READ_ONLY, CONCUR_UPDATABLE, FETCH_FORWARD, FETCH_REVERSE, FETCH_UNKNOWN, HOLD_CURSORS_OVER_COMMIT, TYPE_FORWARD_ONLY, TYPE_SCROLL_INSENSITIVE, TYPE_SCROLL_SENSITIVE
-
Fields inherited from interface org.apache.derby.vti.VTICosting
defaultEstimatedCost, defaultEstimatedRowCount
-
-
Constructor Summary
Constructors Constructor Description TransactionTable()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
double
getEstimatedCostPerInstantiation(VTIEnvironment vtiEnvironment)
Get the estimated cost for a single instantiation of a Table Function.double
getEstimatedRowCount(VTIEnvironment vtiEnvironment)
Get the estimated row count for a single scan of a Table Function.java.sql.ResultSetMetaData
getMetaData()
java.lang.String
getString(int columnNumber)
All columns in TransactionTable VTI is of String type.boolean
next()
boolean
supportsMultipleInstantiations(VTIEnvironment vtiEnvironment)
Find out if the ResultSet of the Table Function can be instantiated multiple times.boolean
wasNull()
-
Methods inherited from class org.apache.derby.vti.VTITemplate
absolute, afterLast, beforeFirst, cancelRowUpdates, clearWarnings, deleteRow, findColumn, first, getArray, getArray, getAsciiStream, getAsciiStream, getBigDecimal, getBigDecimal, getBigDecimal, getBigDecimal, getBinaryStream, getBinaryStream, getBlob, getBlob, getBoolean, getBoolean, getByte, getByte, getBytes, getBytes, getCharacterStream, getCharacterStream, getClob, getClob, getConcurrency, getContext, getCursorName, getDate, getDate, getDate, getDate, getDouble, getDouble, getFetchDirection, getFetchSize, getFloat, getFloat, getHoldability, getInt, getInt, getLong, getLong, getNCharacterStream, getNCharacterStream, getNClob, getNClob, getNString, getNString, getObject, getObject, getObject, getObject, getObject, getObject, getRef, getRef, getReturnTableSignature, getRow, getRowId, getRowId, getShort, getShort, getSQLXML, getSQLXML, getStatement, getString, getTime, getTime, getTime, getTime, getTimestamp, getTimestamp, getTimestamp, getTimestamp, getType, getUnicodeStream, getUnicodeStream, getURL, getURL, getWarnings, insertRow, isAfterLast, isBeforeFirst, isClosed, isFirst, isLast, isWrapperFor, last, moveToCurrentRow, moveToInsertRow, notImplemented, previous, refreshRow, relative, rowDeleted, rowInserted, rowUpdated, setContext, setFetchDirection, setFetchSize, unwrap, updateArray, updateArray, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateAsciiStream, updateBigDecimal, updateBigDecimal, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBinaryStream, updateBlob, updateBlob, updateBlob, updateBlob, updateBlob, updateBlob, updateBoolean, updateBoolean, updateByte, updateByte, updateBytes, updateBytes, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateCharacterStream, updateClob, updateClob, updateClob, updateClob, updateClob, updateClob, updateDate, updateDate, updateDouble, updateDouble, updateFloat, updateFloat, updateInt, updateInt, updateLong, updateLong, updateNCharacterStream, updateNCharacterStream, updateNCharacterStream, updateNCharacterStream, updateNClob, updateNClob, updateNClob, updateNClob, updateNClob, updateNClob, updateNString, updateNString, updateNull, updateNull, updateObject, updateObject, updateObject, updateObject, updateRef, updateRef, updateRow, updateRowId, updateRowId, updateShort, updateShort, updateSQLXML, updateSQLXML, updateString, updateString, updateTime, updateTime, updateTimestamp, updateTimestamp
-
-
-
-
Field Detail
-
transactionTable
private TransactionInfo[] transactionTable
-
initialized
boolean initialized
-
currentRow
int currentRow
-
wasNull
private boolean wasNull
-
columnInfo
private static final ResultColumnDescriptor[] columnInfo
-
metadata
private static final java.sql.ResultSetMetaData metadata
-
-
Constructor Detail
-
TransactionTable
public TransactionTable() throws StandardException
- Throws:
StandardException
-
-
Method Detail
-
getMetaData
public java.sql.ResultSetMetaData getMetaData()
- Specified by:
getMetaData
in interfacejava.sql.ResultSet
- Overrides:
getMetaData
in classVTITemplate
- See Also:
ResultSet.getMetaData()
-
next
public boolean next() throws java.sql.SQLException
- Specified by:
next
in interfacejava.sql.ResultSet
- Throws:
java.sql.SQLException
- if no transaction context can be found- See Also:
ResultSet.next()
-
close
public void close()
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.sql.ResultSet
- See Also:
ResultSet.close()
-
getString
public java.lang.String getString(int columnNumber)
All columns in TransactionTable VTI is of String type.- Specified by:
getString
in interfacejava.sql.ResultSet
- Overrides:
getString
in classVTITemplate
- See Also:
ResultSet.getString(int)
-
wasNull
public boolean wasNull()
- Specified by:
wasNull
in interfacejava.sql.ResultSet
- Overrides:
wasNull
in classVTITemplate
- See Also:
ResultSet.wasNull()
-
getEstimatedRowCount
public double getEstimatedRowCount(VTIEnvironment vtiEnvironment)
Description copied from interface:VTICosting
Get the estimated row count for a single scan of a Table Function.- Specified by:
getEstimatedRowCount
in interfaceVTICosting
- Parameters:
vtiEnvironment
- The state variable for optimizing the Table Function.- Returns:
- The estimated row count for a single scan of the Table Function.
- See Also:
VTICosting.getEstimatedRowCount(org.apache.derby.vti.VTIEnvironment)
-
getEstimatedCostPerInstantiation
public double getEstimatedCostPerInstantiation(VTIEnvironment vtiEnvironment)
Description copied from interface:VTICosting
Get the estimated cost for a single instantiation of a Table Function.- Specified by:
getEstimatedCostPerInstantiation
in interfaceVTICosting
- Parameters:
vtiEnvironment
- The state variable for optimizing the Table Function.- Returns:
- The estimated cost for a single instantiation of the Table Function.
- See Also:
VTICosting.getEstimatedCostPerInstantiation(org.apache.derby.vti.VTIEnvironment)
-
supportsMultipleInstantiations
public boolean supportsMultipleInstantiations(VTIEnvironment vtiEnvironment)
Description copied from interface:VTICosting
Find out if the ResultSet of the Table Function can be instantiated multiple times.- Specified by:
supportsMultipleInstantiations
in interfaceVTICosting
- Parameters:
vtiEnvironment
- The state variable for optimizing the Table Function.- Returns:
- false
- See Also:
VTICosting.supportsMultipleInstantiations(org.apache.derby.vti.VTIEnvironment)
-
-