オープンソース サポート サービス(OSS サポート サービス)| オープンソースまるごと OpenStandia™(オープンスタンディア)
野村総合研究所


MySQL 5.1.46 リリースノート (日本語翻訳)

 

InnoDBPluginに関する注意事項:

・ InnoDBPlugin はバージョン1.0.7にアップグレードされている。本バージョンは、GeneralAvailability(GA)の品質であるとみなされている。 InnoDBPluginChangeHistory には、ここで報告した変更点に加えて情報が含まれている場合がある。

今回のリリースでは、InnoDBPluginは、RHEL3、RHEL4、SuSE9(x86、x86_64、ia64)、およびLinuxRPM汎用パッケージを除き、ソースおよびバイナリディストリビューションに含まれている。また、FreeBSD6とHP-UX、およびia64全般のLinuxでは動作しない。

機能の追加と変更:

・ --skip-name-resolve サーバオプションの値から設定される skip_name_resolve という新しいシステム変数が存在する。これにより、サーバでクライアント接続の名前解決を使用するかどうかを実行時に決定する方法が提供される( Bug#37168 )。

修正されたバグ:

・ セキュリティ修正 : UNINSTALLPLUGIN の権限チェックが間違っていた( Bug#51770 )。

・ パーティショニング : RANGE パーティションドテーブルのパーティションプルーニングは正しく機能しないことがあった。範囲が最後のパーティションを超えている場合は、最後のパーティションが除外されなかった( MAXVALUE 未使用時)。現在は、パーティショニング関数値が範囲内にない場合、最後のパーティションは含まれない( Bug#51830 )。

・ パーティショニング : insert_id サーバシステム変数は、 AUTO_INCREMENT カラムを持つパーティションド MyISAM テーブルで失敗した挿入の後にリセットされなかった( Bug#50392 )。

・ パーティショニング : 外部キーは、パーティションドテーブルではサポートされていない。ただし、 ALTERTABLE ステートメントを使用してパーティションドテーブルの外部キーを設定することが可能であった。また、単一の外部キーでテーブルをパーティショニングすることも可能であった( Bug#50104 )。

・ パーティショニング : GROUPBY クエリは、一部のパーティションドテーブルに対して十分に機能しなかった。これは、パーティションドテーブルにブロックサイズが設定されていないことが原因だった。したがって、ブロック当たりのキー数は正しくなかった。これにより、そのようなクエリは正しく最適化されない可能性があった( Bug#48229 )。

Bug#37252 も参照。

・ パーティショニング : REPAIRTABLE は、パーティションド ARCHIVE テーブルでは失敗した( Bug#46565 )。

・ レプリケーション : InnoDB ストレージエンジンを使用して テンポラリテーブルで実行された TRUNCATETABLE は、行ベースのモードの使用時でもログに記録された( Bug#51251 )。

・ レプリケーション : テンポラリテーブルを使用する場合、テンポラリテーブルを使用している 2 つのスレッド間の切り替えが発生するたびに、テンポラリテーブルを使用しているスレッドの疑似スレッド ID をバイナリログが挿入する必要がある。ただし、スレッドが終了前に不正なステートメントを発行した場合、そのスレッドの ID はバイナリログに記録されなかった。また、その結果として、テンポラリテーブルで何かを実行しようとした次のスレッドの ID もログに記録されなかった。バイナリログの後続の再実行は、 Table...doesn'texist というエラーで失敗した( Bug#51226 )。

・ レプリケーション : マスタが sql_mode='TRADITIONAL' を使用している場合は、重複キーエラーがスレーブへ送信されなかった。スレーブは、予期されたエラーコードではなく0を受信した。これにより、そのようなエラーが予期された場合でもレプリケーションが失敗していた( Bug#51055 )。

・ レプリケーション : --database オプションを使用して mysqlbinlog を実行すると、 ROLLBACK ステートメントは出力されたが、対応する SAVEPOINT ステートメントは出力されなかった( Bug#50407 )。

・ レプリケーション : CREATEEVENT ステートメントは、バイナリログに書き込まれるときに文字化けした文字で埋められた。そのため、ログから読み戻そうとすると構文エラーが発生した( Bug#50095 )。

・ レプリケーション : InnoDB によって生成された カラム長の情報は、 MyISAM によって生成されたカラム長の情報と一致しなかった。そのため、 BIT カラムを複製しようとすると、無効なメタデータがバイナリログに書き込まれた( Bug#49618 )。

・ レプリケーション : SHOWSLAVESTATUS の出力に含まれている Slave_IO_running の値では、スレーブI/Oスレッドの可能な3つの状態(未実行、実行中だが未接続、接続済み)が区別されなかった。現在は、スレーブI/Oスレッドが動作していて、スレーブがレプリケーションマスタに接続されていない場合、[No]ではなく[ Connecting ]が値として表示される。

サーバシステム変数の Slave_running もこの変更を反映しており、 Slave_IO_running について表示される内容と整合するようになっている( Bug#30703 、 Bug#41613 、 Bug#51089 )。

・ EXPLAINEXTENDED は、 GROUP_CONCAT() ORDERBY 引数について解放済みテンポラリテーブルカラムの参照を解決しようとすると、クラッシュした( Bug#52397 )。

・ InnoDBPlugin では、ワードパッキングの問題が原因でビットフィールドがSMPシステムでの同時性に関する問題を引き起こしていた( Bug#52360 )。

・オプティマイザは、行が読み取られる前に、 WHERE 句の評価を試みる可能性があった。その結果、サーバがクラッシュした( Bug#52177 )。

・LDML定義の照合の場合、一部のデータ構造は、 UPPER() および LOWER() が正しく機能できるように適切に初期化されていなかった( Bug#51976 )。

・Windowsでは、 LOAD_FILE() は一部のパス名でクラッシュを引き起こす可能性があった( Bug#51893 )。

・ HANDLER...READFIRST が失敗した後に、無効なメモリ読み取りが HANDLER...READNEXT に発生した( Bug#51877 )。

・ myisam_use_mmap が有効になっている場合は、 MyISAM テーブルの TRUNCATETABLE 後に、後続のクエリがサーバをクラッシュさせる可能性があった( Bug#51868 )。

・ myisam_sort_buffer_size を小さい値に設定した場合、 FULLTEXT インデックスを持つ MyISAM テーブルのテーブル修復によってサーバがクラッシュする可能性があった( Bug#51866 )。

・ LOADDATAINFILE では、 SET 句を使用してカラムをそれ自身と等しくなるように設定すると、サーバがクラッシュした( Bug#51850 )。

・プリペアドステートメントとストアドプロシージャの平等な伝搬の最適化に問題があったため、プリペアドステートメントまたはストアドプロシージャの再実行時にサーバがクラッシュした( Bug#51650 )。

Bug#8115 、 Bug#8849 も参照。

・ IN() 操作内に COALESCE() があると、オプティマイザが不正な結合タイプを実行した( Bug#51598 )。

・オプティマイザが定数テーブルの特定を試み、テーブルストレージエンジンが正確なレコードカウントをサポートしていない場合は、サーバがクラッシュした( Bug#51494 )。

・mutex保護がないため、サーバは INFORMATION_SCHEMA.PROCESSLIST テーブルのデータ入力中にクラッシュする可能性があった( Bug#51377 )。

・空間インデックスを持つテーブルで HANDLER ステートメントを使用すると、サーバがクラッシュした( Bug#51357 )。

・XAトランザクションがアクティブな状態で SETautocommit=1 を使用すると、メモリ破損やサーバクラッシュなどの副作用が生じる可能性があった( Bug#51342 )。

・ MyISAM テーブルへのバルク挿入後、 MyISAM がソートによる修復を使用したインデックスのビルドに失敗した場合、データファイルが破損する可能性があった( Bug#51307 )。

・ CHECKSUMTABLE は、BITカラムのチェックサムを正しく計算しない可能性があった( Bug#51304 )。

・結合テーブルに対する HAVING 句は、結果セットから除外されている必要がある行の除去に失敗することがあった( Bug#51242 )。

・ビューカラムに使用される型推論が原因で、ビュー内の一部のカラムは、ベーステーブル内の同じカラムに対して、間違った型として扱われた。ベーステーブルの DATE カラムはビューの TIME カラムとして扱われ、ベーステーブルの TIME カラムはビューの DATETIME カラムとして扱われていた( Bug#50918 )。

・ YEAR 値の 2000 と 0000 は、同じ値として扱われる可能性があった( Bug#49910 )。

・同じインデックス名を使用した ADDINDEX および DROPINDEX オプションが含まれている単一のインプレース ALTERTABLE を実行すると、テーブル定義ファイルが破損する可能性があった。現在、そのような ALTERTABLE ステートメントはインプレースで実行されなくなっている( Bug#49838 )。

・NULLになる可能性があるカラムが誤ってCSVログテーブルに含まれている場合、 mysql_upgrade は検出をしなかった。現在、これらのカラムは NOTNULL になるように変更されている( Bug#49823 )。

・ ucs2 文字セットのENUM値を使用した RETURN ステートメントがストアドファンクションに含まれている場合、 SHOWCREATEFUNCTION と SELECTDTD_IDENTIFIERFROMINFORMATION_SCHEMA.ROUTINES は不正な値を返した( Bug#48766 )。

・サーバは、非決定的ON句( RAND() 関数、ユーザ定義関数、または NOTDETERMINISTIC ストアドファンクションが含まれているものなど)を使用した外部結合を伴うクエリの最適な実行計画を決定できない場合にクラッシュした( Bug#48483 )。

・テーブル名からファイル名へのエンコーディングの対象となる文字が子テーブルまたはデータベース名に含まれている場合、MERGEエンジンは異なるデータベースから子テーブルを開くことができなかった。

また、子テーブル名に'/'や'#'などの文字が含まれている場合、MERGEエンジンは同じデータベースから子テーブルを正しく開かなかった( Bug#48265 )。

・以下の状況が存在する場合、派生テーブルから読み取るクエリ( SELECT...FROM(SELECT...) の形式)は不正な結果を生成した。

nテーブルサブクエリに派生クエリ( (SELECT...)AS column )が含まれている

n派生クエリがゼロの行または単一のNULLを生成する可能性がある(つまり、どの行も一致しない、またはゼロの行に対して実行される SUM() などの集計関数をクエリが使用している)

nテーブルサブクエリが少なくとも2つのテーブルを結合している

n結合条件にインデックスが含まれている

( Bug#47904 )

・インデックスから MIN() または MAX() 値を読み取るための最適化は、NULL値との比較を正しく処理しなかった。これにより、WHERE句がNULLについてNOTNULLカラムをテストした際に、 MIN() または MAX() の不正な結果が生成される可能性があった( Bug#47762 )。

・サブクエリの最適化段階でクエリを強制終了すると、サーバがクラッシュする可能性があった( Bug#47761 )。

・ EXPLAINEXTENDED と SHOWWARNINGS によって表示されたクエリは、元のクエリとは異なる結果を生成する可能性があった( Bug#47669 )。

・ InnoDB テーブルのカラムの名前を変更すると、サーバは InnoDB データディクショナリと同期が取れなくなった( Bug#47621 )。

・ MyISAM は、初期化されていないデータを新しいインデックスページに書き込む可能性があった。現在は、ページ内の未使用バイトにゼロが書き込まれるようになっている( Bug#47598 )。

・ myisam_repair_threads を1より大きい値に設定すると、平行インデックス修復後に MyISAM テーブルの全インデックスのカーディナリティが1に設定される可能性があった( Bug#47444 )。

・デバッグビルドでは、 INSERT...SELECT ステートメントで使用されるテーブルのビュー定義にリストされたカラムが整合していない場合、不正なステートメントの後のクエリキャッシュ無効化コードで表明が発生した( Bug#46615 )。

・ビューから選択されてそのビューのエイリアスを使用するクエリの場合、メタデータは、ビュー名ではなくエイリアス名を MYSQL_FIELD.table メンバで使用した( Bug#41788 )。

・ mysql_upgrade は、テンポラリファイルを正しく作成しなかった( Bug#41057 )。

・ MyISAM テーブルの DROPTABLE が別の MyISAM テーブルのデータとインデックスファイルを削除する可能性があった( Bug#40980 )。

・ CONCAT() 呼び出しの引数にローカルルーチン変数が含まれている場合は、ユーザ変数への戻り値を選択すると、不正な結果が生成される可能性があった( Bug#40625 )。

・定義に SELECT ' string ' ステートメント( string はカラム名の最大長よりも長い)が含まれている場合、このテキストはAS句でエイリアスとしても使用されるため、 SHOWCREATEVIEW は無効なSQLを返した。

長さと形式の制限により、任意の SELECT ステートメントから取得された名前をすべてビューカラム名として使用することはできないため、サーバは、最終的なビュー定義をディスクに格納する前に、自動生成されたカラム名の適合性をチェックし、ビューカラム名として許容できない名前を事前定義の形式に従って書き換えるようになっている。

このような場合、現在は名前が Name_exp_ pos ( pos はカラムの位置)として書き換えられる。この変換スキームを回避するには、 CREATEVIEW ステートメントの column_list 句を使用してビューカラムの有効な名前を明示的に定義する。

この修正の一部として、エイリアスは最上位のステートメントに対してのみ生成されるようになっている( Bug#40277 )。

・カバリングインデックススキャン用の最も短いインデックスの検索中に、オプティマイザはクラスタ化プライマリキーがテーブル全体を読み取ることを無視していた( Bug#39653 )。

・ mysqlbinlog は、オプション処理コードにメモリリークがあった( Bug#38468 )。

・ソースツリールート以外のディレクトリでMySQLをビルドしようとすると、構成時に readline のテストが失敗した( Bug#35250 )。

・データが TEXT カラムによって順序付けられている FEDERATED テーブルのクエリは、不正な結果を返した。例えば、以下のようなクエリは、 column1 カラムが TEXT カラムの場合に不正な結果を生成した。

      SELECT*FROMtable1ORDERBYcolumn1;
    

( Bug#32426 )

  • 免責条項
  • |  サイト利用規定
  • |  個人情報保護方針
  • |  個人情報の取り扱いについて
  • |  情報セキュリティ対策についての宣言文
  • |  
  • |  アクセスマップ
© Copyright Nomura Research Institute, Ltd. All rights reserved. オープンソースはOpenStandia