MySQL Connector/J 5.1 Release Notes

2.14 Changes in MySQL Connector/J 5.1.36 (2015-07-02)

Version 5.1.36 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

  • The files in the Maven Central Repository for each Connector/J release have been reorganized and a source artifact (*-sources.jar) has been added, for release 5.1.21 and after. (Bug #20283655, Bug #75335)

Bugs Fixed

  • Results returned by DatabaseMetaData.getCatalogs() were not properly sorted by catalog name. (Bug #21215151)

  • A class cast exception occurred when Connector/J was executing a streaming prepared statement in a Fabric environment. (Bug #21184949, Bug #77217)

  • Connector/J did not use the character set specified with the connection property passwordCharacterEncoding for authentication. With this fix, the property is now honored. If it is not set, Connector/J uses the value of characterEncoding instead; if even that is not set, Conenctor/J defaults to UTF-8 for the password's encoding. (Bug #20825727)

  • A failover did not occur for a MySQL Fabric connection during the failure of a master server. It was because the state change of the Fabric connection group was not handled properly, which has been corrected by this fix. (Bug #20821888, Bug #75113)

  • When the getDate() and getTime() methods of ResultSet were called to retrieve values with fractional seconds, a bad format error occurred. With this fix, the fractional seconds are dropped before the retrieved values are converted into a Date or Time object. (Bug #20804635)

  • A StringIndexOutOfBoundsException occurred when getProcedureColumns() were trying to return ENUM or SET type procedures or functions that involved reserved words. That was caused by a problem in the parser for the functions' or procedures' CREATE statements, which this fix corrects. (Bug #20727196)

  • At every connection, Connector/J executed a SHOW VARIABLES WHERE statement over a multitude of variables, which consumed a lot of time and memory. To improve the efficiency of the code, this fix replaces the statement with the more efficient SELECT @@variable query and also implements some other related changes. (Bug #20408891, Bug #75592)

  • getProcedures(), getFunctions(), getProcedureColumns(), and getFunctionColumns() returned duplicate results when the connection parameter nullCatalogMeansCurrent was set to false. (Bug #19803348)

  • An UnsupportedEncodingException during handshake gave rise to a NullPointerException. With this fix, the NullPointerException is no longer thrown, and a proper error message is provided by Connector/J. (Bug #18758686, Bug #72630)

  • When using Connector/J with MySQL Fabric, the createGroup() method failed with a ClassCastException. (Bug #18719760, Bug #72546)

  • Using Connector/J to connect with non-null user name and password to a MySQL Fabric server that had authentication disabled resulted in a NullPointerException. (Bug #18425861, Bug #72077)

  • The change user functionality in Connector/J was dependent on Bug# 70865 of the MySQL server (for releases 5.5 and later, the server unnecessarily sends a plugin_request_packet for every COM_CHANGE_USER packet). That dependence made the com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource interface fail for server versions or forks that did not have the same bug. This fix removes that dependence and makes the interface function properly, whether the server suffers Bug# 70865 or not. (Bug #17810800, Bug #70927)

  • JDBC4MySQLPooledConnection keeps a list of statementEventListener instances named statementEventListeners, which is used as monitor lock whenever the fireStatementEvent() method is called. However, because the pooled connection's close() method set statementEventListener to be null, if a prepared statement was closed after its holding pooled connection had already been closed, the subsequent fireStatementEvent() call would run into a NullPointerException. This fix prevents the problem by having JDBC4MySQLPooledConnection initializing statementEventListeners properly and never setting it to null, thus allowing it to be used all the time as a monitor lock. (Bug #16444069, Bug #62452)