Version 8.0.29 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 and 5.7. It supports the Java Database Connectivity (JDBC) 4.2 API, and implements the X DevAPI.
-
Historically, MySQL has used
utf8
as an alias forutf8mb3
. Since release 8.0.29,utf8mb3
has become a recognized (though deprecated) character set on its own for MySQL Server. Therefore, Connector/J has addedutf8mb3
to its character set mapping, and users are encouraged to update to Connector/J 8.0.29 to avoid potential issues when working with MySQL Server 8.0.29 or later. (Bug #33850155)References: See also: Bug #33635120.
A new connection property socksProxyRemoteDns has been added, which, when set to
true
, makes theSocksProxySocketFactory
execute its ownconnect()
implementation that passes the unresolvedInetSocketAddress
of a MySQL Server host to the created proxy socket, instead of having the address resolved locally. (Bug #77924, Bug #25710160)The code for prepared statements has been refactored to make the code simpler and the logic for binding more consistent between
ServerPreparedStatement
andClientPreparedStatement
. (WL #14750)Connector/J now supports Fast Identity Online (FIDO) Authentication. (WL #14834)
X DevAPI: If the connection property xdevapi.ssl-mode was set to
DISABLED
(or xdevapi.ssl-mode was not set, but the value was picked up from the sslMode setting), specifying some of the security properties caused Connector/J to throw an error. With this fix, even when encryption is turned off and irrelevant security properties are set, Connector/J does not throw an error. (WL #14835)DatabaseMetaData.getDefaultTransactionIsolation()
returned a wrong value. It now returns the correct value ofConnection.TRANSACTION_REPEATABLE_READ
. (Bug #33723611)Statement executions failed for replication connections when useCursorFetch was
true
anddefaultFetchSize
was greater than 0. (Bug #25701740)Prepared statements were parsed incorrectly sometimes when they contained comments marked by
/*
and*/
. (Bug #21978230)-
A connection did not maintain the correct autocommit state when it was used in a pool with
useLocalSessionState=true
. (Bug #106435, Bug #33850099)References: This issue is a regression of: Bug #33054827.
A spelling error in the error message for the buffer length being less than the expected payload length has been corrected. Thanks to Jianjian Song for contributing the fix. (Bug #106397, Bug #33893591)
When using client-side prepared statements, if the
VALUES
clause came after theON DUPLICATE KEY UPDATE
clause or it came at the end of the statement, aStringIndexOutOfBoundsException
was thrown. This patch refactors the query parser to fix the problem behind the issue, and also to improve the parser's performance. (Bug #106240, Bug #33781440)An unnecessary boxing has been removed from
findColumn()
in theResultSetImpl
class. Thanks to Pei Pei Ning for contributing this improvement. (Bug #106171, Bug #33757217)When decoding decimals, the constructor used for creating the
BigDecimal
object has been changed fromBigDecimal(String)
toBigDecimal(char[])
in order to save memory. Thanks to Chen Yi for contributing to this improvement. (Bug #106065, Bug #33726184)When inserting
BigDecimal
values into a database using rewritable server-side prepared statements with cursor-based fetching, the values suffered precision loss. (Bug #105915, Bug #33678490)When the Connector/J logger level was at
TRACE
, a null bind value for aPreparedStatement
resulted in aNullPointerException
when the logger tried to read the value. This patch added a null check to avoid the exception to be thrown under the situation. (Bug #104349, Bug #33563548)When the connection property rewriteBatchedStatements was set to
true
, inserting aBLOB
using a prepared statement andexecuteBatch()
resulted in aNullPointerException
. (Bug #85317, Bug #25672958)ResultSetMetaData
andDatabaseMetaData
returnedTypes.DATE
for aYEAR
table column even whenyearIsDateType=false
. With this fix,Types.SMALLINT
was returned correctly in the situation. (Bug #82084, Bug #23743938)A
PreparedStatement
could not be rewritten for batch insert if any table column involved contained "select" as a substring in the column name. (Bug #81468, Bug #23312764)When using server-side prepared statements and the connection property
profileSQL
was set to true, setting a parameter of typeLONGTEXT
using aStringReader()
resulted in ajava.io.NotSerializableException
. (Bug #62006, Bug #16714956)Data truncation occurred for
INOUT
type parameters of data typeBIT(1)
for stored procedures. (Bug #38954, Bug #11749415)