Release Notes for MariaDB Connector/J 3.1.4

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.1.4 was released on 2023-05-01. This release is of General Availability (GA) maturity.

Issues Fixed

  • When useBulkStmts=true is set and an error occurs during a batch operation, the connection state can become invalid. (CONJ-1071)

    • In previous releases, when a batched insert is separated into multiple queries before being sent to the server, the connector might not read the results of all queries if one of the queries fails with an error, which can cause the connector to associate the remaining results with the next statement executed.

    • Starting with this release, when useBulkStmts=true is set and an error occurs during a batch operation, Connector/J associates the results with the correct queries.

  • When the getBlob() method is called on a TEXT columnTEXT column, Connector/J throws an exception. (CONJ-1070)

    • In previous releases, Connector/J throws an exception with the following error message:

      Data type MEDIUMBLOB (not binary) cannot be decoded as Blob.
      
    • Starting with this release, Connector/J supports calling the getBlob() method on a TEXT columnTEXT column.

  • When the DECIMALDECIMAL, DOUBLEDOUBLE, and FLOATFLOAT data types have the UNSIGNED column attribute, the ResultSetMetaData.getColumnTypeName() method does not return the correct results. (CONJ-1067)

    • In previous releases, the UNSIGNED column attribute is omitted.

    • Starting with this release, the UNSIGNED column attribute is included.

  • When a TIMESTAMP columnTIMESTAMP column is a zero-date ('0000-00-00 00:00:00'), the ResultSet.wasNull() method always returns false. (CONJ-1065)

    • Starting with this release, the return value of the ResultSet.wasNull() method when a TIMESTAMP columnTIMESTAMP column is a zero-date ('0000-00-00 00:00:00') depends on how the zero-date value was retrieved:

      • If the zero-date value was retrieved with the ResultSet.getString(index) method, the next time the ResultSet.wasNull() method is called, it returns false.

      • If the zero-date value was retrieved with the ResultSet.getTimestamp(index) method, the next time the ResultSet.wasNull() method is called, it returns true.