2026.08.26

MySQL

MySQL 9.7.2(リリース日:2026年7月28日)

監査ログ関連

  • audit_log_encryption_password_get(keyring ID)が呼び出された場合、サーバーが予期せず終了する可能性がありました。(Bug #33296125)

コンパイル関連

  • MySQLで使用されるlibfido2のバージョンが1.17.0にアップグレードされました。(Bug #39478664)
  • comp_errユーティリティにおける潜在的なメモリリークが修正されました。(Bug #36532183)

非推奨と削除関連

  • 以下のレプリケーションシステム変数は、このリリースで非推奨となり、今後のリリースで削除される予定です:
    • group_replication_communication_stack
    • group_replication_ip_allowlist

    (WL #17300)

InnoDB関連

  • InnoDB: バージョン管理されていない ROW_FORMAT=REDUNDANTの行において、row_upd_rec_in_place()で発生していたデバッグアサーションの問題を修正しました。(Bug #39165747)
  • InnoDB: バッファプールのサイズ変更中、innodb_adaptive_hash_index=ONであっても、mysqld-auto.cnf内でAdaptive Hash Indexが無効化される可能性があります。(Bug #39157211)
  • InnoDB: テーブルのメンテナンスおよびクリーンアップに関連する問題を修正しました。(Bug #39091376)
  • InnoDB: ユニークインデックスに関連する問題を修正しました。(Bug #38501299)
  • InnoDB: 特定の状況下では、既存のテーブルにAUTO_INCREMENTカラムを追加する時に、そのテーブル内の一部のレコードがスキップされ、AUTO_INCREMENTカラムの値が不正確になる可能性がありました。
    (Bug #115136, Bug #37105825)

JSON関連

  • ネストされた子ベーステーブルから行を削除するJSONリレーショナルデュアリティビューの更新が、外部キー制約に違反する可能性がありました。JSON Duality Viewの更新処理では、挿入や更新が実行される前に、バインディング順序とは逆の順序で削除が実行されるようになりました。(Bug #39566804)
  • JSON Schema検証に関連する問題を修正しました。(Bug #39489024)
  • JSONの日付値の処理に関連する問題を修正しました。(Bug #39361343)
  • ネストされた配列の処理に関連する問題を修正しました。(Bug #39255759)
  • メタデータの検証に関連する問題を修正しました。(Bug #39255734)
  • RETURNING DATETIMEおよびDEFAULT値を指定したJSON_VALUE()は、式が DATE コンテキストで使用された場合に無効な定数日付を返す可能性があり、述語や結合に暗黙的な影響を及ぼす可能性がありました。日付に絞り込む前に、日時値が抽出されるようになりました。(Bug #120788, Bug #39649893)

MySQLプログラム関連

  • mysql_tzinfo_to_sqlが不要な警告を生成しました。例:
    Warning: Unable to load '/usr/share/zoneinfo//iso3166.tab' as time zone. Skipping it.
    Warning: Unable to load '/usr/share/zoneinfo//leap-seconds.list' as time zone. Skipping it.
    Warning: Unable to load '/usr/share/zoneinfo//leapseconds' as time zone. Skipping it.
    Warning: Unable to load '/usr/share/zoneinfo//tzdata.zi' as time zone. Skipping it.
    Warning: Unable to load '/usr/share/zoneinfo//zone.tab' as time zone. Skipping it.
    Warning: Unable to load '/usr/share/zoneinfo//zone1970.tab' as time zone. Skipping it.
    

    このリリースでは、それらの警告は抑制されるようになりました。
    (Bug #115021, Bug #36624161)

オプティマイザー関連

  • subquery_to_derivedに関連する問題を修正しました。(Bug #39525738)
  • 定数式に対してGROUP BY ... WITH ROLLUPを使用し、かつ USE INDEX FOR GROUP BY()ヒントを空で指定した、ハイパーグラフオプティマイザを使用するクエリは、最適化中にアサーション失敗が発生する可能性があります。
    このリリースでは、オプティマイザが定数のグループ化にはインデックスの順序付けが不要であることを認識するようになり、有効なストリーミング集計プランが選択可能になりました。(Bug #39505077)
  • ROLLUPクエリに関連する問題を修正しました。(Bug #39501528)
  • decimalデータの集計におけるエラー処理に関連する問題を修正しました。(Bug #39474810)
  • 一部の日時式および地理空間式が、アサーション失敗を引き起こす可能性がありました。(Bug #39279682, Bug #39280411)
  • エラー処理に関連する問題を修正しました。(Bug #39272322)
  • ユーザー変数処理に関連する問題を修正しました。(Bug #39243027)
  • 特定の条件下で、ハイパーグラフオプティマイザを使用する述語の多いクエリが、アサーション失敗を引き起こす可能性がありました。(Bug #39181175)
  • subquery_to_derivedが有効な場合の共通テーブル式に関連する問題を修正しました。(Bug #39179197)
  • ExtractValue()における問題を修正しました。(Bug #39138426)
  • ハイパーグラフオプティマイザを使用する複雑なクエリにおいて、セカンダリエンジンがインストールされていない場合でも、セカンダリエンジンの行数フックを繰り返しチェックすることで、不要なプランニング時間を費やしてしまう可能性がありました。
    オプティマイザはクエリごとに1回このフックの検索結果をキャッシュするようになり、プランニングのオーバーヘッドが削減されました。(Bug #39015463)
  • ヒストグラムの更新後にテーブルを開くと、ヒストグラムのメタデータロックが不適切に解放されたために、アサーションエラーが発生する可能性がありました。
    ヒストグラムのメタデータロックは、現在オープンされているテーブルに対してのみ解放されるようになりました。(Bug #38940484)
  • 動的スキャン実行に関連する問題を修正しました。
    (Bug #38657550)
  • BETWEENを定数の境界値とともに使ったクエリでは、ハイパーグラフオプティマイザを使用している場合、本来は正確なインデックス範囲スキャンだけで済むはずが、その上に不要なフィルタ操作が表示されることがありました。
    このリリース以降、オプティマイザはこれらの範囲条件を正確なものとして認識し、冗長なフィルタ処理を削除します。(Bug #37152269)
  • マテリアライズされた派生テーブルを含むクエリでは、一時インデックスの構築コストがその利点を上回る場合であっても、インデックスルックアップの計画が選択されることがありました。
    このリリースでは、ハイパーグラフオプティマイザがこれらの計画を評価する時に一時インデックスの構築コストを考慮するようになり、派生テーブルを含むクエリのプラン選択が改善されました。(Bug #36957877)
  • マテリアライゼーションに基づく重複排除を使用したSELECT DISTINCT ... LIMITクエリでは、制限が適用される前にすべての重複排除済み行が処理される場合があり、少数の一意の行のみが要求された場合でもパフォーマンスの低下を招く可能性がありました。
    ハイパーグラフオプティマイザがクエリの制限を重複排除処理に渡すようになったため、必要な数の一意の行が見つかった時点で処理を停止できるようになりました。SQL_BIG_RESULTによって強制されるソートベースのDISTINCTプランに変更はありません。(Bug #36720017)
  • LIMITが低いクエリにおいて、必要な結果行数がわずかであっても、ハッシュ結合が不要なディスクへのスピル I/Oを実行することがありました。
    このリリース以降、ハイパーグラフオプティマイザは、ディスクへのスピルとインメモリの両方のハッシュ結合プランを考慮し、コストベースの最適化において、適切な場合にはより高速なインメモリのオプションが優先的に選択されるようになりました。(Bug #36684053)
  • 副作用を伴うストアドファンクションや、RAND() のような非決定的な関数を使用したORDER BYの式は、ハイパーグラフオプティマイザによって1行につき複数回評価される可能性があり、その結果、予期せず副作用が繰り返し発生することがありました。
    このリリースでは、影響を受けるクエリにおいてソートの前に行がマテリアライズされるようになったため、これらの式は1行につき1回だけ評価されます。最上位レベルのUPDATE文やDELETE文、およびセカンダリエンジン向けに最適化されたクエリは、影響を受けません。(Bug #36578540)
  • 特定の状況下で、IFNULLを使用したフィルタが誤った結果を返しました。(Bug #36448705)
  • BETWEEN述語を含むIS TRUE条件を否定した場合、NULL状態の処理が正しく初期化されていなかったため、DECIMAL値に対して誤った結果が返される可能性がありました。(Bug #120540, Bug #39444505)
  • SQL_BUFFER_RESULTと併用した場合、ASCII()などの関数のAVG()は、計算された10進数の精度に符号用の領域が確の領域が確保されていなかったため、切り捨てられた値を返す可能性がありました。
    このリリースでは、10進数の精度の計算において符号付きの値が正しく考慮されるようになり、255.0000のような有効な結果が切り捨てられるのを防ぎます。(Bug #120465, Bug #39392429)
  • 以前のバージョンでの修正により、IFNULL()がNULLを正しく処理しませんでした。(Bug #120429, Bug #39347654)
    参照: この問題は、Bug #37285902のリグレッションです。
  • 以前のバージョンでの修正により、スカラーサブクエリとその外側のクエリが同じCTEを参照した場合、WHEREの等価条件が既存の行と一致しなくなるという問題が発生しました。
    この修正は、派生テーブルの一時キーを所有していないクエリブロックによって、それらのキーがクリーンアップされるのを防ぎます。これにより、外側クエリの最適化中に正しいキーメタデータが保持され、結果の正しい照合が保証されます。(Bug #120403, Bug #39321676)
    参照:この問題は、Bug #35912840のリグレッションです。
  • ANDやIS NULLを含むWHERE条件がプッシュダウンされるUNIONおよびUNION ALLクエリにおいて、誤った行が返される可能性がありました。
    条件プッシュダウンは、集合演算のブランチにおいてWHERE述語のセマンティクスを保持するようになりました。(Bug #119780, Bug #38888307)
  • ネストされたマージ済みのビューや外部結合を含むクエリにおいて、定数式を含むビューの列が外部結合のNULL補完の前に評価されると、誤った結果が返される可能性がありました。
    オプティマイザは、マージされたビューの列について、内部テーブルの正しい依存関係を保持します。これにより、外部結合式や関連するWHERE条件が適切な段階で評価されることが保証されます。(Bug #119499, Bug #38729126)
    参照:本件は、Bug #35854686のリグレッションです。
  • IS NULLでインデックス付き列をフィルタリングするクエリは、同じ列がORDER BYに含まれている場合、不要なファイルソートを実行する可能性がありました。
    このリリースでは、オプティマイザがIS NULLをORDER BYの簡略化における定数条件として認識するようになりました。これにより、適切な場合にはインデックスの順序を利用できるようになります。
    (Bug #119442, Bug #38700622)
  • ORDER BY、低いLIMIT、および複合インデックスに対する逆範囲スキャンを含むクエリは、オプティマイザがソート操作を早期に削除した場合、誤った結果を返す可能性がありました。
    このリリース以降、オプティマイザは逆インデックス範囲スキャンを選択する前に、順序付けに必要なすべての主要要素を考慮するようになりました。
    (Bug #119198, Bug #38564020)
  • NULLIF()が生成する日時値が適切な時間型処理に基づいて評価されなかったため、CAST(NULLIF(...) AS DATETIME)が誤った結果を返す可能性がありました。
    IF()およびNULLIF()式における日時関連の評価が適切に処理されるようになりました。その結果、YEAR式にNULLIF()を適用した場合、YEARデータ型が保持されるようになりました。そのため、関連する集計式はDOUBLEではなくDECIMALを返す可能性があります。
    (Bug #118053, Bug #37875484)
  • 一意のインデックスに対するFORCE INDEXは、単一のインデックスを強制するという予期される動作とは対照的に、IS NULL述語に対してインデックスダイブが実行される可能性がありました。
    この場合、オプティマイザはインデックスダイブをスキップするようになりましたが、選択された範囲に対して有効な場合に限り、引き続きインデックス統計を使用します。
    (Bug #117791, Bug #37751691)
  • GREATEST()、LEAST()、またはCOALESCE()によって返される日時関連の結果において、クライアントプロトコルやCOLLATION()関数を介して誤った照合順序が報告される可能性がありました。日時関連の値はバイナリ照合順序を使用しますが、これらの汎用関数は必要な変換を適用しませんでした。現在、これらの関数からの日時関連の結果は、正しくバイナリ照合順序を報告するようになっています。
    (Bug #117543, Bug #37626671)
  • マテリアライズド一時テーブルに対してCONSTアクセスを使用するクエリは、インメモリ一時テーブルがオンディスクテーブルに変換された後に、誤った結果を返す可能性がありました。
    このリリース以降、変換後に一時テーブルの読み取り状態がリセットされるようになり、期待される行が引き続きアクセス可能であることが保証されます。
    (Bug #116741, Bug #37308710)
  • OR条件を含む一部のLEFT JOINクエリにおいて、EXPLAIN上では動的範囲アクセスと表示されていましたが、実行時には依然として内部テーブルのフルスキャンが行われていました。これは、オプティマイザが範囲アクセスの評価時に、適切な外部結合述語を認識しなかったために発生しました。
    オプティマイザは動的範囲分析においてこれらの述語を考慮するようになったため、対象となるLEFT JOINクエリでは、内部テーブル全体を繰り返しスキャンする代わりに、外部の各行に対して再計画されたインデックス範囲スキャンを利用できるようになりました。
    (Bug #113288, Bug #36061036)
  • 一部のLEFT JOINクエリでは、オプティマイザによる書き換えによって、ハッシュ結合の構築時に非等価条件が適用されなくなる可能性がありました。その結果、フィルタリングの前に、必要以上の行がハッシュテーブルに追加される可能性がありました。
    オプティマイザは、可能な場合、対象となる述語をビルド側のテーブルに再マッピングするようになりました。これにより、内部結合のフィルタリング動作を変更することなく、より早い段階でのフィルタリングと、より効率的なハッシュ結合の実行が可能になります。
    (Bug #112198, Bug #35749693)
  • GROUP BY ... WITH ROLLUPによって生成された派生テーブルの列に名前を割り当てるクエリでは、ウィンドウ関数がそれらの名前のいずれかで並べ替えを行うと、「Unknown column」エラーが報告されることがありました。
    マテリアライズドロールアップフィールドが派生テーブルの列名を保持するようになったため、それらの参照が正しく解決されるようになりました。
    (Bug #112112, Bug #35722845)
  • 1つ以上のCTE定義を使用して作成されたビューを使用すると、構文エラーが発生する可能性がありました。
    (Bug #111559, Bug #35536775)
  • トリガーを伴う複数テーブルのUPDATE後、キャッシュされたテーブルが一時的なNULL状態を保持し、その結果、厳密なSQLモード下で後続の有効なステートメントが警告を発したり失敗したりすることがありました。以下のようなエラーが返されました:
    ERROR 1048 (23000): Column 'columnName' cannot be null

    (Bug #110962, Bug #35373634)

  • TIMESTAMPDIFF()は、WHERE句と組み合わせて使用​​されると、予期しない結果を返しました。(Bug #108143, Bug #34499767)

パッケージング関連

  • このリリースをもって、MySQLはEnterprise Linux 7(および関連するglibc 2.17 generic)のサポートを終了しました。

パフォーマンススキーマ関連

  • OBJECT_INSTANCE_BEGIN列に関連する問題を修正しました。(Bug #39449066)
  • 以前のバージョンでの修正により、プリペアドステートメントのダイジェストにおいてパフォーマンスのオーバーヘッドが発生しました。(Bug #38809758)
    参照: これは、Bug #36445818のリグレッションです。

レプリケーション関連

  • レプリケーション: REPLICATION_APPLIERを使用したクライアントBINLOGの実行に関連する問題を修正しました。(Bug #39474825)
  • レプリケーション: ハートビート処理に関連する問題を修正しました。(Bug #39377010)
  • レプリケーション: log_replica_updatesが無効になっている書き込み可能レプリカにおいて、ローカルでのコミットとアプライヤーの処理が同時に行われると、競合状態が発生する可能性がありました。(Bug #39259437)
  • レプリケーション: イベントのローテーション処理に関連する問題を修正しました。(Bug #39253359)
  • レプリケーション:SOURCE_RETRY_COUNT=0が設定されたレプリケーションレシーバーは、SOURCE_RETRY_COUNT=0が無制限の再接続試行を許可しているにもかかわらず、その後の一時的な接続切断後に停止してしまう可能性がありました。この不整合により、追加の再接続エラーがログに記録されることなく、レシーバーが終了してしまう可能性がありました。
    レプリケーションにおいて、再接続パス全体でSOURCE_RETRY_COUNT=0が一貫して無制限として扱われるようになりました。これにより、一時的な障害が繰り返された後でも、レシーバーが再試行を継続し、処理に追いつくことが可能になります。(Bug #39086875)
  • レプリケーション: エラー処理に関連する問題を修正しました。(Bug #38924622)
  • レプリケーション: 明示的に空の認証データを指定したALTER USER文が、空の認証文字列を保持せずにバイナリログ用に書き換えられました。その結果、password_expiredエラーが発生しました。(Bug #38478657)
  • レプリケーション: アプライヤユーザーを使用してレプリケーションチャネルが設定された場合、CREATEおよびDROPステートメントに対する権限チェックが失敗することがありました。これは、それらの権限がそのユーザーに対してデータベース固有のレベルでのみ付与されていた場合に発生しました。(Bug #37587555)
  • レプリケーション: 特定の条件下において、binary_log_transaction_compression_statsテーブルに対して複数のクエリを同時に実行すると、サーバーがエラーで停止する可能性がありました。(Bug #36196212)
  • レプリケーション: explicit_defaults_for_timestampが無効になっていた場合、NULL入力から格納済みの生成済みTIMESTAMP NOT NULL列を再計算する時に、行ベースのレプリカ適用やmysqlbinlogリプレイが停止する可能性がありました。以下のようなエラーが返されました:
    Could not execute Write_rows event on table tablename; Column 'timestamp_col2'
    cannot be null, Error_code: 1048; handler error No Error!

    現在は、フィールドのデフォルトを使用して行が適用され、警告が発行されます。(Bug #120128, Bug #39182574)

  • 検証に関連するいくつかの問題を修正しました。(Bug #39234600, Bug #38673268, Bug #38673285, Bug #38712932, Bug #39253416, Bug #39282368, Bug #39253383, Bug #39253491, Bug #39254867, Bug #39254885, Bug #39254896, Bug #39254914, Bug #39282350, Bug #39319907)

スレッドプール関連

  • thread_pool_max_unused_threadsのデフォルト値が2から32に変更されました。(Bug #39405207)

Xプラグイン関連

  • X Pluginのいくつかの問題を修正しました。(Bug #39268692, Bug #39268863)

バグ修正

  • Cloneプラグインにおけるいくつかの問題を修正しました。(Bug #39252316, Bug #39245805, Bug #39245844, Bug #39253040, Bug #39253103)
  • 設定ファイルでinnodb_redo_log_encrypt=ONが定義されている場合、Oracle LinuxまたはRed Hat Linux 9でサーバーを起動できませんでした。(Bug #39181231)
  • 接続属性の解析に関連する問題を修正しました。(Bug #39116965)
  • クライアントメッセージにおいて、一部のポーランド語文字が疑問符(?)に置き換わりました。(Bug #38036138)
  • テーブルおよびメタデータロックのクリーンアップ後のテーブルメンテナンスステートメントのエラー処理に関連する問題を修正しました。
    (Bug #37797437)
  • 自己参照外部キーを持つテーブルから行を削除すると、レプリケーションが失敗しました。(Bug #119996, Bug #39091367)
  • LOAD DATAの実行中、入力行の解析が行われている間、フィールドを一時的にNULL許容としてマークすることができます。ある行がNOT NULLカラムに対してNULLを提供した場合、LOAD DATAは、同じスレッドに戻る前に、テーブルのフィールドを一時的なNULL状態のままにしてしまう可能性がありました。その後、同じセッション内の後続のINSERTで、有効な非NULL値がNULLとして扱われ、ER_BAD_NULL_ERRORが返される可能性があります。
    (Bug #118060, Bug #38939847)
  • 数千ものテーブル、ビュー、ルーチン、イベントを含む古い8.xリリースからアップグレードすると、サーバーによって消費されるメモリが継続的に増加し、大幅なメモリ使用量の急増を引き起こしました。
    これらのシナリオにおいて、メモリ管理が改善されました。(Bug #117983, Bug #37832455, Bug #38031020)
  • 以下は、予約キーワードとして適切に定義されていませんでした:
    • CUBE
    • EXTERNAL
    • QUALIFY
    • TABLESAMPLE

    以下は、非予約キーワードとして適切に定義されていませんでした:

    • MANUAL
    • PARALLEL

    (Bug #114874, Bug #36584265)

  • INSERT()の動作は、マルチバイト文字に対して不適切でした。指定された位置が入力文字列の範囲外であっても、文字を挿入しました。
    (Bug #113962, Bug #36289412)
  • 特定の状況下では、LEAST()およびGREATEST()が予期しない結果を返す可能性がありました。
    (Bug #113304, Bug #36065440)
  • statement_digest()およびstatement_digest_text()におけるメモリリークを修正しました。(Bug #104115, Bug #33073320)

MySQL 9.7.2 リリースノート(MySQLウェブサイト):
https://dev.mysql.com/doc/relnotes/mysql/9.7/en/news-9-7-2.html


MySQL Editions

MySQL Editions
MySQLのサブスクリプションは、24時間365日体制でお客様をサポートいたします。さらに MySQL Enterprise Edition では、データベース管理者支援ツール MySQL Enterprise Monitor やバックアップツール MySQL Enterprise Backup をご利用いただけます。