Class ErrorLogReader

  • All Implemented Interfaces:
    java.lang.AutoCloseable, java.sql.ResultSet, java.sql.Wrapper, AwareVTI

    public class ErrorLogReader
    extends VTITemplate
    ErrorLogReader is a virtual table interface (VTI) which contains all the statements of "interest" in db2j.log or a specified file when db2j.language.logStatementText=true.

    One use of this VTI is to determine the active transactions and the SQL statements in those transactions at a given point in time, say when a deadlock or lock timeout occurred. In order to do that, you must first find the timestamp (timestampConstant) of interest in the error log. The SQL to view the active transactions at a given in time is:

    SELECT vti.ts, threadid, cast(xid as int) as xid_int, cast(lccid as int) as lccid_int, logtext 
                     FROM new org.apache.derby.diag.ErrorLogReader() vti, 
                            (VALUES timestampConstant) t(ts)
                     WHERE vti.ts <= t.ts AND 
                                    vti.ts >
                                            (SELECT MAX(ts) IS NULL ? '2000-01-01 00:00:00.1' : MAX(ts)
                                             FROM new org.apache.derby.diag.ErrorLogReader() vti_i
                                             WHERE (logtext LIKE 'Committing%' OR
                                                            logtext LIKE 'Rolling%') AND
                                                       vti.xid = vti_i.xid AND ts < t.ts)
                     ORDER BY xid_int, vti.ts
            

    The ErrorLogReader virtual table has the following columns:

    • TS varchar(26) - the timestamp of the statement.
    • THREADID varchar(40) - the thread name.
    • XID varchar(15) - the transaction ID.
    • LCCID varchar(15) - the connection ID.
    • DATABASE varchar(128) - Database name
    • DRDAID varchar(50) - nullable. DRDA ID for network server session.
    • LOGTEXT long varchar - text of the statement or commit or rollback.
    • Field Detail

      • gotFile

        private boolean gotFile
      • inputFileStreamReader

        private java.io.InputStreamReader inputFileStreamReader
      • inputStream

        private java.io.InputStream inputStream
      • bufferedReader

        private java.io.BufferedReader bufferedReader
      • inputFileName

        private java.lang.String inputFileName
      • line

        private java.lang.String line
      • endTimestampIndex

        private int endTimestampIndex
      • threadIndex

        private int threadIndex
      • xidIndex

        private int xidIndex
      • lccidIndex

        private int lccidIndex
      • databaseIndex

        private int databaseIndex
      • drdaidIndex

        private int drdaidIndex
      • PARAMETERS_STRING

        private static final java.lang.String PARAMETERS_STRING
        See Also:
        Constant Field Values
      • BEGIN_THREAD_STRING

        private static final java.lang.String BEGIN_THREAD_STRING
        See Also:
        Constant Field Values
      • END_THREAD_STRING

        private static final java.lang.String END_THREAD_STRING
        See Also:
        Constant Field Values
      • BEGIN_XID_STRING

        private static final java.lang.String BEGIN_XID_STRING
        See Also:
        Constant Field Values
      • BEGIN_DATABASE_STRING

        private static final java.lang.String BEGIN_DATABASE_STRING
        See Also:
        Constant Field Values
      • END_DATABASE_STRING

        private static final java.lang.String END_DATABASE_STRING
        See Also:
        Constant Field Values
      • BEGIN_DRDAID_STRING

        private static final java.lang.String BEGIN_DRDAID_STRING
        See Also:
        Constant Field Values
      • END_DRDAID_STRING

        private static final java.lang.String END_DRDAID_STRING
        See Also:
        Constant Field Values
      • BEGIN_EXECUTING_STRING

        private static final java.lang.String BEGIN_EXECUTING_STRING
        See Also:
        Constant Field Values
      • END_EXECUTING_STRING

        private static final java.lang.String END_EXECUTING_STRING
        See Also:
        Constant Field Values
      • metadata

        private static final java.sql.ResultSetMetaData metadata
    • Constructor Detail

      • ErrorLogReader

        public ErrorLogReader()
                       throws StandardException
        ErrorLogReader() accesses the derby.log in derby.system.home, if set, otherwise it looks in the current directory. ErrorLogReader('filename') will access the specified file name.
        Throws:
        StandardException
    • Method Detail

      • getMetaData

        public java.sql.ResultSetMetaData getMetaData()
        Specified by:
        getMetaData in interface java.sql.ResultSet
        Overrides:
        getMetaData in class VTITemplate
        See Also:
        ResultSet.getMetaData()
      • next

        public boolean next()
                     throws java.sql.SQLException
        Throws:
        java.sql.SQLException - If database-access error occurs.
        See Also:
        ResultSet.next()
      • close

        public void close()
        See Also:
        ResultSet.close()
      • getString

        public java.lang.String getString​(int columnNumber)
                                   throws java.sql.SQLException
        All columns in the Db2jLogReader VTI have a of String type.
        Specified by:
        getString in interface java.sql.ResultSet
        Overrides:
        getString in class VTITemplate
        Throws:
        java.sql.SQLException - If database-access error occurs.
        See Also:
        ResultSet.getString(int)
      • wasNull

        public boolean wasNull()
        Specified by:
        wasNull in interface java.sql.ResultSet
        Overrides:
        wasNull in class VTITemplate
        See Also:
        ResultSet.wasNull()