2015-01-27

Oracle: quick notes on ojdbc6.jar

(If not specified, package is "oracle.jdbc.driver". Our current driver type is thin.)
(Need more details? JD-GUI and ojdbc6_g.jar is all what you need.)
  1. oracle.jdbc.OracleDriver --> OracleDriver
    1. connect()
      1. oci: T2CDriverExtension (driverextension id: 2) [T2 means "type 2", aka using native-API]
      2. thin: T4CDriverExtension (driverextension id: 0) [T4 means "type 4", aka pure java implementation]
    2. Instatiates a T4CDriverExtension
      1. getConnection() --> T4CConnection
    3. Casts back the T4CConnection to PhysicalConnection, then returns.
  2. PhysicalConnection.createStatement(CURSOR_TYPE, CONCURRENCY_TYPE, IGNORED)
    1. return new OracleStatementWrapper( T4CDriverExtension.allocateStatement() --> T4CStatement)
  3. OracleStatementWrapper.executeQuery() [To have a ResultSet]
    1. OracleStatement.executeQuery()
      1. OracleStatement.doExecuteWithTimeout()
        1. T4CStatement.executeForRows()
          1. T4CStatement.doOall8(PARSE, EXEC, FETCH, DESCR, DEF, 1stRow)
            1. T4C8Oall.doOALL(PARSE, EXEC, FETCH, DESCR, DEF, kind, cursorid, sqlObject.getSqlBytes() [teh query], ...)
              1. ...
      2. return new OracleResultSetImpl(this.[pysical]connection, this[OracleStatement]);
    2. ret
  4. [while] OracleResultSetImpl.next()
    1. OracleResultSetImpl.close_or_fetch_from_next()
      1. T4CStatement.fetch()
        1. T4CStatement.doOall8(f,f,t,f,f)
          1. T4C8Oall.doOALL()
            1. T4CTTIfun.doRPC() [TTI: Two-Task Interface]
              1. marshalFunHeader()
                1. T4CTTIMsg.marshalTTCcode()
                  1. T4CMAREngine.marshalUB1()
                    1. [T4CSocketOutputStreamWrapper.write(aByte)]
              2. marshal() -- abstract: TODO
              3. receive()
                1. T4C8Oall.readDCB()
                2. T4C8TTILob.readLOBD()
  5. OracleResultSetImpl.getLong(i)
    1. OracleStatement,accessors[i-1]
      1. LongAccessor
        1. CharCommonAccessor.getLong(i-1)
          1. Long.parseLong(CharCommonAccessor.getString(i-1))
            1. cuts the string out of an array of bytes received as a LOB.