Version 8.0.14 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. It supports the
Java Database Connectivity (JDBC) 4.2 API, and implements the
X DevAPI.

Functionality Added or Changed

Important Change:
For MySQL Server 8.0.14 and later, 5.7.25 and later, 5.6.43 and
later, and 5.5.63 and later, minimal permissions on named pipes
are granted to clients that use them to connect to the server.
Connector/J, however, can only use named pipes when granted full
access on them. As a workaround, the MySQL Server that
Connector/J wants to connect to must be started with the system
variable
named_pipe_full_access_group;
see the description for the system variable for more details.
(Bug #28971500)

X DevAPI:getDefaultSchema() now returns
null when no default schema has been set for
the Session.

Connector/J now has a new property for building from source,
com.mysql.cj.build.verbose, which controls
the verbosity of the build process' output. Its default value is
false, which makes the output considerably shorter comparing
with earlier versions of Connector/J.
(Bug #28970166)

The method ResultSet.getBoolean() now returns
FALSE when the designated column is of data
type CHAR or VARCHAR and
contains an “N” or “n”. This makes
Connector/J 8.0 behaves like Connector/J 5.1 when it comes to
converting strings to booleans.
(Bug #28706219, Bug #92574)

Connector/J is now capable of reading and, if needed, ignoring
any initial notice packets sent by X Plugin before an
X Protocol connection is established.

Bugs Fixed

X DevAPI:
Connector/J returned a NullPointerException
when an application tried to establish an XProtocol connection
using a Windows named pipe, which is not supported. With this
fix, an XProtoclException is returned
instead.

This fix also makes sure that instead of a
NullPointerException, a proper exception is
thrown when an application tries to establish a Classic MySQL
Protocol connection with a named pipe, but the named pipe is not
specified at connection or it cannot be found on the specified
path.
(Bug #28606708)

X DevAPI:
Adding an empty document with executeAsync()
resulted in an ERROR 5013 (Missing
row data for Insert). With this fix, no error or
warning is returned in the case.
(Bug #23045642)

Collection.count() returned a wrong error
message when the collection did not exist.
(Bug #28924137)

The source code of Connector/J contains non-ASCII characters,
which might cause encoding issues during compilation if the
system did not also use a UTF-8 locale. With this fix, the build
script now handles non-ASCII characters well regardless of the
system locale.
(Bug #28894344)

A memory leak occurred if Connector/J was loaded via the
bootstrap class path instead of the main application classpath.
It was because
AbandonedConnectionCleanupThread failed to
initialize its internal thread in that case, so that references
for closed connections were not cleaned up, and their number
kept growing. This fix repairs the clean up process for closed
connections and also makes the process thread safe.
(Bug #28747636, Bug #92508)

clearInputStream() returned a
NullPointerException when the
mysqlSocket, mysqlInput,
or mysqlOutput object it tried to retrieve
was null. With this fix, an IOExcpetion is
thrown instead in the situation. Thanks to Henning
Schmiedehausen for contributing to the fix.
(Bug #28731795, Bug #92625)

Updating a result set returned by a server-side prepared
statement with SELECT ... FOR
UPDATE resulted in an SQLException.
(Bug #28692243, Bug #92536)

When the connection property
zeroDateTimeBehavior was set to
CONVERT_TO_NULL, Connector/J converted a
TIME type value of
00:00:00 to null. With
this fix, it returns a java.sql.Time instance
of zero hours, minutes, and seconds, as expected.
(Bug #28101003, Bug #91065)

When using server-side prepared statements and working with a
table with multicolumn primary key, an
updateRow() call failed with a
NullPointerException or a
SQLException.
(Bug #25650514)

When using server-side prepared statements, a
refreshRow() call after an
updateRow() call failed with a
SQLException.
(Bug #25650482)

changeUser() failed to change or
reauthenticate a user when all of the following were true: (a)
connection to the server was by SSL; (b) the
caching_sha2 or
sha256_password authentication plugin was
used for the user; and (c) the user password contained Unicode
characters.
(Bug #25642226)