|
MySQL 5.5.10 リリースノート (日本語翻訳)
CAPI の注意事項
・ 互換性のない変更 :ABIの変更を反映し、MySQL5.1のクライアントライブラリとの互換性の問題を回避するために、クライアントライブラリの共有ライブラリはバージョンが18に上がった。これは5.5.10以前の5.5バージョン間では互換性のない変更であるため、5.5のクライアントライブラリを使用するクライアントプログラムは、5.5.10のクライアントライブラリに対応して再コンパイルする必要がある(Bug#60061、Bug#11827366)。
機能の追加または変更 :
・ MySQLのディストリビューションに auth_socket が追加された。これは、UNIXソケットファイルを介してローカルホストから接続しているクライアントを認証するサーバ側認証プラグインである。このプラグインは、 SO_PEERCRED ソケットオプションを使用して、クライアントプログラムを実行しているユーザに関する情報を取得する(したがって、このオプションをサポートしているシステムでしか使用できない)。接続するには、接続しているクライアントユーザのログイン名と、クライアントプログラムで提供されるMySQLユーザ名とがこのプラグインで一致する必要がある。詳細については、 セクション5.5.6.4「TheSocketPeer-CredentialAuthenticationPlugin」 を参照のこと(Bug#59017、Bug#11765993)。
・ mysql_upgrade 、 mysqlbinlog 、 mysqlcheck 、 mysqlimport 、 mysqlshow 、 mysqlslap の各クライアントでは、使用する認証プラグインとプラグインディレクトリを指定する際に、--default-authオプションと--plugin-dirオプションを使用できるようになった(Bug#58139)。
・ Booleanシステム変数は、値を ON または OFF に設定すると実行時に有効にできるが、以前はこれがサーバ起動時に動作しなかった。現在は起動時にも、このような変数を ON または TRUE に設定すると有効に、 OFF または FALSE に設定すると無効にすることができる。それ以外の非数値変数は無効である(Bug#46393)。
Bug#11754743、Bug#51631も参照。
・ 以前は、クエリがソートの問題によって異常終了した場合、サーバが Sortaborted というメッセージをエラーログに書き込んでいた。現在、サーバは以下のように具体的なメッセージを表示するために詳細を書き込むようになっている。
・Sortaborted:Outofmemory(Needed24bytes)
・Outofsortmemory,considerincreasingserversortbuffersize
・Sortaborted:Outofsortmemory,considerincreasingserversort
・buffersize
・Sortaborted:IncorrectnumberofargumentsforFUNCTIONtest.f1;
・expected0,got1
また、サーバを --log-warnings=2 で起動した場合、サーバはホスト、ユーザ、クエリに関する情報を書き込む(Bug#36022、Bug#11748358)。
・ mysqldump--xml は現在、カラム定義からのコメントを表示する(Bug#13618、Bug#11745324)。
・ MySQLのディストリビューションに mysql_clear_password が追加された。これは、ハッシュ処理も暗号化も行わずにパスワードをサーバに送信するクライアント側認証プラグインである。これは安全ではなく、したがって適切な予防対策(SSL接続など)が必要だが、このプラグインはプレーンテキストでの元のパスワードにアクセスする必要があるサーバ側のプラグインと組み合わせると、便利である。詳細については、 セクション5.5.6.3「TheClearTextClient-SideAuthenticationPlugin」 を参照のこと。
修正されたバグ :
・ InnoDB ストレージエンジン :各 AIO ヘルパースレッドが処理できるI/O要求の数を32から256に増やした。この新しい上限はLinuxとUNIXのプラットフォームに適用され、Windowsでの上限は32のままである(Bug#59472)。
・ InnoDB ストレージエンジン : InnoDB は、クエリ計画の"rowsexamined"に対して、予期されるものより大きい値を返した。 NULL 値の処理方法が一貫していなかった。不正確な統計によって、 MAX_JOIN_SIZE 設定と組み合わせたとき、擬陽性となる場合があった。これは、クエリで実際にはレポートされるとおりの数の行が調査されなかったためである(Bug#30423)。
・ レプリケーション :ステートメントベースのロギングフォーマットを使用するとき、失敗しなかったトランザクショナルテーブルに影響する INSERTONDUPLICATEKEYUPDATE ステートメントおよび INSERTIGNORE ステートメントが、1行も挿入しなかった場合にバイナリログに書き込まれなかった(ステートメントベースのロギングでは、正常に実行されたステートメントは、行に変更を加えるかどうかにかかわらず、すべてログに記録される必要がある)(Bug#59338、Bug#11766266)。
・ レプリケーション :以前は、 STOPSLAVE はまずスレーブI/Oスレッドを停止してから、スレーブSQLスレッドを停止していたため、SQLスレッドで実行されているトランザクションの一部のみを複製した後でI/Oスレッドを停止することが可能であった。その場合、トランザクションを安全にロールバックできないと、SQLスレッドがハングする可能性があった。
現在、 STOPSLAVE はまずスレーブSQLスレッドを停止してからI/Oスレッドを停止するようになったので、SQLスレッドで実行されているトランザクションにイベントが残っていればI/Oスレッドがそれをフェッチすることが保証される。したがって、SQLスレッドはトランザクションを安全にロールバックできない場合でも、トランザクションを終了できるようになっている(Bug#58546、Bug#11765563)。
・ optimizer_switch システム値を無効な値に設定すると、サーバがクラッシュしていた(Bug#59894、Bug#11766719)。
・ DES_ENCRYPT() によって引数が生成されなかった場合、 DES_DECRYPT() がクラッシュする可能性があった(Bug#59632、Bug#11766505)。
・ サーバとクライアントが認証プラグイン名のネゴシエーションを適切に行わないことがあった(Bug#59453、Bug#11766356)。
・ --autocommit=ON (グローバルな autocommit の値を1ではなく0に設定する)が動作しなかった(Bug#59432、Bug#11766339)。
・ 次の形のクエリで不正な結果が返され、結果セットにおける col_name の値が完全に NULL 値に置き換えられていた。
・SELECTDISTINCT col_name ...ORDERBY col_name DESC;
(Bug#59308、Bug#11766241)
・ SHOWPRIVILEGES が PROXY 権限に対して行を表示しなかった(Bug#59275、Bug#11766216)。
・ SHOWPROFILE はソースファイル名を切り捨てるか、関数名を表示できない可能性があった(Bug#59273、Bug#11766214)。
・ DELETE または UPDATE ステートメントは、 DATE または DATETIME 値で年や月を使うか、日の部分をゼロにすると失敗する可能性があった(Bug#59173)。
・ LIKE 演算子の ESCAPE 句で使用できるのは、実行時に定数に評価される式のみだが、集計関数が拒否されていなかった(Bug#59149、Bug#11766110)。
・ Valgrindによって検出されるメモリリークは、場合によって不正なクエリ結果の原因となっていたが、修正された(Bug#59110、Bug#11766075)。
・ LOADDATAINFILE のファイル属性に誤った制限があった(Bug#59085、Bug#11766052)。
・ DEFAULT_CHARSET および DEFAULT_COLLATION CMakeオプションが動作しなかった(Bug#58991、Bug#11765967)。
・ WHERE column ISNULL を使用する OUTERJOIN クエリで、不正な結果が返される可能性があった(Bug#58490、Bug#11765513)。
・ サーバに --defaults-file= file_name オプションを設定するとき、ファイル名に拡張子を指定しないと、サーバがクラッシュしていた(Bug#58455、Bug#11765482)。
・ 外部結合で空テーブルを使用すると、結果が正しくならない可能性があった(Bug#58422、Bug#11765451)。
・ デバッグビルドでは、 SUBSTRING_INDEX(FORMAT(...),FORMAT(...)) が原因でサーバがクラッシュする可能性があった(Bug#58371、Bug#11765406)。
・ --sleep および --count オプションを指定して mysqladmin を実行すると、指定されたコマンドを実行して無限ループになっていた(Bug#58221、Bug#11765270)。
・ 文字列を操作する一部のSQL関数は、不変の空文字列を含む共有文字列オブジェクトを使用する。このオブジェクトをSQL関数 SUBSTRING_INDEX() で使用すると、1つの引数のデータタイプが誤っている場合に空の文字列が返される。その後この空の文字列をSQL関数 INSERT() によって変更すると、未定義の動作が続いた(Bug#58165、Bug#11765225)。
・ ネストした正規表現を解析すると再帰状態になり、スタックオーバーフローでクラッシュする可能性があった(Bug#58026、Bug#11765099)。
・ Bug#25192の修正によって、 load_defaults() では、アプリケーションで必要かどうかにかかわらず、構成ファイルからロードされたオプションと、コマンドラインで指定されたオプションとを区別するために引数の区切り文字が追加された(Bug#57953、Bug#11765041)。
Bug#11746296も参照。
・ 標準入力がディレクトリの場合、 mysql クライアントが無限ループになっていた(Bug#57450、Bug#11764598)。
・ ユニークキーに対して外部結合を使用すると、不正な結果が返される可能性があった(Bug#57034、Bug#11764219)。
・ 式 const1 BETWEEN const2 AND field が不正に最適化され、不正な結果になっていた(Bug#57030、Bug#11764215)。
・ RPMインストールスクリプトの一部はデータディレクトリにハードコードされた値を使用していたため、ユーザが標準以外のデータディレクトリ位置を指定した場合には失敗することがあった。PIDファイル名など他の構成値でもこれは同様だった(Bug#56581、Bug#11763817)。
・ FreeBSDとOpenBSDで、サーバによるシステム日付の範囲チェックが誤っていたため、正しい値が拒否されていた(Bug#55755、Bug#11763089)。
・ ORDERBYAVG(DISTINCT decimal_col ) を使用してソートを実行すると、サーバがクラッシュするか、正しい結果にならなかった(Bug#52123、Bug#11759784)。
・ ExtractValue() または UpdateXML() を使用するとき、読み込まれるXMLに不完全なXMLコメントが含まれていた場合、MySQLは処理中にXML文字列の末尾を超えて読み込みを行うため、サーバがクラッシュしていた(Bug#44332、Bug#11752979)。
・ DATE_ADD() と DATE_SUB() は、第1引数が文字列の場合には文字列を返すが、誤ってバイナリ文字列を返していた。現在は、 connection_collation の照合によって正しく文字列を返す(Bug#31384、Bug#11747221)。