|
MySQL5.6.10 での変更点( 2013-02-05 )
MySQL5.6.10から、MySQL5.6に対するMySQLEnterpriseEditionが提供される。MySQLEnterprise5.6.10には、これまでMySQL5.5でのみ提供されていたいくつかのコンポーネントが含まれるようになった。該当するコンポーネントは、MySQLEnterpriseSecurity(PAMおよびWindows認証プラグイン)、MySQLEnterpriseAudit、およびMySQLスレッドプールである。これらの機能の詳細については、 MySQLEnterpriseEdition を参照。商用製品の詳細については、http://www.mysql.com/products/を参照。
このリリースで判明している制限:
MicrosoftWindowsで、異なるバージョン(5.5.30など)およびライセンス(コミュニティに対するコマーシャル)が付与された既存のMySQLServerが搭載されたホストに、MySQLInstallerを使用してMySQLServer5.6.10をインストールする場合、まず既存のMySQLServerのライセンスタイプを更新する必要がある。これを行わない場合、MySQLInstallerは、MySQLServer5.6.10で選択したMySQLServerとライセンスが異なるものを削除する。
MicrosoftWindows8では、コミュニティリリースをコマーシャルリリースに更新する際、更新後にMySQLサービスを手動で再起動する必要がある。
機能の追加と変更
・ InnoDB: 圧縮テーブルを使用した場合、圧縮されたページが16KBまたはユーザ指定した ページサイズ よりも小さい可能性があるため、 バッファプール 内でのメモリ使用量の計算が複雑であった。この情報は INFORMATION_SCHEMA.INNODB_BUFFER_PAGE テーブルから検索できるものの、その操作は非効率的である。以下の新しいステータス変数により、バッファプールのメモリ使用量に関する計算が容易になる。
(Bug#15842637)
・ レプリケーション : SHOWSLAVESTATUS で生成される出力に Auto_Position カラムが追加された。このカラムの値は、レプリケーションの自動位置設定を使用しているかどうかを示すものである。自動位置設定が有効のとき、すなわちスレーブで最後に正しく実行した CHANGEMASTERTO ステートメントによって MASTER_AUTO_POSITION=1 が設定された場合、このカラムの値は1である。設定されなかった場合、カラムの値は0である(Bug#15992220)。
・ UnbreakableLinuxNetwork用に構築されたRPMパッケージでは、libmysqld.soはバージョン番号が付与されるようになった(Bug#15972480)。
・ 所定の操作でサポートされない LOCK または ALGORITHM 値を使用した ALTERTABLE ステートメントに対するエラーメッセージは非常に汎用的であった。現在は、サーバで、より詳細な情報を示すメッセージを表示する(Bug#15902911)。
・ 期限切れのパスワードでクライアントが接続したが、クライアントアカウントに適切なパスワードハッシュ形式を選択するために必要な値が old_passwords ではなかった場合、クライアントで適切な値を判断する方法がなかった。現在は、サーバで、アカウントパスワードに対する適切な old_passwords セッション値を自動的に設定するようになった(Bug#15892194)。
・ validate_password_policy_number システム変数の名前が validate_password_policy に変更された(Bug#14588121)。
・ JSON形式の EXPLAIN 出力で、サブクエリの attached_condition 情報に、サブクエリの相対的な実行順序を示す select# が含まれるようになった(Bug#13897507)。
・期限切れパスワードを持つアカウントでのクライアント接続を処理するために、サーバで使用するサンドボックスモードに次の変更が加えられた。
MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS は、 mysqltest については無条件に有効になり、さらにインタラクティブモードの mysql および最初のコマンドが password の場合には mysqladmin に対して、それぞれ有効に設定される。
disconnect_on_expired_passwords に対するクライアント側のフラグの詳細については、 PasswordExpirationandSandboxMode を参照(Bug#67568、Bug#15874023)。
修正されたバグ
・ InnoDB; パフォーマンス : ログの取り消しに関連する一部のデータ構造が、たとえ特定の条件下でのみ必要とされる場合であっても、クエリ中に不必要に初期化される可能性があった(Bug#14676084)。
・ InnoDB; パフォーマンス : 冗長なテストをスキップすることにより、 圧縮 テーブルに対する読み取り操作が最適化された。関連する変更を 挿入バッファ からマージする必要があるかどうかのチェックが必要以上に呼び出されていた(Bug#14329288、Bug#65886)。
・ InnoDB; パフォーマンス : 作成したばかりのテーブルにクエリを実行した場合、 ルースインデックススキャン が使用されなかった。テーブル上で ALTERTABLE を実行した後はこの問題は解消されていた。修正では、テーブルを最初に作成したときに収集される インデックス統計 の精度を向上し、クエリプランが ALTERTABLE ステートメントによって変更されないようにした(Bug#14200010)。
・ レプリケーション ; 重要な変更 : グローバルトランザクション識別子でUUIDを表示するための文字が、小文字に統一されていなかった。現在は、 SHOWSLAVESTATUS の出力の Retrieved_Gtid_Set および Executed_Gtid_Set カラムで表示される値を含め、すべてのGTID値で小文字を使用する(Bug#15869441)。
・ InnoDB: 特定の状況において、 ALTERTABLE...IMPORTTABLESPACE を使用したインポート後に InnoDB テーブルが破損しているとレポートされていた。この問題が発生した際に、次のどちらかのメッセージが表示されていた。
Warning : InnoDB: The B-tree of index "PRIMARY" is corrupted. error : Corruptまたは、
Warning : InnoDB: The B-tree of index "GEN_CLUST_INDEX" is corrupted. error : Corrupt
この問題は断続的に発生し、主に大きなテーブルに影響を与えていた。 REPAIRTABLE ステートメントにより、エラーメッセージでレポートされた問題が修正されるようになった(Bug#15960850,Bug#67807)。
・ InnoDB: シャットダウン時に、 FULLTEXT インデックスを含むテーブルの最適化を処理するバックグラウンドスレッドのクリーンアップ中に、いくつかのValgrind警告が表示されることがあった(Bug#15994393)。
・ InnoDB: ユニークインデックスを追加するオンラインのDDL操作中に、同時実行DMLによって重複項目が作成されたことが原因で、そのDDL操作に失敗した場合、誤ったエラータイプで ALTERTABLE 操作が失敗していた。以前は ER_INDEX_CORRUPT を返したが、現在は新しいエラーコードである ER_DUP_UNKNOWN_IN_INDEX を返す(この状態が発生したときに重複キー値はレポートされないため、 ER_DUP_KEY は返さない)(Bug#15920713)。
・ InnoDB: オンラインDDL 機能を使用する ALTERTABLE ステートメントによって、Valgrind警告が発生する可能性があった(Bug#15933178)。
・ InnoDB: オンラインDDL 操作の実行中、その操作によって作成されたインデックス名が information_schema テーブル内で正しく表示されなかった。この修正により、 information_schema クエリについては、テーブル名の先頭の 0xff バイトが除去されるようになる。この修正は、次のカラムに影響する。
(Bug#15946256)
・ InnoDB: バッファプール のいくつかのページが 先読み 要求によって取り込まれたものと間違って認識されたために、ステータス変数 Innodb_buffer_pool_read_ahead_evicted が、予想よりも高い、不正確な値を示す可能性があった(Bug#15859402、Bug#67476)。
・ InnoDB: ROW_FORMAT=REDUNDANT 句でテーブルが作成された場合に、 UTF-8 などの可変長文字セットでテーブルに対する CHAR カラムでのインデックス作成に失敗する可能性があった(Bug#15874001)。
・ InnoDB: オンラインDDL の ALTERTABLE ステートメントの終わり近くでサーバがクラッシュした場合、 EXTENDED 句を使用したそれ以降の CHECKTABLE ステートメントによって重大なエラーが発生する可能性があった(Bug#15878013)。
・ InnoDB: 64ビットWindowsシステムでは、 innodb_log_file_size に4GBまたはそれより大きな値を指定することができなかった。この問題は、デバッグビルドのみ影響する(Bug#15882860)。
・ InnoDB: この修正により、元のテーブルをコピーする ALTERTABLE 操作中に重大な未処理エラーが発生したときに、#sql-ib- table_id または#mysql50##sql-ib- table_id フォームの名前を使用するテーブル内で、データリカバリに必要なデータが確実に保持されるようになる(Bug#15866623)。
・ InnoDB: テーブルに プライマリキー を追加する オンラインDDL 操作で、そのテーブルの BLOB カラムの カラムプリフィックス にインデックスが存在する場合に、重大なエラーが発生する可能性があった。
この修正により、 オフページカラム を含む行が削除される場合に、 ALTERTABLE ステートメントによってテーブルが再構築される間はバックグラウンドの パージ 操作が一時停止される。現在、オンラインのDDL操作中の過剰な容量消費を回避するために、 ALTERTABLE が完了するまでは次のタイプの同時実行 DML 操作の実行は避けること。
(Bug#14827736)
・ InnoDB: インデックスの作成中に、表明エラーが発生し、サーバが中断する可能性があった。
InnoDB: Assertion failure in thread thread_num in file row0merge.cc line 465
この問題は、 ROW_FORMAT=REDUNDANT オフページカラム と カラムプリフィックス のインデックスの組み合わせを持つテーブルに影響した(Bug#14753402)。
・ InnoDB: innodb_sys_tablestats など、 InnoDB メタデータを含む information_schema テーブルで、 $ の代わりに @0024 など、エンコードされた形式でテーブル名の非英数文字を表示していた(Bug#14550145)。
・ InnoDB: innodb_force_recovery の値が6未満の場合、破損したテーブルを開く際に、そのテーブルの統計の計算時に破損ページが読み込まれた場合、無限ループが発生する可能性があった。破損ページに関する情報がエラーログに何度も書き込まれ、場合によってはディスクスペースの問題を招いた。修正により、ページの読み取りが一定回数失敗すると、サーバが中断する。このような破損問題を解決するには、 innodb_force_recovery=6 を設定し、再起動する(Bug#14147491、Bug#65469)。
・ InnoDB: innodb_buffer_pool_size に大きな値を設定し、 innodb_buffer_pool_instances に1を超える値を設定すると、 ページ が バッファプール から誤って 解放 されることがあった(Bug#14125092)。
・ パーティショニング : パーティションの取り除きは、 NDB ストレージエンジンなど、自動パーティショニングを提供するストレージエンジンを使用するが、明示的にパーティショニングされるテーブルで使用可能になった。以前は、こうしたストレージエンジンを使用するすべてのテーブルに対して、それらで明示的にパーティションが定義されているかどうかにかかわらず、無効化されていた。
さらに、この修正の一環として、自動パーティショニングが提供されるストレージエンジン( NDB など)を使用するテーブルでは、明示的なパーティションを選択できなくなった(Bug#14827952)。
参考:Bug#14672885も参照。
・ レプリケーション : GTIDベースのレプリケーションを使用しており、マスタでトランザクションが実行されたが、スレーブでそのIDとのトランザクションがすでに実行されていたためにスレーブにトランザクションが送られなかった場合、準同期レプリケーションがタイムアウトした。これが発生した可能性がある状況としては、新しいマスタが新しいスレーブより遅れて起動したフェイルオーバ操作時である(Bug#15985893)。
・ レプリケーション : レプリケーション情報レポジトリタイプとして FILE を使用した場合、各トランザクション後にディスクへの不必要なフラッシュが実行されたことで、パフォーマンスが低下する可能性があった。現在は、データおよびリレーログ情報の両方が(トランザクショナル)テーブルに格納されたときのみ実行される(Bug#15980626)。
・ レプリケーション : STARTSLAVEUNTILSQL_BEFORE_GTIDS= gtid_set を発行し、このとき gtid_set の対象トランザクション数が膨大(1000万単位から1億単位)である場合に、サーバがハングする可能性があった(Bug#15968413)。
・ レプリケーション : --skip-innodbおよびレプリケーション情報ファイルレポジトリを使用してスレーブを起動した場合(--relay-log-info-repositoryおよび--master-info-repositoryのどちらもデフォルトが FILE )、レプリケーションが誤って停止していた。しかし、スレーブでファイルレポジトリを使用しており、現在情報レポジトリ間で移行していない場合は、問題なくレプリケーションを実行できる。現在は、こうした状況でテーブル情報レポジトリを開こうとするときに発生したエラーをサーバで無視するようになった。
さらに、--skip-innodbでスレーブを起動した場合に、バイナリログの初期化が正しく実行されず、--log-binoptionは無視されていた(Bug#15956714、Bug#67798、Bug#15971607)。
・ レプリケーション : テンポラリテーブルおよび永久テーブル、または異なるストレージエンジンを使用するテンポラリテーブルが単一ステートメントで削除される場合、このステートメントは、実際にはそれぞれが独自のログイベントで表される2つのステートメントとしてバイナリログに書き込まれる。 gtid_mode が ON に設定された場合は、各DDLイベントにGTIDが割り当てられる必要があるが、こうした状況でテンポラリテーブルを削除するステートメントはコミットされず、独自のGTIDが割り当てられていなかった。
現在は、テンポラリテーブルおよび永久テーブルを削除するDDLステートメントや、異なるストレージエンジンを使用するテンポラリテーブルを削除するDDLステートメントが、上記のように2つのステートメントに分割され、ログに書き込まれた、テンポラリテーブルのみに影響するステートメントが暗黙的にコミットされない場合に、対応するログイベントにそれぞれ固有のGTIDが割り当てられるよう、強制的にコミットされる(Bug#15947962)。
・ レプリケーション : GTIDが有効に設定されたサーバで書き込まれたバイナリログで mysqlbinlog を使用し、--databaseオプションを利用した場合に、無視されたステートメントを省略したことで、クローズされないままのトランザクションを mysqlbinlog で正しく処理できなかった。
現在は、 mysqlbinlog --databaseによってGTIDログイベントが読み込まれるたびに、クローズされないトランザクションがあるかどうかをチェックし、ある場合にはコミットを発行する(Bug#15912728)。
・ レプリケーション : GTIDが有効の状態で、準同期レプリケーションが正しく機能しなかった(Bug#15927032)。
参考:Bug#14737388も参照。
・ レプリケーション : GTIDが有効の状態で、クライアントが接続を解除した場合、テンポラリテーブルの自動削除でGTIDが生成されないことがあった。現在は、サーバによって生成されたものを含め、ログに書き込まれた各 DROPTABLE ステートメントに対する独自のGTIDの割り当てが保証される(Bug#15907504)。
・ レプリケーション : スレーブバージョンのテーブルからカラムをドロップし、マスタ上でこのテーブルの同じカラムを修正した後(スレーブでカラムがドロップされていなければ、型変換が必要となるため)、このテーブルへ挿入を行うと、レプリケーションが失敗した(Bug#15888454)。
・ レプリケーション : GTIDベースのレプリケーションでは sql_slave_skip_counter を使用できない。現在、--gtid-mode=ONの場合は、この変数を0以外の値に設定できず、設定しようとしてもエラーが発生して失敗する(Bug#15833516)。
・ レプリケーション : バイナリログをサーバで再実行した場合(たとえば、 mysqlbinlog binlog.000001 | mysql のようなコマンドを実行するなど)、サーバがbinlogを読み取り、バイナリログイベントを正しく適用できるように、使用するクライアント接続で擬似スレーブモードが設定される。ただし、バイナリログダンプの読み取り後も擬似スレーブモードが無効にならず、同じ接続で引き続き実行されるSQLステートメントに予期しないフィルタリングルールが適用されていた(Bug#15891524)。
・ レプリケーション : mysqld のシャットダウン中、すべてのプラグインでグローバルGTID変数の使用が停止されたことを確認する前に、これらの変数が解放されていた(Bug#14798275)。
・ レプリケーション : GTIDプロトコルによってトランザクションがスキップされた場合に、スレーブのSQLスレッドによる無効な更新が原因で MASTER_POS_WAIT() がハングするか-1を返す可能性があった(Bug#14737388)。
参考:Bug#15927032も参照。
・ レプリケーション : マルチスレッドスレーブでStopイベントを実行しようとすると、リレーログに対する不要な更新が実行され、その結果、スレーブ側でマスタとの同期が失われる可能性があった(Bug#14737388)。
・ レプリケーション : バイナリログクエリログイベント内のデータベース名の長さに対する適切なチェックが実行されなかった(Bug#14636219)。
・ レプリケーション : sql_slave_skip_counter または slave_net_timeout の設定と同時並行で STARTSLAVE を発行すると、デッドロックを引き起こす可能性があった(Bug#14236151)。
・ レプリケーション : ステートメントベースのレプリケーションを使用し、 AUTO_INCREMENT カラムが異なるテーブルスキーマをマスタとスレーブが使用している場合、マスタの特定のテーブルに対してログが記録される AUTO_INCREMENT 値を生成する挿入がスレーブの間違ったテーブルに適用される可能性があった(Bug#12669186)。
・ レプリケーション : 無効な MASTER_LOG_POS 値を使用して CHANGEMASTERTO ステートメントを何度も実行すると、エラーが生じ、場合によってはスレーブでクラッシュが発生する可能性があった。現在、このような場合、ステートメントが失敗し、明確なエラーメッセージが表示されるBug#11764602、Bug#57454)
・ MicrosoftWindows: ダイナミックなファイル名(コロンを使用)は許可されなくなった。MicrosoftWindowsのADS(AlternateDataStream:代替データストリーム)NTFS機能を使用するスタティックなファイル名は引き続き使用できる(Bug#11761752)。
・ 現在は、クライアント接続の処理中に、サーバでSSLチェック後にパスワードの期限切れチェックが実行される(Bug#16103348)。
・ yaSSLのバッファ処理問題が修正された(Bug#15965288)。
・ プラグインロギングルーチンでの誤った引数処理が原因で、未定義の動作を引き起こしていた(Bug#16002890)。
・ インデックスを削除するオンラインのDDL操作は、テーブルに十分なロックがなくても継続が可能であった。この問題は重大なエラーを招く可能性があったが、デバッグビルドでのみ確認された(Bug#15936065)。
・ プライマリキー または ユニークインデックス のカラムに重複エントリが含まれている場合に、 ADDPRIMARYKEY または ADDUNIQUEINDEX 句を伴う ALTERTABLE で重大なエラーが発生する可能性があった。このエラーは、行がインデックスブロックに渡って物理的にどのように分布されていたかによって、断続的に発生していた(Bug#15908291)。
・ ALTERTABLE ステートメントで LOCK=NONE 句を使用できるようになった。これにより、 外部キー制約 を含む 子テーブル に対して、同時実行の DML で オンラインDDL を使用できるようになった(Bug#15912214)。
・ 場合によって、 UpdateXML() が間違って NULL を返す可能性があった(Bug#15948580)。
参考:Bug#13007062も参照。
・ OpenSSLを使用してMySQLをコンパイルしたときに、 AES_DECRYPT() および AES_ENCRYPT() でメモリリークが発生した(Bug#15909183)。
・ OpenSSLに関連する、いくつかのValgrind警告が修正された(Bug#15908967)。
・ OpenSSLに関連する、いくつかのメモリリークが修正された(Bug#15921729)。
・ クエリに非常に長いデータベース名があると、サーバが終了する可能性があった(Bug#15912213)。
・ ストアドプロシージャ内部で、非常に長いテーブルエイリアスを使用したマルチテーブル DELETE ステートメントを実行すると、サーバが終了する可能性があった(Bug#15954896)。
・ クエリに非常に長いテーブルエイリアスがあると、サーバが終了する可能性があった(Bug#15948123)。
・ メタデータロックおよびテーブル定義のキャッシュルーチンが、受け渡された名前の長さを必ずしもチェックしなかった(Bug#15954872)。
・ --set-gid-purgedオプションに対する mysqldump 出力に追加されたコメントが不正な形式であったため、ダンプファイルの再ロード時に構文エラーを引き起こしていた(Bug# 15922502 )。
参考:Bug#14832472も参照。
・ 強制終了処理中のスレッドプールの競合によって、Valgrindパニックを引き起こす可能性があった(Bug#15921866)。
・ InnoDB テーブルで FULLTEXT インデックスが欠落していた場合、 COUNT(*) によるフルテキストクエリによって表明が発生する可能性があった(Bug#15950531)。
・ オンラインDDL 操作の最終フェーズでエラーが発生した場合、テーブルに関するキャッシュされたメタデータの一部が元の状態にリストアされない可能性があった。この問題は、主に、同一 ALTERTABLE ステートメントでカラム名を変更し、そのカラムに対してさらにインデックスを削除して再作成する操作に影響した。この問題は、新しいプライマリキーの追加など、テーブルの クラスタ化されたインデックス を再編成する操作には影響しなかった(Bug#15866734)。
・ デバッグビルドで、 innodb_buffer_pool_size に対して16GBまたはそれより大きな値が指定された場合に、64ビットWindowsシステムでサーバを起動できなかった。非デバッグビルドでは、 バッファプール に対してメモリが割り当てられたが使用されなかった、あるいはバッファプールにすでにキャッシュされたページを読み取り要求で見逃したなど、小さな問題が発生する可能性があった。
32ビットWindowsシステムでは、メモリの割り当てにおけるシステム制限により、必要に応じて innodb_buffer_pool_instances の値を大きくすることで、どのバッファプールインスタンスも1.3GBを超えないようにする。この32ビットWindowsシステムに必要であった自動調整が、誤って64ビットシステムにも適用されていた。16GBまたはそれ以上のバッファプールを伴うシステムでは、 innodb_buffer_pool_instances の調整した値によって上限値の64を超えるため、デバッグビルドで表明エラーを引き起こしていた(Bug#15883071)。
・ マスタ サーバ側のテーブルで作業負荷が高い オンラインDDL および同時実行 DML を実行すると、 スレーブ サーバに変更をレプリケートするときにエラーを引き起こす可能性があった。たとえば、 DROPCOLUMN 操作の処理と同時にその削除したカラムを参照するクエリを実行すると、スレーブサーバでのステートメント完了順序がマスタ側の順序と異なった場合に、スレーブサーバでエラーが発生する可能性があった(Bug#15878880)。
・ 予期せずサーバがシャットダウンした場合、(カラム上限値である1020個にきわめて近い)1018個のカラムを含む InnoDB テーブルが存在すると、サーバ再起動時に次の表明エラーが発生する可能性があった。
InnoDB: Failing assertion: table->n_def == table->n_cols - 3
(Bug#15834685)
・ パフォーマンススキーマは、通常、テンポラリテーブルイベントを無視する。ユーザ定義のテンポラリテーブルは、再作成されることで切り捨てられるが、再作成されたテンポラリテーブルがパフォーマンススキーマによってテンポラリであると認識されなかったために表明が発生した(Bug#15884836)。
・ パフォーマンススキーマの session_connect_attrs テーブルに無関係な情報が表示された(Bug#15864703)。
・ COUNT(DISTINCT...)) を使用したサブクエリによって、サーバが終了する可能性があった(Bug#15832620)。
参考:Bug#11750963も参照。
・ Rows_log_event によって、1足りないバイト数が行バッファに割り当てられた(Bug#15890178)。
・ オプティマイザがLooseScan半結合方針に対して未初期化変数に依存する可能性があった(Bug#15849654)。
・ デバッグビルドについて、次の状況で表明が発生する可能性があった。1)ビューが MEMORY テーブルベースであったとき。2)ビューで使用中のカラムを削除するようテーブルが変更されたとき。3)バイナリロギングが無効化されたビューに対して SELECT が実行されたとき(Bug#15847447)。
・ 降順を指定したクエリに対して ルースインデックススキャン を使用した場合、結果セットには正しい値ではなく NULL 値が含まれていた(Bug#15848665)。
・ オプティマイザによる IN->EXISTS サブクエリ書き換えとサブクエリ実体化の間でのコストベースの選択が、 IN 述語が他の述語と OR 演算子で結合されていた場合に正しくないことがあった(Bug#15866339)。
参考:Bug#13111584も参照。
・ 一部の状況において、コスト値がオプティマイザトレース出力に初期化されずに出力され、結果として誤った出力が生じていた(Bug#15877453)。
・ Fortifyによって特定された、いくつかのコード問題が修正された(Bug#15884324)。
・ 一部のクエリをプリペアドステートメントとして使用したとき、エラーが発生した場合にサーバの終了を引き起こすことがあった(Bug#15877062)。
・ 複雑な IN サブクエリによって、サーバが終了する可能性があった(Bug#15877738)。
・ パスワードの期限切れをサポートしない認証プラグインによってアカウントの認証が行われた場合であっても、そのアカウントに対してパスワードの期限切れを引き起こすことが可能であった(Bug#15849009)。
・ 現在は、サーバで mysql.user テーブルを読み込むときに、無効なネイティブパスワードハッシュおよび古いネイティブパスワードハッシュであるかどうかをチェックして、無効なハッシュによるアカウントを無視するようになった(Bug#14845445)。
・ validate_password プラグインで、特定のパスワードのチェックが実行されなかった(Bug#14843970)。
・ GRANT...IDENTIFIEDBY で権限をフラッシュできない可能性があった(Bug#14849959)。
・ validate_password_length システム変数の設定では、最小値が、関連するいくつかのシステム変数の関数であることが考慮されなかった。現在は、サーバで、次の式で計算された値より小さい値を設定しない。
validate_password_number_count + validate_password_special_char_count + ( 2 * validate_password_mixed_case_count)
(Bug#14850601)
・ システムテーブルおよびInnoDB データ辞書 のロック順序に関する問題により、MySQLで内部デッドロックが発生する可能性があった(Bug#14805484)。
・ ストアドファンクションの出力が含まれるXpath式とともに ExtractValue() を使用した場合、エラーOnlyconstantXPATHqueriesaresupportedが発生した(Bug#14798445、Bug#67313)。
・ WindowsXPまたはそれ以前のシステムでMySQLをシャットダウン中に、エラーが発生する可能性があった。この問題は、Windowsイベントを表す不可分条件変数を使用するWindowsVistaおよびそれ以降のシステムには影響しなかった(Bug#14822849)。
・ INFORMATION_SCHEMA クエリの実行中にテンポラリテーブルを作成すると、Valgrind警告が発生する可能性があった(Bug#14801497)。
・ mysqladmin で、期限切れパスワードを持つユーザのコマンドを正しく処理しなかった(Bug#14833621)。
・ XASTART が競合状態になり、サーバがクラッシュする可能性があった(Bug#14729757)。
・ パーティションドテーブルに対する ALTERTABLE ステートメントの ALGORITHM=INPLACE 句によって、基礎となるテーブルのすべてではないが一部に対して変更を適用している状態でクラッシュが発生した場合に、一貫性に関する問題が生じる可能性があった。この修正により、パーティションドテーブルに対するDDL操作での ALGORITHM=INPLACE 句の使用が禁止される(Bug#14760210)。
・最近追加された次のエラーコードが原因で、表明エラーが発生してサーバが停止する可能性があった。
InnoDB: unknown error code 1502 InnoDB: Assertion failure in thread thread_num in file row0mysql.cc line 683 mysqld got signal 6 ;
現在は、この状況ではサーバからクライアントにエラーコード DB_DICT_CHANGED が返される(Bug#14764015)。
・ グルーピングを用いたクエリを、カーソルを使用して実行したとき、オプティマイザがテンポラリテーブルを使用してグルーピングを処理した場合は、クエリが失敗した(Bug#14740889)。
・ ( MEMORY ではなく) MyISAM ストレージエンジンを使用して派生テーブルを実体化した場合、サーバが終了する可能性があった(Bug#14728469)。
・ sha256_password 認証プラグインでは、クライアントがSSLを使用して接続しているかRSAを有効にしている必要がある。どちらの条件も満たされない場合には、簡単なエラーメッセージが表示されていた。現在は、より詳細なエラーメッセージが表示される(Bug#14751925)。
・ 現在は、 validate_password_dictionary_file システム変数に指定されたファイルで有効パスワードファイルコンテンツに対する制約違反があった場合、サーバで起動時に警告をロギングするようになった(Bug#14588148)。
・ 起動時に、一部の InnoDB booleanシステム変数を1または0に設定できるが、 ON または OFF には設定できなかった。該当するシステム変数は、 innodb_file_per_table 、 innodb_force_load_corrupted 、および innodb_large_prefix (Bug#14494893)。
・ mysqldump--routines で生成された出力を再ロードすると、構文エラーが生成される可能性があった(Bug#14463669)。
・ 自己交差するポリゴンの計算によって、表明が発生する可能性があった(Bug#14503584)。
・ ALTERTABLE を強制終了すると、変更が正しく実行された場合でも、サーバで ER_QUERY_INTERRUPTED がレポートされる可能性があった。これは、ユーザに誤解を招く可能性があった。また、ステートメントはバイナリログに書き込まれないため、レプリケーションが正しく実行されなかった(Bug#14382643)。
・ 一部の無効な UNION 構造に対して、パーサがエラーを返すことができなかった(Bug#13992148)。
・ LIBMYSQL_PLUGINS 環境変数で指定したクライアントプラグインのプリロードは、プラグインがハードウェア内のデフォルトプラグインディレクトリ内に存在する場合を除き、失敗する可能性があった。現在は、 LIBMYSQL_PLUGIN_DIR 環境変数に対するプラグインのプリロード中にCAPIによるチェックが実行される。 LIBMYSQL_PLUGIN_DIR 環境変数は、クライアントプラグインを探すディレクトリのパス名に設定できる。
さらに、明示的にプラグインをロードするために、 LIBMYSQL_PLUGIN_DIR 値が存在し--plugin-dirオプションが指定されていない場合は LIBMYSQL_PLUGIN_DIR 値を使用するよう、 mysql_load_plugin() および mysql_load_plugin_v() CAPI関数が修正された。--plugin-dirオプションが指定されていない場合、 mysql_load_plugin() および mysql_load_plugin_v() は LIBMYSQL_PLUGIN_DIR を無視する(Bug#13994567)。
・ ONLY_FULL_GROUP_BY SQLモードを有効にした状態で、モード有効時に有効とならないSQLクエリを含むストアドファンクションを2回実行すると、サーバが終了した(Bug#13996639)。
・ パフォーマンススキーマパラメータのサイズを自動設定すると、過剰なCPU使用を引き起こすよう設定される可能性があった(Bug#67736、Bug#15927744)。
・ クエリに LIMIT 句が含まれる場合に、オプティマイザが最適ではないレンジスキャン戦略を選択することがあった(Bug#67432、Bug#15829358)。
・ InnoDB テーブルの全文検索を行うと、正しくない結果が返される可能性があった(Bug#67257、Bug#14771282)。
・ mysql が引用符付き文字列の終わりを検索している行で delimiter コマンドが実行された場合、 mysql クライアントが処理を誤る可能性があった(Bug#64135、Bug#13639125)。
・ パフォーマンススキーマは、通常、テンポラリテーブルイベントを無視するが、テーブルがテンポラリであると正しく認識できず、その結果としてテーブルのイベントを記録することがあった(Bug#67098、Bug#14756887)。
・ サーバによってエラーログに書き込まれた一部のメッセージで、--slow-query-logオプションではなく、非推奨の--log-slow-queriesオプションを参照することがあった。同様に、サーバで--general-log-fileおよび--log-outputオプションではなく、非推奨の--logオプションを参照することがあった(Bug#67892、Bug#15996571)。
・ MySQL5.1から5.6へのインプレースアップグレードを実行しようとすると、それらシリーズ間の権限構造の不一致が原因でサーバが終了した(これはサポートされる操作ではないが、サーバはグレースフルに終了できる)(Bug#67319、Bug#14826854)。
・ DECIMAL 乗算操作でかなりの誤差を生じる可能性があった(Bug#45860、Bug#11754279)。
・ スレッドの競合状態が原因で、パフォーマンススキーマの threads.PROCESSLIST_INFO カラムを読み込もうとしたときにサーバが終了する可能性があった(Bug#68127、Bug#16196158)。
・ サブクエリ実体化の方が低コストとなる状況で、一部のサブクエリ実行において、オプティマイザが IN->EXISTS サブクエリ書き換えを選択する可能性があった(Bug#67511、Bug#15848521)。
・ CREATETABLE を使用した、ユーザ定義パーティショニングおよび外部キーを伴う NDB テーブルの作成は許可されていない。しかし、外部キーを伴う NDB テーブルを作成してから、 ALTERTABLE でそれにパーティショニングを追加することが可能であったため、結果として mysqldump を使用したバックアップ/リストアが不可能なテーブルが作成できた。現在、これは一貫して禁止されている(Bug#67492、Bug#15844519)。
・ 単一テーブルの DELETE または UPDATE ステートメントについて、オプティマイザがインデックスアクセスメソッドを使用してテーブルをスキャンすることを選択した場合でも、 EXPLAIN によって type 値として ALL (フルテーブルスキャンアクセスメソッド)が表示された。現在は、 type 値として index が表示される(Bug#67637、Bug#15892875)。
・ mysqldump で、 mysql データベース内のすべてのテーブルのダンプに失敗する可能性があった(Bug#67261、Bug#14771252)。