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


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

 

機能の追加と変更:

・ 重要な変更 : レプリケーション :以前、出来事ログイベントはmysqlbinlogからの出力でコメントとして表されていたが、binlogを再生すると、効果的にサイレントになる。

(出来事ログイベントは、イベントがバイナリログに記録されることなく、データベースの内容が変更される可能性がある出来事を表す。)

SQLがサーバに適用されると、潜在的に、異なるデータを持つマスタとスレーブになる可能性があった。以前の動作を除くアプリケーションを停止することなく、出来事ログイベントを処理できるようにするために、意味の無いステートメントRELOADDATABASEがその出来事ログイベントのSQL出力に追加され、これによってエラーが発生する。

現在、この機能を使用するには、サーバに出力を適用する前に、ダンプファイルの手動による編集と、データベース管理者による各ケースの個別の処理が必要である( Bug#44442 )。

・ mysql_upgrade では、現在、 mysqlcheck を呼び出すと、使用する接続パラメータを表すメッセージが表示される( Bug#44638 )。

・Windows用の時間帯テーブル(http://dev.mysql.com/downloads/ timezones.html で入手可能)が更新されている( Bug#39923 )。

・現在、 mysqltest プログラムには、ファイル名を変更するための move_file from_fileto_file コマンドがある。これは、プラットフォーム固有の外部コマンドを呼び出すのではなく、テストケースで使用される( Bug#39542 )。

・ max_binlog_cache_size の最大値は、 (32ビットプラットフォームでも)2 32 1から2 64 1まで増加した。これにより、バイナリログが有効である場合、4GB以上のトランザクションが実行可能になる( Bug#10206 )。

修正されたバグ:

・ パフォーマンス : InnoDB の適応ハッシュラッチは(ある場合)、潜在的な長期間にわたる処理のためにリリースされている。これにより、現在のクエリでテンポラリテーブルが削除されているか、テンポラリテーブルがメモリからディスクへ変更されているか、 CREATETABLE...SELECT を使用しているか、またはトランザクション内で使用されるテーブルで MyISAM の修正を実行する場合に、他のクエリのスループットが改善される ( Bug#32149 )。

・ セキュリティの修正 : CREATEROUTINE 権限を持ち、 EXECUTE 権限を持たないアカウントでストアドプロシージャを作成しようとすると、サーバがクラッシュした( Bug#44798 )。

・ セキュリティの修正 :適切な権限がないアカウントで、ストアドプロシージャを作成しようとすると、サーバがクラッシュした( Bug#44658 )。

・ セキュリティの修正 :4つの潜在的な書式文字列の脆弱性(Veracodeコード分析により発見)が修正された( Bug#44166 )。

・ 矛盾を含む可能性がある変更 :サーバは、スタートアップオプションの制御の下でプラグインを読み込むことができる。たとえば、サーバを起動すると、多くのストレージエンジンを着脱可能な形式で組み込むことができる。以下の説明で、 plugin_name は innodb などのプラグイン名を表す。

以前は、プラグインオプションは他のbooleanオプションと同様に処理されていた( セクション4.2.3.2「ProgramOptionModifiers」 を参照)。つまり、これらのオプションによってプラグインが有効になった。

      --
      
        plugin_name
      
    
      --
      
        plugin_name
      
      =1
    
      --enable-
      
        plugin_name
      
    

また、以下のオプションではプラグインが無効になった。

      --
      
        plugin_name
      
      =0
    
      --disable-
      
        plugin_name
      
    
      --skip-
      
        plugin_name
      
    

ただし、プラグインの読み込みにbooleanオプションを使用すると、プラグインが正常な起動に失敗した場合の動作を制御できなかった(プラグインが無効である場合、サーバは終了するべきか、または起動するべきか)。実際の動作では、サーバはプラグインが無効な状態で起動していたが、これは問題を引き起こす可能性があった。たとえば、 InnoDB が起動に失敗した場合、 既存の InnoDB テーブルにアクセスできなくなり、新規 InnoDB テーブルを作成しようとすると、 NO_ENGINE_SUBSTITUTION のSQLモードで代わりにエラーを発生できない限り、デフォルトのストレージエンジンを使用するテーブルになる。

現在では、プラグインの読み込みを制御するために使用されるオプションが3つの形式を持つように変更されている。

o -- plugin_name =OFF

プラグインを有効にしない。

o -- plugin_name [=ON]

プラグインを有効にする。プラグインの初期化に失敗した場合、サーバを起動してもプラグインは無効である。値なしでオプション -- plugin_name を指定した場合もプラグインは有効になる。

o -- plugin_name =FORCE

プラグインを有効にする。プラグインの初期化に失敗した場合は、サーバを起動しない。つまり、サーバはプラグインと共に実行されるか、またはサーバもプラグインもどちらも実行されないかのいずれかである。

OFF 、 ON 、 FORCE の値は大文字と小文字が区別されない。

CSV および InnoDB が着脱可能なストレージエンジンとして組み込まれ、サーバの起動時に読み込むとすると、条件として、 CSV が初期化に失敗した場合でもサーバは実行可能であるが、 InnoDB の初期化は正常に行われる必要がある。これを実現するには、オプションファイルで以下の行を使用する。

      [mysqld]
    
      csv=ON
    
      innodb=FORCE
    

-- plugin_name =0 または -- plugin_name =1 のオプションを使用した場合、それぞれ -- plugin_name =OFF または -- plugin_name =ON に変更されるため、この変更は以前の実装では不完全である。

--enable- plugin_name は引き続きサポートされ、 -- plugin_name =ON と同様である。 --disable- plugin_name および --skip- plugin_name も引き続きサポートされ、 -- plugin_name =OFF と同様である( Bug#19027 )。

Bug#45336 も参照。

・ 重要な変更 : レプリケーション : BEGIN 、 COMMIT 、および ROLLBACK ステートメントは、現在では --replicate-do-db または --replicate-ignore-db の規則による影響を受けない( Bug#43263 )。

・ パーティショニング :複数列で DISTINCT または GROUPBY を使用するクエリでは、パーティションドテーブルで正しい結果が得られない( Bug#44821 )。

Bug#41136 も参照。

・ レプリケーション :行ベースのログを使用する場合、イベントフィールドのメタデータが255バイトを超えるイベントの長さは正しく計算されなかった。これにより、バイナリログが破損したり、サーバがハングすることがあった( Bug#42749 )。

Bug#44548 、 Bug#44672 、 Bug#44752 も参照。

・ レプリケーション :ステートメントまたは他のデータベースイベントが、ステートメントベースの形式を使用してバイナリログへ確実に書き込まれることを判断できない状況で発行される、Statementisnotsafetologinstatementformatという警告が、Statementmaynotbesafetologinstatementformatに変更された( Bug#42415 )。

・ レプリケーション :クエリをスレーブに転送する際にレプリケーションで使用される Query_log_event がリファクタリングされた。 Query_log_event は、実行により発生するエラーコードの保存および送信も行う。これは、場合によりスレーブでもステートメントを実行する必要があるためであり、この結果、同じエラーコードが生じる。以前、 Query_log_event コンストラクタの結果が複雑なルーチンを使用したエラーコードになり、その結果がコンストラクタ内に残されることがあった。これは、無効なエラーに関する少なくとも 2 つの既知のバグとも関連し、コンストラクタが適切に設計されておらず、再度記述し直す必要があることを明確に表していた ( Bug#41948 ) 。

Bug#37145 も参照。

・ レプリケーション : スレーブがテンポラリテーブルを複製しているときにそのスレーブを停止して再起動すると、スレーブサーバがクラッシュしたり、表明違反が発生したりする可能性があった。テンポラリテーブルはスレーブスレッドの再起動ごとに保存されたが、使用されるスレッドへの参照( table->in_use )は再起動時に正しく更新されず、新しいスレッドではなく古いスレッドを引き続き参照していたため、この問題が発生した。この問題は、ステートメントベースのレプリケーションにのみ影響した( Bug#41725 )。

・ WHERE 句および GROUPBY 句を使用して 、選択リスト内の MIN() または MAX() を組み合わせると、不正な結果が生じる可能性があった( Bug#45386 )。

・VC++2008で libmysqld を使用する場合のリンカのエラーが修正された。 ( Bug#45326 )

・MacOSXでのコンパイラ警告が修正された( Bug#45286 )。

・ cp1250 文字セットを使用する IBMDB2I テーブルで SELECT クエリを実行すると、エラーが生成された。

      ibmdb2ierror2027:Errorconvertingsingle-bytesortsequencetoUCS-2
    

( Bug#45197 )

・派生テーブルの LONGTEXT または LONGBLOB カラムで ROUND() を使用すると、サーバがクラッシュする可能性があった( Bug#45152 )。

・ PAD_CHAR_TO_FULL_LENGTH のSQLモードが有効であった場合、 DROPUSER はアカウントのすべての権限の停止に失敗する可能性があった( Bug#45100 )。

・ GROUPBY を使用して、 constant (単一行の) InnoDB テーブルと他のテーブルを結合すると、サーバがクラッシュした ( Bug#44886 ) 。

・ ALTERTABLE を表示すると サーバがクラッシュした 。( Bug#44860 )

・ IBMDB2I ストレージエンジンでパーティショニングを使用すると、 エンジンは、有効な文字セットがサポートされていないことをレポートする可能性があった( Bug#44856 )。

・64ビットバージョンのMySQLを使用する場合、UTF8文字を使用する IBMDB2I ストレージエンジンのテーブルでクエリを実行すると失敗した ( Bug#44811 ) 。

・ sort_buffer_size がすべてのソートキーについて十分なサイズでない場合、IndexMerge後にファイルソートを使用すると、サーバがクラッシュする可能性があった( Bug#44810 )。

Bug#40974 も参照。

・ UNCOMPRESSED_LENGTH() は、5バイト未満の文字列を渡すと不要な結果を返した。現在は、 UNCOMPRESSED_LENGTH() はNULLを返して警告を生成するようになっている( Bug#44796 )。

・いくつかのValgrind警告が抑制されていた( Bug#44774 、 Bug#44792 )。

・ N が constant テーブル(単一行を含むテーブル)の列である関数 RAND( N ) を選択すると、 SIGFPE シグナルの使用に失敗した ( Bug#44768 ) 。

・ PASSWORD() 関数および OLD_PASSWORD() 関数は、 BLOB の引数を使用する場合、内部バッファの外側でメモリを読み取ることができた( Bug#44767 )。

・文字列を異なる文字セットへ変換する場合、入力と出力で同じバッファを使用して、不正な結果または警告が生じる可能性があった( Bug#44743 、 Bug#44766 )。

・ mysqld_safe が、 logger プログラムの検索に失敗する可能性があった( Bug#44736 )。

・読み取り専用のXAトランザクションを最適化したコードは、トランザクションがアクティブでなくなると、XIDのリセットに失敗した( Bug#44672 )。

・トランザクション処理に関連するValgrind警告が抑制されていた( Bug#44664 )。

・ IBMDB2I ストレージエンジンを使用してテーブルを作成する際、 IBMi内の対応するファイルに適用される RCDFMT (レコード形式) は、テーブル名に従って設定された。テーブル全体の処理中、名前がテーブル名と一貫性のない値に変更される可能性があった。また、レコード形式がファイルの内容と比較すると矛盾するものになった。現在では、 IBMDB2I ストレージエンジンによって、明示的な RCDFMT 句が DB2ストレージエンジンレイヤに伝えられる CREATETABLE ステートメントに追加されている ( Bug#44610 ) 。

・ innochecksum は引数から入力ファイル名を正しく判別できないことがあった( Bug#44484 )。

・不正な時間が mysqldump 出力の最後にレポートされた( Bug#44424 )。

・ GROUPBY 式のキャッシュにより、 コンパイル時と実行時の計算に不一致が生じ、サーバがクラッシュすることがあった。( Bug#44399 )

・マルチバイト cp932 または SJIS 文字の文字列での 大文字/小文字の変換は、不正な結果になる場合があった( Bug#44352 )。

・ InnoDB は、 TableMonitorの COLUMNS 出力で DB_ROLL_PTR 情報を消失していた ( Bug#44320 ) 。

・ INSERTINTO...SELECT ステートメントで、重複キーエラーのため表明違反が発生する可能性があった( Bug#44306 )。

・ IBMDB2I テーブルでサポートされていない文字セットを使用すると、DB2エラー2501または2511が生成された。エラーは更新され、エラー2504が生成させるようになっている(文字セットがサポートされていない)( Bug#44232 )。

・64ビットWindowsシステムでは、 myisamchk が4GBを超える key_buffer_size 値を処理できなかった ( Bug#43940 ) 。

・ユーザ定義の UTF8 照合では、 列には長すぎる値を保存しようとすると、サーバがクラッシュした( Bug#43827 )。

・テーブルの変更によるクエリキャッシュエントリの無効化のため、スレッドが“freeingitems(アイテムの解放)”状態のクエリキャッシュ内でハングする可能性があった( Bug#43758 )。

・ UNION クエリの最後の SELECT が括弧で囲まれておらず、 ORDERBY 句を含んでいる場合、 EXPLAINEXTENDED がクラッシュする可能性があった( Bug#43612 )。

・ InnoDB テーブルについてマルチテーブルの更新を行うと、 予期しない結果が生成される可能性があった( Bug#43580 )。

・ mysql_stmt_prepare() の後で、クライアントがMySQLサーバとの接続を切断された場合、最初に mysql_stmt_execute() を呼び出すとエラーを返す(予想どおり)が、連続して mysql_stmt_execute() または mysql_stmt_close() を呼び出すと、クライアントがクラッシュした( Bug#43560 )。

・ ORDERBY var ( var は 値が NULL のグローバルシステム変数)を使用する DELETE ステートメントを使用すると、サーバがクラッシュする可能性があった ( Bug#42778 ) 。

・OpenSSLに対してリンクされたビルドでは、X509証明書の使用に関連したメモリリークがあった( Bug#42158 )。

・実行時に innodb_commit_concurrency をゼロからゼロ以外、またはゼロ以外からゼロへ変更する場合、競合条件があった。現在では、この変数を実行時に、ゼロからゼロ以外、またはゼロ以外からゼロへ変更できない。値はゼロ以外の値から別の値へ変更できる( Bug#42101 )。

Bug#45749 も参照。

・ SELECT...INTO@var が、INTO句のない SELECT... とは異なる値を生成する可能性があった( Bug#42009 )。

・ mysql_zap は、MacOSXで機能しなかった。( Bug#41883 )

・MERGEテーブルと table_cache の追い立ての間の競合条件が原因で、クラッシュが発生していた。

      00000001403C452Fmysqld.exe!memcpy()[memcpy.asm:151]
    
      00000001402A275Fmysqld.exe!ha_myisammrg::info()[ha_myisammrg.cc:854]
    
      00000001402A2471mysqld.exe!ha_myisammrg::attach_children()[ha_myisammrg.cc:488]
    
      00000001402A2788mysqld.exe!ha_myisammrg::extra()[ha_myisammrg.cc:863]
    
      000000014015FC5Dmysqld.exe!attach_merge_children()[sql_base.cc:4135]
    
      000000014016A4C1mysqld.exe!open_tables()[sql_base.cc:4697]
    
      000000014016A898mysqld.exe!open_and_lock_tables_derived()[sql_base.cc:4956]
    
      000000014018BB54mysqld.exe!mysql_insert()[sql_insert.cc:613]
    
      000000014019EDD3mysqld.exe!mysql_execute_command()[sql_parse.cc:3066]
    
      00000001401A2F06mysqld.exe!mysql_parse()[sql_parse.cc:5791]
    
      00000001401A3C1Amysqld.exe!dispatch_command()[sql_parse.cc:1202]
    
      00000001401A4CD7mysqld.exe!do_command()[sql_parse.cc:857]
    
      0000000140246327mysqld.exe!handle_one_connection()[sql_connect.cc:1115]
    
      00000001402B82C5mysqld.exe!pthread_start()[my_winthread.c:85]
    
      00000001403CAC37mysqld.exe!_callthreadstart()[thread.c:295]
    
      00000001403CAD05mysqld.exe!_threadstart()[thread.c:275]
    
      0000000077D6B69Akernel32.dll!BaseThreadStart()
    
      Tryingtogetsomevariables.
    
      Somepointersmaybeinvalidandcausethedumptoabort...
    

( Bug#41212 )

・コマンドラインから mysqld が開始された場合、共有メモリの接続がVistaで機能しなかった( Bug#41190 )。

・カラムリスト句で作成したビューの場合、 HAVING 句を使用したビューで選択を行うと、カラムエイリアスが置換されなかった( Bug#40825 )。

・テーブル自己結合に関係する複数テーブルの DELETE を使用すると、サーバがクラッシュする可能性があった( Bug#39918 )。

・ '#' 文字を含むコメントを使用して InnoDB テーブルを作成すると、外部キー制約が省略された( Bug#39793 )。

・ ALTERTABLE は、オリジナルテーブルの ROW_FORMAT 情報を保護せず、これにより、後続の ALTERTABLE および OPTIMIZETABLE ステートメントで、 InnoDB テーブルの行形式が 失われる可能性があった( Bug#39200 )。

・ mysql オプションの --ignore-spaces が機能しなかった( Bug#39101 )。

・ クエリが1054Unknowncolumn'...'in'fieldlist' というエラーを生成するようなものだった場合、そのクエリで EXPLAINEXTENDED を使用すると、サーバがクラッシュする可能性があった( Bug#37362 )。

・ mysql クライアントで、デフォルトのbinary文字セットを使用すると、 DELIMITER などの内部コマンドで大文字と小文字が区別されるようになった ( Bug#37268 ) 。

・ mysqldump--tab は、対応するテーブルの .sql ファイルではなく stdout のトリガをダンプしていた ( Bug#34861 ) 。

・環境変数 MYSQL_HISTFILE が /dev/null に設定されている場合、 mysql クライアントは /dev/null デバイスファイルを標準ファイルとして上書きした( Bug#34224 )。

・ mysqld_safe は、特定のパラメータにスペースが含まれる場合、そのパラメータについて誤った処理を行っていた( Bug#33685 )。

・スレッドIDが32ビットを超えると、 mysqladminkill が機能しなかった( Bug#32457 )。

・いくつかのクライアントプログラムでは、 --skip-password を“sendnopassword(パスワードを送らない)”と解釈することに失敗した( Bug#28479 )。

・ mysql--html からの出力で、「 < 」、「 > 」 、または「 & 」文字 をエンコードできなかった( Bug#27884 )。

・ mysql_convert_table_format が MEMORY テーブルまたは BLACKHOLE テーブルへのテーブル変換を抑止せず、この結果、データが消失する可能性があった ( Bug#27149 ) 。

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