|
MySQL 5.1.42 リリースノート (日本語翻訳)
InnoDBPluginに関する注意事項:
InnoDBPlugin
が、バージョン1.0.6にアップグレードされた。本バージョンは、ReleaseCandidate(RC)の品質であるとみなされている。
「InnoDBPluginChangeHistory」
には、ここで報告した変更以外の情報が含まれている場合がある。
今回のリリースでは、
InnoDBPlugin
は、RHEL3、RHEL4、SuSE9(x86、x86_64、ia64)、およびLinuxRPM汎用パッケージを除き、ソースおよびバイナリディストリビューションに含まれている。また、FreeBSD6とHP-UX、およびS/390、PowerPC、ia64全般のLinuxでは動作しない。
リリースの公開状況:
・MySQLServer5.1は、リリース5.1.42から新たに以下のプラットフォームでも利用できる。
nMacOSX10.6x86/x64
nHP-UX11.31IA64
nSLES11x86/x64
修正されたバグ:
パフォーマンス
:
クエリキャッシュが断片化すると、メモリbinのフリーブロックリストのサイズが大きくなり、クエリキャッシュの失効が遅くなる。現在は、
SELECT
ステートメントがクエリキャッシュのロックを待機する場合、50ミリ秒でタイムアウトする。タイムアウト期限になると、ステートメントはクエリキャッシュを使用せずに実行される(
Bug#39253
)。
Bug#21074 も参照。
・ 重要な変更 : レプリケーション : 以下の関数が、ステートメントベースのレプリケーションに対してアンセーフとマークされた。
n
SLEEP()
上記の関数はマスタとスレーブで結果が異なることがあるため、ステートメントベースの形式を使用する場合、いずれも正しく複製されることが保証されない。
binlog_format
がSTATEMENTに設定されている場合に上記の関数を使用すると、Statementisnotsafetologinstatementformatという警告がログに記録される。
binlog_format
がMIXEDに設定されている場合は、上記のいずれかの関数を使用すると必ずバイナリロギング形式が行ベースの形式に切り替えられる(
Bug#47995
)。
・ パーティショニング :サブパーティションがあるテーブルに、新しいカラムを追加できない場合があった( Bug#48276 )。
・
パーティショニング
:ONLY_FULL_GROUP_BYSQLモードを使用している場合、パーティションドテーブルからの
SELECTCOUNT(*)
が失敗した(
Bug#46923
)。
この退化は Bug#45807 で発生した。
・ パーティショニング :DEFAULTCHARSET=utf8の場合、SUBPARTITIONBYKEYが失敗した( Bug#45904 )。
・
レプリケーション
:
行ベースのロギングを使用する場合、影響を受けるテーブルがテンポラリテーブルであっても
TRUNCATETABLE
がバイナリログに書き込まれ、レプリケーションが失敗した(
Bug#48350
)。
・
レプリケーション
:
マスタではNULL、スレーブではNOTNULLと宣言されている
TEXT
または
VARCHAR
カラムを複製すると、スレーブがクラッシュした(
Bug#43789
)。
Bug#38850 、 Bug#43783 、 Bug#43785 、 Bug#47741 、 Bug#48091 も参照。
・
レプリケーション
:
行ベースの形式を使用する場合、デフォルトを持たないカラムに値を指定せずにマスタで
INSERT
を行うと、サーバが厳格SQLモードではなく、本来ならマスタでこのステートメントが成功する場合であっても、CouldnotexecuteWrite_rowseventontable...;Field'...'doesn'thaveadefaultvalueというエラーでレプリケーションが失敗した。現在はSQLモードがチェックされるようになり、厳格モードが有効でなければステートメントが複製される。詳細については、
Section5.1.8,“ServerSQLModes”
を参照(
Bug#38173
)。
・NULL可能な
BIGINT
カラムと
INT
カラムの比較結果が一致しなかった(
Bug#49517
)。
・キャッシュの初期化が正しくないために、変換された定数値が格納されず、比較結果が正しくならない可能性があった( Bug#49489 )。
・
YEAR
値を含む比較で結果が正しくならない可能性があった(
Bug#49480
)。
Bug#43668 も参照。
・サーバの再起動後に、InnoDBがテーブルAUTO_INCREMENTの値を前回使用された値にリセットしなかった( Bug#49032 )。
・テーブルを伴うクエリを
KILL
で停止し、同じテーブルに対してその後
SHOWCREATETABLE
を実行すると、サーバがクラッシュした(
Bug#48985
)。
・ルーチン名で大文字/小文字が混在していると、ストアドルーチンの権限が無視された( Bug#48872 )。
Bug#41049 も参照。
・ comp_err にあるエラーが原因で、FedoraCore12の64ビット版でMySQLのビルドが失敗した( Bug#48864 )。
・1つのInnoDBテーブルに対して複数の
ALTERTABLE
操作を同時に実行すると、表明が発生する可能性があった(
Bug#48782
)。
・一部のINTERVAL式によって、64ビットシステムでクラッシュが発生する可能性があった( Bug#48739 )。
・クエリの実行中、
OR
操作に対して範囲が誤ってマージされ、不正な結果が返される可能性があった(
Bug#48665
)。
・InnoDBTableMonitorで、
FLOAT
および
DOUBLE
データタイプのレポートが正しくなかった(
Bug#48526
)。
・行ベースのバイナリロギングで、
CREATETABLEIFNOTEXISTS
existing_view
LIKE
temporary_table
というフォームのステートメントがクラッシュした。
これは、ステートメントをログに記録するときに、サーバが既存のビューをテーブルとして扱ったことが原因だった(
Bug#48506
)。
・GROUPBYWITHROLLUPを使用しconstテーブルしかないクエリでは、DISTINCTが無視された( Bug#48475 )。
・一部のWHERE条件に対して、ルーズなインデックススキャンが誤って選択された( Bug#48472 )。
・InnoDBテーブルスペースの構成で値が小さすぎた場合、または多数の
CREATETEMPORARYTABLE
ステートメントが実行され、
innodb_file_per_table
が有効であるためにテンポラリファイルのディレクトリがいっぱいになった場合に、サーバがクラッシュし、テーブルスペースが破損する可能性があった(
Bug#48469
)。
・範囲オプティマイザの一部が不正に初期化され、Valgrindエラーが発生する可能性があった( Bug#48459 )。
・不正な型キャストが原因で、クエリを実行すると大量のメモリが割り当てられる可能性があった( Bug#48458 )。
・
Windows
で、
InnoDB
を静的リンクライブラリとしてビルドできなかった(
Bug#48317
)。
・
Solaris
で
mysql_secure_installation
が動作しなかった
(
Bug#48086
)
。
・ mysql_secure_installation を実行する際に、rootパスワードに複数のスペース、\、#、または引用符が含まれていると、コマンドが失敗した( Bug#48031 )。
・サブクエリの内部で、MATCHINBOOLEANMODE検索の返す結果が多すぎる可能性があった( Bug#47930 )。
・
REPLACE
を使用して、InnoDBテーブルのAUTO_INCREMENTカラムで以前に挿入した負の値を更新すると、テーブルの自動増分値が2147483647に更新された(
Bug#47720
)。
・1つのセッションが
FLUSHTABLESWITHREADLOCK
で取得したグローバル読み取りロックを保持しており、
LOCKTABLES
によって1つのテーブルがロックされ、別のテーブルに対して
INSERTDELAYED
ステートメントが発行された場合、デッドロックが発生する可能性があった(
Bug#47682
)。
・ mysql クライアントステータスコマンドが、サーバの文字セットについて不正な値を表示した( Bug#47671 )。
・5.1.x以降の mysql クライアントから4.1.xサーバに接続すると、切断の際にメモリ解放エラーが発生した( Bug#47655 )。
・宣言されているストアドプログラム変数と同じベース名を共有するシステム変数を同じコンテキストで割り当てると、クラッシュする可能性があった( Bug#47627 )。
・64ビットシステムで、 mysqladmindebug がクラッシュする可能性があった( Bug#47382 )。
・
innodb_file_format_check
システム変数を、実行時にデフォルトの値またはユーザ定義変数の値に設定できなかった(
Bug#47167
)。
・ARCHIVEテーブルを含むMySQL5.0からMySQL5.1へのバイナリアップグレード後にARCHIVEテーブルにアクセスすると、 mysql_upgrade またはCHECKTABLE...FORUPGRADEを実行していてもサーバがクラッシュする可能性があった。
この問題を回避するには、アップグレード前に mysqldump を使用してすべてのARCHIVEテーブルをダンプし、アップグレード後にMySQL5.1に再ロードする。同じ問題は、MySQL5.1から5.0へのバイナリダウングレードでも発生する( Bug#47012 )。
・MacOSXの MySQLPreferencePane コンポーネントは64ビット対応でビルドされていなかったため、[システム環境設定]アプリケーションが32ビットモードで再起動した( Bug#46935 )。
・
DELETE
ステートメントのIGNORE句によって、トリガの処理中に発生するSQLステートメントエラーがマスクされた(
Bug#46425
)。
・64ビットシステムで、
--skip-innodb
がInnoDBの起動をスキップしなかった(
Bug#46043
)。
・InnoDBPluginに対するValgrindエラーが修正された( Bug#45992 、 Bug#46656 )。
・一部のmy_hash_insert()呼び出しで戻り値がチェックされなかった( Bug#45613 )。
・リテラル
DECIMAL
値からテーブルのカラムの型を推測する場合など、
DECIMAL
値の切り捨てによって表明違反が発生する可能性があった(
Bug#45261
)。
Bug#48370 も参照。
・
YEAR(2)
値に対して、
MIN()
、
MAX()
、および比較の結果が正しくならない可能性があった(
Bug#43668
)。
・不整合のmysql.procシステムテーブルにアクセスしようとすると、サーバがクラッシュする可能性があった。たとえば、 mysql_upgrade を実行せずにMySQL5.0から5.1にアップグレードした後でストアドプロシージャ関連のステートメントを呼び出すと、サーバがクラッシュする可能性があった( Bug#41726 )。
・InnoDBのモニタ機能(
SHOWENGINEINNODBSTATUS
、またはInnoDBMonitorテーブルのいずれか)を使用すると、同時実行の環境における共有変数への無効なアクセスが原因でサーバがクラッシュする可能性があった。これは、MySQL5.1.31における最初の修正に対してMySQL5.1.38で発生していた退化の追加修正である(
Bug#38883
)。
・Windowsで mysql_secure_installation を実行する際に、コマンドが正しい操作に必要な必須モジュールTerm::ReadKeyrootのロードに失敗した( Bug#35106 )。
・
--log-bin
サーバオプションがコンポーネント区切り文字で終わるディレクトリに設定されている場合、バイナリログファイルのベース名が空になるため、作成されるファイルには
.000001
および
.index
という名前が付けられた。
--log-bin-index
、
--relay-log
、および
--relay-log-index
の各オプションについても同様のことが発生した。現在はサーバがエラーをレポートして終了する(
Bug#34739
)。
・比較が型変換を必要とする定数値を伴う場合、変換された値がキャッシュされないため、変換が繰り返され、パフォーマンスが低下した( Bug#34384 )。
・InnoDBテーブルでパーティションを使用する際に
SHOWENGINEINNODBSTATUS
ステートメントを使用すると、無効な(古い?)テーブル名またはデータベース名のエラーがログに記録される(
Bug#32430
)。
・一部のWindowsシステムで、一時的なドライバまたはハードウェアの問題が原因でInnoDBがファイル操作時にオペレーティングシステムエラー995番を報告する可能性があった。現在InnoDBは操作を再試行し、エラーメッセージにRetryattemptismadeを追加する( Bug#3139 )。