2024.07.05

MySQL

MySQL 8.0.38 GA版(リリース日:2024年7月1日)

C API関連

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

コンパイル関連

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

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

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

主なバグ修正

  • InnoDB: ALTER TABLE操作後のUPDATEでMySQLが予期せず停止しました。(バグ #36571091)
    参照: この問題は、バグ #35183686のリグレッションです。
  • InnoDB: ログインデックスサイズ計算で列の順序の変更が考慮されるようになりました。(バグ #36526369)
    参照: この問題は、バグ #35183686のリグレッションです。
  • InnoDB: InnoDBによって実行されるファイルシステム操作は、ディレクトリ変更タスクを実行する時に、親ディレクトリを一貫してfsyncするようになりました。(バグ #36174938)
  • InnoDB: デバッグビルドで、innodb_interpreter_outputデバッグ変数を設定すると、サーバーが予期せず停止しました。これは読み取り専用変数になりました。(バグ #36041032)
  • 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: 数千の読み取り専用トランザクションが存在する場合に、data_lockテーブルおよびdata_lock_waitsテーブルをクエリすることに関連するパフォーマンスの問題を修正しました。(バグ #109539、バグ #34951273)
  • レプリケーション: ソースに、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)
  • JSON: NULLIF()、COALESCE()、およびシフト (>>)演算子に、不足しているエラー処理チェックを追加しました。 (バグ #113668、バグ #35513196、バグ #36198403)
    参照: バグ #31358416 も参照してください。
  • MySQL NDB ClusterJ: ClusterJテストスイートを実行すると、スレッド数が存在しないというエラーメッセージが表示されました。これは、スレッドと接続の処理が誤っていたためで、このパッチで修正されました。(バグ #36086735)
  • 特定の数値の平均が常に正しく計算されるとは限りませんでした。(バグ #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)
  • 式の参照カウントを増やす場合、この式内の基になる式は参照されません。式を削除する際、参照カウントを減らした後、基になる式も調べられ、その結果、意図せずして基になる式が削除されてしまいました。この問題は、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)
  • 全ての内部ACLビットマスク変数は、明示的に32ビット(uint32_t)になりました。(バグ #35507223)
  • FIND_IN_SET()に関数インデックスを追加できませんでした。(バグ #35352161)
  • フルテキストインデックスとinnodb_optimize_fulltext_onlyが有効になっている同じテーブルで2つのOPTIMIZE TABLE ステートメントを同時に実行すると、サーバーが終了することがありました。(バグ #34929814)
  • 決定論的ストアド関数がreturnステートメント内でJOIN ONを使用した場合、決定論的ストアド関数が誤った結果を返す可能性がありました。例えば、2回の実行の間のFLUSH TABLESによってテーブルメタデータが生じたためにクエリを再準備する必要がある場合、ON句が失われることがありました。(バグ #114235、バグ #36379879)
  • プリペアドステートメントの実行時に、THREADSのPROCESSLIST_INFO列が更新されませんでした。(バグ #104121、バグ #33057164)

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


MySQL Editions

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