Release Notes for MariaDB Connector/J 3.0.9

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, and Java 17.

This release is compatible with JDBC 4.2.

MariaDB Connector/J 3.0.9 was released on 2022-11-08. This release is of General Availability (GA) maturity.

Issues Fixed

  • When GSSAPI authentication occurs on Windows using WAFFLE, an error is raised. (CONJ-1021)

    • In previous releases, the following error was raised:

      java.sql.SQLNonTransientConnectionException: (conn=CONNECTION_ID) Could not connect to HOST:PORT : Connection reset
      
    • Starting with this release, when GSSAPI authentication occurs on Windows using WAFFLE, an error is not raised.

  • When the DatabaseMetaData.getImportedKeys() method is called, the result-set might not have the real key name in the PK_NAME column. (CONJ-1019)

    • In previous releases, the PK_NAME column was always null.

    • Starting with this release, the SHOW CREATE TABLE statement is used to obtain key names, and the PK_NAME column is set to the real name of the primary key.

  • When the PreparedStatement.setNull() method is called as part of a batch operation, the operation is split into multiple operations instead of being batched. (CONJ-1016)

  • When a stored procedure is called with an INOUT parameter, if the parameter's value is set before registering the parameter as an output parameter using the CallableStatement.registerOutParameter() method, the parameter is sent to the server as NULL. (CONJ-1012)

    • For example, in previous releases, the following code would cause parameter 1 to be sent as NULL to the server:

      cstmt = connection.prepareCall(sql);
      cstmt.setLong(1, 42L);
      cstmt.registerOutParameter(1, Types.NUMERIC);
      cstmt.executeQuery();
      
    • In previous releases, this issue could be avoided by calling the CallableStatement.registerOutParameter() method before setting the parameter's value, such as in the following code:

      cstmt = connection.prepareCall(sql);
      cstmt.registerOutParameter(1, Types.NUMERIC);
      cstmt.setLong(1, 42L);
      cstmt.executeQuery();
      
    • Starting with this release, the order of method calls does not matter.

  • When the PreparedStatement.setTimestamp() method is called called by multiple threads in parallel with a Calendar object provided as the third parameter, a race condition can cause timestamps to be incorrect. (CONJ-1017)

    • Starting with this release, the Calendar object is used in a synchronized block, so the race condition no longer occurs.

Upgrade

MariaDB Connector/J 3.0 has been superseded by MariaDB Connector/J 3.3, which is fully compatible with MariaDB Connector/J 3.0. For upgrade instructions: