MySQL Connector/J 5.1 Release Notes
Version 5.1.47 is a maintenance release of the production 5.1 branch. 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.
The value UTF-8
for the connection property
characterEncoding
now maps to the
utf8mb4
character set on the server and, for
MySQL Server 5.5.2 and later,
characterEncoding=UTF-8
can now be used to
set the connection character set to utf8mb4
even if
character_set_server
has been set to something else on the server. (Before this
change, the server must have
character_set_server=utf8mb4
for Connector/J
to use that character set.)
Also, if the connection property
connectionCollation
is also set and is
incompatible with the value of
characterEncoding
,
characterEncoding
will be overridden with the
encoding corresponding to
connectionCollation
.
See Using Character Sets and Unicode for
details, including how to use the utf8mb3
character set now for connection.
(Bug #23227334, Bug #81196)
Setting rewriteBatchedStatements=true
and
useLocalTransactionState=true
caused
transactions to be uncommitted for batched
UPDATE
and DELETE
statements. It was due to the intermediate queries for enabling
multiquery support on the server resetting the local transaction
state as a side effect. With this fix, the local transaction
state is preserved when the intermediate queries are executed.
(Bug #27658489, Bug #89948)
Rewriting prepared INSERT
statements in a
multiquery batch failed with a
BatchUpdateException
when the statements did
not contain place holders. This was due a faulty mechanism for
query rewriting, which has been corrected by this fix.
(Bug #25501750, Bug #84813)
When using batched prepared statements with multiple queries per statement, queries rewriting was incorrect, resulting in the wrong queries being sent to the server. (Bug #23098159, Bug #81063)
ResultSet.updateRow()
failed when the
character set used by a column in the
ResultSet
did not match that of the
connection's encoding. With this fix, values for the affected
columns are first converted to String
before
the update, so that the character set difference is properly
handled.
(Bug #22847443, Bug #80532)
Record updates failed for a scrollable and updatable
PreparedStatement
when the
WHERE
clause for the updater or refresher
contained fractional timestamp values and the connection
property sendFractionalSeconds
was set to
false
. It was because in the situation,
Connector/J did not perform the proper adjustments of the
fractional parts in the WHERE
clause values
according to the length of the field’s fractional part as
defined in the database. This fix makes Connector/J perform the
proper adjustment to the fractional part, so that the
WHERE
clause value can be properly compared
to the value fetched from the database.
Moreover, useJDBCCompliantTimezoneShift()
,
useGmtMillisForDatetimes()
, and
useSSPSCompatibleTimezoneShift()
were applied
to the WHERE clause values while they should not be, and this
fix removes their applications.
(Bug #22305979)
When a Java Date
value was bound to a
PreparedStatement
parameter, attempts to
format the value by a proleptic
GregorianCalendar
failed to make the dates
proleptic, so that dates before the Julian-Gregorian cutover
(October 15, 1582) were stored wrongly. With this fix, a
proleptic calendar is properly used if supplied to the
setDate()
method.
Note that when trying to set or retrieve dates before the
Julian-Gregorian cutover with
PreparedSatement
methods, a proleptic
GregorianCalendar
should always be explicitly
supplied to the setDate()
and
getDate()
method. For details, see
Known Issues and Limitations.
(Bug #18749544, Bug #72609)