2025.07.28

MySQL

MySQL 9.4.0 Innovationリリース(リリース日:2025年7月22日)

認証関連

  • オプショントラッカーコンポーネントがすでにインストールされている場合、LDAP SASL認証プラグインを正常にインストールできませんでした。(バグ #37983282)

キャラクターセット関連

  • 重要な変更: LIKE句でIFNULL()を使用すると、ER_CANT_AGGREGATE_2COLLATIONSが発生しました。これは、IFNULL()がバイナリ照合順序と照合順序導出 NONEを返すにもかかわらず、このコンテキストでNONEが許可されていなかったので、エラーが発生したためです。
    照合導出 NONEの強度を他の照合導出の強度よりも低くするようにセマンティクスを少し変更することによって、この問題を解決します。つまり、導出 NONEを持つ式が使用される場合、他のオペランドがLIKEで使用される比較照合を決定します。これは既存の機能への影響を最小限に抑えられ、既存のテストスイートに変更を加える必要もありません。
    また、結果の照合を決定する際に、同じ(かつ最も高い)強度の照合のみを考慮するように照合の集計を変更します。また、以前のIGNORABLE導出はnullにのみ使用されるため、かつ、NONEの強度が低下したことを考えると無視できなくなったため、以前のIGNORABLE導出の名前をNULLに変更します。
    さらに、以前の実装と互換性のない値を返すCOERCIBILITY()呼び出しをできるだけ少なくするために、以前のNONE強度の強度値にギャップを残します。
    詳細については、Collation Coercibility in Expressionsを参照してください。(バグ #37285902)
  • CHECK制約などの生成列式を含むCREATE TABLEで非ASCII識別子を参照すると、現在のクライアントキャラクターセットがUTF-8と互換性がない場合(例:GBK)、構文エラーが発生しました。(バグ #30453221)

コンパイル関連

  • グループレプリケーション: gcs_profile.inでTASK_EVENT_TRACEを定義すると、MySQL ServerのGroup Replication GCSコンポーネントのGCS/XCOMのビルドが壊れ、member reference type 'connection_descriptor *' is a pointer; did you mean to use '->'? のようなエラーが返されます。(バグ #38042851)
  • macOS: -DWITH_KERBEROSを使用してMacOSでサーバーをコンパイルできるようになりました。
  • macOS: ステータス変数の読み取りに使用するバッファをアラインメントしました。これにより、MacOS/M1プラットフォームで発生する可能性のある問題が修正されます。
  • バンドルされているlibcurlライブラリをバージョン 8.14.1にアップグレードしました。(バグ #38042758)
  • MySQL ServerがCMake 4をサポートするようになりました。これにより、3.10より前のバージョンのサポートが廃止される予定の将来のCMakeバージョンとの互換性を確保します。(バグ #38027636)
  • 関連する.protoファイルには -DWITH_PROTOBUF=system を使用してください。これにより、ビルド時間を短縮できます。(バグ #38022751)
  • gcs_xcom_networking.ccの警告を削除しました。(バグ #38021787)
  • システムbzip2ライブラリは、-lbz2でリンクする前にcmakeによって検索されるようになりました。(バグ #38005363)
  • MySQL Serverのコンパイルには、GCC バージョン 11以降が必要になりました。
    この変更の一環として、このプラットフォームではGCC 11が利用できないため、RHEL7を使用するARMシステムのサポートがこのリリースで削除されました。(バグ #38004285)
  • 古いバージョンのCMakeに対する回避策を削除しました。
注意
MySQLのビルドのためにサポートされているCMakeの最小バージョンは 3.14.6です。

(バグ #37901122)

  • 同梱のICUライブラリがバージョン 77-1にアップグレードされました。(バグ #37870791)
  • 同梱のzstdライブラリがバージョン 1.5.7にアップグレードされました。(バグ #37869972)
  • Clang 20で、非自明にコピー可能な型、非推奨のリテラル演算子、および不正なmain関数の宣言に対して発生した警告は生成されなくなりました。(バグ #37785251)
  • Clang 20でサーバーをコンパイルする際に発生していた警告を削除しました。(バグ #37785251)
  • GCC 15でのビルド時にclang::musttailを無効化しました。(バグ #37776018)
  • CMakeの特定の古いバージョンにおけるリスト処理に関する問題を回避しました。 (バグ #37709169)
  • -fprofile-useを指定してビルドした際に、一部のコンパイラ機能テストに合格しませんでした。(バグ #37707556)
  • RHEL 9で、MySQL ServerがGCC 14を使用してビルドされるようになりました。(バグ #37702396)
  • MySQLのビルドに必要なBoostのバージョンが1.85.0から1.87.0に引き上げられました。(バグ #37403602)
  • リンカーは、正しいライブラリ (ext::icu) が既に他の場所でリンクされているにもかかわらず、空のCmake 変数 ${ICU_LIBRARIES}を使用しようとしました。(バグ #36524167)
  • macOSでのコンパイルでは、openssl@1.1が明示的に検索されていましたが、現在は、openssl@3を使用できるように、代わりに汎用opensslシンボリックリンクが検索されるようになりました。(バグ #35468370)
  • macOSにおいて、Xcode 14によって生成される非推奨の警告を非表示にしました。これには、sprintf(3)の代わりにsnprintf(3)を使用する提案や、64ビット整数から32ビット整数に変換する時に精度が失われる可能性があるという警告が含まれます。(バグ #34776172)

コンポーネント関連

  • コンポーネントによって登録されたUDFが実行中の場合、登録解除はできず、そのためコンポーネントをアンインストールできません(UNINSTALL COMPONENTはエラーで拒否されます)。UDFの実行中にコンポーネントが2回アンインストールされると、最初の試行は (予想どおり) 失敗しましたが、2回目の試行は成功し、ライブラリがアンロードされて、UDFに問題が発生し、予期しないサーバー終了が発生する可能性がありました。
    これは、コンポーネントの初期化解除関数が、成功しなかった場合でも登録されたUDFのコンテナーをクリアしたために発生しました。そのため、2回目のアンインストールでは登録解除がスキップされました。このような場合には以前の登録状態を保存することで、この問題を修正しました。(バグ #35772996)

設定関連

  • Microsoft Windows: MySQL Configuratorを使用したMySQL Serverのインプレースアップグレードは、デフォルト以外のWindowsサービス名が使用されている場合に失敗しました。(バグ #37917039)
  • Microsoft Windows: サーバーを8.0から上位シリーズにアップグレードする際、MySQL Configuratorはmy.iniファイル内のカスタムサーバー設定を保持しませんでした。(バグ #37481548)
  • Microsoft Windows: MySQL Configuratorを使用してMySQL Serverをアップグレードする際、カスタムエラーログ名が使用されると、"Starting the server and upgrading system tables"の手順でプロセスがハングしました。(バグ #37463478)
  • Microsoft Windows: MySQL Configuratorは重複ユーザー(つまり、同じユーザー名とホスト名で定義されたユーザー)の追加を許可し、その後、サーバー上でそれらのユーザーを別のユーザーとして作成しました。この修正により、GUIモードでは、重複ユーザーがエラーメッセージとともに拒否され、CLIモードでは、--add-userで指定された重複ユーザーは無視されるようになりました。 (バグ #37460190)
  • Microsoft Windows: CLIモードで使用する場合、MySQL Configuratorは環境変数 MYSQL_PWDのファイルパスを受け入れるようになり、パスワードをファイルで指定できるようになりました。(バグ #37460173)
  • Microsoft Windows: CLIモードで使用する場合、MySQL Configuratorは4文字未満のrootパスワードを常に拒否しました。今回の修正により、この制限は新規設定にのみ適用されます。また、新規設定を除き、パスワードオプションは必須ではなくなりました。(バグ #37460061)
  • Microsoft Windows: MySQL Enterprise Edition 9.4.0には、現在非推奨となっているMySQL Enterprise Firewallプラグインの代替となることを目的とする新しいMySQL Enterprise Firewallコンポーネントが含まれているため、MySQL Configuratorはファイアウォールコンポーネントの有効化と、ファイアウォールプラグインからのアップグレードをサポートするようになりました。
    • 新しいサーバー設定の場合: ユーザーは新しいファイアウォールコンポーネントを有効にするかどうかを選択できます。
    • サーバーの再設定の場合:ファイアウォールを無効にするか、新しいファイアウォールコンポーネントを有効にするか(ファイアウォールが以前に有効でなかった場合)、古いファイアウォールプラグインを維持するか、ファイアウォールプラグインをファイアウォールコンポーネントにアップグレードするかを選択できます。
    • サーバーのアップグレードの場合:以前にサーバーでファイアウォールが有効になっていた場合、古いファイアウォールプラグインを維持するか、ファイアウォールコンポーネントにアップグレードするかを選択できます。

    詳細については、MySQL Server Configuration with MySQL ConfiguratorおよびMySQL Server Configuration with MySQL Configuratorを参照してください。(WL #16760)

  • back_logのデフォルト値が10000に増加しました。
    MySQLサーバーを接続バーストに対して耐性を持たせるために設定する必要があるLinux設定パラメータの情報については、back_logを参照してください。(WL #16888)
  • 設定変数のデフォルト値を決定する際に、server_memoryを使用して、MySQL Serverが使用する物理メモリの最大量を制限できるようになりました。(WL #16938)

廃止および削除関連

  • MySQLプラグインからMySQLコンポーネントへの移行作業の一環として、MySQLプラグインの作成に使用されていたAPIが非推奨となり、MySQLの将来のバージョンで削除される予定です。この変更による影響は以下のとおりです:
    • MySQLサーバーの--early-plugin-loadオプションが非推奨となりました。このオプションを指定してサーバーを起動すると、非推奨の警告が表示されるようになりました。
    • キーリングプラグインがロードされる度に、非推奨の警告が表示されるようになりました。

    Keyring Components Versus Keyring Pluginsでは、キーリングプラグインとキーリングコンポーネントの違いについて概説しています。キーリングプラグインからキーリングコンポーネントへの移行については、Key Migration Using a Migration Serverも参照してください。(WL #16574)

  • バージョン 8.0.26で非推奨となったシステム変数 temptable_use_mmapは、このバージョンで削除されました。(WL #16745)
  • SQL関数 MD5()とSHA1()は、このリリースで非推奨となり、将来のリリースで削除される予定です。(WL #16955)

ファイヤーウォール関連

  • パッケージング: このリリースには、MySQL Enterprise Firewallコンポーネント(he MySQL Enterprise Firewall Componentを参照)が含まれています。これは、現在非推奨でかつMySQLの将来のバージョンで削除される予定のファイアウォールプラグインの代替となるものです。このコンポーネントは、アカウントプロファイルを除いて、プラグインの機能のほとんどを実装します。アカウントプロファイルはプラグインでは非推奨であり、コンポーネントではサポートされていません。
    MySQL Enterprise Firewallをまだ使用しておらず、ファイアウォールコンポーネントのクリーンインストールを実行する場合は、Installing the MySQL Enterprise Firewall Componentを参照してください。ファイアウォールプラグインの現在のインストールのアップグレードについては、Upgrading to the MySQL Enterprise Firewall Componentを参照してください。ファイアウォールプラグインをファイアウォールコンポーネントにアップグレードする前に、プラグインで使用しているアカウントプロファイルをグループプロファイルに変換する必要があります。Migrating Account Profiles to Group Profilesは、このタスクに関する支援を提供します。
    MySQL Enterprise Firewallは、MySQL Enterprise Editionの一部として利用できる商用機能です。詳細については、MySQL Enterprise Firewallを参照してください。(WL #16570)

InnoDB関連

  • 特定のエラー処理シナリオで発生する可能性のあるメモリリークを防ぐために、メモリ管理が改善されました。(バグ #37826893)
  • information_schema.innodb_cmp_per_indexテーブルは、テーブルやインデックスがキャッシュから削除された場合など、特定の状況下で、データベース名とテーブル名として不明な値を返すことがありました。(バグ #37820227)
  • テーブルのインポートに関する問題を修正しました。(バグ #37621360)
  • innodb_change_buffer_max_sizeのデフォルト値が5に変更されました。このアップデートは、IO バウンドのワークロードにおける変更バッファリングの利点と、バッファプールの大部分が変更バッファリング専用になった場合にインメモリワークロードに生じる可能性のある悪影響とのバランスをとることを目的としています。(WL #16968)

インストール関連

  • macOS: mysqldを--plugin-dirなしで--basedir付きで起動した場合、ベースディレクトリがスラッシュ文字(/)で終わらず、mysqldがkeyring_fileコンポーネントをロードするように設定されていると、サーバーの起動がエラーで失敗しました。これにより、MySQLのmacOSインストーラに問題が発生し、rootアカウントのパスワードが設定されませんでした。(バグ #36816216)
    参考: バグ #36398484も参照してください。
  • MySQLをインストールするためのDebianパッケージが、root以外のユーザーでも実行できるようになりました。これにより、rootなしでのインストールが必要なDebianまたはUbuntuシステムでの問題を回避できます。(バグ #37765153)
  • RPMおよびYumリポジトリのインストールが、Red Hat Enterprise LinuxおよびOracle Linux 10でサポートされるようになりました。(バグ #37592019)

JavaScriptプログラム

  • メモリ使用量が多い状況で、JavaScriptストアドプロシージャを実行しようとすると、SP::init()内の最初のcontext.parse()呼び出しでメモリ不足エラーが発生しました。その後、2回目のcontext.parse()呼び出しが非同期的に行われました。これは、それまでの間に他のセッションがメモリをクリアした場合、成功する可能性があります。つまり、エラーがMLEコンポーネントのエラーハンドラーによって報告されましたが、2回目の呼び出しが成功したため、MLEは成功を示すステータス コードを返したことを意味しました。このような場合、CALLはメモリ不足エラーで拒否されるようになりました。(バグ #37952656)
  • Graal Mavenのバンドルバージョンを24.2.1.0.1にアップグレードしました。(バグ #37938310)
  • MLEコンポーネントで使用される、付属のGraalVMとTruffleライブラリが、それぞれバージョン23.1.7と24.2.1にアップグレードされました。(バグ #37833200)
  • mysqldumpがMySQL 9.2.0以降のディストリビューションからの場合、mysqldump --routinesは以前のバージョンからのサーバーでは正常に動作しませんでした。これは、Information Schema LIBRARIESテーブルが見つからなかったためです。現在、このような場合、mysqldumpはこのテーブルをスキップし、それをダンプしようとしません。(バグ #37498680)
  • MySQLのBIT型は、JavaScriptストアドルーチンでの使用をサポートするようになりました。型変換ルールやその他の情報については、JavaScript Stored Program Data Types and Argument Handlingを参照してください。(WL #16885)

ログイン関連

  • MySQL Serverは、サーバーからアクセス可能な論理CPUと物理メモリの合計数をエラーログに記録するようになりました。この情報は、ログの詳細度に関わらず常に記録されます。(WL #16940)

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

  • 内部のpfs_get_thread_statement_locker_vc()関数には、リリースビルドに誤って含まれていたデバッグコードが含まれていました。(バグ #37743667)

ベクターデータ関連

  • VECTOR_TO_STRING()関数は出力照合を正しく設定しませんでした。(バグ #37815490)

追加または変更された機能

  • 重要な変更: ほとんどのmysqlクライアントコマンドを有効または無効にする、mysqlクライアント --commandsオプションが追加されました。
    このオプションはデフォルトで無効です。有効にするためには、クライアントを --commandsまたは --commands=ONで起動します。
    このオプションの影響を受ける全てのコマンドの完全なリストと追加情報については、mysql Client Optionsを参照してください。(WL #16949)
    参考: バグ #36416568、バグ #38066040も参照してください。
  • InnoDB: デバッグの向上のため、buf_page_tおよびbuf_block_t構造体のメタデータがエラーログに出力されるようになりました。(バグ #35115629)
    参考: バグ #35115601も参照してください。
  • グループレプリケーション: アプライアスレッドがエラーによって停止されたのではなく、SQL KILLを使用して終了されたことを区別するために、エラー ER_GRP_RPL_APPLIER_THD_KILLEDを追加しました。 (バグ #37764717)
  • NDB レプリケーション: MySQL Clusterまたは個々のNDBCLUSTERテーブルのバイナリログを、複数のMySQLサーバー間で均等な部分または「スライス」に分割できるようになりました。
    クラスタ全体のバイナリログをスライスに分割するために、このNDB リリースでは2つのmysqld起動オプションが実装されています。--ndb-log-row-slice-countオプションはスライスの数、つまりバイナリログを共有するサーバーの数を指定します。--ndb-log-row-slice-idオプションは、このMySQLサーバーが担当するスライスを識別します。詳細については、これらのオプションの説明を参照してください。
    特定のNDBテーブルに対してバイナリロギングをスライスに分割するためには、ndb_replicationテーブルに追加されたbinlog_row_slice_count列とbinlog_row_slice_id列に適切な値を持つ行をndb_replicationテーブルに追加します。既存の設定をアップグレードする場合、この機能を利用するためには、ALTER TABLEステートメントを実行するか、テーブルを削除して再作成する必要がある場合があります。詳細や例については、Per-table binary log slicingを参照してください。(WL #15413)
  • シグナル処理中に現在のクエリを出力する際の従来の1024バイト制限を1073741824 (1024 * 1024 * 1024)に増加しました。(バグ #37603354)
  • システムのcurlライブラリにリンクするのではなく、curlを含むバイナリパッケージは、curl 8.14.1を使用するようにアップグレードされました。(バグ #37389565)

バグ修正

  • 重要事項; グループレプリケーション: グループ通信システム(GCS)は、メンバー間のグループレプリケーション通信を処理し、グループメンバーシップと全グループメンバー間の通信を追跡します。メンバーシップの追跡には、メンバーシップの現在と過去の2回の反復が含まれます。メンバーが離脱すると、グループ内の残りのメンバーは離脱したメンバーの記録を保持しますが、そのメンバーが戻るまでそのメンバーとの通信を停止します。例:グループにメンバーM1、M2、M3が含まれています。M3がグループを離脱します。M1とM2はM3との通信を停止します。新しいメンバー(M4)が参加すると、このメンバーはグループのメンバーシップの過去の反復を学習し、以前の反復のサーバー(この場合はM3)を含むすべてのサーバーとの通信を試みます。
    以前のサーバーの一部が消えて戻ってこなかった場合、新しいメンバーは消えたサーバーに継続的に接続しようとしました。状況によっては、これらの継続的な接続試行によってネットワーク遅延が発生し、グループメンバーの通信に影響する可能性があります。
    この問題を回避するために、グループメンバーシップの反復に属するサーバーへの接続は5分後に停止されるようになりました。これは、グループ通信に継続的な影響を与えることなく、有効な接続を再確立するのに十分な時間です。(バグ #37704514)
  • パフォーマンス: MySQL 8.0で最適化により削除された一部のクエリの冗長条件は、それ以降のバージョンで削除されなくなり、そのようなクエリのパフォーマンスが大幅に低下しました。(バグ #117907、バグ #37808260)
    参考: この問題は、バグ #30112096のリグレッションです。
  • NDB Cluster: NDB 8.0からNDB 8.4へのアップグレード後、クラスタ内の全てのデータノードが予期せず同時に再起動しました。これは、トランザクションコーディネータにスキャン状態がないために発生し、プロトコルタイムアウトが発生しました。その結果としてプロトコル状態の不整合が発生し、データノードが予期せずシャットダウンしました。この問題は、予期しないSCAN_NEXTREQシグナルの既存の処理を拡張し、スキャンが既にステートレスである場合もカバーすることによって修正されました。(バグ #37994985)
    参考: この問題は、バグ #37022901のリグレッションです。
  • NDB Cluster: 同時実行のALTER TABLEステートメントにより、クライアントが競合する行ロックを保持し、付随するget_commit_count()呼び出しを停止している場合、ロック待機タイムアウトで失敗するまでに最大で100 * TransactionDeadlockDetectionTimeoutの遅延が発生する可能性がありました。ロックの問題をより早く特定できるように、再試行メカニズムが調整されました。(バグ #37955025)
  • InnoDB: 必要でない場合でも、行の更新ごとに、テーブルが外部キーによって参照されているかどうかのチェックが実行されました。
    必要な場合を除き、チェックは実行されなくなりました。(バグ#37867653)
  • InnoDB: pthread_setaffinity_npからの戻り値は、バッファプールの作成中にスレッドのプロセッサアフィニティを設定する時に、適切に解釈されませんでした。その結果、アフィニティの設定が失敗した場合でも、エラーは返されませんでした。(バグ#37825544)
  • InnoDB: プライマリキーを再構築すると、サーバーは重複が存在している時に問題に遭遇することがあり、サーバーが予期せず停止する可能性がありました。
    (バグ#37822992)
  • InnoDB: インデックスの一部である列のドロップに関連する問題を修正しました。(バグ#37726881)
  • InnoDB: MySQL Community Editionバイナリには、保護されていない静的配列が原因で、不必要なOpenTelemetryシンボルが含まれていました。(バグ#37689163)
  • InnoDB: 二重書き込みバッファが不必要に大きかったです。ファイルごとのセグメントの数を計算する場合、1つの追加セグメントが常に追加されますが、Double_writeインスタンスの数がdblwrファイルの数で割り切れない場合にのみ追加セグメントが追加されるべきです。(バグ#37684656)
  • InnoDB: DELETE操作に関連する問題を修正しました。(バグ#37478594)
  • InnoDB: VARCHAR列にセカンダリインデックスを作成すると、設定されているよりも多くのメモリが割り当てられる可能性がありました。割り当てられる量は innodb_ddl_buffer_sizeの値に直接関連しており、ERROR 1136 (21S01): Column count doesn't match value count at row 1のようなエラーが発生しました。(バグ #37233273)
  • InnoDB: 空間データ型の列のインデックス付けに関連する問題を修正しました。(バグ#36682518)
  • InnoDB: サーバーのシャットダウン中にtemptableハンドラが正常に終了しなかったため、サーバーが予期せず終了する可能性がありました。この問題は、各スレッドに関連付けられたtemptableオブジェクトを追跡し、適切にクリーンアップするためのメカニズムを実装することにより解決されました。(バグ#36538081)
  • InnoDB: MySQL Enterprise Backupの増分バックアップが失敗した後にredoログコンシューマーが遅れると、長いセマフォ待機クラッシュが発生し、redoログライタースレッドが先に進めなくなる可能性がありました。次のようなエラーメッセージが返されました:
    [Warning] [MY-013934] [InnoDB] Redo log writer is waiting for MEB redo
    log consumer which is currently reading LSN=23335640211468 preventing
    reclamation of subsequent portion of the redo log. Consider
    increasing innodb_redo_log_capacity.

    (バグ#36330455)

  • InnoDB: テーブルの範囲クエリに関する問題を修正しました。(バグ#31360522)
    参考: バグ#38063122。
  • パーティショニング: パーティションIDがINT_MAXを超えると、重複エントリーエラーによりパーティションの切り捨てが拒否され、新しいパーティションテーブルの作成が妨げられました。この問題を軽減するために、Table_partition_values_pkクラスのコンストラクターは、オブジェクトIDにintではなくulonglongを使用するようになりました。(バグ#35912852)
  • レプリケーション: チェーンでレプリケーションを使用する場合、CREATE TABLE ... AS SELECTによってバイナリログに不整合なエントリが生成されることがあり、下流サーバーでレプリケーションが中断される可能性がありました。この問題に関連するエラーメッセージには、ログにSTART TRANSACTIONステートメントが欠落していることが原因で発生するエラーが含まれていました。(バグ#37986380)
  • レプリケーション: libs/mysql/binlog/event/event_reader.cppの内部メモリ管理の問題を修正しました。(バグ#37371443)
  • レプリケーション: 準同期レプリケーション中に、バイナリログサフィックスの長さが6桁 (.999999)を超え、次のログ ファイルが (例えば) mysql-bin.1000000になった場合、レプリケーションプロトコルが予期せず準同期から非同期に変更されました。
    (バグ #115861、バグ #113813、バグ #37024069、バグ #36246779)
  • グループレプリケーション: Gr_empty_consensus_proposals_countシステムステータス変数は、予想どおりに更新されませんでした。(バグ#37937927)
  • グループレプリケーション: 不安定なネットワーク環境において、group_replication_paxos_single_leader=ONに設定されたグループレプリケーションInnoDB Clusterで、長時間実行トランザクションが複数発生し、waiting for handler commit状態のままスタックしました。その結果、group_replication_set_as_primary() は強制的に待機状態になり、他の受信クエリがブロックされ、クラスターが書き込み不能になりました。
    waiting for handler commitでスタックした長時間実行トランザクションを含む問題は、次のように発生しました。断続的なネットワークパーティション中に、メンバーシップ情報が古かったり不正確だったりしたために、セカンダリノードがリーダーの役割を誤って引き受けました。その結果、synode番号の割り当てで競合が発生し、プライマリノードから発生したトランザクションが不完全なままになりました。
    この問題を修正するために、セカンダリノードが常に最新かつ正確な状態を反映してから、Paxosにviewメッセージをプッシュします。これにより、メンバーシップ情報が古くなったり矛盾したりしても、リーダーシップやsynode番号の割り当てで競合が発生しなくなります。(バグ#37764970)
    参考: バグ#117424、バグ#37237959、バグ#37645674。
  • NDB Cluster API: イベント定義からVARCHAR列を除くと、Invalid schema object versionエラーが発生しました。(バグ#37766391)
    参考: バグ#31848270。
  • Fedora 24へのRPMインストールは、競合するパッケージがアップストリームからプルされたため、完了できませんでした。この修正により、競合するパッケージをブロックするための適切な廃止処理が追加されます。(バグ #37976913)
  • 特定のケースにおいて、expr BETWEEN expr AND expr (expr は複雑な式) によってsql\sql_base.ccでアサートが発生します。(バグ #37952274)
    参照:この問題は、バグ #113506、バグ #36137690のリグレッションです。
  • ストアドルーチンを呼び出す一部のトリガーが、必ずしも正しく実行されませんでした。(バグ #37915445)
  • 内部関数 transform_table_subquery_to_join_with_derived()が、呼び出し後に現在のクエリブロックを適切に復元せず、アサートを引き起こしました。 (バグ #37884336)
    参考: バグ #37832605 も参照してください。
  • item_cmpfunc.ccにおける潜在的なメモリリークを削除しました。(バグ #37883669)
  • HLL()関数 (MySQL HeatWaveのみ) を、列に対するUNSIGNEDへのCAST()演算、STRCMP() 演算、および、WHERE句のNULLと組み合わせて使用した場合、期待どおりに動作するようになりました。以前は、Assertion `!null_value || is_nullable()' failedのようなエラーが返されました。(バグ #37839325)
  • サブクエリを含むCTEを使用するビューは、必ずしも正しく処理されませんでした。(バグ #37832605)
  • component_keyring_encrypted_file またはcomponent_keyring_fileが有効で、binlog_encryptionがONに設定されている場合、キーリングデータファイルへのアクセスに関する問題により、Dockerコンテナ内でサーバーの起動に失敗しました。(バグ #37821740)
  • sql/opt_costconstantcache.cc内の値を比較するのではなく設定するアサーションによって発生する警告を削除しました。(バグ #37814484)
  • Ubuntu 25.04システムに、システムのAPTリポジトリを使用してMySQLが既にインストールされている場合、MySQL用のOracleパッケージをインストールできませんでした。(バグ #37804480)
  • Fedora 24では、MariaDBが既にシステムにインストールされている場合、パッケージの競合によりOracle MySQL RPMをインストールできませんでした。この修正により、競合が適切に処理されなくなり、MySQL Serverを正常にインストールできるようになります。(バグ #37798784)
  • シャットダウン中にクライアント接続が正しく終了しないことがある問題に対する以前の修正が改善されました。(バグ #37755594)
    参照:この問題は、バグ #35854919のリグレッションです。
  • 計算されたチャンクの数が65535を超えると、INTERSECTでアサートが発生します。これは、推定行数が非常に多い場合、または、set_operations_buffer_sizeシステム変数の設定が低すぎる場合に発生することがあります。
    この修正により、この状況に対する不足していたチェックが追加されます。2つ以上のチャンクファイルセットが必要な場合は、インデックス一時テーブルベースの重複排除に戻ります。ユーザーに通知するために、この情報はクエリのメモとオプティマイザーのトレースに表示されます。
    この修正の一環として、set_operations_buffer_sizeで使用されるブロックサイズが128から1024に増加されました。(バグ #37742092)
  • Fedora 42 RPMインストールパッケージは、Fedora 42以降で統合された/usr/binディレクトリと/usr/sbinディレクトリに対応するように調整されました。(バグ #37737658)
  • InnoDBを使用した全文検索のパフォーマンス、特にフレーズ検索のパフォーマンスが向上しました。doc_idマッチングの効率も向上しました。(バグ #37682648)
  • keyring_okvプラグイン (Using the keyring_okv KMIP Pluginを参照) がインストールされているものの正しく設定されていない場合、performance_schema.keyring_keysテーブルに対するクエリで問題が発生しました。(バグ #37655299)
  • sql/sql_resolver.ccからアサーションを削除しました。(バグ #37601389)
  • 複数のサブクエリを含む条件の一部であり、その戦略が既にIN-to-EXISTSとして確定されているサブクエリについて、マテリアライゼーションのチェックが行われたため、問題が発生しました。条件の一部である他のサブクエリの1つでその戦略がMATERIALIZATIONとして確定されたため、マテリアライゼーションのチェックが行われました。マテリアライズされる必要があるサブクエリのみが調べられるようにチェックを追加することによって、この問題を解決します。(バグ #37587388)
  • バグ #30875669の修正は、バグがクローズされた時点ではmysqlクライアントのコードに実際には含まれていませんでした。現在、変更は実装されています。(バグ #37572191)
    参照:バグ #30875669も参照してください。
  • mysql_secure_installationは、期待どおりに、rootパスワードの有効期限が切れているかどうかをチェックしませんでした。 (バグ #37563088)
  • 複数のSQLステートメントを含む1つ以上の単一行を持つ初期化ファイルで、初期化中にエラーが発生することがありました。(バグ #37559598)
  • CREATE TABLEステートメントとDROP TABLEステートメントの一部のシーケンスが正しく処理されませんでした。(バグ #37534068)
    参考: この問題は、バグ #35721121のリグレッションです。
  • MySQL 9.2.0で行われたSHA-2認証プラグインのキャッシュに関する作業によって発生したパフォーマンスのリグレッションを削除しました。(バグ #37523469)
  • UPDATE ... SET ... が正常にロールバックされない場合がありました。(バグ #37489167)
  • CREATE TABLEステートメントの複数のDEFAULT列式が正しく処理されない場合がありました。(バグ #37436220)
  • 集計を実行する相関サブクエリを含むクエリが、実行中に重複キーエラーで(誤って)拒否されることがありました。
    この問題は、JOIN::cleanup() 実行時に元の参照スライス(set_ref_item_slice(REF_SLICE_SAVED_BASE)の復元が不要であると想定して削除された以前の修正によって発生しました。その結果、以前の実行からの一時テーブルフィールド参照がクリアされず、一時テーブルに重複キーを挿入しようとするとCan't write; duplicate key in tableというエラーが発生しました。
    クリーンアップ中に元の参照スライスを復元し、古い参照が確実に破棄されるようにすることで、この問題を修正しました。 (バグ #37415167)
    参考: バグ #32141711も参照してください。この問題は、バグ #35856247のリグレッションです。
  • 一部のWindowsシステムにおいて、MSIインストーラを使用してMySQL Server 9.1をインストールした後、サーバーの起動に失敗しました。これは、これらのシステムにVisual C++ 再頒布可能パッケージ v.14.42 以降がインストールされていなかったためです。MySQL Server MSIインストーラは、この要件をチェックし、満たされない限りインストールの開始を拒否するようになりました。(バグ #37365476)
  • コメント内の引用符で囲まれていないセミコロン(;)は、許可されていないにもかかわらず、必ずしもエラーとしてフラグ付けされないことがありました。(バグ #37117875)
    参考: バグ #38063286も参照してください。
  • keyring_awsプラグインから潜在的なメモリリークを削除しました。(バグ #36684413)
  • サブクエリを含むネストされた集計関数を使用するクエリは、必ずしも適切に処理されるとは限りませんでした。(バグ #36421727)
  • サブクエリを派生テーブルに変換しようとすると、特定のケースが考慮されないことがありました。(バグ #36421710)
    参考: この問題は、バグ #36921175のリグレッションです。
  • max_join_sizeを設定すると、一部のネストされたクエリが適切に処理されなくなりました。(バグ #35625769)
  • スカラーサブクエリを、サブクエリがSELECTリストにありかつ含まれているクエリが暗黙的にグループ化されている派生テーブルとの結合に変換することは許可されるはずですが、subquery_to_derivedオプティマイザースイッチが有効になっていると拒否されました。(バグ #35150438)
  • EXPLAIN ANALYZE FORMAT=JSONは、explain_json_format_versionが1の場合、サブクエリを含むクエリを正しく処理しませんでした。
    (バグ #117995、バグ #37285902)
  • SET TRANSACTION ISOLATION LEVELでPERSISTまたはPERSIST_ONLYを使用することが可能でしたが、これは許可されるべきではないため、後でサーバーの再起動時にエラーが発生しました。現在は、これを試みると、ステートメントはER_GRP_RPL_UNSUPPORTED_TRANS_ISOLATIONで拒否されます。(バグ #115619、バグ #36854635)
  • サーバーがautocommit=OFFで実行された場合、クエリ書き換えプラグイン (Rewriter Query Rewrite Pluginを参照) が正常に動作しませんでした。 (バグ #115437、バグ #36784795)
  • MIN()は、ウィンドウ関数として使用された場合、期待どおりにnullを無視しませんでした。(バグ #113631、バグ #36182490)
  • RANGEフレーム単位を使用するウィンドウフレーム仕様では、RAND()を含むORDER BY式を持つことが可能でした。これにより、値が単調に上昇または下降するというRANGEフレーム仕様の不変条件が破られました。この問題を解決するために、RANGE単位と組み合わせる時に非決定論的なORDER BY式を許可しないようにしました。これはエラーで拒否されるようになりました。
    これにより、比較される行値が符号なしでありかつafter_valueより小さい可能性がある場合に、BETWEEN CURRENT ROW AND after_value FOLLOWINGのフレーム制限を計算する時に、RANGE単位の比較が失敗し、アンダーフローが発生して結果が不正確になる可能性があるという関連する問題も修正されます。このような場合、操作をエラーとして拒否するようになりました。
    詳細については、Window Function Frame Specificationを参照してください。(バグ #111510、バグ #35521787)

MySQL 9.4.0 リリースノート(MySQLウェブサイト):
https://dev.mysql.com/doc/relnotes/mysql/9.4/en/news-9-4-0.html


MySQL Editions

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