監査ログ関連
- MySQL Enterprise Auditは、以前は、フィルターおよびユーザーアカウントデータの永続的なストレージにmysqlシステムデータベース内のテーブルを使用していました。柔軟性を高めるために、新しいaudit_log_databaseサーバーシステム変数により、サーバーの起動時にグローバルスキーマ名前空間で他のデータベースを指定できるようになりました。mysqlシステムデータベースは、テーブルストレージのデフォルト設定です。(WL#15500)
コンパイル関連
- Microsoft Windows: Visual Studio 2017以降のMSVCコード分析サポートが追加されました。これにより、現在のディレクトリとそのサブディレクトリでこの分析を有効または無効にする新しいMSVC_CPPCHECK(デフォルトはOFF)CMakeオプションが追加されます。(バグ #34828882)
- MySQLがGNUコンパイラまたはclangでビルドされる場合、curlバージョンが 7.86よりも大きい場合、curl非推奨の警告が-Wno-errorにダウングレードされました。(バグ #35111625)
- macOSで、必要に応じて共有システムライブラリとリンクするためにcurlインターフェイスをリンクする時に、-framework CoreFoundationと-framework SystemConfigurationを追加しました。(バグ #35104962)
- MY_INCLUDE_SYSTEM_DIRECTORIESマクロをライブラリインターフェイスに置き換えました。(バグ #35018072、バグ #35028089、バグ #35072295)
- 代替リンカーをサポートするようにCMakeコードを改善しました。(バグ #34963568)
- 非推奨のDocs/mysql.infoファイルをビルドシステムから削除しました。(バグ #34960126)
- 最上位の.clang-tidyファイルと関連する.clang.tidyファイルをstrings/ディレクトリおよびmysys/ディレクトリに追加しました。また、compdbサポートを有効にして、ヘッダーファイルのclang-tidyの使用を有効にしました。(バグ #34917075)
- uca-dumpやuctypedumpなどの機能のために、メンテナンスされていないか使用されていないC++ソースファイルをいくつか削除しました。(バグ #34898978)
- コマンドラインでコンパイルする時にGCCおよびClangのカラー化されたコンパイラ出力を有効にするためのCMakeビルドオプションが追加されました。有効にするためには、-DFORCE_COLORED_OUTPUT=1をCMakeに渡します。(バグ #34897192)
- Windowsでは、サードパーティライブラリに関連する.dllファイルが見つかった場合は、それらの.pdbファイルもインストールします。(バグ #34863555)
- Enterprise Linux 8ビルドおよびEnterprise Linux 9ビルドは、GCC 11の代わりにGCC 12を使用するようになりました。(バグ #34829151)
- -static-libgcc -static-libstdc++を使用してビルドすると、必要に応じて、静的ライブラリを使用してバンドルされたprotobufもビルドされるようになりました。(バグ #110216、バグ #35123848)
コンポーネント関連
- INSTALL COMPONENTには、1つ以上のコンポーネントのインストール中にコンポーネントシステム変数の値を設定するSET句が含まれるようになりました。新しい句は、変数値を割り当てる他の方法に関連する不便さと制限を軽減します。(WL #10916)
非推奨と削除関連
-
- ユーザー定義の照合は非推奨になりました。次のいずれかによって、警告がログに書き込まれるようになりました:
- SQLステートメントでCOLLATEの後にユーザー定義の照合の名前が続く場合
- collation_server、collation_database、またはcollation_connectionの値としてのユーザー定義照合の名前の使用
- ユーザー定義の照合は非推奨になりました。次のいずれかによって、警告がログに書き込まれるようになりました:
ユーザー定義の照合のサポートは、MySQLの将来のバージョンでは削除される予定です。(WL #14277)
MySQL Enterprise関連
-
- MySQL Enterprise Editionは、MySQL 8.0.13で導入されたプラグインライブラリに基づくのではなく、コンポーネントに基づくデータマスキング機能および匿名化機能を提供するようになりました。コンポーネントの実装により、ディクショナリを管理するための専用の権限が提供され、次のものが含まれる特定のタイプのリストが拡張されます:
- Canada Social Insurance Number(カナダ社会保険番号)
- United Kingdom National Insurance Number(英国国民保険番号)
- International Bank Account Number(国際銀行口座番号)
- Universally Unique Identifier (UUID)
- MySQL Enterprise Editionは、MySQL 8.0.13で導入されたプラグインライブラリに基づくのではなく、コンポーネントに基づくデータマスキング機能および匿名化機能を提供するようになりました。コンポーネントの実装により、ディクショナリを管理するための専用の権限が提供され、次のものが含まれる特定のタイプのリストが拡張されます:
改善されたテーブルベースのディクショナリレジストリは、プラグインによって使用されるファイルベースのディクショナリに取って代わります。既存のプラグインユーザーは、新しいMySQL Enterpriseのデータマスキングコンポーネントと匿名化コンポーネントをインストールする前に、サーバーサイドプラグインをアンインストールし、そのロード可能な機能を削除する必要があります。(バグ #33851601、WL #12641)
パフォーマンススキーマ関連
-
- このリリースでは、Performance Schema Server Telemetry Tracesサービスが追加されました。SQLステートメントの有効期間に関連する通知を取得する方法をプラグインとコンポーネントに提供するインターフェイスです。
以下が追加されました:- ステータス変数 Telemetry_traces_supported。サーバーテレメトリトレースがサポートされているかどうか。(Boolean値)
- TELEMETRY_ACTIVE列がスレッドテーブルに追加されました。スレッドにアクティブなテレメトリセッションがアタッチされているかどうかを示します。
- このリリースでは、Performance Schema Server Telemetry Tracesサービスが追加されました。SQLステートメントの有効期間に関連する通知を取得する方法をプラグインとコンポーネントに提供するインターフェイスです。
(WL #15059)
追加・変更された機能
- 重要な変更:OpenSSLライブラリがバンドルされているプラットフォームでは、リンクされたMySQLサーバー用のOpenSSLライブラリがバージョン 1.1.1tに更新されました。OpenSSLバージョン 1.1.1tで修正された問題は、https://www.openssl.org/news/cl111.txtで説明されています。(バグ #35092429)
- レプリケーション:MySQL製品で使用されている古い用語を変更するための進行中の作業の一環として、“master”、“slave”、“MTS”という用語は、MySQLレプリケーションに関連するエラーメッセージで、それぞれ“source”、“replica”、“MTA”に置き換えられました。これには、messages_to_clients.txtとmessages_to_error_log.txtに記載されている、レプリケーションに関連する全てのエラーメッセージが含まれます。現在のタスクは、他のコンテキストで使用されるメッセージのこの置換を実行しません。
(バグ #108422、バグ #34594819、WL #14191) - レプリケーション:mysqlbinlog --start-positionは、18446744073709551615までの値を受け入れるようになりました。ただし、 --read-from-remote-serverまたは--read-from-remote-sourceオプションも使用されている場合は、最大値は4294967295です。(バグ #77818、バグ #21498994)
- システムのcurlライブラリにリンクするのではなく、curlを含むバイナリパッケージは、curl 7.88.1を使用するようにアップグレードされました。(バグ #34828111)
- 生成された列をDEFAULT(col_name)で使用して名前付き列のデフォルト値を指定することは許可されておらず、エラーメッセージが出力されるようになりました。(バグ #34463652、バグ #34369580)
主なバグ修正
- NDB Cluster:同時スキーマ操作を繰り返し実行している間にNDBディクショナリからテーブルを開くと発生する可能性のある一時的なエラーが再試行されませんでした。(バグ #34843889)
- NDB Cluster:反復中、順序付きインデックススキャンは、同時にスキャンされる順序付けられたインデックスフラグメント内のカーソル位置を保持します。順序付けられたインデックスフラグメントは、DMLトランザクションをコミットした結果として変更され、調整されます。これには、ツリー内でスキャンカーソルを移動することが必要になる場合があります。クエリスレッドを設定して(AutomaticThreadConfigを1に設定) 実行すると、複数のスレッドが同じインデックスフラグメントツリー構造にアクセスでき、複数のスレッドのスキャンがカーソルを同じ構造に存在させることができます。
現在の問題は、全てのスキャンカーソルがインデックスフラグメントを所有するLDMスレッドに属しているDML操作をコミットする時にスキャンカーソルを移動するためのロジックで想定されているために発生しました。これは、そのようなフラグメントがクエリスレッドに属する可能性を考慮していませんでした。(バグ #33379702)
参照:バグ #32257063も参照してください。 - InnoDB:デッドコードの削除。(バグ #35036850、バグ #109873)
- InnoDB:innodb_doublewriteに関連するエラーメッセージがエラーログに移動されました。(バグ #34883045、バグ #109330)
- InnoDB:オンラインDDL操作が範囲外のメモリにアクセスするのを防ぎます。(バグ #34750489、バグ #108925)
- InnoDB:ALTER TABLE ... AUTO_INCREMENTは、MAX + 1未満に設定でき、MAX + 1に強制されませんでした。(バグ #33419246、バグ #105092)
- InnoDB:変数のオーバーフローが原因で、Innodb_data_pending_fsyncsが非常に高い不正確な値を示すことがありました。(バグ #30133150)
- パーティショニング:パーティショニングされたテーブルに対する一部のIN()クエリは、常に正しく処理されるわけではありませんでした。(バグ #34801284)
参照:この問題はバグ #32311183のリグレッションです。 - パーティショニング:INDEX_MERGEオプティマイザーヒントを使用するクエリは、全てのケースで正しく処理されませんでした。(バグ #34797257)
- レプリケーション:XIDにヌルバイトが含まれているXAトランザクションを回復できませんでした。(バグ #34918985)
- レプリケーション:binlog_order_commitsが1に等しく設定されている場合、任意の2つのトランザクションとコミットフェーズの任意のサブステップで、最初にバイナリログに書き込まれたトランザクションが、予想どおり、常に最初にサブステップを実行するとは限りませんでした。(バグ #34703698)
- レプリケーション:バイナリログの回復プロセスは、考えられる全てのエラー状態を報告しませんでした。(バグ #33658850)
- レプリケーション:CHANGE REPLICATION SOURCE TO SOURCE_CONNECTION_AUTO_FAILOVER=1に続いて、フェイルオーバーにより、ログに誤解を招くような警告が多数生成され、それは、実際にはそのようなフェイルオーバーに予想される条件であったにもかかわらず、問題が発生したことを暗示していました。これらのログメッセージは適宜更新されています。(バグ #32135376)
- レプリケーション:トランザクションが失敗すると、副作用として、レプリケーションデータリポジトリに関連する余分なエラーメッセージがログに書き込まれました。このような場合、失敗したトランザクションの問題やその原因に直接関係のないエラーメッセージを非表示にします。(バグ #19820134)
- レプリケーション:binlog_order_commitsをOFFに設定すると、次のバイナリログファイルのPrevious_gtidsイベントでGTIDが失われる可能性がありました。
(バグ #109485、バグ #34930969) - レプリケーション:ER_RPL_REPLICA_ERROR_RUNNING_QUERYのエラーメッセージテキストで提案されているSQLステートメントを修正しました。
(バグ #109154、バグ #34822612) - レプリケーション:ハッシュスキャンは、変更のハッシュをビルドし、ターゲットテーブルまたはインデックスをスキャンして、一致する変更を現在のエントリに適用します。ビルドフェーズでは、変更前のイメージのみを使用し、変更後のイメージはスキップします。場合によっては、生成された列が(スキップされた)変更後イメージに対して計算され、レプリケーションエラーが発生したため、問題が発生しました。これは、ハッシュスキャンなどのシークのみの呼び出しで生成された列を計算しないことで修正されました。
(バグ #107366、バグ #34198907) - レプリケーション:特定のまれなケースでは、あるセッションでgtid_mode=OFFを設定することができましたが、別のセッションは、この2番目のセッションでユーザーがWAIT_FOR_EXECUTED_GTID_SET()を発行した後、最初のセッションからの次のGTIDセットをまだ待っていました。これにより、関数が戻るのを無期限に待機する2番目のセッションが発生する可能性がありました。(バグ #99921、バグ #31505993)
- グループレプリケーション:パフォーマンス スキーマのreplication_group_communication_informationテーブルとreplication_group_member_statsテーブルに同時にアクセスすると、後続のグループレプリケーション操作がハングすることがありました。(バグ #34870181)
- グループレプリケーション:特定のケースでは、グループレプリケーションセカンダリノードが、リレーログのパージ中に予期せずシャットダウンしました。(バグ #34397106)
- グループレプリケーション:グループレプリケーションプラグインをシャットダウンする時に、関連するイベントがエラーログに報告される順序が混乱を招くことがありました。疑問を取り除くために、「Plugin group_replication reported: 'Plugin 'group_replication' has been stopped.」が実際にはシャットダウンに関連する最後のログメッセージであり、プラグインのシャットダウンに関連する他の全てのイベントがログに記録された場合にのみ書き込まれるようにしました。(バグ #109345、バグ #34887491)
- Microsoft Windows:WindowsクライアントホストでFIDOデバイスが見つからない場合、認証プロセス中にauthentication_fido_clientプラグインが応答を停止しました。(バグ #34918044)
- 特定のケースでは、CONVERT(utf8mb3_column USING UTF16)がエラー Cannot convert string '\x--...' from binary to utf16.で拒否されました。(バグ #35129361)
- 文字列タイプの列で2つのテーブルを結合し、1つのテーブルの列に一時的なリテラルと比較する追加の述語がある場合、定数の伝播により、文字列を比較する時に文字列セマンティクスではなく一時的なセマンティクスを使用するように、結合条件が誤って変更されました。これにより、結合から誤った結果が返されました。(バグ #35115909)
- プリペアドステートメントでmysql_reset_connection() C API関数を呼び出した後に返されるエラーメッセージは、関数名を正しく識別しませんでした。(バグ #35107280)
- ウィンドウ関数の問題に対する以前の修正でのリグレッションを修正しました。
(バグ #35061924)
参照:この問題はバグ #34572136 のリグレッションです。 - 変換でサブクエリを置き換える場合、特定のクエリブロックにサブクエリが含まれているかどうかを示す内部フラグ(PROP_SUBQUERY)がその後更新されませんでした。(バグ #35060365)
- クライアントが文字セットを許可されていないクライアント文字セット(ucs2、utf16、utf16le、または、utf32)に設定すると、クライアントが認証プラグインを使用した時に予期しない動作が発生する可能性がありました。(バグ #35054579)
- 平均行数が1未満の場合、EXPLAIN ANALYZEは0を表示しました。これを修正するために、EXPLAIN ANALYZEおよびEXPLAIN FORMAT=TREEの出力で、0.001~999999.5の範囲の数値が10進数として出力されるように、数値をフォーマットするようになりました。そして、この範囲外の数値は、工学表記を使用して出力されます(例:1.23e+9、934e-6)。さらに、末尾のゼロは出力されなくなり、1e-12未満の数値は0として出力されます。
これにより、数値の値に関係なく一貫した精度が確保され、読みやすさが向上すると同時に、丸め誤差が最小限に抑えられます。(バグ #34990948) - NTILE()関数は、全ての場合で正しく機能しませんでした。(バグ #34986665)
- ビューの一部の結合が正しく実行されませんでした。(バグ #34985359)
- サブクエリに重複した述語が含まれている場合、相関スカラーサブクエリを派生テーブルに変換すると、InnoDBテーブルで誤った結果が生じていました。この問題の影響を受ける可能性のあるクエリの例を次に示します:
SELECT * FROM t1
WHERE (
SELECT t2.a FROM t2
WHERE t2.a = t1.a AND t2.a = t1.a
) > 0;
(バグ #34973220) - SPACE()関数で問題を引き起こす可能性があるsql/item_strfunc.ccのアサートを修正しました。(バグ #34962821)
- LPAD()またはRPAD()への長さ引数としてROW_COUNT()を使用すると、期待どおりに動作しませんでした。(バグ #34961236)
- ORDER BY句にCASE関数を含む式を持つウィンドウ関数を含むクエリは、サーバーの終了につながる可能性がありました。(バグ #34933045)
- 以前の問題の修正により、HAVING句を最適化する時にデバッグビルドにアサーションが導入されました。(バグ #34923792)
参照:この問題はバグ #33725415のリグレッションです。 - mysqld_multiを使用する場合、"--password=*****"として"--password"の使用法を隠すシステムは、"--password"として"--password-history"および"--password-require-current"の定義にも一致します。しかし、代わりに"--password="を明示的にチェックするようになりました。(バグ #34918740)
- 一部のケースでは、mysql_bind_param() C API関数を呼び出すと、サーバーが応答しなくなる可能性がありました。(バグ #34869076)
- authentication_oci_clientプラグインは、エントリのいずれかにスペースで区切られた等号文字が含まれている場合、有効な設定ファイルを開くことができませんでした(例えば、key_file = /home/user/.oci/oci_api_key.pem)。現在、'key=value'と'key = value'の両方のエントリ形式がサポートされています。(バグ #34864078)
- INTERSECTまたはEXCEPT操作の結果が別のテーブルと結合されると、誤った結果が返されました。この問題は、DISTINCTまたはALLのいずれかで使用された時のような場合に、これらの操作に影響を与えました。(バグ #34843764)
- ビュークエリを準備する時、その操作は(データディクショナリに格納されている文字セットではなく)システム文字セットを使用し、無効な文字列エラーを報告しました。(バグ #34800905)
- ビューを含む派生テーブルを操作するプリペアドステートメントは、エラー後にテーブルを再度開くためのコードの問題により、予期せず停止する可能性がありました。(バグ #34798403)
- デバッグビルドのRANDOM_BYTES()関数によって特定のケースで発生するアサーションを削除しました。(バグ #34781507)
- 永続化された変数が起動時に設定される方法に問題があり、特定の変数が永続化された値に正しく設定されませんでした。(バグ #34751419)
- MAKETIME()関数は、全ての場合で正しく実行されませんでした。(バグ #34745241)
- 複数の引数を持つ一部の関数は、期待される結果を生成しませんでした。(バグ #34741801)
- テーブルが使用され、クエリブロック自体がLIMITまたはORDER BYを持たない、括弧で囲まれたクエリブロックの外側のORDER BYでテーブル参照を行うと、エラーが発生しました。(バグ #34704011)
参照:この問題はバグ #103954、バグ #32980249のリグレッションです。 - ON句の一部として不可能な条件を持つ左結合は、MySQL 5.7のように最適化されませんでした。そのため、MySQL 8.0では、クエリは、不可能な条件がある場合よりも、不可能な条件がない場合の方が速く実行されました。不可能な条件を含むこのようなクエリの例は、SELECT * FROM t1 JOIN t2 ON t1.c1=t2.c1 AND 1=2です。(バグ #34668756)
- ユーザー定義関数が、外側のクエリブロックにマージされた派生テーブルの一部であった場合、または半結合に変換されたサブクエリの一部であった場合、このUDFが決定論的であるかどうか(またはそうでないか)の情報が処理中に失われました。(バグ #34666531)
- JSONログが有効で、監査ログフィルター定義でイベントサブクラスが指定されていると、ログに記録されたイベントの末尾に空の項目("" : { })が追加されました。(バグ #34659904)
- 一部のサブクエリが正しく実行されませんでした。(バグ #34616553)
- SELECTクエリのasymmetric_encrypt()コンポーネント関数が復号化するNULLフィールドに遭遇した後、他の非NULL暗号化フィールドに対してNULL値を返す可能性がありました。(バグ #34598912)
- 監査ログプラグインをアンインストールした後、サーバーが正常にシャットダウンされない場合がありました。(バグ #34594035)
- 特定のアンチジョインがサーバーによって正しく処理されませんでした。(バグ #34370673)
参照:この問題はバグ #30573446のリグレッションです。 - MySQL 5.7のオプティマイザーが、行をフィルタリングするためのインデックスに2つの選択肢(1つはプライマリ、もう1つはセカンダリ)がある場合、範囲スキャンはより多くのキー部分を使用するため、セカンダリインデックスで範囲スキャンを選択します。MySQL 8.0はこのロジックを使用せず、代わりにプライマリインデックスを選択して、WHERE句のフィルタリングで行をフィルタリングしました。このような場合、LIMITが存在するため、またデータ分散の性質上、プライマリキーの使用は適していません。定数の削除により、順序の解決中にセカンダリインデックスが考慮されませんでした。これにより、同じクエリに対してMySQL 5.7とMySQL 8.0でクエリプランが大幅に異なりました。
MySQL 8.0では、クエリが定数最適化されている場合にのみorder-by評価中にインデックスの定数キー部分をスキップすることでこの問題を解決しました。これはこの時には実行できますが、LIMIT分析中は実行できません。(バグ #34291261) - MySQLデータディクショナリは、失敗したse_private_id値(見つからないID)のルックアップをキャッシュします。これにより、InnoDBがこれらのIDを再利用しないという事実に依存して、InnoDB固有のコードの実行が高速化されます。この仮定は、このキャッシュを使用しないことで以前にこの問題が解決されたNDBなど、他のストレージエンジンには必ずしも当てはまりません。
NDBに対して行われた以前の修正を拡張して、テーブルがInnoDBストレージエンジンを使用する場合にのみキャッシュルックアップが使用されるようにしました。(バグ #34145006)
参照:バグ #33824058も参照してください。 - DENSE_RANK()を使用した一部のクエリで予期しない結果が見られました。WITH ROLLUPが追加されている可能性があります。(バグ #34099408)
- ROLLUP処理を再実装するために以前に行われた作業に続くsql/sql_tmp_table.ccで発生したアサートを修正しました。(バグ #33830659)
参照:この問題はバグ #30969045のリグレッションです。 - テーブルを使用しない一部のCTEは、常に正しく処理されるとは限りませんでした。(バグ #33725542)
参照:この問題はバグ #27062031のリグレッションです。 - クエリのORDER BYリストにのみ存在するウィンドウ関数呼び出しのウィンドウ フレームから行にアクセスすると、エラーが発生しました。(バグ #33069747)
- ORDER BY列と共に使用されるPERCENT_RANK()が正しい結果を返しませんでした(バグ #33064174)
参照:この問題はバグ #27484133のリグレッションです。 - --exclude-tablesおよび--include-tables mysqlpumpオプションは、ビューを処理しませんでした。(バグ #21303549)
- MySQL systemdサービスユニット設定をAfter=network-online.targetからWants=network-online.targetに変更して、設定済みの全てのネットワークデバイスが利用可能であり、サービスが開始される前にIPアドレスが割り当てられるようにしました。(バグ #109996、バグ #35068274)
- AVG(...) OVER (ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING)が正しい結果を返しませんでした。(バグ #109725、バグ #35013880)
参照:この問題はバグ #108008、バグ #34431996のリグレッションです。 - SELECT 1 FROM t1 WHERE NOT EXISTS (VALUES ROW(1), ROW(2))形式のクエリは、subquery_to_derivedオプティマイザスイッチが有効になっている時に、デバッグビルドでアサートを引き起こしました。(バグ #109723、バグ #35014318)
参照:バグ #108910、バグ #34746261も参照してください。 - mysqlimportは、--deleteオプションと共に使用された場合、予約語のテーブル名をエスケープしませんでした。(バグ #109711、バグ #34999015)
- 派生テーブルにプッシュダウンする条件をクローン化する場合、条件を表す文字列内の文字は、128(ASCIIサブセット)未満の値に対してのみ正しくutfmb4に変換され、ASCIIサブセット外のコードポイントは無効な文字に変換されました。これにより、結果の文字列が無効になります。UNIONを使用しない派生テーブルでは、これにより、派生テーブルの列名がASCIIサブセット外の文字を使用し、WHERE条件で使用された時に問題が発生しました。UNIONを使用した派生テーブルでは、ASCIIサブセット外の文字がWHERE条件に存在すると問題が発生しました。
このような場合に条件を表すために使用される文字列を接続文字セットに初期化することで、これらの問題を修正します。(バグ #109699、バグ #34996488) - mysqldump バージョン 8.0.32で--single-transactionを使用するには、RELOADまたはFLUSH_TABLES権限のいずれかが必要でした。この要件は、gtid_mode=ON(デフォルト OFF)と--set-gtid-purged = ON|AUTO(デフォルト AUTO)の両方の場合にのみ適用されるようになりました。(バグ #109685、バグ #109701、バグ #34993824、バグ #34998910、バグ #35020512)
参照:この問題はバグ #105761、バグ #33630199のリグレッションです。 - eq_refアクセスを使用する多くの結合は、以前のバージョンほどうまく機能しませんでした。この問題は、MySQL 8.0.29で最初に報告されました。(バグ #109631、バグ #34891365)
- sha256_scramble_generator.ccおよびsha2_password_common.ccのスクランブルジェネレーターアルゴリズムの内部ドキュメントに存在する多くの問題を修正しました。
(バグ #109576、バグ #34967141) - CREATE USER IF NOT EXISTSは、ユーザーが既に存在し、パスワードが更新されていない場合でも、パスワード履歴エントリを追加しました。これにより、後続のALTER USERステートメントが拒否されました。(バグ #109415、バグ #34906592)
- ハッシュ外部結合は、非パディング照合を使用する10進数のゼロまたは空の文字列とNULLを誤って一致させ、誤った結果をもたらすことがありました。(バグ #109211、バグ #34837464)
参照:この問題はバグ #33794977のリグレッションです。 - ALTER INSTANCE RELOAD TLSによって内部的に使用されるオブジェクトは、リーダーの数が0に達するまで解放されませんでした。これは、リーダーの数がかなり頻繁に0に達する必要があるという前提の下にあります。SSLハンドシェイク中に保持される読み取りロックは、一般に、ネットワーク呼び出しを伴う高コストな操作であるため、クライアントとサーバー間のラウンドトリップに非常に長い時間がかかる場合に、ロックは比較的長い時間保持されました。これは、このオブジェクトの値を変更し、十分な数の着信SSL接続が行われた場合、妥当な時間内にリーダーの数が0に達しない可能性があり、ロックが解放されるまでスレッドがCPUを100%使用してロックを保持したままになることを意味します。
このオブジェクトへのポインターを新しい値に設定した後、古いオブジェクトを解放する前に待機を追加することで、これを修正します。
(バグ #107567、バグ #34284186) - mysqldumpまたはmysqlpumpがフィールドのデフォルト値をUTF-8に変換できなかった場合(例えば、フィールドのタイプがBINARYで、デフォルト値が有効なUTF-8と一致しなかった場合)、その操作により、インポートできない結果が生成されました。さらに、--hex-blobオプションを使用しても問題は解決しませんでした。現在は、デフォルト値をシステム文字セットに変換します。これが失敗した場合、サーバーは人間が判読できるように、代わりに16進数として値を送信します。(バグ #104840、バグ #33322551)
- C API(libmysqlclient)クライアントライブラリを使用した接続は、FUTURE暗号化ポリシーで失敗する可能性がありました。(バグ #104778、バグ #33316709)
- 共有されたマテリアライゼーションを使用する共通テーブル式の一時テーブルをクローン化する際に、クローン化された一時テーブルがハッシュ重複排除を使用しているとしてマークされず、誤った結果につながりました。クローン化された一時テーブルのハッシュフィールドを正しく設定し、非表示フィールドの数を更新してこれを考慮に入れるようにしました。(バグ #102251、バグ #32383712)
参照:バグ #103052、バグ #32659629も参照してください。 - CREATE EVENTとALTER EVENTは、(DO句以外で)それらに渡された全ての値が実際に値をチェックせずにスカラーとして解決されると想定していました。これにより、そのような値が実際に行になるとアサーションが発生しました。
そのようなアイテムを解決する時に列数の明示的なチェックを実行し、スカラー値ではなく行を生成するとエラーを報告するようになりました。(バグ #57552、バグ #11764690) - 基になるフィールドが定数であるビュー参照は、参照が外部結合の内部テーブルの一部である場合、定数としてマークされません。条件を派生テーブルにプッシュダウンすると、参照が取り除かれ、基になるフィールドのみがクローン化され、それが定数になり、誤った結果につながることが判明しました。
この問題を解決するために、条件によって使用されるテーブルが派生テーブルと一致するか、または定数式であるかを最初に確認するチェックを追加することにより、そのような条件を派生テーブルにプッシュダウンしないようにします。これらのいずれかである場合にのみ、実際に条件をプッシュダウンします。(バグ #34661、バグ #11747971)
全ての変更点やバグ修正については、以下のページをご覧ください。
MySQL Community Server 8.0.33 リリースノート(MySQLウェブサイト):
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-33.html
MySQL Editions
MySQLのサブスクリプションは、24時間365日体制でお客様をサポートいたします。さらに MySQL Enterprise Edition では、データベース管理者支援ツール MySQL Enterprise Monitor やバックアップツール MySQL Enterprise Backup をご利用いただけます。