MySQL Blog Archive
For the latest blogs go to blogs.oracle.com/mysql
MySQL Connector/J 5.1.45 has been released

Dear MySQL Users,

MySQL Connector/J 5.1.45, a maintenance release of the production 5.1
branch has been released. Connector/J is the Type-IV pure-Java JDBC
driver for MySQL.

MySQL Connector Java is available in source and binary form from the
Connector/J download pages at
http://dev.mysql.com/downloads/connector/j/5.1.html
and mirror sites as well as Maven-2 repositories.

MySQL Connector Java (Commercial) is already available for download on the
My Oracle Support (MOS) website. This release will shortly be available on
eDelivery (OSDC).

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.

MySQL Connector/J 5.1.45 includes the following general bug fixes and
improvements, also available in more detail on
http://dev.mysql.com/doc/relnotes/connector-j/en/news-5-1-45.html

Changes in MySQL Connector/J 5.1.45 (2017-11-30)

Version 5.1.45 is a maintenance release of the production 5.1
branch. It is suitable for use with MySQL Server versions
5.5, 5.6, and 5.7. It supports the Java Database Connectivity
(JDBC) 4.2 API.

Functionality Added or Changed

* Character set mappings have been added for the following
collations:

+ utf8mb4_ja_0900_as_cs_ks

+ utf8mb4_0900_as_ci

+ utf8mb4_ru_0900_ai_ci

+ utf8mb4_ru_0900_as_cs
(Bug #26724085)

Bugs Fixed

* With the combination of the connection properties
useServerPrepStmts=true, useInformationSchema=true,
useCursorFetch=true, and defaultFetchSize=N, if a warning
was returned for a query during connection
initialization, a NullPointerException would result when
Connector/J tried to get the warning. That was because
the charsets were not yet initialized in the connection
at the time. This fix corrects the problem by preventing
cursors from being used when Connector/J fetches warnings
from the server. (Bug #27131768)

* When a communications exception was thrown by Connector/J
after a socket timeout event, because the current
transaction did not get rolled back automatically, if
autoReconnect=true, the next statement execution by
Connector/J might reuse the old server session and
continued with the previous transaction. This might
confuse the client application on the transaction status
of the statements it was handling. This fix corrects the
issue by forcibly closing the network resources after a
communication or IO exception, causing the server to
rollback the transaction. (Bug #27047676, Bug #88232)

* Normally, when the socketTimeout option has been set and
a socket timeout occurs on the client side, the server
may continue working and returning query results. At the
next query executed after the timeout, Connector/J first
clears the socket input stream and then sends a ping
request to the server.
However, an error occurred if the autoReconnect option
was set to true and, after reconnection, a new query was
executed by Connector/J, and the results from the
previous queries arrived before Connector/J sent its ping
request to the server, in which case the old packages
might be mistaken as results for the new query. This fix
corrects the issue by forcibly closing the network
resources after a communication or IO exception. The next
statement execution recreates the IO stream if
autoReconnect=true; otherwise, the connection stays
closed. (Bug #27040063, Bug #88242)

* High garbage collection pressure was observed when there
were a lot of queries performed using server-side
prepared statements. This patch reduces the pressure by
optimizing the generation process of the cache keys for
the prepared statements. Thanks to Johnathan Crawford for
contributing the patch. (Bug #26939943, Bug #88021)

* A number of regression tests for former bug fixes failed
when they were run against MySQL Server 8.0.3, because
binary logging has been enabled by default on the server.
The tests have now been fixed. (Bug #26794652)

* A number of regression tests for former bug fixes failed
when they were run against MySQL Server 8.0.3 because of
the name changes of some of the INFORMATION_SCHEMA tables
on the server. The tests have now been fixed. (Bug
#26794602)

* When server-side prepared statements and cursor-based
result sets were used, exceptions were thrown when
applications made calls to get output parameters of
INTEGER or BIGINT type from a result set. (Bug #26771560,
Bug #87704)

On Behalf of the MySQL/ORACLE RE Team,
-Sreedhar S