IBM Support

PK93123: NEW RELEASE OF THE IBM DB2 DRIVER FOR JDBC AND SQLJ (RELEASE 3.58) PROVIDING VARIOUS ENHANCEHMENT AND SERVICE UPDATES.

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • New release of the IBM DB2 Driver for JDBC and SQLJ (release
    3.58) providing various enhancehment and service updates.
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED: All Users of the                             *
    *                 IBM DB2 Driver for JDBC and SQLJ             *
    ****************************************************************
    * PROBLEM DESCRIPTION: IBM DB2 Driver for JDBC and SQLJ        *
    *                      version 3.58.90 is provided by this     *
    *                      APAR ( JCCV35890 )                      *
    *                                                              *
    *                      This APAR is applicable to              *
    *                      IBM DB2 Driver for JDBC and SQLJ        *
    *                      for both DB2 z/OS V9 and the            *
    *                      alternate supplemental driver           *
    *                      for DB2 z/OS V8.                        *
    *                      ( JCCZOSDB2V8, JCCZOSDB2V9 )            *
    *                                                              *
    *                      This APAR delivers a new release (3.58) *
    *                      of the IBM DB2 Driver for JDBC and SQLJ *
    *                      providing an accumulation of defect     *
    *                      fixes and enhancements.                 *
    *                                                              *
    *                      Individual items are documented in the  *
    *                      APAR summary section that follows.      *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    JCC sub-category keywords:
        JCCCOMMON, JCCT2ZOS, JCCT4, JCCT4XA, JCCSQLJ
    
    The following changes are delivered in this APAR:
    ____________________________________________________________
    All Connectivities: When an application uses the Java
    SecurityManager and does not allow reflection privileges to
    the application, a java.security.AccessControlException can
    occur when loading the JDBC driver.
    When sending or receiving data as a DECFLOAT data type, a
    java.security.AccessControlException may occur when connecting
    to a database that supports the DECFLOAT data type.  This can
    occur when running under Java 5.0 or higher on the client,
    and an application uses the Java SecurityManager and does
    not allow reflection privileges to the application.
    No exception will be thrown now. (134676)
    ____________________________________________________________
    All Connectivities: Using the driver to call a DB2 z/OS
    stored procedure, with a NULL input parameter results in an
    SQLCODE4463 (-4463).  This has been fixed. (132100)
    ____________________________________________________________
    All Connectivities: Attempting to register an OUT parameter
    on a CallableStatement within compound block failed with
    SQLCODE4461 (-4461) and SQLSTATE 42815. This has been fixed.
    (127988)
    ____________________________________________________________
    All Connectivities: Conversions from a string type to a
    corresponding boolean type is giving incorrect results.  This
    has been fixed. (122608)
    ____________________________________________________________
    All Connectivities: When a null String array is passed for
    the auto-generated key column names in the
    Connection.prepareStatement (String, String  ) method, a
    NullPointerException is thrown.  This has been fixed. (123866)
    ____________________________________________________________
    All Connectivities: CLP plus supports named parameter markers
    in PL/SQL blocks from DB2 LUW V9.7 FP1.  The corresponding
    support is added in the driver. (130110)
    ____________________________________________________________
    All Connectivities: Diagnostic information is traced to the
    Java standard error output stream whenever an exception is
    thrown by the server with the SQLCODE805 (-805), which may
    indicate that all bound JCC packages have been used up
    due to too many concurrently open statements.  The
    information contains a list of SQL strings from those
    statements that contributed to the exception. (130157)
    ____________________________________________________________
    All Connectivities: A looping problem occurs when executing
    inside WAS and retrieveMessagesFromServerOnGetMessage is set
    to true and the message stored procedure (SQLCAMESSAGECCSID/
    SQLCAMESSAGE) is missing on the server.  This has been fixed.
    (131185)
    ____________________________________________________________
    All Connectivities: The getJccSpecialRegisterProperties()
    method throws an SQLCODE4700 (-4700) error against DB2 z/OS
    databases running in Compatibility Mode.  This has been fixed.
    (131802)
    ____________________________________________________________
    All Connectivities: When progressive streaming is set to
    false, retrieving data from Blob/Clob to InputStream/Reader
    may not get complete data.  This has been fixed. (122292)
    ____________________________________________________________
    All Connectivities: When invoking a DB2 z/OS stored procedure
    that has space in the name, the driver throws SQLException
    "Literal replacement parsing failed for procedure call to DB2
    for z/OS".  This has been fixed. (126896)
    ____________________________________________________________
    All Connectivities: If an application first connects to DB2
    LUW and calls DB2Connection.getJccSpecialRegisterProperties(),
    then the same thread connects to DB2 z/OS and calls the same
    method, the driver will throw an SQLCODE104 (-104)
    SQLException.  This has been fixed. (128970)
    ____________________________________________________________
    All Connectivities: Previously, the driver did not allow
    "YES" or "NO" as values for the following properties.
    - atomicMultiRowInsert
    - enableNamedParameterMarkers
    - monitorEnabled
    - progressiveStreaming
    - useJDBC4ColumnNameAndLabelSemantics
    Now these values are allowed. (129768)
    ____________________________________________________________
    All Connectivities: A new property floatingPointStringFormat
    is introduced for all connectivity types applicable to all
    supported back-end servers. The new property allows the
    application to pick the String format of either the IBM Data
    Server driver (both type 4 and type 2) or the legacy type 2
    driver for double, float and real column types.
    The property is applicable only to the output path
    (i.e. ResultSet.getString() and CallableStatement.getString())
    The data type for floatingPointStringFormat property is
    integer and the possible values for the property are:
    - NOT_SET (0): if not explicitly set, the default value
      will be 0 that has the semantics of
      JCC_DRIVER_FLOATING_POINT_STRING_FORMAT.
    - JCC_DRIVER_FLOATING_POINT_STRING_FORMAT (1): double and
      real values will be returned in whatever format
      java.lang.String.valueOf(double) and
      java.lang.String.valueOf(float) methods return respectively.
    - LEGACY_TYPE2_ DRIVER_FLOATING_POINT_STRING_FORMAT (2):
      double and real values will be returned in legacy type 2
      driver format as discussed below.
      - The double types will be returned in the following format
            d.ddddddddddddddE<sign>ddd
            where d denotes a digit.
            1 digit before the decimal point.
            14 digits after the decimal point.
            E denotes the exponent.
            <sign> can be + or -.
            3 digits after the sign.
      - The real types will be returned in the following format
            d.ddddddE<sign>dd
            where d denotes a digit.
            1 digit before the decimal point.
            6 digits after the decimal point.
            E denotes the exponent.
            <sign> can be + or -.
            3 digits after the sign.
            2 digit before the decimal point. (130176, 130258)
    ____________________________________________________________
    All Connectivities: The following new APIs are added on the
    com.ibm.db2.jcc.DB2DatabaseMetaData to return metadata
    information for procedures, functions, and User Defined
    Types (UDTs) with module name when connecting to a DB2 for
    LUW V9.7 and above server.
    * getDBProcedureColumns
    * getDBProcedures
    * getDBUDTs
    * getDBFunctionColumns
    * getDBFunctions (122593)
    ____________________________________________________________
    All Connectivities: When driver property
    enableNamedParameterMarkers is set to DB2BaseDataSource.YES
    and the SQL statement executed is MERGE and the SQL
    statement contains named parameter markers, e.g. :abc,
    setJccXXXAtName() methods throw an exception for "Invalid
    argument: Parameter marker  name  was not present in the
    SQL String." (124933)
    ____________________________________________________________
    All Connectivities: When using SQL MERGE statement and
    the DataSource property atomicMultiRowInsert is set to
    true, the driver may throw a java.lang.ClassCastException.
    This has been fixed. (125076)
    ____________________________________________________________
    All Connectivities: If the target server is LUW and the
    DataSource property retrieveMessagesFromServerOnGetMessage
    is set to true, SQLException.getMessage() may only return
    partial SQL error message tokens if they contain double byte
    characters.  This has been fixed. (126118)
    ____________________________________________________________
    All Connectivities: The class com.ibm.db2.jcc.DB2DataSource
    has been deprecated.  Please use
    com.ibm.db2.jcc.DB2SimpleDataSource instead.  This applies to
    all supported backend databases. (126506)
    ____________________________________________________________
    All Connectivities: When using the DriverManager to obtain a
    connection, the client will be unable to change the value of
    the useJDBC4ColumnNameAndLabelSemantics property from
    DB2BaseDataSource.NOT_SET.  Furthermore, when using the JDBC 3
    driver, the client will be unable to change the value of the
    progressiveStreaming property from DB2BaseDataSource.NOT_SET.
    These problems do not exist when using a DataSource to
    obtain a connection.  This problem has been resolved. (127128)
    ____________________________________________________________
    All Connectivities: An "Unrecognized JDBC type: 1111"
    exception with SQLCODE4228 (-4228) is encountered when
    PreparedStatement.setNull () is called with
    java.sql.Types.OTHER against a target column that is
    defined as DECFLOAT.  This has been fixed. (130681)
    ____________________________________________________________
    All Connectivities: A java.lang.ClassCastException is
    encountered when PreparedStatement.executeBatch() is called
    against DB2 for z/OS to execute an INSERT FROM SELECT
    statement.  This has been fixed. (130216)
    ____________________________________________________________
    All Connectivities: java.lang.StringIndexOutOfBoundsException
    is encountered when a java.sql.Statement is used to execute a
    query on DB2 for z/OS and setMaxRows is called on each
    execution but with a different number.  This has been fixed.
    (133241)
    ____________________________________________________________
    All Connectivities: Previously, if the DataSource property
    sendDataAsIs is set to true, the driver allows
    PreparedStatement.getParameterMetaData() call.  This is no
    longer allowed, and an exception will be thrown with message
    "Cannot get parameterMetaData information when property
    sendDataAsIs is true". (129326)
    ____________________________________________________________
    All Connectivities: When using the same PreparedStatement
    executing batch statement for many times, JVM OutOfMemory
    error may occur.  This has been fixed. (133201)
    ____________________________________________________________
    All Connectivities: When calling getDBParameterMetadata
    against zOS server and the stored procedure returns resultset
    with non-hold cursor, java.lang.NullPointerException may
    occur. This has been fixed. (134827)
    ____________________________________________________________
    All Connectivities: If executeQuery() doesn't return a
    ResultSet, JCC throws SQLException with SQLCODE4476 (-4476).
    This behavior is JDBC compliant.  Now a new DataSource
    property allowNullResultSetForExecuteQuery is added, the
    type of this property is integer and the default is
    com.ibm.db2.jcc.DB2BaseDataSource.NOT_SET. If set to
    com.ibm.db2.jcc.DB2BaseDataSource.YES, JCC will NOT
    throw SQLException if executeQuery returns null ResultSet.
    This behavior is not compliant with JDBC specification.
    This property only applies to SQL CALL statement. (135004)
    ____________________________________________________________
    All Connectivities: When Statement.cancel gets called (this
    may be called explicitly or trigged by
    Statement.setQueryTimeout), if something is wrong with DB2
    server and a DisconnectException occurs, NullPointerException
    may be issued from java.util.LinkedList$ListItr.remove. This
    has been fixed. (128074)
    ____________________________________________________________
    All Connectivities: When property
    emulateParameterMetaDataForZCall sets to true and retrieving
    ParameterMetaData for a CALL to a z/OS server failed, memory
    leak may happen. This has been fixed. (134825)
    ____________________________________________________________
    All Connectivities: Select of a TIMESTAMP from source column
    that has a precision greater than 9 may result in an
    incorrect Timestamp fraction. This has been fixed. (132104)
    ____________________________________________________________
    Type-4 Connectivity: When using Sysplex and trusted connection,
    the driver may throw a NullPointerException or SQLException
    "The DDM object is not supported".  The problem is fixed.
    Before this fix, a NULL input user was incorrectly allowed
    when using Type-4 connectivity and calling one of the trusted
    connection switch user APIs shown below.  A NULL user input
    is not allowed for Type-4 connectivity and will now result in
    the driver throwing an SQLException.  (132155)
    
    DB2PooledConnection.getDB2Connection
      (byte   cookie,
       String user,
       String password,
       String userRegistry,
       byte   userSecToken,
       String originalUser,
       java.util.Properties properties);
    
    DB2Connection.reuseDB2Connection
      (byte   cookie,
       String user,
       String password,
       String userRegistry,
       byte   userSecToken,
       String originalUser,
       java.util.Properties properties);
    ____________________________________________________________
    Type-4 Connectivity: DB2 LUW V9 introduced the REOPT bind
    option with values NONE, ALWAYS, and ONCE.  The REOPT option
    is now enabled in the driver against DB2 LUW servers. (130229)
    ____________________________________________________________
    Type-4 Connectivity: When enableSysplexWLB is set to true,
    executing an SQL statement can cause an SQLCODE4499 (-4499)
    Exception with message "A DRDA Data Stream Syntax Error was
    detected. Reason: 0xcbcb. ERRORCODE=-4499, SQLSTATE=58009".
    This has been fixed. (131017)
    ____________________________________________________________
    Type-4 Connectivity: SQLCODE204 (-204) error is reported
    when a local commit is called twice under a SysplexWLB
    environment.  This has been fixed. (125938)
    ____________________________________________________________
    Type-4 Connectivity: A NullPointerException occurs when
    connectionConcentrator property is set to true and sysplexWLB
    property is set to false and JCC trace is enabled.  This has
    been fixed. (131088)
    ____________________________________________________________
    Type-4 Connectivity: Automatic client reroute (ACR) to
    other members of a datasharing group may not occur when
    Sysplex workload balancing (WLB) is enabled, resulting in
    SQLCODE4499 (-4499) when one member goes down.  This has been
    fixed. (133488)
    ____________________________________________________________
    Type-4 Connectivity: Enabled workload balancing feature
    in the driver against DB2 LUW server.  JCC introduced a new
    global property maxRefreshInterval which can be set to
    control the refresh interval for fetching the server list
    along with the new weight information.  Default value for
    this property is 30 sec. (127330)
    ____________________________________________________________
    Type-4 Connectivity: When PreparedStatement.setNull is
    called with java.sql.Types.LONGVARBINARY, the driver is
    mapping it to a VARCHAR instead of a VARBINARY. The driver
    code has been enhanced to flow VARBINARY when connecting
    to a server that supports it. (125885)
    ____________________________________________________________
    Type-4 Connectivity: Driver code has been enhanced to
    seamlessly re-establish the connection if driver property
    enableSeamlessFailover is set to DB2BaseDataSource.YES
    when connecting to a DB2 for z/OS server with APAR PK69339.
    (128286)
    ____________________________________________________________
    Type-4 Connectivity: Driver code has been enhanced to support
    a new property, affinityFailbackInterval, which specifies
    the length of the interval (in seconds) between attempts to
    fail back an existing connection to the primary server.  The
    default is 0.  A value of less than or equal to 0 means this
    property is ignored and no fail back will be attempted.  This
    property is only in effect if both enableClientAffinitiesList
    and enableSeamlessFailover are set to DB2BaseDataSource.YES.
    Attempts to fail back connections will only be made at
    transaction boundaries after the interval expires. (129159)
    ____________________________________________________________
    Type-4 Connectivity: If the target server is iSeries, the
    DataSource property encryptionAlgorithm is set to 1, and
    the DataSource property securityMechanism is set to
    ENCRYPTED_USER_AND_PASSWORD_SECURITY or
    ENCRYPTED_PASSWORD_SECURITY, the call to getConnection()
    may fail. This has been fixed. (126317)
    ____________________________________________________________
    Type-4 Connectivity: The default value of the
    maxRefreshInterval global property has been changed to 30
    seconds from 8 seconds. (129196)
    ____________________________________________________________
    Type-4 Connectivity: A possible loss of precision for
    setString() when the target column is declared as TIMESTAMP(p),
    where p is greater than nine has been resolved. (129809)
    ____________________________________________________________
    Type-4 Connectivity: Driver code has been enhanced to also do
    client re-route upon receiving SQLCODE1224 (-1224). (130591)
    ____________________________________________________________
    Type-4 Connectivity: While targeting DB2 for LUW server,
    and driver property enableClientAffinitiesList is set to
    DB2BaseDataSource.YES(1), upon a communication failure,
    driver may continuously try to reconnect to the primary
    server.  This has been fixed. (129995)
    ____________________________________________________________
    Type-4 Connectivity: Under heavy workload, a SQLCODE204 (-204)
    error is reported when executing a SQL statement on a trusted
    Connection against a sysplexWLB enabled DB2 server because the
    driver does not flow the correct special registers.  This has
    been fixed. (132491)
    ____________________________________________________________
    Type-4 Connectivity: On an extremely high workload sysplex
    system where some members go down and recover, the driver is
    unable to balance the workload among members based on each
    member's priority. This has been fixed. (134755)
    ____________________________________________________________
    Type-4 XA Connectivity: When connecting via DB2 Gateway, a
    XAException with XAER_PROTO error is thrown because JCC didn't
    issue a local commit at the end of the local transaction and
    before a new global transaction.  This has been fixed. (129441)
    ____________________________________________________________
    Type-4 XA Connectivity: A performance enhancement for most of
    the XA transaction API methods. (130398)
    ____________________________________________________________
    Type-4 XA Connectivity: Under heavy workload, a XAER_PROTO
    error is reported while starting a new global transaction on
    a trusted Connection against a sysplexWLB enabled DB2 server.
    This has been fixed. (133178)
    ____________________________________________________________
    Type-4 and Type-2 LUW Connectivities: This enables the driver
    to support enhanced database identifiers for SQL statements
    and transactions. (127390)
    ____________________________________________________________
    Type-4 and Type-2 LUW Connectivities: Executing a
    PreparedStatement which has XML parameters is noticeably
    slower in the DB2 for Linux, Unix, and Windows v9.5 driver
    than the v9.1 driver.  This slowdown is even more evident when
    the statement has multiple XML parameters.  This slowdown is
    no longer present. (128593)
    ____________________________________________________________
    Type-2 z/OS Connectivity: Possible Java OutOfMemoryError(OOM)
    when using PreparedStatement caching with large input
    parameters.  The JCC Type-2 z/OS input parameter related
    storage was only being freed when the PreparedStatement was
    closed.  The driver code has been changed to free the JCC
    Type-2 z/OS input parameter related storage when the
    PreparedStatement.clearParameters() API is called. (130083)
    ____________________________________________________________
    Type-2 z/OS Connectivity: Java Stored Procedure on z/OS
    running with cached default connection can leak T2zosLogWriter
    objects causing Java OutOfMemoryError(OOM).  This has been
    fixed. (129972)
    ____________________________________________________________
    Type-2 z/OS Connectivity: Native memory leak for lob/xml
    objects when progressive streaming is on implicitly or
    explicitly.  This has been fixed. (127443)
    ____________________________________________________________
    Type-2 z/OS Connectivity: Serviceability enhancement to
    improve the internal tracking of the driver's native heap
    storage usage. (133029)
    ____________________________________________________________
    Type-2 z/OS Connectivity: Possible SIGSEGV (ABENDS0C4) may
    occur during JVM termination when running JDK 1.6 SR5 (or
    higher) in a USS environment.  Due to a change in behavior in
    JDK provided "java" launcher code in JDK 1.6 SR5, the driver's
    DLL is now being deleted from storage prior to the complete
    termination of all of the Java pthreads.  This can result in
    a SIGSEGV (ABEND0C4) when LE attempts to invoke a driver DLL
    function and the DLL is no longer in storage.  The driver has
    been modified to account for the change in JDK behavior.
    (131921)
    ____________________________________________________________
    Type-2 z/OS Connectivity: rs.getString on a DateTime colunm
    got required character converter N/A for ZERO_PADDING/ISO.
    This has been fixed. (126043)
    ____________________________________________________________
    Type-2 z/OS Connectivity: java.lang.NullPointerException in
    T2zosStatement.readOpenQueryInternal will occur if we failed
    to malloc the native buffer in processDescribeOutput when
    executed via a Statement.executeQuery().  Now the driver will
    throw "Storage Allocation Error" exception right after malloc
    failure. (118668)
    ____________________________________________________________
    SQLJ and All Connectivities: Java compilation phase of the
    SQLJ Translator fails with the message "cannot resolve symbol"
    if the Java package name of the SQLJ program is identical to
    the Java class name.  This was due to incorrect code
    generation by the SQLJ Translator.  The SQLJ Translator must be
    invoked again after applying the APAR. (128079)
    ____________________________________________________________
    SQLJ and All Connectivities: Iterator's isClosed() method
    returned incorrect boolean value if the underlying JDBC
    ResultSet was closed implicitly by the driver or explicitly
    by the application.  This has been fixed and the isClosed()
    method will return the correct state of the underlying
    ResultSet. (135746)
    ____________________________________________________________
    

