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


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#46265 、 Bug#42415 も参照。

この退化については、 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 )。

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