Version 8.0.17 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, and 5.6. It supports the Java Database Connectivity (JDBC) 4.2 API, and implements the X DevAPI.
-
X DevAPI: The following methods have been deprecated:
Collection.find().where()
Collection.modify().where()
Collection.remove().where()
(WL #13009)
X DevAPI: Two new operators for JSON objects and arrays,
OVERLAPS
andNOT OVERLAPS
, are now supported. (WL #12726)X DevAPI: Indexing for array fields is now supported. See Indexing Array Fields in the X DevAPI User Guide for details. (WL #12247)
The
README
andLICENSE
files are now included inside the Connector/J JAR archive delivered in the platform-independent tarballs and zip files. (Bug #29591275)A number of private parameters of
ProfilerEvents
(for example,hostname
) had no getters for accessing them from outside of the class instance. Getter methods have now been added for all the parameters of the class. (Bug #20010454, Bug #74690)-
A new connection property,
databaseTerm
, sets which of the two terms is used in an application to refer to a database. The property takes one of the two valuesCATALOG
orSCHEMA
and uses it to determine whichConnection
methods can be used to set/get the current database, which arguments can be used within the variousDatabaseMetaData
methods to filter results, and which fields in theResultSet
returned byDatabaseMetaData
methods contain the database identification information. See the entry fordatabaseTerm
in Configuration Properties for details.Also, the connection property
nullCatalogMeansCurrent
has been renamed tonullDatabaseMeansCurrent
. The old name remains an alias for the connection property.Thanks to Harald Aamot for contributing to the patch. (Bug #11891000, Bug #27356869, Bug #89133)
A new
CONTRIBUTING
file has been added to the Connector/J repository on GitHub, which provides guidelines for code contribution and bug reporting. (WL #12942)The MySQL Connector/J X DevAPI Reference can now be generated from the Connector/J source code as an Ant target,
xdevapi-docs
. (WL #13210)Added support for host names that are longer than 60 characters (up to 255 characters), as they are now supported by MySQL Server 8.0.17. (WL #13125)
Added support for the
utf8mb4_0900_bin
collation, which is now supported by MySQL Server 8.0.17. (WL #13124)-
A cached server-side prepared statement can no longer be effectively closed by calling
Statement.close()
twice. To close and de-cache the statement, do one of the following:Close the connection (assuming the connection is tracking all open resources).
Use the implementation-specific method
JdbcPreparedStatement.realClose().
Set the statement as non-poolable by calling the method
Statement.setPoolable(false)
before or after closing it.
(WL #11101)
X DevAPI: The
IN
operator in X DevAPI expressions, when followed by a square bracket ([
), got mapped onto the wrong operation in X Protocol. (Bug #29821029)When using a replication connection, retrieving data from
BlobFromLocator
resulted in aClassCastException
. It was due to some wrong and unnecessary casting, which has been removed by this fix. (Bug #29807741, Bug #95210)ResultSetMetaData.getTableName()
returned null when no applicable results could be returned for a column. However, the JDBC documentation specified an empty string to be returned in that case. This fix makes the method behave as documented. The same correction has been made forgetCatalogName()
andgetSchemaName()
. (Bug #29452669, Bug #94585)ResultSetImpl.getObject()
, when autoboxing a value of a primitive type retrieved from a column, returned a non-null object when the retrieved value was null. (Bug #29446100, Bug #94533)ResultSetImpl.getDouble()
was very inefficient because it calledFloatingPointBoundsEnforcer.createFromBigDecimal
, which needlessly recreatedBigDecimal
objects for the fixed minimum and maximum bounds. With this fix, the objectsBigDecimal.valueOf(min)
andBigDecimal.valueOf(max)
are cached after they are first created, thus avoiding their recreations. (Bug #29446059, Bug #94442)Enabling
logSlowQueries
resulted in many unnecessary calls ofLogUtils.findCallingClassAndMethod()
. With this fix,LogUtils.findCallingClassAndMethod()
is called only whenprofileSQL
is true and even in that case, the number of calls are reduced to a minimal to avoid the excessive stack trace data the function used to generate. Thanks to Florian Agsteiner for contributing to the fix. (Bug #29277648, Bug #94101, Bug #17640628, Bug #70677)Characters returned in a
ResultSet
were garbled when a server-sidePreparedStatement
was used, and the query involved concatenation of a number and a string with multi-byte characters. That was due to an issue with the number-to-string conversion involved, which has been corrected by this fix. (Bug #27453692)Calling
ProfilerEvent.pack()
resulted in anArrayIndexOutOfBoundsException
. It was due to a mishandling of data types, which has been corrected by this fix. (Bug #11750577, Bug #41172)