MySQL Connector/J 8.0 Release Notes
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()
X DevAPI:
Two new operators for JSON objects and arrays,
OVERLAPS
and NOT OVERLAPS
,
are now supported.
X DevAPI: Indexing for array fields is now supported. See Indexing Array Fields in the X DevAPI User Guide for details.
The README
and LICENSE
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 values
CATALOG
or SCHEMA
and uses
it to determine which Connection
methods can
be used to set/get the current database, which arguments can be
used within the various DatabaseMetaData
methods to filter results, and which fields in the
ResultSet
returned by
DatabaseMetaData
methods contain the database
identification information. See the entry for
databaseTerm
in
Configuration Properties
for details.
Also, the connection property
nullCatalogMeansCurrent
has been renamed to
nullDatabaseMeansCurrent
. 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.
The MySQL Connector/J X DevAPI Reference can now be generated
from the Connector/J source code as an Ant target,
xdevapi-docs
.
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.
Added support for the utf8mb4_0900_bin
collation, which is now supported by MySQL Server 8.0.17.
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.
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 a
ClassCastException
. 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 for
getCatalogName()
and
getSchemaName()
.
(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 called
FloatingPointBoundsEnforcer.createFromBigDecimal
,
which needlessly recreated BigDecimal
objects
for the fixed minimum and maximum bounds. With this fix, the
objects BigDecimal.valueOf(min)
and
BigDecimal.valueOf(max)
are cached after they
are first created, thus avoiding their recreations.
(Bug #29446059, Bug #94442)
Enabling logSlowQueries
resulted in many
unnecessary calls of
LogUtils.findCallingClassAndMethod()
. With
this fix,
LogUtils.findCallingClassAndMethod()
is
called only when profileSQL
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-side PreparedStatement
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 an
ArrayIndexOutOfBoundsException
. It was due to
a mishandling of data types, which has been corrected by this
fix.
(Bug #11750577, Bug #41172)