主な変更
- MariaDB Connector/R2DBC 1.1.4が既存のTLSトンネルに接続する場合、ホスト検証を無効にすることができます。
- この動作は、sslTunnelDisableHostVerification接続パラメーターを使用して設定できます。デフォルトはfalseです。
- sslMode接続パラメーターがSslMode.TUNNELに設定されている場合、sslTunnelDisableHostVerificationをtrueに設定することで、ホスト検証を無効にすることができます。
- 例:
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(); }
- useServerPrepStmts接続パラメーターが有効になっている場合、プリペアドステートメントはテキストプロトコルを使用できます。
- このシナリオでテキストプロトコルを使用するためには、プリペアドステートメントを作成する時にクエリ文字列の前に/*text*/を付けます。
- 例えば、ネイティブ R2DBC APIでテキストプロトコルを使用するためには:
connection .createStatement("/*text*/ call some_proc(?)") .bind(0, "connr2dbc_user@example.edu") .execute() .flatMap(...);
- または、Spring Dataでテキストプロトコルを使用するためには:
@Query("/*text*/ call some_proc(:emailparam)") List<User> findUsersWithEmailAddress(@Param("emailparam") String emailParam);
- MariaDB Connector/R2DBC 1.1.4は、MariaDB XpandからのTIMESTAMPおよびDATEの「ゼロ」日付値('0000-00-00')のデコードのサポートを追加します。
- 以前のリリースでは、コネクタがXpandから「ゼロ」日付値を受信すると、値をデコードできず、次のエラーが発生しました:
wrong month 0
- 以前のリリースでは、コネクタがXpandから「ゼロ」日付値を受信すると、値をデコードできず、次のエラーが発生しました:
修正された問題
- useServerPrepStmts接続パラメータが有効になっている場合、MEDIUMINT値が正しくデコードされません。
- Connector/R2DBC 1.1.2および 1.1.3では、バイナリプロトコルが使用されると、結果セットからMEDIUMINT値の最後のバイトが読み取られず、そのため、同じ行の残りの値が正しく読み取られません。
- 10.5より前のバージョンのMariaDB Serverに接続している時にStatement.returnGeneratedValues()メソッドが呼び出されると、エラーが発生します。
- 以前のリリースでは、次のエラーが発生していました:
Cannot invoke "Object.getClass()" because "obj" is null
- 以前のリリースでは、次のエラーが発生していました:
- MariaDB Connector/R2DBCの内部ステートメントパーサーは、SELECTステートメント内のユーザー定義変数を名前付きステートメントパラメータとして不適切に分類します。
- 以前のリリースでは、以下のクエリの@amountトークンは、ユーザー定義変数ではなく、名前付きステートメントパラメータとして分類されました。
SELECT @amount := 10;
- その名前のステートメントパラメータが存在しないため、次のエラーが発生します:
java.lang.IllegalStateException: Parameter at position 0 is not set.
- このリリース以降、内部ステートメントパーサーは、ユーザー定義変数と名前付きステートメントパラメータを区別できるようになりました。
- 以前のリリースでは、以下のクエリの@amountトークンは、ユーザー定義変数ではなく、名前付きステートメントパラメータとして分類されました。
- ConnectionFactoryを使用してConnectionFactoryOptionsインスタンスから接続文字列を作成すると、restrictedAuth、rsaPublicKey、cachingRsaPublicKey、allowPublicKeyRetrieval接続パラメータが正しく解析されません。
- サーバーがCLIENT_SESSION_TRACK機能をアドバタイズしない場合(古いバージョンのMariaDB Server、MySQL、MariaDB Xpandなど)、MariadbConnection.getTransactionIsolationLevel()およびMariadbConnection.setTransactionIsolationLevel(IsolationLevel isolationLevel)メソッドは、トランザクション分離レベルを適切に取得または設定しません。
MariaDB Connector/R2DBC 1.1.4のリリースノート(MariaDB社ウェブサイト):
https://mariadb.com/docs/xpand/release-notes/mariadb-connector-r2dbc/1-1-4/
MariaDBプロダクト・サポート・サービス
MariaDBプロダクト・サポート・サービスは、MariaDBおよびその関連製品をご利用されているお客様へ、必要なソフトウェアや専門的なサポートなどを提供するサービスです。