|
MySQL 5.1.37 リリースノート (日本語翻訳)
機能の追加と変更:
・
重要な変更
:
レプリケーション
:現在では、
RESETMASTER
および
RESETSLAVE
で、
SHOWSLAVESTATUS
の出力で、
Last_IO_Error
、
Last_IO_Errno
、
Last_SQL_Error
、および
Last_SQL_Errno
に
示される値がリセットされる(
Bug#44270
)。
Bug#34654 も参照。
修正されたバグ:
・
パフォーマンス
:
InnoDB
テーブルで、
MySQLは、プライマリキーのプリフィックスがはるかに選択的であったとしても、ファイルソートを避けるために選択性の低いセカンダリインデックスを使用した。
この問題の修正により、他のクエリの実行に時間がかかる場合がある( Bug#45828 )。
・
パーティショニング
:
セキュリティの修正
:サーバのSQLモードに
ONLY_FULL_GROUP_BY
が含まれる場合、ユーザ定義のパーティショニングを含むテーブルにアクセスすると、MySQLサーバがクラッシュした。たとえば、以下のステートメントによりサーバがクラッシュした。
DROPTABLEIFEXISTSt1;
SETSESSIONSQL_MODE='ONLY_FULL_GROUP_BY';
CREATETABLEt1(idINT,KEY(id))
PARTITIONBYHASH(id)PARTITIONS2;
( Bug#45807 )
・
セキュリティの修正
:
strxnmov()
ライブラリ関数は、デスティネーションバッファの後に、
NULL
バイトを書き込むことができた
(
Bug#44834
)
。
・
重要な変更
:
レプリケーション
:
STATEMENT
または
MIXED
バイナリログフォーマットを使用する場合、非トランザクショナルテーブルへの変更があると、非トランザクショナルテーブルとトランザクショナルテーブルの両方を変更するステートメントが、バイナリログに書き込む必要がある。これは、トランザクショナルテーブルへの変更に失敗した場合でも、ステートメントがバイナリログになることを表す。特に、エラーイベントでは、このようなステートメントはエラー番号が付けられ、
BEGIN
および
ROLLBACK
のステートメントのペア内でラップされる。
スレーブでは、ステートメントの適用中、同一のエラーとロールバックにより、トランザクションの変更が持続しないように防止されることが予想される。ただし、デッドロックやタイムアウトなど同時並行で生じる問題によって失敗するステートメントは同様にログインされ、ステートメントがSQLスレッドによって連続して適用されるため、スレーブは停止してしまう。
この問題を処理するために、スレーブで同時並行で生じるエラーを無視する。特に、ER_LOCK_WAIT_TIMEOUT、ER_LOCK_DEADLOCKおよびER_XA_RBDEADLOCKのエラーは現在無視されている( Bug#44581 )。
・
パーティショニング
:
MyISAM
パーティションドテーブルの切り捨てで、
AUTO_INCREMENT
値
をリセットしなかった(
Bug#35111
)。
・
レプリケーション
:
SHOWSLAVESTATUS
の接続スレッドは、エラーメッセージバッファを使用するために、スレーブのSQLスレッドと競合した。結果として、接続スレッドが不完全なメッセージを受け取ることがあった。メッセージ文字列が
NULL
ターミネータなしで渡された場合、この問題が
valgrind
で発見され、Conditionaljumpormovedependsonuninitialisedvalue(s)
というエラーが発生した
(
Bug#45511
)
。
Bug#43076 も参照。
・
レプリケーション
:キャッシュサイズ(
max_binlog_cache_size
で設定される)が変更を保存するには十分な大きさでない場合、大きなトランザクションやステートメントは、バイナリログに誤ったデータを含む可能性があった。
現在では、キャッシュサイズに適合しないトランザクションの場合、ステートメントはログが記録されず、その代わりにステートメントでエラーが生成される。
キャッシュに適合しないトランザクション以外の変更では、ステートメントも記録されず、出来事イベントは、保留中のトランザクションのコミットまたはロールバック後にログに記録され、その後ステートメントによりエラーが発生する。
出来事イベントがバイナリログに書き込まれる前にエラーが発生した場合、スレーブは停止せず、マスタはエラーをレポートしない。
( Bug#43929 )
Bug#37148 も参照。
・
レプリケーション
:行ベースのログ形式を使用する場合、
mysqlbinlog
の
--database
オプションは無視されていた(
Bug#42941
)。
・
レプリケーション
:
LIMIT
を使用するステートメントが誤った
Statementisnotsafetologinstatementformat警告
をエラーログ内に生成したため、
ログサイズが急激に拡大することとなった(
Bug#42851
)。
この退化については、 Bug#34768 で紹介された。
・
レプリケーション
:
FLUSHLOGS
の実行中にサーバをシャットダウンすると、
CHANGEMASTERTO
または
STOPSLAVE
で
mysqld
がクラッシュする場合があった(
Bug#38240
)。
・ レプリケーション :マスタで使用中、または正常に終了していない(クラッシュが原因の可能性あり)バイナリログを読み取る場合、Warning:thisbinlogwasnotclosedproperly.Mostprobablymysqldcrashedwritingit.というメッセージが表示された。このメッセージは、単にマスタにより使用中である可能性については考慮しておらず、このメッセージについて知らないユーザにとっては懸念材料となっていた。
これを明確にするため、元のメッセージはWarning:thisbinlogiseitherisuseorwasnotclosedproperly.に変更された( Bug#34687 )。
・
GROUP_CONCAT(...ORDERBY)
の見積もりにソートバッファの割り当てが必要な場合に、割り当てに失敗すると、サーバがクラッシュした(
Bug#46080
)。
・ibmdb2i_create_index_optionオプションを1に設定して、
IBMDB2I
ストレージエンジンを使用するテーブルを作成する場合
、プライマリキーを含む
IBMDB2I
テーブルを作成すると
EBCDICの16進ソートを使用する追加のインデックスが作成されるが、このインデックスは作成されなかった(
Bug#45983
)。
・結合を使用して定義された画面で
REPLACE
または
INSERT...ONDUPLICATEKEYUPDATE
を使用しようとすると、サーバがクラッシュした(
Bug#45806
)。
・一部の照合では、従属文字列を選択する
LIKE
句について、
IBMDB2I
で
不正確なキー範囲の見積もりをオプティマイザへ報告していた。これは
EXPLAIN
を実行することで確認できる。この問題は主にマルチバイト文字およびユニコード文字セットに影響する(
Bug#45803
)。
・マージおよびベーステーブルを変更する際、無効なメモリ読み取りおよび書き込みが生成された。これによってクラッシュまたはValgrindエラーが発生した。
==28038==Invalidwriteofsize1
at:memset(mc_replace_strmem.c:479)
by:myrg_attach_children(myrg_open.c:433)
by:ha_myisammrg::attach_children()(ha_myisammrg.cc:546)
by:ha_myisammrg::extra(ha_extra_function)(ha_myisammrg.cc:944)
by:attach_merge_children(TABLE_LIST*)(sql_base.cc:4147)
by:open_tables(THD*,TABLE_LIST**,unsigned*,unsigned)(sql_base.cc:4709)
by:open_and_lock_tables_derived(THD*,TABLE_LIST*,bool)(sql_base.cc:4977)
by:open_n_lock_single_table(mysql_priv.h:1550)
by:mysql_alter_table(sql_table.cc:6428)
by:mysql_execute_command(THD*)(sql_parse.cc:2860)
by:mysql_parse(THD*,charconst*,unsigned,charconst**)(sql_parse.cc:5933)
by:dispatch_command(sql_parse.cc:1213)
( Bug#45796 )
・
IBMDB2I
ストレージエンジンで
macce
文字セットを使用するテーブルにデータを挿入すると失敗した
(
Bug#45793
)
。
・実行時に
innodb_commit_concurrency
を値
DEFAULT
に変更すると、競合条件が生じた(
Bug#45749
)。
Bug#42101 も参照。
・空のXAトランザクションを実行すると、次のXAトランザクションでサーバがクラッシュした( Bug#45548 )。
・
GBK
文字セットを使用するストアドプロシージャの
レプリケーションで、マスタとスレーブで異なる結果になった(
Bug#45485
)。
・
SHOWCREATETRIGGER
では
TRIGGER
の権限が必要であるが、権限のチェックが行われていなかった(
Bug#45412
)。
・
InnoDB
がレコードをアンロックしようとする場合、
クラスタインデックスレコードが認識されないと、表明違反が発生する可能性があった(
Bug#45357
)。
・--enable- plugin_name オプション(--enable-innodbなど)が正しく機能しなかった( Bug#45336 )。
Bug#19027 も参照。
・自動コミットが有効になっていると、ステートメントが強制終了された場合に、
InnoDB
が
DELETE
または
UPDATE
ステートメントをロールバックしなかった(
Bug#45309
)。
・
CREATETABLE...SELECT
ステートメント内の65桁を超える
DECIMAL
定数を使用すると、誤ったエラーや表明違反が発生した(
Bug#45262
)。
・ mysql クライアントは、一部の文字列をある状況下でコマンドとして誤って解釈する可能性があった( Bug#45236 )。
・空の
SET
値で
CONVERT()
を使用すると、表明違反が発生する可能性があった(
Bug#45168
)。
・
InnoDB
のリカバリを行うと、
doublewriteバッファページのREDOログが原因でハングする可能性があった(
Bug#45097
)。
・バイナリデータを読み取る際、ジオメトリデータ収集のための連結関数が利用可能なデータを厳密にチェックしなかったため、無効な読み取りが行われ、サーバがクラッシュした( Bug#44684 )。
・
AUTO_INCREMENT
カラムと
BEFORE
トリガを含み、
INSERT...SELECT
の構造を使用したテーブル(既に存在するテーブルなど)の作成中にエラーが発生した場合、内部フラグが正しくリセットされなかった。これにより、次にテーブルが開かれるときにクラッシュが発生した(
Bug#44653
)。
・
configure.in
には、使用しているプラットフォームで適切な値にパラメータ化された変数ではなく、
nm
および
libc
のリテラルインスタンスの参照が含まれていた(
Bug#42721
)。
・
configure.in
は、
pthread_setschedprio()
関数を正しくチェックしていなかった
(
Bug#42599
)
。
・SunStudioのバグの回避方法が実施された( Bug#41710 )。
・クエリで、以下のフォームの
FROM
句に十分な数のサブクエリが含まれる場合、
Toohighlevelofnestingforselect
エラーでクエリが失敗する。
SELECT*FROM(SELECT1)ASt1,
(SELECT2)ASt2,
(SELECT3)ASt3,...
これはクエリに以下のようなフォームが含まれる場合と同様である。
SELECT*FROM(SELECT1FROM(SELECT2FROM(SELECT3FROM...
( Bug#41156 )
・行に影響しない一部の
UPDATE
ステートメントが、行に影響するカウントを返していた(
Bug#40565
)。
・
InnoDB
テーブルを含む
SHOWTABLESTATUS
で発生したValgrind警告が抑制された(
Bug#38479
)。
・
mysql
クライアントで
status
コマンドを繰り返す間にサーバ接続が切断された場合、クライアントはこれを検出することに失敗し、コマンド出力は矛盾した内容になる
(
Bug#37274
)
。
・サブクエリ実行中のValgrindエラーが修正された( Bug#36995 )。
・複数のサーバインスタンスを起動するために呼び出す際、 mysqld_multi は、ロケーションを各インスタンスのベースディレクトリへ変更しないことが原因で、場合によりサーバインスタンスの起動に失敗することがあった( Bug#36654 )。
・不正な初期化が原因で、遅いクエリログに書き込まれる行に不確定な
Rows_examined
値が含まれる可能性があった
(
Bug#34002
)
。
・外部キー定義に示されるカラム名を変更する場合、外部キー定義が新しいカラム名で更新されなかった( Bug#21704 )。