MySQL Connector/J 5.1 Release Notes

2.18 Changes in MySQL Connector/J 5.1.32 (2014-08-11)

Version 5.1.32 is a maintenance release of the production 5.1 branch. It is suitable for use with MySQL Server versions 5.5, and 5.6.

Functionality Added or Changed

  • Connector/J used to always check every SQL statement in a server-side prepared statement to see whether it contained the ON DUPLICATE KEY UPDATE clause; but because the clause is only used with INSERT statements, the checks are unnecessary for other SQL statements while they reduce the performance of Connector/J. A new, boolean connection property avoidCheckOnDuplicateKeyUpdateInSQL has been added, by which the checks for the ON DUPLICATE KEY UPDATE clause can be disabled. (Bug #18232840, Bug #71672)

  • Connector/J now supports Fabric 1.5. Older versions of Fabric are no longer supported.

Bugs Fixed

  • Preparing a call to a stored procedure with Fabric caused a null pointer exception to be thrown. (Bug #19034681, Bug #73070)

  • A bug in the Linux kernel version 3.6 and earlier caused the MysqlIO.clearInputStream() method to enter an endless loop. This fix changes the way the looping condition is evaluated, in order to avoid the problem. (Bug #19022745, Bug #73053)

  • Connector/J returned the incorrect return code 0 for a thrown exception when the failure happened in the context of a global XA transaction. With this fix, Connector/J now wraps any unexpected exception in an XAException in that case and returns the error code XAER_RMFAIL. (Bug #18970520, Bug #72890)

  • Calling the changeUser method to switch to a user created using the sha256_password plugin would result in a null pointer exception. This was due to the fact that the fromServer buffer was unavailable when changeUser called the sha256_password plugin, and this fix makes the plugin accommodate to that. (Bug #18869381)

  • The test testSha256PasswordPlugin failed when executed against a commercial version of the MySQL server. (Bug #18852682)

  • Connecting to a user on the server created using the sha256_password plugin failed when the password specified by the client was an empty string (or when no password was specified). This fix makes Connector/J allow an empty password in that case, sending it to the server without applying RSA encryption on it. (Bug #18852587)

  • Trying to use any character sets other than UTF-8 for communications between client programs and the MySQL server caused Connector/J to perform extra queries after the initial connection, resulting in higher latency and overhead for the connection. To prevent extra queries, this fix eliminates the mechanism of setting the character set to values other than utf-8 by issuing a SET NAMES statement to the server, and allows the use of the connection property characterEncoding to set the character set value in Connector/J's response packet during handshake. (Bug #18836319, Bug #72712)

  • Connector/J failed the test ConnectionRegressionTest.testBug7607() when Java 8 was used, due to the new static character set mappings in Java 8. The bug no longer exits after a refactoring of the character set code for Connector/J 5.1.32. (Bug #18809129)

  • A null pointer exception was thrown in isInterfaceJdbc() sometimes when load balancing was used and the application involved runtime instrumentations. (Bug #18691866, Bug #72502)

  • The keys generated by INSERT statements using the ON DUPLICATE KEY UPDATE clause were incorrect when the clause ON DUPLICATE KEY UPDATE was not written exactly as so (for example, when spaces or comments were inserted in between the words). (Bug #18344403, Bug #71923)

  • XA connections failed with a ClassCastException for a load-balanced configuration with multiple hosts. This was because some XA-related classes used com.mysql.jdbc.ConnectionImpl in method parameters during calls. This fix makes the classes use com.mysql.jdbc.Connection instead in those cases. (Bug #16722757, Bug #62577)

  • The Ant script for building Connector/J from source failed to check the availability of javac and rt.jar from JDK 1.6 before compilation. That caused compilation to fail when the two files weren't available. This fix corrects the step in the build script that checks for those files before compilation. (Bug #11748301, Bug #35829)