Release Notes for MariaDB Connector/J 3.4.1

Overview

MariaDB Connector/J is a lightweight JDBC driver (Type 4) for building applications on top of MariaDB database products with Java 8, Java 11, Java 17, and Java 21.

This release is compatible with JDBC 4.2.

MariaDB Connector/J 3.4.1 was released on 2024-07-17. This release is of General Availability (GA) maturity.

Notable Changes

Implementation of pinGlobalTxToPhysicalConnection for XA Connection

(CONJ-1189)

The new boolean option pinGlobalTxToPhysicalConnection, when enabled, ensures that an operation for a specific XID is routed to the same connection, to permit supporting XA START <xid> when XA END has been called. 

This prevent errors like:

XA resource 'xaDataSource': resume for XID 'XID: <some id>' raised -5: invalid arguments were given for the XA operation

Enhanced host description

(CONJ-685) (CONJ-686)

The host description for connecting to the server has been changed from either <host>[:<portnumber>] or address=(host=<host>)[(port=<portnumber>)][(type=(master|slave))] to a more detailed host description, permitting to set localsocket, or pipe, and to define a specific SSL mode depending on the host. New format:

address=(host=<host>|localSocket=<socket>|pipe=<namedpipe>)[(port=<portnumber>)][(type=(master|slave))][(sslMode=disable|trust|verify-ca|verify-full)]

Example:

jdbc:mariadb:sequential://address=(localSocket=/socket),address=(host=10.0.0.1)(port=3306)(sslMode=verify-full)/DB

This connection string now permits to use a local UNIX socket if available, and host 10.0.0.1 with SSL if the UNIX socket is not available.

A detailed host description option supersedes a global option description. The previous example can also be written in the following way, defining different SSL modes for both host options: 

jdbc:mariadb:sequential://address=(localSocket=/socket)(sslMode=disable),10.0.0.1:3306/DB?sslMode=verify-full

Adding databaseTerm alias

(CONJ-1190)

Option useCatalogTerm has an alias databaseTerm for MySQL connector compatibility

Issues Fixed

  • The validation of a statement of the cache for prepared statements is not taking the use of different schemas into account, which can result in unexpected behavior when the same statement is executed on different schemas (CONJ-1181)

  • DatabaseMetaData.getImportedKeys returns a different PK_NAME value than DatabaseMetaData.getExportedKeys when using a NON UNIQUE constraint (CONJ-1178)

  • Slow performance of function DatabaseMeta.getExportedKeys() (CONJ-1180)

  • Android app incompatibility, regex CANON_EQ flag is not supported on Android OS (CONJ-1185)

  • Database meta getSQLKeywords is listing all reserved keywords, not only the restricted keywords (CONJ-1188)

  • The Function metadata getImportedKeys is slow when a database has not been set (CONJ-1191)

  • The Function ResultSetMetaData.getColumnTypeName() returns type VARCHAR instead of type TINYTEXT for columns of type TINYTEXT (CONJ-1068)

  • Missing error mapping for errors XA_RBTIMEOUT, XA_RBTIMEOUT, and XA_RBDEADLOCK (CONJ-1182)