Dear MySQL users,
MySQL Connector/J Version 8.0.12 is the second GA release of the 8.0 branch of MySQL Connector/J. It is suitable for use with MySQL Server versions 5.5, 5.6, 5.7, and 8.0. It supports the Java Database Connectivity
(JDBC) 4.2 API, and implements the X DevAPI.
This release includes the following new features and changes, also described in more detail on https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/news-8-0-12.html As always, we recommend that you check the “CHANGES” file in the download archive to be aware of changes in behavior that might affect your application.
To download MySQL Connector/J 8.0.12 GA, see the “Generally Available (GA)
Releases” tab at http://dev.mysql.com/downloads/connector/j/
Enjoy!
Changes in MySQL Connector/J 8.0.12 (2018-07-27, General Availability)
Version 8.0.12 is the latest General Availability release of the 8.0 series of MySQL
Connector/J. It is suitable for use with MySQL Server versions 8.0, 5.7, 5.6, and 5.5.
* Functionality Added or Changed
* Bugs Fixed
Functionality Added or Changed
* X DevAPI: The following changes have been made to the API:
+ Removed ModifyStatement.arrayDelete() and ModifyStatement.merge().
+ Renamed Colletion.find().limit().skip() to Colletion.find().limit().offset().
+ To simplify the class hierarchy and to have the class names reflect better
the classes' functions, the following changes have been made:
o The FindParams class has been renamed to FilterParams
o The AbstractFindParams class has been renamed to AbstractFilterParams
o The DocFindParams class has been renamed to DocFilterParams
o The TableFindParams class has been renamed to TableFilterParams
Notice that the methods in the original FilterParams class have been moved under
the new AbstractFilterParams class.
(Bug #28027459)
* X DevAPI: Connector/J now uses synchronous client sockets (java.net.Socket) by
default to communicate with MySQL servers for X Protocol connections. While
asynchronous sockets can still be used by setting the connection property
xdevapi.useAsyncProtocol=true, this is not recommended, as it might result in
performance degradation for Connector/J. (Bug #27522054)
* X DevAPI: Connector/J now gives provision for the use of a custom socket
factory for X Protocol connections to MySQL Servers using Unix domain sockets.
See Section 6.8, "Connecting Using Unix Domain Sockets" for details.
* Connector/J now retrieves the MySQL keyword list from the INFORMATION_SCHEMA.KEYWORDS
(http://dev.mysql.com/doc/refman/8.0/en/keywords-table.html) table on the MySQL
server when a connection session is established. The list can then be accessed by
calling DatabaseMetaData.getSQLKeywords().
* To simplify the code, the ReadableProperty and ModifiableProperty classes have
been consolidated into the RuntimeProperty class.
Bugs Fixed
* X DevAPI: When creating an X DevAPI session using a Properties map instead of a
connection string, referring to property keys like host, port, and protocol in
lowercase caused a NullPointerException. With the fix, both upper and lower
cases can now be used. (Bug#27652379)
* X DevAPI: When using the getConnection() method with the mysqlx: scheme in the
connection URL, Connector/J returned an ordinary JDBC connection instead of an
X-Protocol connection. (Bug #26089880)
* If wait_timeout was set on the server and the Connector/J had the connection
property interactiveClient=false, or if interactive_timeout was set on the
server and Connector/J had the connection property interactiveClient=true, a
connection is invalidated when it has idled for a longer time than the set timeout.
When such a timeout occurred, Connector/J threw a CJCommunicationsException,
without indicating it was a timeout. With this fix, the error message returned
explains the issue and suggests how to avoid it. (Bug#27977617, Bug #90753)
* When an application tried to connect to a non-MySQL database through some
JDBC driver and Connector/J happened to be on the class path also, Connector/J
threw a SQLNonTransientConnectionException, which prevented the application from
connecting to its database. With this fix, Connector/J returns null whenever a
connection string does not start with jdbc:mysql: or mysqlx:, so connections to
non-MySQL databases are not blocked. (Bug#26724154, Bug #87600)
* A wasNull() call on a ResultSet did not return the proper value unless
AbstractResultsetRow.getNull() or AbstractResultsetRow.getValueFromByte() was
called before. This caused data loss when Connector/J was used with frameworks like
Hibernate, which rely on wasNull() calls to properly retrieve data. With this fix,
wasNull() returns a correct value as long as some getter method has been called
before on the ResultSet. (Bug #25924324, Bug#85941)
On Behalf of Oracle/MySQL Release Engineering Team
Prashant Tekriwal