Documentation Home
MySQL Connector/J Release Notes
Related Documentation Download these Release Notes
PDF (US Ltr) - 400.5Kb
PDF (A4) - 400.9Kb


MySQL Connector/J Release Notes  /  Changes in MySQL Connector/J Version 9.x  /  Changes in MySQL Connector/J 9.6.0 (2026-01-21, General Availability)

Changes in MySQL Connector/J 9.6.0 (2026-01-21, General Availability)

Note

These release notes were created with the assistance of MySQL HeatWave GenAI.

Version 9.6.0 is a new GA release of MySQL Connector/J. MySQL Connector/J 9.6.0 supersedes 9.5 and is recommended for use on production systems. This release can be used against MySQL Server version 8.0 and later. It supports the Java Database Connectivity (JDBC) 4.2 API, and implements the X DevAPI.

Bugs Fixed

  • Using a multihost JDBC URL with the property value, zeroDateTimeBehavior=convertToNull, resulted in an exception.

    As of this release, legacy values are normalized in both host and general properties in ConnectionUrl.

    Our thanks to Wu Zhengyi and the team at AliBaba for the contribution. (Bug #119271, Bug #38599496)

  • Queries containing the string INTO within valid tokens, such as table or column names, were not handled correctly. Errors were returned similar to the following:

            java.sql.SQLException: Statement.executeQuery() cannot issue
            statements that do not produce result sets

    Our thanks to Milo van der Zee for the contribution. (Bug #119245, Bug #38599240)

  • Batch statement handling was inconsistent. Rewritten batch queries allowed statements which produced results wets, while non-rewritten batches did not. As of this release, rewritten batch statements now check the result type of each query and throw an exception if any result set producing query is included. (Bug #118234, Bug #37975837)

  • Setting the value of Statement.setMaxRows() affected the value of Statement.setFetchSize() and vice versa.

    As of this release, the two methods are independent of each other. (Bug #118002, Bug #37843004)

  • The login timeout set with DriverManager.setLoginTimeout() incorrectly affected JdbcConnection.changeUser() calls. The handling of login timeouts was refactored to apply only during initial authentication, not when changing users on an existing connection. Post-authentication code was moved higher in the call stack to ensure timeouts are only considered during the initial login, addressing the improper timeout behavior changeUser() calls.

    Our thanks to Kazuhisa Kawashima for the contribution. (Bug #113413, Bug #36107426)

  • Statement.getUpdateCount() returned differing values depending on whether rewriteBatchedStatements was enabled. (Bug #113336, Bug #36080226)

  • Connector/J returned a result set of generated keys containing only 0 values after a batch of queries was rewritten into a multi-query, even though no keys were generated. Connector/J now checks the value of the last generated key for each executed query and excludes keys with a value of zero from the result set. As a result, Statement.getGeneratedKeys() now accurately returns an empty result set when no keys are generated, including for multi-query batch executions. (Bug #113130, Bug #36043125)