This is a read-only copy of the MariaDB Knowledgebase generated on 2025-02-22. For the latest, interactive version please visit https://mariadb.com/kb/.

MariaDB Connector/R2DBC 1.1.4 Release Notes

Overview

MariaDB Connector/R2DBC is a non-blocking interface between Java applications and MariaDB Server. MariaDB Connector/R2DBC enables the development of Java 8+ applications for MariaDB database products.

MariaDB Connector/R2DBC 1.1.4 was released on 2023-03-27. This release is of GA (generally available) maturity. This release is compatible with R2DBC 1.0.0 specification.

Notable Changes

  • When MariaDB Connector/R2DBC 1.1.4 connects to a pre-existing TLS tunnel, host verification can be disabled. (R2DBC-80)
try {
     // Configure the Connection
     MariadbConnectionConfiguration conf = MariadbConnectionConfiguration.builder()
             .host("192.0.2.1")
             .port(8880) // tunnel port
             .username("db_user")
             .password("db_user_password")
             .database("test")
             .sslMode(SslMode.TUNNEL)
             .sslContextBuilderCustomizer(
                     sslContextBuilder -> sslContextBuilder
                             .protocols("TLSv1.3")
                             .keyManager(new File("/path/to/client/cert"), new File("/path/to/client/key")))
             .sslTunnelDisableHostVerification(true)
             .build();

     // Instantiate a Connection Factory
     MariadbConnectionFactory connFactory = new MariadbConnectionFactory(conf);

     MariadbConnection connection = connFactory.create().block();
     connection.close().block();

 } catch (java.lang.IllegalArgumentException e) {
     System.err.println("Issue encountered while getting connection");
     e.printStackTrace();
 }
  • When the useServerPrepStmts connection parameter is enabled, prepared statements can use the text protocol. (R2DBC-85)
    • To use the text protocol in this scenario, prefix the query string with /*text*/ when creating the prepared statement.
    • For example, to use the text protocol with the native R2DBC API:
connection
     .createStatement("/*text*/ call some_proc(?)")
     .bind(0, "connr2dbc_user@example.edu")
     .execute()
     .flatMap(...);
    • Or to use the text protocol with Spring Data:
@Query("/*text*/ call some_proc(:emailparam)")
List<User> findUsersWithEmailAddress(@Param("emailparam") String emailParam); 
  • MariaDB Connector/R2DBC 1.1.4 adds support for decoding TIMESTAMP and DATE "zero" date values ('0000-00-00') from MariaDB Xpand. (R2DBC-83)
    • In previous releases, when the connector received a "zero" date value from Xpand, the value could not be decoded and the following error would be raised:
      wrong month 0

Issues Fixed

  • When the useServerPrepStmts connection parameter is enabled, MEDIUMINT values are not properly decoded. (R2DBC-76)
    • In Connector/R2DBC 1.1.2 and 1.1.3, when the binary protocol is used, the last byte of a MEDIUMINT value is not read from a result-set, so remaining values from the same row are read incorrectly.
  • When the Statement.returnGeneratedValues() method is called when connected to a version of MariaDB Server prior to 10.5, an error is raised. (R2DBC-77)
    • In previous releases, the following error would be raised:
      Cannot invoke "Object.getClass()" because "obj" is null 
  • MariaDB Connector/R2DBC's internal statement parser improperly classifies user-defined variables in SELECT statements as named statement parameters. (R2DBC-79)
    • In previous releases, the @amount token in the query below would be classified as a named statement parameter, instead of a user-defined variable.
      SELECT @amount := 10; 
      
    • Since a statement parameter does not exist with that name, the following error would be raised:
      java.lang.IllegalStateException: Parameter at position 0 is not set.
    • Starting with this release, the internal statement parser can distinguish between user-defined variables and named statement parameters.
  • When a ConnectionFactory is used to construct a connection string from a ConnectionFactoryOptions instance, the restrictedAuth, rsaPublicKey, cachingRsaPublicKey, and allowPublicKeyRetrieval connection parameters are not properly parsed. (R2DBC-81)
  • When a server does not advertise the CLIENT_SESSION_TRACK capability (such as old versions of MariaDB Server, MySQL, and MariaDB Xpand), the MariadbConnection.getTransactionIsolationLevel() and MariadbConnection.setTransactionIsolationLevel(IsolationLevel isolationLevel) methods do not properly get or set the transaction isolation level. (R2DBC-82)

Resources

Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.