Version 8.0.33 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.
The JAR library for Connector/J has been renamed to mysql-connector-j.jar since release 8.0.31. Since then, upgrading Connector/J from 8.0.30 or earlier using RPM or DEB packages would change the name of the original .jar file, causing some applications that depend on it to fail. With this fix, RPM and DEB packages for Connector/J create a symbolic link to make the old name
/usr/share/java/mysql-connector-java.jar
point to the new name/usr/share/java/mysql-connector-j.jar
. (For the commercial versions, the symbolic link mentioned has-commercial
in it.) (Bug #35018216)Connector/J now supports OCI authentication using an ephemeral key pair. A new connection property,
ociConfigProfile
, has been introduced for specifying the configuration profile (defined in the OCI configuration file) to be used for authentication. IfociConfigProfile
is not specified, theDEFAULT
profile is used. See Token-based Authentication for the CLI for more details. (WL #15490)
RPM packages for Connector/J 8.0.31 and 8.0.32 failed to upgrade earlier versions of Connector/J. This was due to misconfigurations of the RPM packages, which has been corrected by this fix. (Bug #35110706)
Pluggable custom classes provided to Connector/J were initialized even when they were not actually usable. With this fix, these classes are validated against the interface they implement before their static initialization. (Bug #34918989)
For Connector/J 8.0.29 or later, client-side prepared statements failed with the error "Incorrect string value" when
setCharacterStream()
was used, if the JVM's character encoding did not match the target column's character set. It was because, in that case, the character encoding of the JVM was used when sending character streams to the server, which was unable to decode them as they were expected to be encoded with the column's character set. With this fix, the character set specified by either the connection property clobCharacterEncoding or characterEncoding is used instead, for both client-side and server-side prepared statements, which is the expected behavior. (Bug #34558945)-
When connecting to MySQL Server 5.7 and earlier with Connector/J 8.0.32, Connector/J sometimes hung after the prepare phase of a server-side prepared statement. (Bug #109864, Bug #35034666)
References: This issue is a regression of: Bug #33968169.
Results returned by the
getPrimaryKeys()
method of theDatabaseMetadata
interface were not sorted byCOLUMN_NAME
as required by the JDBC specification. (Bug #109808, Bug #35021038)Results returned by the
getTypeInfo()
method of theDatabaseMetadata
interface were not sorted byDATA_TYPE
as required by the JDBC specification. (Bug #109807, Bug #35021014)Rewriting of batched statements failed when a closing parenthesis was found within a
VALUES
clause. It was becauseQueryInfo
failed to parse the prepared statement properly in that case. With this fix, the parser ofVALUES
clauses is improved, so that Connector/J is now able to recognize rewritability of statements that contain function calls or multipleVALUES
lists, and it also handles well the cases when the string "value" is part of a table name, a column name, or a keyword. (Bug #109377, Bug #34900156, Bug #107577, Bug #34325361)Before executing a query with
Statement.executeQuery(query)
, Connector/J checks if the query is going to produce results and rejects it if it cannot. The check wrongly rejected queries that had aWITH
clause in which there was no space after the comma between two common table expressions. (Bug #109243, Bug #34852047)When the connection property useLocalTransactionState was set to true, after a number of insert statements were executed and the last one hit a unique constraint check, the transaction could not be rolled back. It was because Connector/J lost track of the transaction statuses of the statements in the case, and this patch corrects the problem. (Bug #109013, Bug #34772608)
When both the connection properties useLocalTransactionState and rewriteBatchedStatements were set to true, prepared statements could not be committed. It was because Connector/J lost track of the transaction statuses of the statements created internally to run the rewritten queries, and this patch corrects the problem. (Bug #108643, Bug #34652568)
When executing a
LOAD DATA LOCAL INFILE
statement, the file could not be loaded if a relative path of it was used and the path was not relative to the directory in which the JVM was started. This patch fixes the behavior by resolving the relative path using the Java system propertyuser.dir
, which was ignored before in the process. (Bug #77368, Bug #21321849)