2024.07.05

MySQL

MySQL 8.4.1 LTSリリース(リリース日:2024年7月1日)

監査ログ関連

  • MySQLは、プラグインのタイプに関係なく、有効なプラグイン構造体を引数としてplugin->deinit()を呼び出すようになりました。

認証関連

  • プロキシなしでauthentication_ldap_saslプラグインを使用する場合のアクセス拒否エラーの明確な理由を示すようにログメッセージが改善されました。(バグ #35317691)

C API関連

  • サーバー側のプリペアドステートメントの結果を受信中に、C APIアプリケーションが停止しました。

コンパイル関連

  • バンドルさzれているgoogletestソースとgooglemockソースをバージョン 1.14.0にアップグレードしました。(バグ #36562482)
  • GenErrorへの不足している依存関係を追加しました。(バグ #36551721)
  • Linuxシステムで、-DWITH_TCMALLOC=BUNDLEDを指定することによって、ソースで提供されているバンドルされたtcmallocライブラリを使用してMySQLをビルドできるようになりました。これはLinuxでのみサポートされています。(バグ #36313839)
  • Ubuntu 23.04でビルドする時にsql/statement/ed_connection.ccで発生する警告を削除しました。 (バグ #114436、バグ #36428465)
  • Linux aarch64プラットフォームバイナリは、ページサイズに4kまたは64kを使用するシステムとの互換性を保つために、patchelf --page-size=65536を使用してビルドされるようになりました。(バグ #114233、バグ #36393794)

コンポーネント関連

  • --looseプレフィックスを使用して設定されたコンポーネントオプションの値は、コンポーネントのインストール時に読み取られませんでした。(バグ #28341329)

設定関連

  • Microsoft Windows: Windowsでは、MySQL Configuratorが更新され、アップグレードパスに従ってインプレースアップグレードがサポートされるようになりました。(バグ #36685422)
  • Microsoft Windows: Windows上のMSIインストールの場合、MySQL Configuratorはユーザーの介入なしにMySQL 8.4 LTSインストールを自動的にアップグレードするようになりました。(WL #16274)

データディクショナリ関連

  • 通常の列と生成された列が混在するMyISAMテーブルをMySQL 5.7から8.0以降にアップグレードしようとすると、テーブルが破損しました。(バグ #106301、バグ #35503328)

Xプラグイン関連

  • システム変数 caching_sha2_password_digest_roundsを、Xプロトコルを使用してデフォルト以外の値に設定できませんでした。(バグ #36402455)
  • mysql_function_namesユニットテストソースファイル内のMySQLドキュメントへの古いリンクが更新されました。
    (バグ #113500、バグ #36137217)

主なバグ修正

  • InnoDB: ALTER TABLE操作後のUPDATEでMySQLが予期せず停止しました。(バグ #36571091)
    参照: この問題は、バグ #35183686のリグレッションです。
  • InnoDB: ログインデックスサイズ計算で列の順序の変更が考慮されるようになりました。(バグ #36526369)
    参照: この問題は、バグ #35183686のリグレッションです。
  • InnoDB: InnoDBによって実行されるファイルシステム操作は、ディレクトリ変更タスクを実行する時に、親ディレクトリを一貫してfsyncするようになりました。(バグ #36174938)
  • InnoDB: デバッグビルドで、innodb_interpreter_outputデバッグ変数を設定すると、サーバーが予期せず停止しました。これは読み取り専用変数になりました。(バグ #36041032)
  • InnoDB: os_innodb_umask処理を改善し、読み取り専用にしました。 (バグ #35932118)
    参照: この問題は、バグ #29472125のリグレッションです。
  • InnoDB: 冗長行形式(MySQL 5.7.35より前で許可されていた)に対して幅が広すぎる列のインデックスを使用して作成されたテーブルの場合、インプレースアップグレードによってテーブルがサイレントにインポートされましたが、テーブルにアクセスできず、バックアップの作成に支障をきたしていました。現在、無効なインデックスを使用する全ての操作は、インデックスが削除されるまでER_INDEX_CORRUPTで拒否されます。ER_IB_INDEX_PART_TOO_LONGエラーもエラーログに報告されます。(バグ #35869747)
    参考: バグ #34826861も参照してください。
  • InnoDB: 列インデックスが有効である時に、無効な列インデックスを参照するInnoDBアサーションエラーが発生しました。(バグ #34800754)
  • InnoDB: 空のXAトランザクションの場合、XA START後にサーバーをシャットダウンすると、サーバーが予期せず停止します。(バグ #32416819)
  • InnoDB: 空のXAトランザクションの処理中にレプリケーションアプライヤーまたはバイナリログアプライヤーをシャットダウンすると、システムが予期せず停止しました。(バグ #32416819)
  • InnoDB: Validate_files::check()関数での不要なヒープ使用を削除しました。
    (バグ #115041、バグ #36626203)
  • InnoDB: パーティションテーブルがinnodb_parallel_read_threads=1で読み取られた場合、256回の読み取り後にどのテーブルからも読み取りパフォーマンスが大幅に低下しました。InnoDBは、並列読み取りスレッドを使用していないにもかかわらず、並列読み取りスレッドの最大容量に達したかのように動作しました。
    (バグ #114154、バグ #36347408)
  • InnoDB: 空間参照識別子(SRID)属性を持つ列を含む空間インデックスの結果が空でした。さらに、空間インデックスでFORCE INDEXを使用してカバーインデックススキャンを強制すると、アサーションが発生しました。 (バグ #112676、バグ #114200、バグ #35894664、バグ #36361834)
  • InnoDB: SELECT ... GROUP BYクエリは、TempTableエンジンでは Memoryエンジンよりも少なくとも2倍遅くなりました。(バグ #107700、バグ #34338001)
  • レプリケーション: ソースに、JSON関数によって入力された、保存された生成された列が含まれており、binlog_row_imageがMINIMALに設定されている場合、基になる列に対するその後の更新または削除は、次のエラーで失敗しました:
    Invalid JSON text in argument 1 to function json_extract: 'The document is empty.'

    レプリカは生成された列を再評価しようとしましたが、基になる列が利用できないため、そのエラーで失敗しました。このリリースでは、基になる列が利用できない場合、保存された生成された列は再評価されません。(バグ #36515172)

  • グループレプリケーション: /xcom/gcs_xcom_networking.ccからメモリリークが削除されました。(バグ #36532199)
  • グループレプリケーション: 次のテーブルには、グループレプリケーションリカバリチャネルなど、設定されたホスト名を持たないレプリケーションチャネルのデータは含まれていませんでした:
    • REPLICATION_CONNECTION_STATUS
    • REPLICATION_CONNECTION_CONFIGURATION
    • REPLICATION_APPLIER_CONFIGURATION
    • REPLICATION_APPLIER_STATUS
    • REPLICATION_APPLIER_STATUS_BY_COORDINATOR
    • REPLICATION_APPLIER_STATUS_BY_WORKER

    このリリース以降、これらのテーブルには、部分的に設定されたグループレプリケーションチャネルのデータが含まれています。(バグ #36018242)

  • JSON: NULLIF()、COALESCE()、およびシフト (>>)演算子に、不足しているエラー処理チェックを追加しました。 (バグ #113668、バグ #35513196、バグ #36198403)
    参照: バグ #31358416 も参照してください。
  • MySQL NDB ClusterJ: ClusterJテストスイートを実行すると、スレッド数が存在しないというエラーメッセージが表示されました。これは、スレッドと接続の処理が誤っていたためで、このパッチで修正されました。(バグ #36086735)
  • macOSでは、MySQL環境設定パネルのカスタムmy.cnf設定ファイルを読み込む機能が復活しました。これには、新しいデータディレクトリを初期化する前にそれを読み込む機能も含まれます。(バグ #36630493)
  • Fedora 40では、ネイティブのmysql-serverパッケージが存在するシステムにMySQL 8.4.0コミュニティサーバーをインストールすると競合が発生しました。(バグ #36575524)
  • 特定の数値の平均が常に正しく計算されるとは限りませんでした。(バグ #36563773)
  • stringsの次のファイルには、誤ったライセンス情報が含まれていました:
    • mb_wc.h
    • ctype-uca.cc
    • ctype-ucs2.cc
    • ctype-utf8.cc
    • dtoa.cc
    • strxmov.cc
    • strxnmov.cc

    (バグ #36506181)

  • 特定の異常なケースでは、UpdateXML()関数はその引数を全て正しく処理しませんでした。(バグ #36479091)
  • SRID属性を持つ列を含む空間インデックスでFORCE INDEXを使用したクエリを説明すると、予期しない終了が発生しました。(バグ #36418426)
  • MySQL 8.4.0で追加された機能を参照するER_LOG_PARTITION_PREFIX_KEY_NOT_SUPPORTEDエラー定義を追加しました。(バグ #36350938)
  • BuildRequireルールを更新し、CMakeおよびBisonに現在必要なバージョンと一致させました。(バグ #36343254)
  • 一部のプリペアドステートメントが正しく再準備されませんでした。(バグ #36267792)
    参照: この問題は、バグ #34929930のリグレッションです。
  • 式の参照カウントを増やす場合、この式内の基になる式は参照されません。式を削除する際、参照カウントを減らした後、基になる式も調べられ、その結果、意図せずして基になる式が削除されてしまいました。この問題は、Item_ref::real_item()と、sql/item.hのアサートで発生しました。現在の式に唯一残っている参照が含まれていない限り、基になる式を参照しないようにすることで、この問題は修正されました。(バグ #36204344、バグ #36356279)
  • 特定の条件下では、EXPLAIN FORMAT=JSON FOR CONNECTIONによって予期しない終了が発生することがありました。(バグ #36189820)
  • 特定の条件下では、競合状態により、TABLE_HANDLESによって使用されるRAMの量が最大9GBまで増加する可能性がありました。(バグ #36170903)
  • 一部のCREATE USERステートメントが正しく処理されませんでした。 (バグ #36022885)
  • ORDER BYとLIMITを含むSELECTの場合、オプティマイザーは最初に非常にコストのかかるフルテーブルスキャンを選択し、次に別のチェックを実行して、perform_order_indexタイプのパスを使用しましたが、これはオプティマイザープランのコストに反映されませんでした。(バグ #35930969)
  • レプリカでmysqldumpを実行すると、バイナリログに書き込む操作であるFLUSH TABLES操作が挿入されます。現在は、これらのバイナリログの変更によるレプリケーション中のGTID関連の問題を防ぐために、代わりにFLUSH LOCAL TABLESが挿入されます。
    回避策は、--source-dataオプションを1または2に設定することでした。(バグ #35665076)
    参照: この問題は、バグ #33630199のリグレッションです。
  • 全ての内部ACLビットマスク変数は、現在明示的に32ビット(uint32_t)です。(バグ #35507223)
  • FIND_IN_SET()に機能インデックスを追加できませんでした。(バグ #35352161)
  • フルテキストインデックスとinnodb_optimize_fulltext_onlyが有効になっている同じテーブルで2つのOPTIMIZE TABLE ステートメントを同時に実行すると、サーバーが終了することがありました。(バグ #34929814)
  • DDL操作が非常に多数のテーブルに対して実行された場合など、状況によっては、バックグラウンドヒストグラム更新からの警告でエラーログがあふれました。問題となっている警告は、テーブル上のメタデータロックの取得に失敗したことに関係するものでした。
    この問題を解決するために、バックグラウンドヒストグラム更新操作からエラーログに書き込まれるメッセージを制限し、そのレートを1分あたり1メッセージに制限しました。このレートは、ユーザーがバックグラウンドヒストグラム更新の潜在的な問題を特定するのに十分なはずです。さらに、バックグラウンドヒストグラム更新中に発生する全てのエラーイベントをエラーから警告に格下げしました。(バグ #114845、バグ #36574298)
  • macOSでは、DMGは、MySQL Server 8.4.0で削除されたキーリングプラグイン機能をインストールする代わりに、キーリングコンポーネントをインストールするようになりました。
    8.4.0の回避策は、環境設定パネルで"キーリングデータファイル"オプションを無効にするか、launchd plistから2つのキーリング行を手動で削除することでした。(バグ #114836、バグ #36577944)
  • 決定論的ストアド関数がreturnステートメント内でJOIN ONを使用した場合、決定論的ストアド関数が誤った結果を返す可能性がありました。例えば、2回の実行の間のFLUSH TABLESによってテーブルメタデータが生じたためにクエリを再準備する必要がある場合、ON句が失われることがありました。(バグ #114235、バグ #36379879)
  • EL8およびEL9プラットフォームに不足していたmysql-community-libs-compatパッケージを追加しました。(バグ #112949、バグ #35975348)
  • プリペアドステートメントの実行時に、THREADSのPROCESSLIST_INFO列が更新されませんでした。(バグ #104121、バグ #33057164)

全ての変更点やバグ修正については、以下のページをご覧ください。
MySQL 8.4.1 リリースノート(MySQLウェブサイト):
https://dev.mysql.com/doc/relnotes/mysql/8.4/en/news-8-4-1.html


MySQL Editions

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