|
MySQL5.1.69 での変更点( 2013-04-18 )
機能の追加と変更
・ MySQLは、デフォルトのOpenSSL圧縮を使用しなくなった(Bug#16235681)。
修正されたバグ
・ パフォーマンス :InnoDB: 圧縮 を使用するテーブルの DROP TABLE ステートメントが必要以上に遅くなり、数秒間停止する可能性があった。MySQLは、 DROP 操作の一部として、テーブルに関連する バッファプール 内の ページ を不必要に展開していた(Bug#16067973)。
・ 重要な注意事項 : レプリケーション : ステートメントベースのログを使用して、テーブルから同一名のビューへの複製が可能であった。代わりに行ベースのログを使用すると、スレーブでエラーが発生した。現在は、DMLの実行前にターゲットオブジェクトのタイプが確認され、スレーブのターゲットが実際にはテーブルでない場合、エラーが発生する。これは、バイナリログフォーマットが使用されているかどうかに関係なく該当する(Bug#11752707、Bug#43975)。
・ InnoDB: page_zip_available 関数はフィールドを2度数える。(Bug#16463505)
・ InnoDB: InnoDB テーブルで、 VARCHAR カラム(またはプリフィックス)の PRIMARY KEY が空の場合、インデックスページの圧縮が失敗する可能性があった(Bug#16400920)。
・ InnoDB: デバッグビルドで、 InnoDB のステータスエクスポートが競合状態になり、サーバが終了する可能性があった(Bug#16292043)。
・ InnoDB: テーブルが外部キー制約によってリンクされている場合、一つのテーブルをロードすると、再帰的に他のリンクされたテーブルを開く。多数のテーブルが外部キー制約によってリンクされている場合、サーバが終了する原因となるスレッドスタッグオーバーフローを引き起こすことがある。外部キー制約によってリンクされたテーブルは現在、繰り返しロードされる。また、再帰的な様式で行ったカスケード操作は、現在明示スタックを使用して繰り返し行われる。(Bug#16244691)
・ InnoDB: InnoDB テーブルで CREATE TABLE を実行するためのページ圧縮中に、算術下位桁あふれが発生すると、サーバが終了する可能性があった(Bug#16089381)。
・ InnoDB: この修正により、クエリが InnoDB テーブルにアクセスしたとき、MySQLは KILL QUERY ステートメントにすぐに応答する。(Bug#14704286)
・ InnoDB: long semaphore wait診断の出力時に、競合状態により sync_array_cell_print() でセグメンテーション違反(SEGV)が発生した。この修正では、出力中にセルが解放されるようにすることで競合状態を解決する(Bug#13997024)。
・ InnoDB: クエリを停止すると、同じテーブル(カーソル)インスタンスが再び使用されたときに、InnoDB表明違反が発生した。これは、Bug#14704286の修正によって生じた退化エラーの結果である。この修正では、実行時間の長いクエリでkillシグナルを処理するチェックが導入されたが、カーソルは適切な状態に回復されなかった(Bug#68051、Bug#16088883)。
・ InnoDB: 内部生成された外部キー名の長さがチェックされなかった。内部生成された外部キー名が64文字の制限を超えた場合、SHOW CREATE TABLEから無効なDDLが生成された。この修正では、内部生成された外部キー名の長さをチェックし、制限を超えている場合、エラーメッセージをレポートする(Bug#44541、Bug#11753153)。
・ パーティショニング : レンジでパーティションされ、 TO_DAYS() をパーティショニング関数として使用しているテーブルへのクエリは、取り除きのときに常にテーブルの最初のパーティションを含んでいた。クエリの BETWEEN 句に使用されているレンジに関係なくこの事象が発生した(Bug#15843818、Bug#49754)。
・ レプリケーション : ユーザ変数に対してゼロ長の名前( @`` など)を指定すると、バイナリログから読み取るときに誤ってデータの記号やネットワークの破損とみなされた(Bug#16200555、Bug#68135)。
・ レプリケーション : バックティック(`)文字が、内部で生成されたSQLステートメントで必ずしも正しく処理されず、場合によってはスレーブでエラーを招く可能性があった(Bug#16084594、Bug#68045)。
参考:このバグは、Bug#14548159およびBug#66550による退化である。
・ レプリケーション : ダンプスレッドの読み取りイベントループでEOFを検出した直後から新しいバイナリログファイルに変更するかどうかを決定するまでの間に、場合によって、まだ決定が下されていないのに新しいイベントをバイナリログに記述することが可能であった。もしもこのときにログの交換が発生した場合、EOF検出後に発生したイベントが抜けてしまい、データの喪失が起きた。現在はこのような場合、ログの交換が許可される前にすべてのイベントが必ず処理されるための対策が講じられている(Bug#13545447、Bug#67929)。
参考:Bug#16016886も参照。
・ GRANT ステートメントで長いデータベース名が使用されていると、サーバが終了する可能性があった(Bug#16372927)。
・ クエリで、 WHERE 句に XOR 操作が含まれている IN 句にサブクエリが含まれていた場合、間違った結果が返された(Bug#16311231)
・ NULL 選択に対して範囲オプティマイザを起動すると、サーバが終了した(Bug#16192219)。
・ yaSSLは、適切なパディングチェックを実行せず、プレーンテキストの最終バイトのみ検査し、それにより削除するバイト数を決定していた(Bug#16218104)。
・ Geometry カラムの UNION として定義されたビューで SHOW COLUMNS を実行すると、サーバが終了する可能性があった(Bug#14362617)。
・ LIKE パターンに指定されているワイルドカードの 「 % 」 が多すぎると、セグメンテーションエラーが発生する可能性があった(Bug#14303860)。
・ SET var_name = VALUES ( col_name ) によってサーバが終了する可能性があった。 SET コンテキストにはカラム名がなく、ステートメントが ER_BAD_FIELD_ERROR を返すため、現在はこの構文が禁止されている(Bug#14211565)。
・ クライアント/サーバプロトコルの COM_CHANGE_USER コマンドが、コマンドパケット内の文字セット番号を正しく使用しなかったため、パケット内の別の値を間違って文字セット変換した(Bug#14163155)。
・ OUTER JOIN を伴うサブクエリが別の SELECT のカラムを参照する場合、間違った結果を返す可能性があった(Bug#13068506)。
・ Field_geom::reset() は、ベースとなる Field_blob のリセットに失敗した。範囲オプティマイザの最適化および実行において、初期化されていないフィールドが使用されたため、それによりサーバが終了した(Bug#11908153)。
・ mysql_install_db は、ステートメントで権限テーブルに書き込まれたホスト名内の 「 _ 」 をエスケープしなかった(Bug#11746817)。
・ utf32 ENUM カラムの PARTITION BY KEY ではデバックアサーションが発生する。(Bug #52121, Bug #11759782)
・ オプティマイザが、ルースインデックススキャンによるアクセスが適さない一部のクエリに対して、このアクセス方法を使用した(Bug#42785、Bug#11751794)。
・ ある文字セットと照合を持つビューに異なる文字セットと照合が定義されているビューがダンプファイルに含まれていた場合、このダンプファイルをリストアしようとすると、"illegal mix of collations"エラーが発生して失敗した(Bug#65382、Bug#14117025)。
・ ユーザ変数が引数として提供され、複数の行で操作が実行されると、 REPLACE() 関数の結果が正しくならなかった(Bug#49271、Bug#11757250)。
・ BLOB カラムで UNION ALL を実行すると、結果が正しくならない可能性があった(Bug#50136、Bug#11758009)。
・ メモリが少ない状況でビューにアクセスすると、デバッグアサーションが発生する可能性があった(Bug#39307、Bug#11749556)。
・ max_connections を現在開かれている接続の数よりも小さい値に設定すると、サーバが終了した(Bug#44100、Bug#11752803)。
・ デバッグビルドで、 SELECT ... FROMDUAL がネストするサブクエリを含むクエリにより、表明が発生する場合があった(Bug#60305、Bug#11827369)。
・ sql/Makefile.amの想定どおり、Automake1.12がsql_yacc.hではなくsql_yacc.hhを生成するようにMySQL構成を調整した(Bug#67177、Bug#15967374)。