Problem conclusion

  • The items described in the APAR Problem
    Summary have been resolved as noted in
    the summary and included in this APAR.
    

Temporary fix

Comments

APAR Information

  • APAR number

    PK93123

  • Reported component name

    DB2 ODBC/JDBC/S

  • Reported component ID

    5740XYR02

  • Reported release

    812

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2009-08-04

  • Closed date

    2009-12-16

  • Last modified date

    2010-01-05

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

    UK52961 UK52962

Modules/Macros

  •    DSNAQJBA DSNAQJBB DSNAQJB1 DSNAQJB2 DSNAQJB3
    DSNAQJB4 DSNAQJB5 DSNAQJB6 DSNAQJB7 DSNAQJB8 DSNAQJC1 DSNAQJC2
    DSNAQJC3 DSNAQJC4 DSNAQJRM DSNAQJS1 DSNAQJS2 DSNAQ3BA DSNAQ3BB
    DSNAQ3B1 DSNAQ3B2 DSNAQ3B3 DSNAQ3B4 DSNAQ3B5 DSNAQ3B6 DSNAQ3B7
    DSNAQ3B8 DSNAQ3B9 DSNAQ3CA DSNAQ3CC DSNAQ3CE DSNAQ3CF DSNAQ3CM
    DSNAQ3C0 DSNAQ3C1 DSNAQ3C2 DSNAQ3C3 DSNAQ3C4 DSNAQ3C5 DSNAQ3C6
    DSNAQ3C7 DSNAQ3C8 DSNAQ3C9 DSNAQ3E1 DSNAQ3F1 DSNAQ3F2 DSNAQ3F3
    DSNAQ3F4 DSNAQ3L2 DSNAQ3L9 DSNAQ3RM DSNAQ3S1 DSNAQ3S2 DSNAQ6CC
    DSNAQ6CE DSNAQ6CF DSNAQ6CM DSNAQ6C0 DSNAQ6C1 DSNAQ6C2 DSNAQ6C3
    DSNAQ6C4 DSNAQ6C5 DSNAQ6C6 DSNAQ6C7 DSNAQ6C9
    

Fix information

  • Fixed component name

    DB2 ODBC/JDBC/S

  • Fixed component ID

    5740XYR02

Applicable component levels

  • R812 PSY UK52961

       UP09/12/18 P F912

  • R912 PSY UK52962

       UP09/12/18 P F912

Fix is available

  • Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.

[{"Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSEPEK","label":"Db2 for z\/OS"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"812"}]

Document Information

Modified date:
03 March 2021