A fix is available
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
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