Dear MySQL users,
MySQL Connector/J 8.0.24 is the latest General Availability release of the
MySQL Connector/J 8.0 series. It is suitable for use with MySQL Server
versions 8.0 and 5.7. It supports the Java Database Connectivity (JDBC)
4.2 API, and implements the X DevAPI.
This release includes the following new features and changes, also described in
more detail on
https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/news-8-0-24.html
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.
To download MySQL Connector/J 8.0.24 GA, see the “General Availability (GA)
Releases” tab at http://dev.mysql.com/downloads/connector/j/
Enjoy!
Changes in MySQL Connector/J 8.0.24 (2021-04-20, General Availability)
* Functionality Added or Changed
* Bugs Fixed
Functionality Added or Changed
* X DevAPI: For X Protocol connections, the Server now
provides three new kinds of notifications for
disconnections:
+ Server shutdown: This is due to a server shutdown.
It causes Connector/J to terminate all active and
idle sessions connected to the server in the
connection pool with the error message “Server
shutdown in progress”.
+ Connection idle: This is due to the connection
idling for longer than the relevant timeout
settings. It causes Connector/J to close the current
connection with the error message “IO Read error:
read_timeout exceeded”.
+ Connection killed: This is due to the connection
being killed by another client session. It causes
Connector/J to close the connection in the current
session with the error message “Session was killed”.
* A new connection property, scrollTolerantForwardOnly, has
been introduced, which preserved the legacy behavior of
Connector/J 8.0.17 and earlier by tolerating backward and
absolute cursor movements on result sets of type
ResultSet.TYPE_FORWARD_ONLY. This is for maintaining
compatibility with legacy code that took advantage of the
old behavior. See the description for
scrollTolerantForwardOnly for details. (Bug #31747910)
References: See also: Bug #30474158.
* Connector/J now supports “userless” authentication for
JDBC connections: When the user for the connection is
unspecified, Connector/J uses the name of the OS user who
runs the application for authentication with the MySQL
server. See Connector/J: Obtaining a connection from the
DriverManager
(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-usagenotes-connect-drivermanager.html#connector-j-examples-connection-drivermanager)
for more details.
* Starting from this release, whenever an authentication
plugin is explicitly set for the connection property
defaultAuthenticationPlugin
(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-connp-props-connection.html#cj-conn-prop_defaultAuthenticationPlugin),
the specified plugin takes precedence over
the server’s default when Connector/J negotiates a plugin
with the server. There is no behavioral change for
Connector/J if no value is explicitly set for the
property, in which case the server’s choice of default
plugin takes precedence over the implicit default of
mysql_native_password for Connector/J. See the
description of defaultAuthenticationPlugin
(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-connp-props-connection.html#cj-conn-prop_defaultAuthenticationPlugin)
for details.
* In the past, for JDBC connections, when the server closed
a session because a client was idling beyond the period
specified by the server’s wait_timeout system variable,
Connector/J returned a generic IO error. Connector/J now
relays a clearer error message from the server.
Bugs Fixed
* X DevAPI: Concurrently getting and closing multiple
sessions from the same X DevAPI Client object might
result in a ConcurrentModificationException thrown by
Connector/J at the closing of a session. (Bug #31699993)
* X DevAPI: Under some specific conditions, when using
Deflate as the algorithm for compression of X Protocol
connections, Connector/J threw an
AssertionFailedException (ASSERTION FAILED: Unknown
message type: 57). It was because when a compressed
packet was just a few bytes longer than the size of some
internal buffer used by a Java InflaterInputStream, the
leftover bytes from the inflate procedure were being
discarded by Connector/J, causing inflation of subsequent packets
to fail. With this fix, no data bytes are discarded, and
the inflation works as expected. (Bug #31510398, Bug
#99708)
* When a SecurityManager was in place, connections to a
MySQL Server could not be established unless the client
had been properly configured to use SASL-based LDAP
authentication. It was because the
AuthenticationLdapSaslClientPlugin in Connector/J
requires a special permission to load the provider
MySQLScramShaSasl when a SecurityManager is in place; but
since the provider was loaded by a static initializer
during initialization for the plugin, the lack of the
permission was causing an error and then failures for all
connections, even if the plugin was never used or
enabled. This fix changes how the provider is loaded: the
loading now happens only at the plugin instance’s
initialization and the initialization was deferred to the
time when the plugin is actually needed, so that
connections that do not use SASL-based LDAP
authentication are unaffected by security settings
regarding the plugin. (Bug #32526663, Bug #102188)
* When using Connector/J 8.0.23,
ResultSetMetaData.getColumnClassName() did not return the
correct class name corresponding to DATETIME columns.
(Bug #32405590, Bug #102321)
* Creation of an UpdatableResultSet failed with a
NullPointerException when it was generated by querying a
view with a derived value. (Bug #32338451, Bug #102131)
* Using getLong() on the CHAR_OCTET_LENGTH column of the
ResultSet for DatabaseMetaData.getProcedureColumns() (or
getFunctionColumns()) resulted in a NumberOutOfRange
exception when the column’s value exceeded 2^32 − 1. With
this patch, the value of 2^32 − 1 is returned in the
situation. (Bug #32329915, Bug #102076)
* Connections to a server could not be established when the
user supplied an implementation of the
ConnectionPropertiesTransform interface using the
connection property propertiesTransform. This was because
Connector/J called PropertyKey.PORT.getKeyName() instead
of PropertyKey.HOST.getKeyName() for getting the host
name, and that has been corrected by this fix. (Bug
#32151143, Bug #101596)
* A NullPointerException was returned when a statement that
could not be used as a ServerPreparedStatement was
executed and the connection property useUsageAdvisor
(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-connp-props-debugging-profiling.html#cj-conn-prop_useUsageAdvisor)
was set to true. With this fix, a SQLException
is returned instead. (Bug #32141210, Bug #101558)
* Using the setSessionMaxRows() method on a closed
connection resulted in a NullPointerException. With this
fix, a SQLNonTransientConnectionException is thrown
instead, with the error message “No operations allowed
after connection closed.” (Bug #22508715)
* Using the setObject() method for a target type of
Types.TIME resulted in a SQLException when the value to
be set had a fractional part, or when the value did not
fit any pattern described in Date and Time Literals
(https://dev.mysql.com/doc/refman/8.0/en/date-and-time-literals.html).
This patch introduced a new logic that can
handle fractional parts; also, it performs the conversion
according to the patterns of the literals and, when
needed, the target data type. (Bug #20391832)
Enjoy and thanks for the support!
On Behalf of the MySQL Engineering Team,
Nawaz Nazeer Ahamed
MySQL Connector/J 8.0.24 has been released
Search
Categories
- Backup (3)
- Character Sets (16)
- Connectors / Languages (14)
- Data Dictionary (11)
- Document Store, JSON (32)
- GIS (15)
- High Availability / Replication (182)
- InnoDB (57)
- Miscellaneous (84)
- Monitoring (18)
- NDB (73)
- Optimizer (56)
- Performance (5)
- Router (4)
- Security (62)
- Shell (30)
- Thread Pool (1)
- Upgrading (15)
- Windows / .NET (21)
- Workbench (46)