2020.10.27

MySQL

MySQL 5.7.32 GA版(リリース日:2020年10月19日)

主な変更点

■ 追加・変更された機能

● ビューのLOCK TABLES権限チェックが改善されました。(バグ #31304432)

■ 主なバグ修正

● InnoDB:内部一時テーブルのクラスター化インデックスを更新したクエリが誤った結果を返しました。クラスタ化インデックスの変更されたページはフラッシュリストに追加されなかったため、変更されたページがバッファプールから削除された時に変更が失われました。(バグ #31560679)

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

● InnoDB:暗号化され圧縮された大きなテーブルでのALTER TABLE ... IMPORT TABLESPACE操作が失敗し、ディスクからの読み取りエラー後にページの解凍に失敗しました。復号化操作では、暗号化中に使用された暗号化ブロックサイズは使用されませんでした。また、暗号化プロセスは圧縮された長さを考慮しませんでしたが、復号化プロセスは圧縮された長さのみでデータを復号化します。(バグ #31313533)

● InnoDB:同時更新操作中に失敗が発生しました。失敗は、無効な以前のレコード値が原因でした。(バグ #31205266、バグ #99286)

● InnoDB:SHOW ENGINE INNODB MUTEXステートメントの処理に使用される関数は、新しいミューテックスを同時に追加する他のスレッドから十分に分離されませんでした。(バグ #31105262)

● InnoDB:バッファー制御ブロック構造(buf_block_t)はバッファプールのサイズを縮小しながら解放され、これはアサーションエラーを引き起こします。このバグの修正は、バグ #20735882/バグ #76343の修正の重要な側面もバックポートし、内部のbuf_block_is_uncompressed()関数をbuf_pointer_is_block_field_instance()関数に置き換えます。buf_block_is_uncompressed()関数があまりにも多くのケースでfalseを返すため、OLTPクエリのスループットに影響を与えました。(バグ #31036301、バグ #31389823)

● InnoDB:START TRANSACTION WITH CONSISTENT SNAPSHOTで開始されたセッションで、範囲クエリが切り捨てられた結果を返しました。インデックス読み取りの開始時に範囲終了フラグがリセットされなかったため、読み取りが中止され、行が欠落していました。(バグ #30950714、バグ #98642)

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

● InnoDB:フルテキストフレーズ検索でアサーションエラーが発生しました。

 (バグ #30933728、バグ #31228694)

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

● InnoDB:大きなテーブルで長時間実行されている統計計算操作が、テーブルの統計へのアクセスを必要とする他の操作をブロックし、それらの操作の失敗を引き起こしました。同時アクセステーブル統計を可能にする新しい統計計算ミューテックスが導入されました。(バグ #30607708)

● InnoDB:2つの接続が同じトランザクションハンドラーオブジェクトを使用しようとしたため、クエリが停止しました。(バグ #30594501)

● レプリケーション:レプリケーションソースサーバーがシャットダウンして再起動すると、そのMEMORYテーブルは空になります。この効果をレプリカに複製するために、ソースが起動後に特定のMEMORYテーブルを初めて使用する時に、バイナリログにその効果のステートメントを書き込むことによってテーブルを空にする必要があることをレプリカに通知するイベントをログに記録します。以前は、これはDELETEステートメントでしたが、現在は、TRUNCATE TABLEステートメントです。レプリカサーバーは、シャットダウンし再起動する時に、このステートメントを独自のバイナリログにも書き込みます。そのステートメントは、バイナリロギング形式がROWに設定されている場合でも常にステートメント形式でログに記録され、サーバーでread_onlyまたはsuper_read_onlyモードが設定されている場合でも書き込まれます。(バグ #29848785、バグ #95496)

● レプリケーション:マルチスレッドレプリカでシステム変数session_track_gtidsがOWN_GTIDに設定されている場合、レプリカのパフォーマンスは時間の経過とともに低下し、マスターより遅れ始めました。その原因は、トランザクションのコミットごとにレプリカのワーカースレッドによって記録されたGTIDの蓄積でした。これにより、ワーカースレッドが新しいスレッドを挿入するのにかかる時間が長くなりました。セッション状態追跡は、マルチスレッドレプリカのワーカースレッドに関して無効になりました。(バグ #29049207、バグ #92964)

● LDAP認証が成功する特定のケースで、サーバーがハングする可能性がありました。(バグ #31661437)

● ブートストラップモードでは、特定のマルチステートメントトランザクションが予期しないサーバー動作を引き起こす可能性がありました。(バグ #31650096)

● 機密性の高いLDAP認証プラグインのシステム変数は、SQLステートメントで取得された時にアスタリスクとして表示されるようになりました。(バグ #31388444、バグ #31391864)

● バグ #81009の修正後、read_onlyまたはsuper_read_onlyが有効になっている場合、パフォーマンススキーマテーブルの切り捨ての権限チェックが制限されすぎました。そのため、適切なテーブル権限を持つユーザーでも切り捨てが失敗しました。(バグ #31080309、バグ #99072)

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

● 一部のINSERTステートメントが正しく処理されませんでした。(バグ #31072198)

● 特定のプリペアドステートメントは、予期しないサーバー終了を引き起こす可能性がありました。(バグ #30943963)

● mysqlpumpオブジェクトの検証には、除外されたデータベースのオブジェクトが含まれていました。(バグ #30819012)

● LDAP認証プラグインがCA検証を誤って実施したため、誤ったCAが使用される可能性がありました。(バグ #30220357)

● sort_buffer_sizeとmax_sort_lengthが、ソートバッファごとに許可されるキーの最大数の内部制限が0に設定される原因となる値に設定されると、ORDER BYクエリが正しく実行されませんでした。(バグ #30175483)

● 全文検索クエリにネストされた引数が多数あると、エラーが発生しました。(バグ #29929684)

● explicit_defaults_for_timestampが無効になっていて、TIMESTAMP NOT NULLとして宣言された生成列にNULLが挿入された場合、サーバーは挿入された値をCURRENT_TIMESTAMPに変換しようとしました。このような挿入は、ER_BAD_NULL_ERRORで拒否されるようになりました。(バグ #29449518)

● SQLレイヤーが一時テーブルで実行される操作のタイプに関する誤った情報をInnoDBに渡した場合、アサーションが発生する可能性がありました。(バグ #22503696)

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

MySQL Editions

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

MySQL Editionsの詳細