|
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 )。
・
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 )