2019.10.30

MySQL

MySQL 5.7.28 GA版(リリース日:2019年10月14日)

主な変更点

■ 設定関連

● OpenSSL 1.1.1を使用してMySQL 5.7をコンパイルできるようになり、OpenSSL 1.0.2が2019年末にサポート終了ステータスに達した場合でも、OpenSSLに対するMySQL 5.7のコンパイルサポートが有効になります。

● すべてのMySQL 5.7ビルドがOpenSSLを使用するようになりました。MySQLは、SSLライブラリとしてyaSSLの使用をサポートしなくなり、ソースディストリビューションにはyaSSLがもう含まれていません。

 WITH_SSL CMakeオプションは、有効な値としてbundled(yaSSLを使用)を許可しなくなり、デフォルトのオプション値がbundledからsystem(ホストシステムにインストールされたバージョンのOpenSSLを使用)に変更されました。

■ sysスキーマ関連

● sys.schema_unused_indexesビューは、現在は、ユニークなインデックスを除外します。 (Bug #24798995, Bug #83257)

● sys.ps_is_consumer_enabled()関数は、引数が不明なNULLではないコンシューマ名である場合、NULLを返すのではなくエラーを生成するようになりました。 (Bug #24760317)

● 以前は、sysスキーマのソースは別のGitリポジトリで管理されていました。sysスキーマのソースは、現在は、MySQLソースディストリビューションに含まれ、その中で管理されます(scripts/sys_schemaの下)。

 sys.versionビューは非推奨になり、将来のMySQLバージョンで削除される予定です。影響を受けるアプリケーションは、代わりに代替のものを使用するように調整する必要があります。例えば、MySQLサーバーのバージョンを取得するためには、VERSION()関数を使用する。

■ 主なバグ修正

● InnoDB:MyISAMテーブルでのALTER TABLE ... ENCRYPTION = 'Y'操作は、ストレージエンジンが暗号化をサポートしていないことを示すエラーの発生に失敗しました。INPLACEアルゴリズムは、.frmファイルのメタデータを更新する前に暗号化サポートをチェックしませんでした。この問題に対処するために、暗号化サポートフラグが追加されました。ALTER TABLE ... ENCRYPTION = 'Y'操作は、ストレージエンジンが暗号化をサポートしていない場合、フラグをチェックし、エラーを報告するようになりました。 (Bug #29543447)

● InnoDB:マークされた行の削除は、部分的なロールバックが完了する前に外部読み取りロックを取得できました。外部読み取りロックにより、部分的なロールバック中に暗黙的なロックから明示的なロックへの変換が妨げられ、アサーションエラーが発生しました。 (Bug #29195848)

● InnoDB:同時挿入で長時間実行されているALTER TABLE ... ADD INDEX操作により、セマフォの待機が発生しました。 (Bug #29008298)

● レプリケーション:SQLスレッドがまだ停止処理中の時にSTART SLAVEステートメントがスレーブでSQLスレッドを開始するために発行され、かつ、同時にスレーブステータスの要求が行われた場合、3つのスレッドが関与するデッドロックが発生する可能性がありました。この問題は、SQLスレッドが停止されている間にロックを早期に解除することによって修正されました。 (Bug #29697588, Bug #95115)

● レプリケーション:WAIT_FOR_EXECUTED_GTID_SET()関数のロックの問題により、特定の状況でサーバーがハングすることがありました。この問題は修正されました。 (Bug #29550513)

● レプリケーション:GTIDが使用中かつMASTER_AUTO_POSITIONがONに設定されているマルチスレッドスレーブでは、予期しない停止の後にスレーブはリレーログのリカバリを試みますが、リレーログが失われた場合は失敗し、レプリケーションが開始されませんでした。ただし、GTID自動ポジショニングを使用して失われたトランザクションを復元できるため、この手順は不要でした。リカバリ状況で、スレーブはまずMASTER_AUTO_POSITIONがONに設定されているかどうかを確認するようになり、設定されている場合は、リレーログのリカバリをスキップするようになりました。 (Bug #28830834, Bug #92882)

● SQLスクリプトからCソースを生成する時、utf8でエンコードされた文字のいくつかが行に分割されました。 (Bug #30152555, Bug #96449)

● Solarisの場合、不要になったmemcntl()のプロトタイプがmysqld.ccに含まれていました。そのプロトタイプは削除されました。 (Bug #29953495, Bug #95971)

● Solarisの場合、GCCでコンパイルする時に-DWITH_SSL=systemが機能しませんでした。 (Bug #29953460, Bug #95970)

● -DWITHOUT_SERVER=1を使用して設定されたMySQLビルドは失敗しました。 (Bug #29948728, Bug #95740)

● keyring_awsプラグインの場合、keyring_aws_regionシステム変数に対する一部の有効なregion値が拒否されました。 (Bug #29933758)

● デバッグビルドの場合、GEOMETRY列とSELECT * FROM (SELECT NULL)を組み合わせたデータ型を計算する時のUNIONクエリ中にアサーションが発生する可能性がありました。 (Bug #29916900, Bug #95827)

● LDAP認証プラグインを使用した認証の場合、ユーザーDN部分が空でグループマッピングが設定されている場合、認証は誤ったユーザーDNを割り当て、ユーザー検索をスキップしました。 (Bug #29897624)

● mysqlpumpは、MySQL 5.7より古いサーバーに対して実行するとエラーを生成しました。 (Bug #29889253)

● 符号なし整数型のキャストによって発生し得る整数オーバーフローは、任意のサイズのメモリ割り当てによるその後のバッファオーバーフローにつながる可能性がありました。 (Bug #29878914)

● MeCabプラグインの初期化中に解放されたオブジェクトを使用しようとすると、セグメンテーションエラーが発生しました。 (Bug #29832534)

● RPMパッケージを使用してインストールされたMySQLに関して、クライアントアカウントがLDAP認証プラグインを使用して認証された場合、サーバーの接続性をテストした初期化スクリプトが正しく動作しませんでした。 (Bug #29786782)

● ストレージエンジンの初期化中の不適切なロックにより、サーバーが終了する可能性がありました。 (Bug #29782379)

● GTID対応サーバーでは、DROP USERとビューにアクセスするプリペアドステートメントの同時実行がデッドロックする可能性がありました。 (Bug #29772622)

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

● VS2019は、/ZIフラグの使用により、デバッグコンパイルが選択された場合に、コンパイルエラーを生成しました。現在、/Z7が代わりに使用されます。 (Bug #29691691, Bug #95125)

● クライアントライブラリは、サーバーから結果セットのメタデータを取得している間に、nullポインターを逆参照する可能性がありました。 (Bug #29597896)

● READ UNCOMMITTED分離レベルでは、セグメンテーションエラーがmemcachedクライアントからの高負荷の下で発生しました。1つのトランザクションによって更新されていた外部保存されたBLOB列が、NULL値とゼロ以外のデータ長を持っているとして別のトランザクションによって読み取られました。 (Bug #29396364, Bug #93961)

● TIMESTAMPADD()関数の引数は、プリペアドステートメントでは逆にされる可能性がありました。 (Bug #29268394)

● thread_poolプラグインを有効にすると、sys.processlistビューとsys.sessionビューに、実際のユーザー名ではなくスレッド名が表示されました。 (Bug #25906021, Bug #85976)

● sys.schema_index_statisticsビューのdelete_latency列は、パフォーマンススキーマのtable_io_waits_summary_by_index_usageテーブルのSUM_TIMER_DELETE列ではなく、SUM_TIMER_INSERT列を誤って参照しました。 (Bug #25521928)

● sys.diagnostics()プロシージャからの出力では、user_summary_by_file_io_typeビューのレイテンシ列が、フォーマットされた値としてではなく、フォーマットされていないピコ秒単位で誤って表示されていました。 (Bug #25287996)

● MySQL Enterprise Encryptionの関数は、Diffie-Hellman(DH)メソッドを非DHキーに適用したため、予測できない結果やサーバー終了を引き起こす可能性がありました。 (Bug #22839007)

● SHOW PROCESSLISTと一部のINFORMATION_SCHEMAとパフォーマンススキーマテーブルに対してパスワードマスキングが不完全でした。 (Bug #20712046)

● -DWITH_EXAMPLE_STORAGE_ENGINE=1 CMakeオプションは無視されましたが、無視されるべきではありませんでした。-DWITH_EXAMPLE_STORAGE_ENGINE=0が指定されている場合、EXAMPLEストレージエンジンはプラグインとしてビルドされます。 (Bug #70859, Bug #17772560, Bug #30133062)

 参照:Bug #18324650。

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

MySQL Editions

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

MySQL Editionsの詳細