2022.08.04

MySQL

MySQL Community Server 8.0.30 GA版(リリース日:2022年7月26日)

文字セットのサポート

● 重要な変更:以前の変更では、utf8_で始まる非推奨の名前を含む文字セットの名前が変更されました。代わりにutf8mb3_が使用されます。このリリースでは、utf8_ 照合の名前も同様に、utf8mb3_ プレフィックスを使用するように、変更します。これは、照合の名前を文字セットの名前と一致させるためであり、非推奨の照合名に依存しなくなり、utf8mb3とutf8mb4との違いを明確にするためです。utf8mb3_ プレフィックスを使用する名前は、SHOW CREATE TABLEなどのSHOWステートメントの出力、およびCOLLATIONSテーブルとCOLUMNSテーブルを含むInformation Schemaテーブルの列に表示される値で、これらの照合にのみ使用されるようになりました。(バグ #33787300)

参照:バグ #30624990。

● 重要な変更:複数の言語が同じ照合定義を持っていた場合、MySQLは1つの言語に対してのみ照合を実装しました。これは、一部の言語が他の言語に固有のutf8mb4 Unicode 9.0照合でのみカバーされていることを意味しました。このリリースでは、以前は他の言語の言語固有の照合でしかカバーされていなかった言語用の言語固有の照合を追加することによって、このような問題を修正しています。新しい照合はここにリストされています:

  • ノルウェー語

    *(ブークモール)utf8mb4_nb_0900_ai_ci
    *(ブークモール)utf8mb4_nb_0900_as_cs
    *(ニーノシュク)utf8mb4_nn_0900_ai_ci
    *(ニーノシュク)utf8mb4_nn_0900_as_cs

  • ラテン文字のセルビア語:

    *utf8mb4_sr_latn_0900_ai_ci
    *utf8mb4_sr_latn_0900_as_cs

  • ラテン文字のボスニア語:

    *utf8mb4_bs_0900_ai_ci
    *utf8mb4_bs_0900_as_cs

  • ブルガリア語:

    *utf8mb4_bg_0900_ai_ci
    *utf8mb4_bg_0900_as_cs

  • ガリシア語:

    *utf8mb4_gl_0900_ai_ci
    *utf8mb4_gl_0900_as_cs

  • キリル文字のモンゴル語:

    *utf8mb4_mn_cyrl_0900_ai_ci
    *utf8mb4_mn_cyrl_0900_as_cs

(バグ #31885256)

コンパイル関連

● Enterprise Linuxでは、ADD_LINUX_RPM_FLAGSを修正して、CMAKE_C_FLAGSとCMAKE_CXX_FLAGSの初期値が、それらを変更する前に使用されるようにしました。(バグ #34131794)

参照:この問題は、バグ# 33730302のリグレッションです。

● 新しいSHOW_SUPPRESSED_COMPILER_WARNINGS CMakeオプションが追加されました。抑制されたコンパイラ警告を表示できるようにし、-Werrorで失敗することなく表示します。デフォルトはOFFです。(バグ #34046748)

● macOS/ARM のサポートが追加されました。(バグ #34017614)

● Windowsでは、非推奨の警告(C4996)は、/wd4996コマンドラインオプションを使用してグローバルに無効にされました。現在、非推奨の警告は、必要に応じてローカライズレベルで無効になりました。(バグ #33975638)

● Windowsでは、生成されるINFO_BINファイルおよびINFO_SRCファイルが改善されました。(バグ #33972317、バグ #34052301)

● std::filesystemを使用するために-lstdc++fsを含めるようにGCC 8サポートを改善しました。(バグ #33939798)

非推奨と削除関連

● レプリケーション:replica_parallel_workersシステム変数(または同等のサーバーオプション --replica-parallel-workers)を0に設定することは非推奨になり、これを行うと警告が発生するようになりました。

警告なしで同じ結果を得る(つまり、シングルスレッドを使用する)には、代わりにreplica_parallel_workers=1を設定します。

● --skip-host-cacheサーバーオプションは非推奨になり、将来のリリースで削除される可能性があります。

代わりに、SET GLOBAL host_cache_size = 0などのステートメントを使用するか、my.cnfファイルでhost_cache_sizeを設定してください。

● --old-style-user-limitsオプションにより、サーバーはMySQL 5.0.3より前のユーザー制限を適用します。このオプションは非常に古いリリースとの下位互換性を目的としています。このオプションは非推奨になり、使用すると警告が表示されるようになりました。このオプションはMySQLの将来のリリースで削除されると思っておくべきです。そのため、MySQLアプリケーションがこのオプションに依存している可能性がある場合はその依存状態を今すぐ削除することをお勧めします。

生成された非表示のプライマリキー(GIPK)

● MySQL 8.0.30はGIPKモードをサポートするようになりました。これにより、生成された非表示のプライマリキー(GIPK)が、明示的なプライマリキーなしで作成されたInnoDBテーブルに追加されます。この機能拡張は、InnoDBテーブルにのみ適用されます。

GIPKモードによってInnoDBテーブルに追加された生成されたキー列の定義を次に示します。

my_row_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT INVISIBLE PRIMARY KEY

生成されたプライマリキーの名前は常にmy_row_idです。GIPKモードが有効になっている間は、明示的なプライマリキーが含まれていない限り、これを新しいInnoDBテーブルを作成するCREATETABLEステートメントで列名として使用することはできません。

GIPKはデフォルトでは有効になっていません。それらを有効にするためには、sql_generate_invisible_primary_keyサーバーシステム変数(このリリースでも導入されている)をONに設定します。この設定は、レプリケーションアプライヤースレッドには影響しません。これは、レプリカが、プライマリキーを使用してソース上に作成されなかったレプリケートテーブルに対してプライマリキーを生成しないことを意味します。

GIPKが有効な間は、生成された非表示のプライマリキーを変更できません。ただし、ALTER TABLE tbl CHANGE COLUMN my_row_id SET VISIBLEとALTER TABLE tbl CHANGE COLUMN my_row_id SET INVISIBLEを使用してGIPKの表示を切り替えることができます。

デフォルトでは、生成された非表示のプライマリキーは、SHOW CREATE TABLEおよびSHOW INDEXの出力に表示されます。これらは、COLUMNSテーブルやSTATISTICSテーブルなどのMySQL Information Schemaテーブルにも表示されます。代わりに、show_gipk_in_create_table_and_information_schemaをOFFに設定することで、それらを非表示にすることができます。

このリリースで追加された--skip-generated-invisible-primary-keyオプションを使用して、生成された非表示のプライマリキーをmysqldumpの出力から除外できます。mysqlpumpは、その出力からGIPKを除外する --skip-generated-invisible-primary-keyオプションもサポートするようになりました。

(バグ #34092605)

キーリング関連

● keyring_awsプラグインが更新され、最新のAWS Encryption SDK for C(バージョン1.9.186)が使用されるようになりました。

keyring_aws_region変数は、新しいSDKでサポートされる追加のAWSリージョンをサポートします。

プラガブル認証

● SASL LDAPプラグインは、Kerberos設定ファイルから読み取られたKerberosキー配布センター(KDC)ホスト情報を適切に解析できなかったため、SASL認証エラーが発生しました。(バグ #31862170)

セキュリティ関連

● サポートされているプラットフォームでOpenSSL 3.0を使用してMySQLサーバーパッケージ(mysqld + libmysql + クライアントツール)をコンパイルできるようになりました。これにより、サーバープログラムまたはクライアントプログラムの動作は変更されないはずです。詳細については、https://wiki.openssl.org/index.php/OpenSSL_3.0を参照してください。

空間データ関連

● 以前は、MySQL 8.0.13で追加されたST_TRANSFORM()関数は、デカルト空間参照系をサポートしていませんでした。このリリース以降、WGS 84 Pseudo-Mercator(SRID 3857)で使用されるPopular Visualization Pseudo Mercator(EPSG 1024)投影法のサポートがこの関数によって提供されます。

SQL構文関連

● 実行できないREVOKEステートメントがエラーまたは警告を発生させるかどうかを判別できるようになりました。これは、2つの新しいステートメントオプションを追加することで実装されます。ここに簡単な説明を示します。

・IF EXISTSを使用すると、REVOKEは、ターゲットユーザーまたはロールが存在しない限り、エラーではなく警告を生成します。

・IGNORE UNKNOWN USERを使用すると、REVOKEは、ターゲットユーザーまたはロールが不明な場合はエラーではなく警告を生成しますが、それ以外の場合はステートメントは成功します。

 単一のターゲットユーザーまたはロールと特定の権限またはロールを削除する場合、同じREVOKEステートメントでIF EXISTSオプションとIGNORE UNKNOWN USERオプションを一緒に使用すると、ターゲットユーザーまたはロールと削除する権限またはロールの両方が不明な場合でも、ステートメントが他の点で有効である限り、ステートメントは(何もしなくても)成功します(警告が表示されます)。複数のターゲット、削除する複数の特権またはロール、あるいはその両方の場合、ステートメントは成功し、有効な削除を実行し、そうでないものに対して警告を発行します。

(バグ #102232、バグ# 32495441)

XAトランザクション関連

● レプリケーション:以前は、レプリケーショントポロジ内のサーバーノードがXA PREPARE、XA COMMIT、またはXA ROLLBACKの実行中に予期せず停止した場合のリカバリは保証されていませんでした。この問題に対処するために、MySQLは、サーバーノードがトポロジから失われてその後回復した時に、MySQLの”典型的な”レプリケーションまたはMySQLグループレプリケーションのいずれかを使用して、トポロジ全体で一貫したXAトランザクション状態を維持するようになりました。これは、サーバーノードがトポロジを停止、回復、および再参加した場合に、特定のトランザクション内で作業を行っている間にノードが分岐しないように、XAトランザクション状態が伝播されるようになったことも意味します。

マルチサーバーレプリケーショントポロジ(グループレプリケーションを使用するトポロジを含む)の場合、XAトランザクションの状態は一貫して伝播するため、全てのサーバーは常に同じ状態のままになります。任意のサイズのこのようなトポロジ(バイナリログが有効になっている限り、単一のサーバーを含む)の場合、任意のサーバーが予期せず停止し、ドロップアウト後にトポロジに再参加させられた後、そのサーバーを一貫した状態に回復できるようになりました。

この拡張機能は、ストレージエンジンとサーバーの内部トランザクションコーディネーター(ITC)の間の2フェーズのXA PREPAREのサポートを追加することにより、単一サーバーの場合に実装されます。PREPAREの状態は両方によって保持されます。これは、サーバーがパージ後に停止した場合に、ITCが状態を失うリスクなしに、内部ログを安全にパージできることを意味します。シングルノードの場合、ストレージエンジンとバイナリログの間に実行順序を課すことにより、対応する変更がストレージエンジンに表示される前に、GTIDの外部化が防止されます。複数のサーバーで構成されるトポロジでは、これにより、トランザクション状態はローカルでの整合性と永続性が保証される前にトポロジにブロードキャストされなくなります。いずれの場合も、XAトランザクションの状態は、書き込まれる最後のバイナリログファイルから抽出され、ストレージエンジンから取得されたトランザクション状態と同期されます。

このリリースの既知の問題は、同じトランザクションXIDを使用してXAトランザクションを順番に実行した場合に発生する可能性があります。サーバーがこの同じXIDを使用してXA COMMIT ... ONE PHASEを処理している時に操作が中断された場合は、ストレージエンジンでトランザクションが準備された後、バイナリログとストレージエンジン間の状態を確実に同期できなくなりました。

追加・変更された機能

● 重要な変更:システムcurlライブラリにリンクするのではなくcurlを含むバイナリパッケージがアップグレードされ、curl 7.83.1を使用するようになりました。(バグ #34138733)

● 重要な変更:OpenSSLライブラリがバンドルされているプラットフォームの場合、MySQLサーバー用のリンクされたOpenSSLライブラリがバージョン 1.1.1oに更新されました。OpenSSLバージョン 1.1.1oで修正された問題については、https://www.openssl.org/news/cl111.txtおよびhttps://www.openssl.org/news/vulnerabilities.htmlで説明されています。(バグ #34133985)

● 重要な変更:authentication_fidoプラグインで使用されるMySQLに含まれるfido2ライブラリは、バージョン 1.8.0にアップグレードされました。(以前は、バージョン 1.5.0がMySQLに含まれていました。)

● InnoDB:ダブルライトバッファを有効または無効にするinnodb_doublewriteシステム変数には、DETECT_ONLYとDETECT_AND_RECOVERの2つの新しい設定があります。DETECT_ONLY設定を使用すると、データベースページの内容はダブルライトバッファに書き込まれず、リカバリは不完全なページ書き込みを修正するためにダブルライトバッファを使用しません。この軽量設定は、不完全なページ書き込みのみを検出することを目的としています。DETECT_AND_RECOVER設定は、既存のON設定と同等です。

(バグ #32727919、バグ #103211)

● InnoDB:InnoDBは、REDOログ容量の動的設定をサポートするようになりました。innodb_redo_log_capacityシステム変数を実行時に設定して、REDOログファイルが占めるディスクスペースの合計量を増減できます。

この変更に伴い、REDOログファイルの数とそのデフォルトの場所も変更されました。MySQL 8.0.30以降、InnoDBはデータディレクトリの#innodb_redoディレクトリに32個のREDOログファイルを保持します。以前は、InnoDBはデフォルトでデータディレクトリに2つのREDOログファイルを作成し、REDOログファイルの数とサイズはinnodb_log_files_in_group変数とinnodb_log_file_size変数によって制御されていました。これらの2つの変数は非推奨になりました。

innodb_redo_log_capacity設定が定義されている場合、innodb_log_files_in_groupおよびinnodb_log_file_size設定は無視されます。それ以外の場合、これらの設定はinnodb_redo_log_capacity設定を計算するために使用されます(innodb_log_files_in_group * innodb_log_file_size = innodb_redo_log_capacity)。これらの変数のいずれも設定されていない場合は、REDOログ容量はinnodb_redo_log_capacityのデフォルト値に設定されます。これは104857600バイト(100MB)です。

REDOログおよびREDOログ容量のサイズ変更操作を監視するために、いくつかのステータス変数が提供されています。

アップグレードに一般的に必要とされるように、この変更ではアップグレードする前にクリーンシャットダウンが必要です。

● Ubuntu 22.04のサポートが追加されました。(バグ #34123545)

● mysqlスキーマのいくつかのテーブルのプライマリキー定義の列の順序が変更され、ホスト名とユーザー名を含む列がプライマリキーの先頭で順番に並べられるようになりました。これらのテーブルに対するACLクエリは、ホスト名とユーザー名のみを使用して実行されます。これらの列が順番に並んでいない場合は、関連するレコードを識別するためにフルテーブルスキャンを実行する必要があります。ホスト名とユーザー名を一緒に配置すると、インデックスルックアップを使用できるため、CREATE USER、DROP USER、およびRENAME USERステートメントのパフォーマンス、および複数の権限を持つ複数のユーザーのACLチェックのパフォーマンスが向上します。

変更されたテーブルは、mysql.db、mysql.tables_priv、mysql.columns_priv、およびmysql.procs_privです。MySQL 8.0.30以降にアップグレードすると、これらのテーブルはMySQLアップグレードプロセスの2番目のステップで変更されます。mysqldumpやmysqlpumpなどのバックアップまたはエクスポートユーティリティを使用して論理アップグレードを実行する場合は、--upgrade=FORCEオプションを使用します。これにより、テーブル構造がチェックされ、新しい列の順序で再構築されます。(バグ #33644645、バグ #33637244)

● myisam_repair_threadsシステム変数とmyisamchk --parallel-recoverオプションが削除されました。(バグ #31052408)

● 新しいmysqldumpオプション --mysqld-long-query-timeを使用すると、mysqldumpのセッションのlong_query_timeシステム変数のカスタム値を設定できます。新しいオプションを使用して、mysqldumpのクエリがスロークエリログファイルに書き込まれるまでの経過時間を増やし、不要なログ記録を回避します。(バグ #96369、バグ #96369、バグ #30110717)

● エラーログコンポーネントは、起動時に、InnoDBストレージエンジンが使用可能になる前に、暗黙的にロードできるようになりました。エラーログコンポーネントをロードするこの新しい方法は、log_error_services変数で定義されたコンポーネントをロードして有効にします。

以前は、エラーログコンポーネントは最初にINSTALL COMPONENTを使用してインストールする必要があり、ロードするコンポーネントのリストがmysql.componentsテーブル(InnoDBテーブル)から読み取られたため、InnoDBが完全に使用可能になった後にのみロードされていました。

エラーログコンポーネントの暗黙的なロードには、次の利点があります。

・ログコンポーネントは起動シーケンスの早い段階でロードされ、ログに記録された情報をより早く利用できるようにします。
・起動中に障害が発生した場合に、バッファリングされたログ情報が失われるのを防ぐのに役立ちます。
・INSTALL COMPONENTを使用してログコンポーネントをロードする必要がないため、エラーログ設定が簡素化されます。

 以前にINSTALL COMPONENTを使用してロード可能なログコンポーネントをインストールし、それらのコンポーネントを起動時に(例えば、オプションファイルから)読み取られるlog_error_services設定にリストする場合、起動の警告を回避するために設定を更新する必要があります。

● MySQL Enterprise Auditの監査ログファイルをオプションのデータフィールドで拡張して、クエリ時間、送受信されたバイト数、クライアントに返された行数、および検査された行数を表示できるようになりました。このデータは、適格なクエリのスロークエリログで利用でき、監査ログのコンテキストでは、アクティビティ分析の外れ値を検出するのに同様に役立ちます。これは、監査ログフィルタリング機能として設定した新しいコンポーネントサービスを介して監査ログに配信されます。拡張データフィールドは、監査ログがデフォルト設定ではないJSON形式(audit_log_format=JSON)の場合にのみ追加できます。

● MySQL ServerのAES_ENCRYPT()およびAES_DECRYPT()関数は、鍵導出関数(KDF)の使用をサポートするようになり、関数に渡すパスワードやパスフレーズなどの情報から暗号的に強力な秘密鍵を作成するようになりました。派生キーはデータの暗号化と復号化に使用され、MySQLサーバーインスタンスに残り、ユーザーはアクセスできません。KDFを使用することを強くお勧めします。これは、関数を使用する時に、独自の既成のキーを指定したり、より簡単な方法でキーを取得したりするよりも優れたセキュリティを提供するためです。これらの関数は、キー情報に含めるオプションのソルトおよびコンテキスト固有の情報を指定できるHKDF(OpenSSL 1.1.0から入手可能)、および、オプションのソルトを指定し、キーの生成に使用される反復回数を設定できるPBKDF2(OpenSSL 1.0.2から入手可能)をサポートします。

● 新しいシステムステータス変数 Tls_library_versionは、MySQLインスタンスに使用されているOpenSSLライブラリのランタイムバージョンを示します。OpenSSLのバージョンは、TLSv1.3のサポートなどの機能に影響します。

● MySQL 8.0.30以降、MySQL Enterprise Encryptionの機能は、openssl_udf共有ライブラリからインストールされるのではなく、コンポーネントによって提供されます。コンポーネントによって提供される新しい関数は、DSAアルゴリズムやDiffie-Hellman鍵交換方法ではなく、一般的に推奨されるRSAアルゴリズムのみを使用し、最小キーサイズに関する現在のベストプラクティスに従います。コンポーネント関数は、(OpenSSL 1.1.1が使用されている場合)ダイジェストのSHA3のサポートも追加し、署名のダイジェストはサポートしますが、必要としません。

それらの関数がopenssl_udf共有ライブラリファイルから手動でインストールされる以前のリリースからMySQL 8.0.30にアップグレードする場合、作成した関数は引き続き使用可能であり、サポートされます。ただし、これらのレガシー機能はこのリリースから非推奨になり、代わりにコンポーネントをインストールすることをお勧めします。コンポーネント関数には下位互換性があるため、レガシー関数によって生成されたRSA公開鍵と秘密鍵、暗号化されたデータ、および署名はコンポーネント関数で使用できます。コンポーネント関数がレガシー関数によって生成されたコンテンツの復号化と検証をサポートするためには、新しいシステム変数 enterprise_encryption.rsa_support_legacy_paddingをONに設定する必要があります(デフォルトはOFFです)。

コンポーネント関数は、PKCS #8形式で公開RSA鍵と秘密RSA鍵を生成します。これらは、2048ビットの最小キーサイズを許可します。これは、現在のベストプラクティスに適した最小RSAキー長です。システム変数 enterprise_encryption.maximum_rsa_key_sizeを使用して、最大キーサイズを最大で16384ビットに設定できます。デフォルトでは、最大キーサイズは4096ビットです。

● MySQLサーバーがオフラインモードに設定されている場合、ユーザーがCONNECTION_ADMIN権限を持っている接続は終了しません。これは、offline_modeシステム変数の値をONに変更することによって行われます。以前は、CONNECTION_ADMIN権限を持つ接続をチェックすると、他のスレッドへのアクセスが含まれるため、競合状態が発生する可能性がありました。現在は、各スレッドのフラグがスレッドのユーザーがCONNECTION_ADMIN権限を持っているかどうかをキャッシュします。ユーザー権限が変更されると、フラグが更新されます。サーバーでオフラインモードがアクティブになっている場合、このフラグは、別のスレッドのセキュリティコンテキストではなく、スレッドごとにチェックされます。この変更により、操作はスレッドセーフになります。

さらに、オフラインモードがアクティブにされると、ユーザーがSYSTEM_USER権限を持っている接続は、操作を実行するユーザーがSYSTEM_USER権限も持っている場合にのみ終了するようになりました。SYSTEM_VARIABLES_ADMIN権限のみを持ち、SYSTEM_USER権限を持たないユーザーは、offline_modeシステム変数をONに設定して、オフラインモードをアクティブ化できます。ただし、操作を実行すると、ユーザーがCONNECTION_ADMIN権限を持っているセッションに加えて、ユーザーがSYSTEM_USER権限を持っているセッションは全て接続されたままになります。これは、操作時に既存の接続にのみ適用されます。SYSTEM_USER権限はあるが、CONNECTION_ADMIN権限がないユーザーは、オフラインモードでシステムに新しい接続を確立できません。

● パフォーマンススキーマは、グループレプリケーションのメモリ使用量のパフォーマンスを監視するためのインストルメンテーションを提供します。

主なバグ修正

● InnoDB:TRUNCATE TABLE操作で、ALGORITHM=INSTANTを使用して削除された列のデータディクショナリエントリを削除できませんでした。

(バグ #34302445)

● InnoDB:即時に列が追加されたテーブルでnull許容列の計算が正しくないため、データが正しく解釈されませんでした。(バグ #34243694)

● InnoDB:MySQL 8.0.29にアップグレードした後、即時に追加された列を持つテーブルにアクセスしようとするとエラーが発生しました。(バグ #34233264)

● InnoDB:即時に追加された列の物理的な位置のみがログに記録され、インデックスの回復には不十分でした。列の論理位置も必要でした。(バグ #34181432)

● InnoDB:カスケード更新操作中に、InnoDBソースのfield_phy_posデバッグ変数が子テーブルに対して更新されませんでした。(バグ #34181419)

● InnoDB:InnoDBソースのrec_get_instant_row_version_old()関数の一部のインスタンスで、行のバージョン管理がチェックされませんでした。(バグ #34173616)

● InnoDB:ログバッファからバイトを読み取るInnoDBソースのread_2_bytes()関数がnullポインタを返しました。(バグ #34173425)

● InnoDB:InnoDB読み取り/書き込みロックのパフォーマンススキーマ計測で、TRY(待機なし) 操作のロック取得の失敗と成功が正しく計測されませんでした。(バグ #34131395)

● InnoDB:特定のロックシナリオで、暗黙的ロックが期待どおりに明示的ロックに変換されず、lock_rec_has_expl(LOCK_X | LOCK_REC_NOT_GAP, block, heap_no, trx) デバッグアサーション エラーが発生しました。(バグ #34123159)

● InnoDB:テーブルに列が即時に追加されたかどうかを判断するチェックが列ごとに実行されました。これは、多数の列を持つテーブルでのADDおよびDROP COLUMN操作のパフォーマンスに影響を与えました。チェックはテーブルごとに1回実行されるようになりました。(バグ #34112147)

● InnoDB:多数のロックリクエストと多数のタイムアウトを生成するワークロードにより、長時間のセマフォ待機エラーが発生しました。この問題に対処するために、排他的なグローバルロックシステムラッチの数を減らす最適化が実装されました。(バグ #34097862)

● InnoDB:REDOログブロックヘッダーのm_flush_bitは、1回のログ書き込み呼び出しで書き込まれた複数ブロックの最初のブロックに設定されていましたが、利点がなく、削除されました。(バグ #34091444)

● InnoDB:未使用のコードと不要なチェックの削除を含む、clang-tidyとcppcheck の警告を修正しました。(バグ #33957087)

● InnoDB:小さなinnodb_log_buffer_size設定のMySQL Serverインスタンスで、REDOログファイルのミニトランザクション(mtr)のリカバリにより、デバッグアサーションエラーが発生しました。

(バグ #33945602)

● InnoDB:WITH_VALGRINDソース設定オプションを使用したコンパイルは、Wunused変数の警告を生成しました。(バグ #33899862)

● InnoDB:ロックフリーのハッシュテーブル(ut_lock_free_hash_t)に関する複数の問題が解決されました。(バグ #33830934)

● InnoDB:セカンダリインデックスを使用して生成された列に対するクエリでエラーが発生しました。生成された列の位置を表すフィールド番号が無効でした。(バグ #33825077)

● InnoDB:multi-valuedインデックス列を含む行を更新および挿入すると、メモリ消費量が予想よりも大きくなりました。行の更新ごとにmulti-valued列に割り当てられたメモリは、ファイルハンドルが解放されるまで保持されました。(バグ #33766482)

● InnoDB:InnoDBソースのUT_LOCATION_HERE構造が一貫して使用されていませんでした。(バグ #33436161)

● InnoDB:生成された列の値を計算する時に、multi-valuedインデックス列から値の配列を取得するために必要なテーブルオブジェクトが利用できませんでした。(バグ #32725063)

● InnoDB:Widows 32ビットシステムでの4GBのテーブルスペースファイルサイズ制限が削除されました。この制限は、テーブルスペースの拡張中に実行された誤った計算が原因でした。(バグ #28934351)

● InnoDB:InnoDBソースのハッシュおよびランダムジェネレーター関数が改善されました。(バグ #16739204、バグ #23584861)

● InnoDB:破棄されたテーブルスペースを持つテーブルでDROP TABLE操作を行うと、不要なアサーションエラーが発生しました。(バグ #107207、バグ #34135187)

● InnoDB:JSON列を含むテーブルに対するクエリは、multi-valuedインデックスを追加した後、部分的な結果セットのみを返しました。(バグ #106621、バグ #33917625)

● InnoDB:複数のバイナリラージオブジェクト値を含むレコードをパージすると、ミニトランザクション(mtr)の競合が原因で挿入エラーが発生しました。(バグ #105592、バグ #33574272)

● InnoDB:同時実行性の高いインスタンスでアダプティブハッシュインデックス(AHI)を有効にすると、ハッシュインデックスの構築中に一時的なAHI検索ラッチの競合が発生しました。

(バグ #100512、バグ #31750840)

● パッケージング:SASL LDAPクライアントサイドプラグインが、Windows用のMySQLコミュニティパッケージにありませんでした。

● レプリケーション:レプリカに追加のプライマリキーがあるためにソースとレプリカの間でテーブル定義が異なる時、そのテーブルにソースとレプリカの両方に存在するインデックスがある場合、レプリカでの更新と削除は失敗します。InnoDBテーブルのプライマリキーは、全てのインデックスに自動的に含まれ、レプリケーションアプライヤーは、インデックスを検索するために、キーの全ての部分の値をイベントに含める必要があります。以前は、アプライヤーは全てのユーザー定義のキー部分が存在することを確認していましたが、自動的に含まれる非表示のプライマリキーはチェックされませんでした。アプライヤーは、インデックスを使用してデータを検索する前に、ユーザー定義のキーパーツと自動的に含まれるキーパーツの両方がイベントに存在することを検証するようになりました。(バグ #34122738)

● レプリケーション:transaction_write_set_extractionシステム変数が有効(デフォルト)の場合にMySQLレプリケーションによってトランザクションから抽出された書き込みセットは、プライマリキー、一意キー、および外部キーから抽出されます。これらは、トランザクション間の依存関係と競合を検出するために使用されます。以前は、複数列の外部キーを含む書き込みセットが、各列を個別の外部キーとして誤って識別していました。この問題は修正され、外部キー書き込みセットには全ての参照キー列が含まれるようになりました。(バグ #34095747、バグ #34144531)

● レプリケーション:行ベースのレプリケーションが使用されていた場合、スレーブでの追加の列に関する問題を回避するために、レプリカがソースから送信されたSQLモード値を上書きすることがありました。極端な場合、これはデータの相違につながる可能性がありました。この問題は修正され、レプリカは可能な限りソースのSQLモードを保持するようになりました。(バグ #33945038)

● レプリケーション:パフォーマンススキーマテーブル replication_group_member_statsのCOUNT_TRANSACTIONS_REMOTE_IN_APPLIER_QUEUE列に、既に適用されているビュー変更イベント(View_change_log_event)に関連するトランザクションが永続的に表示されることがありました。これらのイベントはグループレプリケーションアプライヤーチャネルでキューに入れられますが、グループレプリケーションリカバリチャネルで適用されるため、競合状態が発生し、カウンターのデクリメントが失われる可能性がありました。カウントのインクリメントがより適切な時点で行われるようになり、アプライヤーがビジーでない場合、COUNT_TRANSACTIONS_REMOTE_IN_APPLIER_QUEUEのカウンターもゼロに設定されるようになりました。(バグ #33602354、バグ #33674059)

● レプリケーション:同じサーバーの古いインカネーションがまだ存在する場合にメンバーがグループレプリケーショントポロジに再参加しようとした時に記録されるメッセージは、情報メモから警告メッセージにアップグレードされました。(バグ #32651024)

● レプリケーション:MySQL の準同期レプリケーションは、net_read_timeoutシステム変数の値を尊重せず、1ミリ秒の読み取りタイムアウトを強制しました。これにより、MySQLシステム内の他の接続が正常に機能していたにもかかわらず、関数で確認メッセージの部分的な読み取りが発生し、パケットが順不同で到着する可能性がありました。net_read_timeoutシステム変数の値は、準同期レプリケーションの接続に適用されるようになりました。(バグ #101056、バグ #31976209)

● レプリケーション:--replicate-same-server-idオプションを使用してレプリカが独自のサーバーIDを持つイベントをスキップしないようにした場合、ログファイルがローテーションされると、レプリケーションがエラーで停止しました。ログローテーションイベントは、オプションの現在の値をチェックして適用するようになりました。(バグ #89375、バグ #27492990)

● API:以前に MySQLクライアントライブラリを使用してサーバーへの自動再接続を実行していたアプリケーションは、サーバーのアップグレード後に次のmysql_queryエラーを受け取りました。

[4031] The client was disconnected by the server because of inactivity.

(バグ #105229、バグ #34007830)

● 派生テーブルへの条件のプッシュダウンは、全てのケースで正しく処理されませんでした。(バグ #34311090)

● 集合演算を持つ派生テーブルに条件をプッシュダウンした後、常にtrueのブール条件を折りたたんでいる間、書き換えは、集合演算で派生テーブルへの条件プッシュダウン中にコピーを作成する時にクローン化された条件に対してabort_on_nullをtrueに設定していないために、正しくありませんでした。(バグ #34298238)

● ビュー定義で無効なORDER BY式を処理する時にエラーが返されないため、デバッグビルドでアサートが発生していました。(バグ #34239456)

● MySQLサーバーは、Visual Studio 2022の最新バージョンでコンパイルされませんでした。(バグ #34231639)

● 条件のプッシュダウン中にシステム変数のクローンを作成しようとした時、サーバーがクローン化された式の正しいコンテキストを判断できないことがありました。

これを防ぐために、派生テーブルがシステム変数を使用している場合、または派生テーブルの基になる式にシステム変数が含まれている場合、派生テーブルへの条件プッシュダウンは許可されません。(バグ #34205559)

● Enterprise Linux 9 (EL9) のサポートが追加されました。(バグ #34190004)

● macOS 11では、MySQLサーバーには、予期しないサーバーの停止が発生した場合にコアダンプを生成するための適切な資格がありませんでした。ビルドオプション WITH_DEVELOPER_ENTITLEMENTSが追加され、ビルドがコアダンプを生成できるようになりました。(バグ #34163987)

● libevent-develまたはlibedit-develがないシステムでの'-DWITH_LIBEVENT=system'および'-DWITH_EDITLINE=system'のエラー処理が改善されました。(バグ #34131334、バグ #34123545)

● MySQL 8.0.29 のバグ #33830493の修正を修正することによって、システム変数の設定を記録するためにSET PERSISTステートメントが使用された直後に、MySQLインスタンスが予期せず停止したか再起動された場合に、設定ファイル mysqld-auto.cnfが空のままになる(この場合、サーバーの再起動は続行できません)可能性があるという状況に対処しました。永続化されたシステム変数はバックアップファイルに書き込まれるようになりました。このバックアップファイルは、書き込みの成功が確認された後にのみ mysqld-auto.cnfに名前が変更され、元のmysqld-auto.cnfファイルは引き続き使用できます。再起動時に、有効な内容のバックアップ ファイルが見つかった場合、サーバーはそのファイルから読み取ります。それ以外の場合、mysqld-auto.cnfファイルが使用され、バックアップファイルは削除されます。この修正によってファイルがディスクにフラッシュされなかったため、引き続きその問題が発生する可能性がありました。このパッチはそれらの操作を追加します。(バグ #34122866)

● -DENABLE_GCOV CMakeオプションを修正しました。(バグ #34113243)

● MySQL 8.0.29で導入されたSENSITIVE_VARIABLES_OBSERVER権限は、アップグレード中にSYSTEM_VARIABLES_ADMIN権限を持つユーザーに付与されるようになりました。以前は、その権限はアップグレード中にどのデータベースユーザーにも付与されませんでした。(バグ #34068378)

● 左結合を使用したビューからの選択は結果を返しませんでした。(バグ #34060289)

● 特定の状況下では、TRUNCATE performance_schema.accountsにより、global_statusでカウントが重複していました。

これは、一部のホストがインストゥルメント化されていない場合に発生しました。例えば、performance_schema_hosts_sizeが低い値に設定されている場合。

(バグ #34057013、バグ #106939)

● 特定の条件下で、EXPLAIN ANALYZEが存在しないイテレータにアクセスしようとする可能性がありました。(バグ #34051681)

参照: この問題はバグ #33905399の回帰です。

● OpenSSL 3でkeyring_ociプラグインをコンパイルするためのサポートが追加されました。(バグ #34043013)

● スレッドの作成と削除のためにパフォーマンススキーマテーブルに記録されたイベントは、クライアント接続が終了した時に削除されるのではなく、サーバーがシャットダウンするまで保持されていました。スレッドの作成と削除は、ユーザーセッションのパフォーマンススキーマインストゥルメンテーションが作成された後に行われるようになり、セッションの終了時にクリーンアップされるようになりました。(バグ #34019988)

● バンドルされているzlibライブラリをzlib 1.2.12にアップグレードしました。また、zlib 1.2.12をサポートされる最小のzlibバージョンにし、WITH_SYSTEM_LIBS CMakeオプションからWITH_ZLIBを削除しました。(バグ #34015600)

● CONNECTION_ID()関数は、セッションの有効期間中一定のままであるセッションIDを返すため、定数関数として扱われていました。これにより、他のセッションで再利用される可能性のあるテーブルにアタッチされたトリガー内でCONNECTION_ID()が使用された時に問題が発生しました。実行のために関数をconstにし、関数が評価される時に実際のセッションIDを返すことによって、これを修正します。(バグ #34009876)

● ソースコードの大部分でcodepellを実行し、コードコメントで報告されたスペルミスを修正しました。(バグ #34006439)

● MySQL Enterprise Encryption openssl_udf関数ライブラリプラグインは、OpenSSL 3 APIを使用するために再実装されました。(バグ #33992115)

● FEDERATEDストレージエンジンコードが改訂され、NULLポインターと変数アクセスの問題が解決されました。(バグ #33962357)

● MySQLのヒストグラムは、バケット外の値に対して0の選択性推定値を返しました。これは、値がサンプリング中に欠落したか、ヒストグラムが古くなったために、値がヒストグラムから欠落している可能性があることを意味していました。これを防ぐために、ヒストグラムによって生成される選択性推定値に0.001の一定の下限を導入します。この下限の選択は、サンプリング中に欠落する可能性が高い値または範囲の選択性に対応しています。

欠損値の選択性について統計的推定ではなく一定の下限を使用することには、単純さと予測可能性の利点があり、古いヒストグラムやバケット内ヒューリスティックによる選択性の過小評価に対する保護が提供されます。

(バグ #33935417)

● 共通テーブル式(CTE)を使用する特定のクエリでは、CTEが実行されることがわかっている場合でも、EXPLAIN ANALYZEはCTEのプロファイリングデータを提供しませんでした。これは、次の条件が満たされた時に発生しました。

・CTEがクエリプランで複数回参照された。
・(EXPLAIN FORMAT=TREEの出力順で)CTEへの最初の参照が実行されなかった。
・後続の参照の少なくとも1つが少なくとも1回実行された。

問題は、CTEへの最初の参照に遭遇した時に、CTEプランが常に出力されることでした。その参照が実行されなかった場合、CTEはそこで実体化されませんでした。したがって、出力するプロファイリングデータはありませんでした。

この問題の修正により、CTEプランが最初に実行された時、つまり実体化された時点で、確実に出力されるようになりました。出力にはプロファイリングデータが含まれます。CTEが実行されない場合、プロファイリングデータがない時、最後の参照でプランが出力されます。(バグ #33905399)

● コマンド mysqld --verbose --helpからの出力は、以前は、プラグインロードオプションがデフォルトでオフになっていても、またはオプションを使用してオフになっていても、オンとして表示していました。出力はプラグインの現在の値を表示するようになりました。(バグ #33870892)

● 現在、サーバーにはcurl (7.83.1) がバンドルされています。EL7のopenssl11などの代替SSLシステムが使用されている場合にのみ、それが使用されます。(バグ #33859507、バグ #34154806)

● -0gおよび-fno-inlineを使用してDebug MySQLバイナリをビルドできるようになりました。(バグ #33855533)

● MySQL 8.0.27 で導入されたFIREWALL_EXEMPT権限は、アップグレード中にSYSTEM_USERを持つユーザーに付与されるようになりました。以前は、この権限はアップグレード中にどのデータベース ユーザーにも付与されませんでした。(バグ #33854409)

● 相関サブクエリが機能インデックスを期待どおりに使用しませんでした。これは、サブクエリ内で使用される外部列参照がサブクエリ実行の定数と見なされず、関数インデックスの考慮がスキップされた場合に発生しました。

サブクエリの実行中に外部列参照を定数と見なすようにすることで、この問題を修正します。(バグ #33851055)

● EL7のopenssl11またはEL8のopenssl3をWITH_SSL Cmakeオプションに渡すことによる、代替のOpenSSLシステムパッケージのサポートを追加しました。LDAPやKerberosなどの認証プラグインは、OpenSSLのこれらの代替バージョンをサポートしていないため、無効になっています。(バグ #33835934)

● テーブルにアクセスしないサブクエリを含むプリペアドステートメントで、サブクエリの評価でエラーが発生し、デバッグビルドでアサートエラーが発生しました。(バグ #33773799)

● 最初の呼び出しの後、一部のストアド関数が正しく実行されませんでした。(バグ #33754993)

● 定数述語の削除後にクエリ式を削除して再帰的な共通テーブル式 (CTE) を使用したクエリを実行する場合、CTE一時テーブルのテーブルオブジェクトの参照カウントがゼロになると、もう一度テーブルを再作成できるはずであると期待されますが、場合によっては、テーブル参照の1つがCTEに添付されているものとして適切に記録されませんでした。(バグ #33725503)

参照:バグ #32962511も参照してください。

● 欠落しているエラーリターンをパーサーに追加しました。(バグ #33725502)

● マテリアライズド派生テーブルの条件プッシュダウンを実装するためにMySQL 8.0.22で行われた作業に関連する、外部参照を使用する条件のプッシュダウンに関する多くの問題が特定され、解決されました。(バグ #33725403、バグ #33725500、バグ #33725508、バグ #33725534、バグ #33725545)

● 共通テーブル式を使用するSELECTに対して生成されたプランには、テーブルの実体化と、実体化されたテーブルでのインデックススキャンが含まれます。temptableエンジンはまだ全てのインデックススキャンメソッドをサポートしているわけではないため、このようなクエリが常に正しく実行されるとは限りません。

他のMySQLエンジンでは、アクセスパスが基本と見なされない場合、実体化アクセスパスには特別な処理があります。temptableの場合、インデックススキャンは基本的なものとは見なされず、未定義の動作につながりました。

この問題は、インデックススキャンアクセスパスを基本と見なし、一時テーブルでインデックススキャンアクセスメソッドを使用しないようにすることで解決されます。(バグ #33700735)

● 新しいデータファイルをInnoDBシステムテーブルスペースに追加した後、INFORMATION_SCHEMA.FILESテーブルのData_free列が更新されませんでした。(バグ #33508534)

● プラグインが既存のシステム変数の名前と重複する名前でシステム変数を登録しようとした場合、既存の静的システム変数が上書きされ、プラグインをアンインストールすると、解放されたメモリへのポインターが残る可能性があります。この問題は修正されました。(バグ #33451101)

● SHOW TABLESおよびSELECT * FROM INFORMATION_SCHEMA.TABLESは、ユーザーが個々のパフォーマンススキーマテーブルのみに対するアクセス権限を持っている場合、パフォーマンススキーマから結果を返しませんでした。(バグ #33283709)

● 最初にプラグインをインストールせずにdata_maskingプラグインに関連する関数を呼び出すと、予定外のサーバーシャットダウンが発生しました。このプラグインに関連する関数は、init関数を呼び出すことによって初期化され、次にUDFメタデータサービスにアクセスしますが、これはデータマスキングプラグインがインストールされている場合にのみ有効です。このような関数を初期化する前にプラグインがインストールされていることを確認し、それらを提供するプラグインがインストールされていない場合は適切なエラーメッセージを返すチェックを追加することで、この問題を修正します。(バグ #33234046)

● 特定の条件下で、サーバーはmax_execution_timeの期限切れまたはKILLステートメントの実行を正しく処理しませんでした。(バグ #33218625)

● 複数のスレッドを使用してサーバーに接続するmysqlslapは、FIDO認証を使用するユーザーアカウントでは実行できませんでした。この問題は、複数のスレッドで認証を実行できるようにするFIDOライブラリの更新によって修正されました。(バグ #33067183)

● メンバーがサービスインフラストラクチャと情報交換している時に、グループレプリケーションでデッドロックが発生する可能性がありました。例えば、参加メンバーが互換性のない設定をチェックし、それが原因でグループを脱退する場合などです。この問題は修正されました。(バグ #32688091)

● セッション中にbinlog_checksumシステム変数に誤った値が設定された場合、ソースからのバイナリログストリームを要求するために同じセッションで実行されたCOM_BINLOG_DUMPコマンドが失敗しました。サーバーは、チェックサムアルゴリズムのセットアッププロセスを開始する前に、指定されたチェックサム値を検証するようになりました。(バグ #32442749)

● スロークエリロギングについて、ドキュメントとは異なり、スロークエリログが有効になっていない限り、Slow_queriesステータス変数は実装されませんでした。(バグ #28268680、バグ #91496)

● プリペイドステートメントは、空の文字列を有効なfloat値として受け入れることができました。これは、8.0.27の動作からのリグレッションを表しています。この修正により、解釈された文字列の長さが空ではなく、(浮動)数値として完全に解釈されていることが明示的にチェックされます。さらに、新しい検証により、次のことが保証されるようになりました。

・全ての数値は、空の文字列と全てスペースの文字列でサポートされています。
・通常の数値だけでなく、先頭と末尾にスペースを含む数値もサポートされています。

 (バグ #107399、バグ #34213338)

参照: この問題はバグ #32213576のリグレッションです。

● MySQL 8.0.29にアップグレードすると、既存の空間インデックスに問題が発生しました。この問題の根本的な原因は、MySQL 8.0.29でバージョン 1.77.0にアップグレードされた同梱のBoostライブラリによって実行される地理的領域の計算方法の変更でした。このような計算が実行される度に、新しいメソッドに対応できるようにすることで、これを修正します。(バグ #107320、バグ #34184111)

参照: この問題はバグ #33353637のリグレッションです。

● プリペイドステートメントの派生テーブルに条件をプッシュする時、派生テーブルにUNIONが含まれている場合はパラメータも含む条件を複製します。実行中にステートメントを再準備する必要がある場合(例えば、指定された値の符号が実際のデータ型の符号と一致しない場合)、パラメータが正しく複製されず、エラーが発生しました。これは、パラメータに指定された値が、リテラルの ? プレースホルダー文字ではなく、再解析用の文字列を出力するために使用されたために発生しました。

このような場合、再解析用のパラメータを出力するフラグ QT_NO_DATA_EXPANSIONを設定します。これを有効にすると、実際の値ではなく、 ? プレースホルダーが出力されます。(バグ #107230、バグ #34148712)

● MacOSでは、-DWITH_BOOSTが設定されていても、潜在的に互換性のないシステムのBoostバージョンが使用される可能性があるため、HomebrewのBoostライブラリ検出ロジックが改善されました。(バグ #107151、バグ #34121866)

参照: この問題はバグ #33769505 のリグレッションです。

● RHEL 7.x では、CPUキャッシュラインサイズをフェッチすると、s390x RHEL 7.xで0が返され、rpl_commit_order_queueとintegrals_lockfree_queueが失敗しました。

(バグ #107081、バグ #34095278)

● 予期しないサーバーの停止の後にmysqlクライアントがサーバーに再接続できなかった場合、完了ハッシュを構築するプロセスで、解放されていないメモリが割り当てられていました。クライアントが再接続に失敗した場合、再接続操作は完了ハッシュを構築しないようになりました。また、クライアントが接続切断された場合、関係するメモリは解放されます。(バグ #106864、バグ #34019571)

● s390xアーキテクチャのサイクルタイマーが追加されました。

(バグ #106824、バグ #33997819)

● 特定のケースでは、サブクエリのWHERE句に等式が含まれている場合、実体化を伴うセミジョインを実行すると、正しくない結果が生じる可能性がありました。このような等価の片側がINまたはNOT INサブクエリである場合など、場合によっては、等価が実体化されたサブクエリにプッシュ ダウンされることも、セミジョインの一部として評価されることもありませんでした。これにより、一部の内部ハッシュ結合でも問題が発生しました。(バグ #106710、バグ #106718、バグ #33952115、バグ #33957233)

参照: バグ #84705、バグ #25466100 も参照してください。

● ( ) IN ((val1, val2), (val3, val4), …)のようなクエリのコンパレータ関数は、間違った結果を返す可能性がありました。(バグ #106567、バグ #33897969)

● SetOsLimitMaxOpenFilesのアサート定義を修正しました。(バグ #106555、バグ #33893197)

● 以前は、LIKEの1番目と2番目の引数の両方に同じ null非許容式が使用された場合、結果は常にtrueであり、最適化によって除外できると想定されていました。ESCAPEが指定されていない場合でも、LIKEはバックスラッシュ(\)をエスケープ文字として扱うため、この仮定は有効ではないことがわかります。これにより、条件がWHERE句ではなくSELECTリストで使用された場合に、異なる結果が生じました。この問題を解決するために、ESCAPE句の有無にかかわらず、LIKEを使用したこの最適化は実行されなくなりました。(バグ #106444、バグ #33852756)

● 一部のケースでは、グローバルトランザクションID(列の値など)以外の引数がGTID_SUBSET()に渡されると、関数は予期されたNULL以外の値を返しました。(バグ #106298、バグ #33793942)

● 述語の左側がNULLの場合、一般的な量化比較述語の評価で問題が発生しました。このような場合、最後の現在行からのサブクエリ評価の値が保存されるため、再評価は必要ありません。ただし、キャッシュされた値(result_for_null_param)は実行間でクリアされないため、次の実行で前の実行の結果を再利用できました。この1つの結果は、サブクエリの実行によって最初にゼロ行がサブクエリから一致した時(ALL述語の場合はTRUEを返す必要がある)、FALSEが予期されていたにもかかわらず、少なくとも1つの行が一致する後続の実行でもTRUEが返されることでした。

この問題を解決するために、実行後のサブクエリ述語のクリーンアップ中に、必ずresult_for_null_paramをクリアするようになりました。(バグ #106164、バグ #37755139)

● --async-clientオプションとシャットダウンコマンドを使用してテストケースを実行すると、mysqltestが予期せず停止しました。(バグ #105797、バグ #33643149)

● MySQLは、選択性の推定を改善するために等高ヒストグラムの使用をサポートしています。列の等高ヒストグラムの各バケットには、ほぼ同じ数の値(行)が含まれている必要があります。バケットを小さく保つことで、エラーを最小限に抑えることができます。

等高ヒストグラムを作成する時に、同じバケットに配置される値が多すぎることがあり、選択性の推定に大きなエラーが発生する可能性がありました。低エラーを保証し、バケットを効率的に使用するためにデータの分布に適応する新しい等高構築アルゴリズムを導入することで、これを修正します。さらに、ヒストグラムバケット内の個別の値の数に対する新しい推定器(Estimator)により、最悪の場合のエラー保証が改善されました。

(バグ #104789、バグ #33302021)

● クライアントプログラムに返される非推奨の警告は、stderrではなくstdoutに送信されました。これは、mysqldumpの場合、警告が含まれていたため、ダンプファイルが機能しなくなったことを意味する可能性がありました。この問題は修正され、警告はstderrに送信されます。(バグ #104769、バグ #33733529)

● チェーンSSL証明書の拡張サポート。(バグ #54158、バグ #27491518)


全ての変更点やバグ修正については、以下のページをご覧ください。
MySQL Community Server 8.0.30 リリースノート(MySQLウェブサイト):
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-30.html


MySQL Editions

MySQL Editions
MySQLのサブスクリプションは、24時間365日体制でお客様をサポートいたします。さらに MySQL Enterprise Edition では、データベース管理者支援ツール MySQL Enterprise Monitor やバックアップツール MySQL Enterprise Backup をご利用いただけます。