2020.06.10

MySQL

MySQL 5.7.30 GA版(リリース日:2020年4月27日)

主な変更点

■ JSON関連

● MySQLに含まれているrapidjsonライブラリは、2020年1月16日のGitHubスナップショットにアップグレードされました。Mac OS Xでスナップショットからビルドする時に発生するコンパイラエラーの修正が追加されました。 (Bug #30898701)

■ パッケージ関連

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

● バンドルされているlibeditライブラリがバージョン3.1にアップグレードされました。

■ 主なバグ修正

● InnoDB:クラスタ化インデックスレコードを削除済みとしてマークし、そのレコードの更新バージョンをクラスタ化インデックスに挿入するrow_upd_clust_rec_by_insert関数は、誤ったn_ext値(外部フィールドの総数)を下位レベルの関数に渡し、アサーションエラーを引き起こしました。 (Bug #30437378)

● InnoDB:非圧縮に設定されたinnodb_buffer_pool_evictデバッグ変数を使用して実行された操作により、アサーションエラーが発生しました。 (Bug #30405531)

● InnoDB:列の追加操作により、アサーションエラーが発生しました。このエラーは、ダングリングポインタが原因でした。 (Bug #29866408)

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

● InnoDB:文字列値を取得する特定のInnoDBシステム変数を更新すると、Valgrindテスト中に無効な読み取りエラーが発生しました。 (Bug #29717909, Bug #95215)

● InnoDB:空間インデックスを持つテーブルに対するinsertステートメントは、タプルの破損が原因でレコードタイプの不一致アサーションを発生させました。 (Bug #29465567)

● InnoDB:UNDOログのレコードサイズを計算する関数は、UNDOログレコードが破損している場合、誤った長さの値を計算し、mallocが失敗する可能性がありました。誤った計算を検出するためにアサーションコードが追加されました。 (Bug #29448406, Bug #82734)

● レプリケーション:機密情報がプレーンテキストで表示されないように、SQLステートメントがバイナリログ用に書き直されている最中に、SHOW PROCESSLISTステートメントがクエリを検査するために使用されると、そのクエリがバイナリログに書き込まれた時に破損する可能性があり、レプリケーションが停止します。クエリの書き換えプロセスはプライベートに保たれるようになり、クエリスレッドは書き直しが完了した時にのみ更新されます。 (Bug #30569003, Bug #97531, Bug #30654405)

● レプリケーション:GRANTステートメントまたはREVOKEステートメントが部分的にしか実行されない場合、インシデントイベントがバイナリログに記録されます。これは、手動でスレーブをマスターと調整できるように、レプリケーションスレーブのアプライアスレッドを停止させます。以前は、失敗したGRANTステートメントまたはREVOKEステートメントがセッションで実行された最初のステートメントである場合、GTIDがインシデントイベントに全く適用されず(キャッシュマネージャーがまだセッションに存在しないため)、レプリケーションスレーブでエラーが発生しました。また、GRANTステートメントがユーザーを作成したが、その後権限が誤って指定されていたために失敗したという状況では、インシデントイベントはログに記録されず、再びレプリケーションスレーブでエラーが発生しました。これらの問題は両方とも修正されました。 (Bug #30566518, Bug #30324661)

● レプリケーション:マスターからレプリケーションスレーブが計画外に切断された場合、マスターのダンプスレッドへの参照が登録済みスレーブのリストから削除されないことがありました。その場合、スレーブのリストにアクセスしたステートメントは失敗しました。この問題は修正されました。 (Bug #29915479)

● レプリケーション:binlog_format=MIXED、tx_isolation=READ-COMMITTED、およびbinlog_row_image=FULLの設定を使用して、トランザクションストレージエンジンを含むINSERT ... SELECTクエリは、バイナリログに書き込まれる行イメージからnull値の列をすべて削除しました。これは、INSERT ... SELECTステートメントを処理する時に、バイナリログ形式が選択される前に、列が挿入用にマークされたことが原因で、発生しました。この問題は修正されました。 (Bug #29110804, Bug #93423)

● libmysqlclient.so.18内のシンボルの無制限のエクスポートに関する問題を回避するために、-libs-compat RPMパッケージがシステムzlibでビルドされるようになりました。 (Bug #30722389, Bug #98130)

● イベントスケジューラでメモリリークが発生しました。 (Bug #30628268)

● 特定の状況下では、memcachedコマンドにより、初期化されていないメモリバッファが読み取られ、エラーが発生する可能性がありました。 (Bug #30592346)

● ALTER USERを使用してアカウントのMAX_USER_CONNECTIONSの値をリセットしても、現在のアカウント接続が存在する場合はすべて終了するまで有効になりませんでした。 (Bug #30578217, Bug #97735)

● 列の値が非決定的関数への入力として使用されている条件を含む実体化されたサブクエリは、誤った結果を生成しました。 (Bug #30368937)

● CONCAT()およびCONCAT_WS()は、部分文字列の処理が正しくないために、まれに誤った結果を生成する可能性がありました。 (Bug #30350206, Bug #96950)

● イベントを削除することにより、イベントのスケジューリングが妨げられる可能性がありました。 (Bug #30301356, Bug #96849)

● クライアントプログラムは、認証プラグインをそのプラグインライブラリの外部からロードする可能性がありました。 (Bug #30191834, Bug #30644258)

● サーバーは、ORDER BYを使用するサブクエリがクエリの1つに含まれるUNIONを正しく処理しませんでした。 (Bug #29952565)

● 述語に科学表記法の数値が含まれるWHERE句を含むクエリは、正しく処理されませんでした。

 さらに、文字列として指定された特定の整数を挿入しようとすると、文字列から整数への変換が上手くいかなかった時にサーバーが終了しました。 (Bug #29723340, Bug #30441969)

● 以前は、mysqlpumpはオプションファイルから[mysql_dump]グループおよび[client]グループを読み取りました。現在、mysqlpumpは[mysqlpump]グループを追加で読み取るようになりました。[mysql_dump]グループはまだ受け入れられていますが、推奨されません。 (Bug #24733245, Bug #83144)

● 他の2つのテーブルを結合した派生テーブルに結合されたテーブルを更新するマルチテーブルUPDATEステートメントは、MySQL 5.6で行われたように適切に最適化されず、派生テーブルを作成するサブクエリでSTRAIGHT_JOINが使用されたかのように扱われました。 (Bug #97418, Bug #30488700)

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

MySQL Editions

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

MySQL Editionsの詳細