注目すべき問題
ゼロ設定のSSL暗号化
MariaDB Server 11.4では、SSL(より正確な用語はTLSだが、実際にはSSLの方が一般的に使用される)の使用が簡素化されました。バージョン 11.4より前では、適切なSSL設定を行うためには、サーバーとそれに接続する全てのクライアントに対して複数の手動の手順が必要でした。
3.4より前のMariaDB Connector/JがSSL暗号化接続を確立する場合、または、11.4より前のMariaDB Serverリリースシリーズでは、次の3つのオプションを使用できます:
- 次のような設定を使用して、信頼できる証明機関(CA)でサーバー証明書を生成します: sslMode=verify-full
- 次のようなサーバー証明書を使用してコネクタを設定します: sslMode=verify-full&serverSslCert=file:///server-cert.pem
- 次のような設定を使用してSSL証明書の検証を無効にしますが、これは安全ではないため推奨されません: sslMode=trust
MariaDB Connector/J 3.4がMariaDB Server 11.4へのSSL暗号化接続を確立する場合、SSLを有効にするためには、sslMode=verify-fullを使用する以外に特別な設定は必要ありません。パスワードが空でない限り、コネクタはサーバー証明書を知る必要はありません。
TIMESTAMPSのタイムゾーン設定オプションの変更
MariaDB Connector/J バージョン 3.4より前では、クライアントとサーバーの異なるタイムゾーンを処理するための単一の"timezone"オプションが提供されています。この機能は互換性を維持しますが、現在は2つの異なる設定に分離されています:
- connectionTimeZone
- forceConnectionTimeZoneToSession
現在、Javaコネクタでのタイムスタンプの動作を制御するオプションが3つあります:
- connectionTimeZone: (LOCAL | SERVER |
) - このオプションは、接続のタイムゾーンを定義します。LOCALはJVMのデフォルトのタイムゾーンを取得し、SERVERは接続作成時にサーバーのグローバルタイムゾーンをフェッチします。
は接続確立中に要求せずにサーバーのタイムゾーンを指定できるようにします。
- このオプションは、接続のタイムゾーンを定義します。LOCALはJVMのデフォルトのタイムゾーンを取得し、SERVERは接続作成時にサーバーのグローバルタイムゾーンをフェッチします。
- forceConnectionTimeZoneToSession: (true | false)
- この設定は、コネクタがセッションの接続タイムゾーンを強制するかどうかを決定します。
- preserveInstants: (true | false)
- このオプションは、コネクタがTimestamp値を接続のタイムゾーンに変換するかどうかを制御します。
以前のバージョンとの互換性を維持しながら、タイムゾーンの違いのシナリオを処理する際の柔軟性が向上します。
接続リダイレクトのサポートを追加
MariaDB 10.3.1以降、サーバーには、mariadb/mysql://[
設定すると、必要に応じて、既存の全ての接続が指定されたURL値にリダイレクトされます。接続は、アクティブなトランザクションがない場合にのみリダイレクトされます。
リダイレクトを有効にする場合の例:
set @@global.redirect_url="mariadb://somehost:3306/"
リダイレクト機能はデフォルトで有効になっています。新しいオプション permitRedirectをFALSEに設定することにより無効にでき、リダイレクトURLが無視されます。
分離レベルのメタデータを取得および設定するためのクエリ発行のオーバーヘッドの削減
セッション追跡がMariaDB Serverリリースシリーズでサポートされている場合、現在の状態はセッション追跡情報から既にわかっているため、Connection.getTransactionIsolation()はサーバーにクエリを実行しません。サーバーが要求されたトランザクション分離レベルを既に使用している場合、Connection.setTransactionIsolationはトランザクション分離レベルを設定するクエリをスキップします。
修正された問題
- Connector/J バージョン3は"nullCatalogMeansCurrent"プロパティを無視する
- Androidでデータベース接続が失敗する
- MariaDB Connector 3はMySQLでのクエリタイムアウトをサポートしなくなった
- MariaDB ConnectorとMySQL Connectorとの間でのPreparedStatement.executeQuery()の処理の不一致
- getTablesは期待どおりに順序付けされる必要がある
- jdbcCompliantTruncationは機能しているように見えない
- LOAD DATA INFILEの前に変数を初期化することは、validateLocalFileNameパターンでは不可能である
- 3.2より前のバージョンとのuseBulkStmtsの互換性値
- クライアントのプリペアドステートメントのsetMaxRowsの実装を改善
- getSQLKeywordsからOFFSETがなくなっている
- DatabaseMetaData#getFunctionsの結果がプロパティ順序付けされていない
- DatabaseMetaData#getClientInfoPropertiesの順序が正しくない
- 接続プロパティ fallbackToSystemKeyStoreおよびfallbackToSystemTrustStoreの実装
- 個別の結果を返す一括実装
- Connector Jは、符号付きのbigintの精度20を提供する
- システムテーブルとビューをフィルタリングできるようにする
MariaDB Connector/J 3.4.0のリリースノート(MariaDB社ウェブサイト):
https://mariadb.com/docs/server/release-notes/mariadb-connector-j-3-4/3-4-0/
MariaDBプロダクト・サポート・サービス
MariaDBプロダクト・サポート・サービスは、MariaDBおよびその関連製品をご利用されているお客様へ、必要なソフトウェアや専門的なサポートなどを提供するサービスです。