want to know if JDBC version 13, 14, 15 is STILL compatible with TD RDBMS 16.10?

Tools & Utilities
Highlighted
Enthusiast

want to know if JDBC version 13, 14, 15 is STILL compatible with TD RDBMS 16.10?

Hi there,

 

We are supporting users to upgrade their servers from existing TTU. Unfortunately, users can not upgrade existing TTU to TTU16 in a couple of months.

 

Could you please confirm if JDBC version 13, 14, 15 is STILL compatible with  TD RDBMS 16.10?

 

Thanks and Regards,

Vianh Cao

2 REPLIES
Teradata Employee

Re: want to know if JDBC version 13, 14, 15 is STILL compatible with TD RDBMS 16.10?

The Teradata JDBC Driver supported platform matrix is available here: http://developer.teradata.com/doc/connectivity/jdbc/reference/current/platformMatrix.html

 

The platform matrix shows which versions of the Teradata JDBC Driver support which Teradata Database releases.

 

Having said that, there is a serious incompatibility between old versions of the Teradata JDBC Driver and Teradata Database 16.0 and later. Please refer to Tech Alert NTA 4223 for the details.

 

Tech Alert ID:  NTA 4223

Short Description: Teradata JDBC interoperability with TD 16.0

Product Category: Software / Teradata Client Network 

Product: Application Programmers Interface (API)

Condition/Symptom:

Prior to JDBC RFC 180518, the Teradata JDBC Driver imposed a hardcoded limit of 5MB as the maximum size of messages received from the Teradata Database. This limit served as a sanity check to guard against denial-of-service attacks due to a corrupted message length in the receive message header. JDBC RFC 180518 removes the hardcoded maximum receive message size of 5MB.
 
Probable Cause:

Teradata Database 16.0 increases the maximum receive message size to 16MB, which is not compatible with old Teradata JDBC Driver releases that do not contain the JDBC RFC 180518 change. Any SQL requests that return more than 5MB of data will fail, due to the hardcoded maximum receive message size of 5MB.

If an application attempts to use an old Teradata JDBC Driver version not having the JDBC RFC 180518 in conjunction with Teradata Database 16.0 and dbscontrol internal field 294 word #6 set to TRUE, then the application may encounter exceptions similar to the following. The exceptions are characterized by error message text indicating "Bad response message header with invalid message length".

com.teradata.jdbc.jdbc_4.util.JDBCException: [Teradata JDBC Driver] [TeraJDBC 14.00.00.42] [Error 804] [SQLState 08S01] Socket communication failure for Packet receive Fri Mar 03 09:56:09 PST 2017 socket ... java.io.IOException: Bad response message header with invalid message length of 6402875 bytes
 Caused by: java.io.IOException: Bad response message header with invalid message length of 6402875 bytes

In addition to thrown exceptions, the old Teradata JDBC Driver versions may also print error messages to System.out similar to the following, with error message text indicating "Bad response message header with invalid message length".

2017-03-03.09:56:09.076 TERAJDBC4 ERROR [main] com.teradata.jdbc.jdk6.JDK6_SQL_Connection@86c347 Read message 1: Bad response message header with invalid message length of 6402875 bytes
 2017-03-03.09:56:09.107 TERAJDBC4 ERROR [main] com.teradata.jdbc.jdk6.JDK6_SQL_Connection@86c347 Read message 1 failed; closing socket due to: java.io.IOException: Bad response message header with invalid message length of 6402875 bytes
 2017-03-03.09:56:09.154 TERAJDBC4 ERROR [main] com.teradata.jdbc.jdk6.JDK6_SQL_Connection@86c347 Packet receive Fri Mar 03 09:56:09 PST 2017 socket ... java.io.IOException: Bad response message header with invalid message length of 6402875 bytes


 Teradata Database 16.0 introduces dbscontrol internal field 294, which is an array of 6 words. Word #6 governs the usage of large messages. The large message size incompatibility can occur when dbscontrol internal field 294 word #6 is set to TRUE.

 294.  1MBEnablingControls:
         1 - Enable1MBSpoolDBs         = TRUE
         2 - Enable1MBSpoolRows        = TRUE
         3 - Enable1MBPermDBs          = TRUE
         4 - Enable1MBPermAndRespRows  = TRUE
         5 - Enable1MBTJandWAL         = TRUE (Not Modifiable)
         6 - Enable16MBMessages        = TRUE
  
Solution:

The solution is to upgrade the Teradata JDBC Driver to a version that contains JDBC RFC 180518:
 Teradata JDBC Driver 14.00.00.43 or later
 Teradata JDBC Driver 14.10.00.43 or later
 Teradata JDBC Driver 15.00.00.34 or later
 Teradata JDBC Driver 15.10.00.15 or later
 Teradata JDBC Driver 16.00.00.05 or later

 

Enthusiast

Re: want to know if JDBC version 13, 14, 15 is STILL compatible with TD RDBMS 16.10?

Thanks very much for your information. It really helps us with our work.



Regards,

Vianh