注目すべき項目
ストレージエンジン
InnoDBストレージエンジン
- INFORMATION_SCHEMAビューであるinnodb_trx、innodb_locks、innodb_lock_waitsにおいて、いくつかの競合状態が修正されました。(MDEV-39344)
- InnoDBのデッドロック検出が、ロールバック対象のトランザクションを誤って報告する可能性がありました。(MDEV-37977)
- --bootstrapモードにおいて、部分的に初期化されたInnoDBがシャットダウンされる可能性があり、それによってサーバーがクラッシュする可能性がありました (MDEV-39541)
- 圧縮のみのページにおける古い暗号化メタデータをクリアすることによって修正し、エクステント予約時のアサーション失敗を修正しました (MDEV-39795)
- innodb_encrypt_tables=FORCEの下で、ENCRYPTED=NOを指定した一時テーブルに対して TRUNCATEを実行するとクラッシュする (MDEV-40085)
- XA PREPAREの実行中に、並行して行われるバッファプールのリサイズによって誤ったロックラッチが解放され、ハングやクラッシュを引き起こす可能性があった、稀なInnoDBの競合状態を修正しました(MDEV-40218)
- クラッシュリカバリを複数のバッチで実行する時、InnoDBがファイルの拡張に失敗し、その後の書き込み時にクラッシュする可能性があります (MDEV-40756)
- 空間インデックスの述語ロックに関するアサーション失敗を修正しました (MDEV-39800)
- 末尾のエクステントが空のXDES_FREE_FRAGエクステントである場合、InnoDBシステムテーブルスペースの自動縮小が失敗する (MDEV-39963)
- SYS_VIRTUAL内のBASE_IDXのInnoDBデフラグメンテーションが失敗しました: データ構造の破損 (MDEV-40332)
- transaction-isolation=READ-COMMITTEDを使用したoltp_read_writeベンチマークにおけるパフォーマンスのリグレッションを修正しました。バージョン10.3で発生したリグレッションです(MDEV-21423)
- 継続的な書き込み負荷下におけるバッファプールフラッシュの競合を低減 (MDEV-39600)
- lock_move_reorganize_page()におけるロック粒度の改善 (MDEV-40128)
- 各ロック解放処理に工夫を加え、すべてのトランザクションロックの解除を一時的な障害に対してより堅牢なものになるよう試みることで、後で排他ラッチを取得する確率を低減する (MDEV-40129)
- フラッシャースレッドにおける冗長なCAS操作を回避する (MDEV-40210)
- lock_move_reorganize_page()における早期終了のチェックは、ロックエリジョンが有効な場合にのみ有用です (MDEV-40427)
- 新しいシステム変数 innodb_index_shrinkを使用すると、NULLから非NULLへの変更を伴うUPDATEなど、レコードサイズが増加する操作において、ページの統合や再編成によって、B-treeを縮小するInnoDBの機能を無効にすることができます。デフォルト値 ONは、従来の動作と同じです。これをOFFに設定すると、そのような場合にはページ分割が優先されるため、ページ内のデータ密度はわずかに低下しますが、インデックスツリーのラッチ昇格やそれに伴う競合を低減できます (MDEV-38814)
Archiveストレージエンジン
- ARCHIVEテーブルに対するREPAIRコマンドがTEXTデータを破壊する (MDEV-24245)
Ariaストレージエンジン
- シンボリックリンクされたテーブル名がエンコードされない (MDEV-40358)
- MyISAM/Ariaは、ファイル名が長すぎる場合、ファイル名の拡張子を警告なしに切り詰めます (MDEV-40395)
Connectストレージエンジン
- Connectストレージエンジンの静的アプリケーションセキュリティテスト(SAST)の警告を修正 (MDEV-40316)
- CONNECTのファイルUDFがFILEおよびsecure_file_privを無視する (MDEV-40323)
- CONNECT RESTはHTTPパラメータ経由でcurlに引数を渡すことができる (MDEV-40360)
- CONNECTがリモートサーバーからの未検証データを固定長バッファに書き込む (MDEV-40426)
- DOSテーブル内のdouble(255,50)でCONNECTがクラッシュする (MDEV-40637)
CSVストレージエンジン
- CSVストレージエンジンを使用しているテーブルに対してDELETEを実行すると、サーバーがクラッシュする可能性がある (MDEV-40636)
DuckDBストレージエンジン
- tpchsf1000を頻繁にロードするとduckdb.dbが増大し続ける (MDEV-40166)
- DuckDBテーブルでUUIDカラムがすべてゼロを含む (MDEV-40265)
- 一時DuckDBテーブルの作成時にDuckDBがクラッシュする (MDEV-40379)
Memoryストレージエンジン
- MEMORYテーブルにおいて、DELETE時にインデックススキャンが誤って再開される (MDEV-40186)
Mroongaストレージエンジン
- テーブルをストレージエンジンMroongaに変更し、その後CHECK TABLEを実行すると、以前はクラッシュが発生していた (MDEV-39556)
MyISAMストレージエンジン
- 無効なkeyseg長を持つ破損したMYIファイルでのMyISAMクラッシュ (MDEV-39816)
- CHECKSUM TABLEの実行時、Field_varstring::val_str内でアサーション marked_for_read()に失敗しました (MDEV-22943)
RocksDBストレージエンジン
- RocksDBにおける32ビットサイズ切り詰め (MDEV-39812)
Adminステートメント
- KILLは、ユーザー(priv_userではない)をチェックし、ホスト名を検証しない (MDEV-40554)
認証および権限システム
- 長すぎるデータベース名がエラーなしに受け入れられていましたが、GRANT文(データベースレベル)では64文字に切り詰められました (MDEV-39047)
- 適切な権限(SUPER または SYSTEM_VARIABLES_ADMIN権限)を持つユーザーは、実行時に変更可能なシステム変数 wsrep_sst_authの値が、シェルコマンドの構築に使用される時に適切にサニタイズされなかったため、mariadbdプロセスのUIDとしてシェルコマンドを実行できました (MDEV-40027)
- 適切な権限(SUPER権限)を持つユーザーは、実行時に変更可能なシステム変数 wsrep_node_addressの値が、シェルコマンドの構築に使用される時に適切にサニタイズされなかったため、mariadbdプロセスのUIDとしてシェルコマンドを実行できました (MDEV-40056)
- シングルクォートを使用すると、SHOW CREATE USERが無効になる (MDEV-40308)
- パスワードが空のGRANT PROXYが、権限付与者の権限を誤ってチェックする (MDEV-40470)
- エラーコード/エラーメッセージがテーブル構造に関する情報を公開する (MDEV-23086)
- 権限が付与されていないロールが誤って処理される (MDEV-28743)
- サーバーは、システムテーブル列のNULL許容属性の変更を検出しない (MDEV-30555)
- skip-grant-tablesを有効にしてサーバーを起動し、mysql.hostテーブルを作成した後に、FLUSH PRIVILEGESステートメントを実行すると、サーバーがクラッシュする (MDEV-37840)
- SHOW TABLESを使用すると、GRANT OPTION権限のみを持つユーザーでも、データベース "mysql"内のすべてのテーブル名を読み取ることができます (MDEV-37951)
- HandlerSocketプラグインのデフォルトシークレットが空である (MDEV-39841)
- DROP PACKAGEを実行しても、mysql.procs_priv内のPACKAGE BODYの権限設定が残る (MDEV-40722)
- cached_sha2_passwordが長さゼロのパスワードでクラッシュする (MDEV-40058)
キャラクターセット
- '?'に対するvarchar_upper_cmp_transformer()でのプリペアドステートメントのクラッシュ (MDEV-40006)
- character_set_collationsが長すぎることによるクラッシュ (MDEV-40059)
- 空のBLOB/TEXTカラムに対するUNIQUE制約チェックまたはプレフィックスインデックススキャン中にサーバーがクラッシュする問題を修正しました (MDEV-39559)
コンパイル
- PLUGIN_PERFSCHEMA=NO指定時のコンパイルエラー: 'key_file_cnf' defined but not used [-Werror=unused-variable] (MDEV-39789)
データ定義 - Alter Table
- ALTER TABLE ... AUTO_INCREMENT = NN; において、指定された値を使用できない場合は警告が返されるべきです (MDEV-33660)
- ALTER TABLE ... CONVERT ... PARTITIONがパーティション名をエンコードしない (MDEV-40413)
データ定義 - Create Table
- 重複するCHECK制約名 (MDEV-24598)
- ファイル内の誤った情報:CREATE TABLE時の'./test/t0.frm' (MDEV-28498)
データ操作 - サブクエリ
- Oracle sql_modeにおいて、UNIONを含むクエリが ER_BAD_FIELD_ERROR/ER_UNKNOWN_TABLEで失敗する (MDEV-39522)
データ操作 - Update
- ConnectエンジンのINIタイプにおいて、ファイルのオープンに失敗した時に発生していたメモリリークを修正しました (MDEV-39513)
データ型
- PROCEDURE_ANALYSE()における標準偏差計算は、計算結果がDOUBLE型の最大値を超えるまでは、大きなBIGINTカラムに対してオーバーフローが発生することはなくなります。 (MDEV-28374)
- ST_GeomFromWKBに渡された時、バイトオーダーフィールドが不正なWKBジオメトリ(マルチポリゴンやジオメトリコレクションなど)は、以前は有効な値が返されていましたが、NULLの結果が返されるように修正されました(MDEV-35595)
- 0xHHHHやb'...'といったリテラルは、COALESCE/IF/CASE/...を経由してもhex_hybrid型を保持していましたが、文字列として評価され、サイズ決定され、格納されたため、素のリテラルとは異なる挙動を示していました(10+COALESCE(0x31)の結果は59ではなく11でした)。type_handler_hex_hybridは、素のリテラルと一致するように、数値側を実装するようになりました。val_int/val_real/val_decimalはバイトをハイブリッドとして読み取り、Item_decimal_precisionは整数の精度を返し、Item_save_in_fieldは素のリテラルと同様に格納します。従来の型マージは、(BITの場合と同様に)型を持たないNULLを介してハイブリッドを維持し、Item_hybrid_func_fix_attributesはそれにbinary/unsignedを割り当てます (MDEV-39380)
- BLOBから整数への変換における符号付き整数のオーバーフローを修正 (MDEV-39690)
- 符号なしの正しい10進ゼロを生成するように除算関数を修正 (MDEV-39744)
- 未初期化メモリが使用された結果、システムバージョン管理テーブルに対する範囲クエリにおいて、バージョン管理用行に基づくクエリプランが予測不能なものとなった可能性があります (MDEV-40147)
- collect_indexed_vcols_for_tableにおけるSIGSEGV、charset_info_st::copy_fixからのmy_copy_8bitによるメモリ破損 (MDEV-39558)
ドキュメント
- HELPシステムのドキュメントおよびMariaDBドキュメントへのURLを更新 (MDEV-39584)
動的カラム
- 動的カラムヘッダーにおける妥当性チェックの欠落 (MDEV-39581)
- 動的カラムは、符号なし整数を読み取る時、シフトカウンタとして使用されていた64を超えてしまう可能性がありました (MDEV-40200)
暗号化
- InnoDBの暗号化スレッドがビジーウェイトを行わなくなり、innodb_encrypt_tablesおよびinnodb_encryption_rotate_key_ageに対して迅速に応答するようになりました (MDEV-34358)
Galera
- Galeraノードの状態スナップショット転送(SST)が、明示的なssl-modeまたは設定内のSSL証明書を介して、暗号化用に設定されているにもかかわらず、実際に暗号化を確立できなかった場合、rsyncおよびmariabackupによるSST方式は、ドナーのデータを平文で密かに転送しました。stunnelバイナリがインストールされていない場合のrsyncや、使用可能なSSL証明書および鍵が見つからない場合のmariabackupにおいて、SSTは現在、こうした状況において、非暗号化転送にフォールバックするのではなく、エラーで中断するようになりました。(MDEV-28233)
- mariabackupおよびrsyncによるState Snapshot Transfer(SST)において、転送時のノードの役割に応じて異なるTLS証明書、鍵、およびCAを使用できるようになりました。これにより、単一のインスタンスが、ドナー(TLSクライアント)として動作する時にはクライアント証明書を、ジョイナー(TLSサーバー)として動作する時にはサーバー証明書を提示できるようになります (MDEV-23744)
- [sst](または [mysqld])オプショングループから読み込まれる新しいオプションが8つ追加されました。各オプションは、設定されると、その役割に対応する汎用的な ssl-* オプションを上書きします。設定されていない場合は、汎用的な ssl-* オプションが使用されるため、既存の設定はこれまでと全く同じように動作します。
- Joiner(TLSサーバー)の役割:
- "ssl-server-ca" ピアの検証に使用するCAファイル。設定されている場合は、ssl-caを上書きします。設定されていない場合は、ssl-caが使用されます。
- "ssl-server-capath" ピアの検証に使用するCAディレクトリ。設定されている場合は、ssl-capathを上書きします。設定されていない場合は、ssl-capathが使用されます。
- "ssl-server-cert" ノードが提示する証明書。設定されている場合は、ssl-certを上書きします。設定されていない場合は、ssl-certが使用されます。
- "ssl-server-key" 証明書用の秘密鍵。設定されている場合は、ssl-keyを上書きします。設定されていない場合は、ssl-keyが使用されます。
- Donor(TLSクライアント)の役割:
- "ssl-client-ca" ピアの検証に使用するCAファイル。設定されている場合は、ssl-caを上書きします。設定されていない場合は、ssl-caが使用されます。
- "ssl-client-capath" ピアの検証に使用するCAディレクトリ。設定されている場合は、ssl-capathを上書きします。設定されていない場合は、ssl-capathが使用されます。
- "ssl-client-cert" ノードが提示する証明書。設定されている場合は、ssl-certを上書きします。設定されていない場合は、ssl-certが使用されます。
- "ssl-client-key" 証明書用の秘密鍵。設定されている場合は、ssl-keyを上書きします。設定されていない場合は、ssl-keyが使用されます。
- これらはサーバーのシステム変数ではなく、wsrep_sst_* スクリプトによって読み込まれるSSTオプションです。新しいオプションが何も設定されていない場合、SSTの動作は以前のリリースと同じです。この変更には完全な後方互換性があります。
- Galera State Transfer (SST) は、ssl-mode=VERIFY_CA設定をドキュメントの記載通りに解釈するようになりました。ノードの証明書は信頼できる認証局から発行されたものである必要がありますが、その名前がサーバーのアドレスと一致している必要はなくなりました。以前は、VERIFY_CAがVERIFY_IDENTITYと同様に厳格に扱われていたため、ホスト名が証明書に記載されていない正常なノード間での状態転送がブロックされる可能性がありました。より厳密な名前照合を必要とするデプロイでは、ssl-mode=VERIFY_IDENTITYを明示的に設定する必要があります (MDEV-28239)
- Galera SSTは、TLS証明書のチェック中に中断されました。原因は、ノードの証明書ファイルにリーフ証明書と中間CAがバンドルされていた一方で、CAファイルにはルートCAのみが含まれていたためです。これは、cert-managerや類似のPKIで発行された証明書によくある一般的な構成です。このチェックは、リーフ証明書をCAファイルに対して直接検証し、バンドルされた中間証明書を使ってチェーンを完了させることができませんでした。現在は、バンドルされた中間証明書も考慮されるようになったため、そのような証明書チェーンも正しく検証され、SSTの処理が進行します(MDEV-35812)
- あるノードで書き込みセットを適用できなかった後、そのノードがクラスターから離脱せずに静かに留まり続けてしまうという、稀に発生するGaleraクラスターのロックアップを修正しました。新しい書き込みセットが次々と到着したものの処理できず、当該ノードが強制終了されて再起動されるまで、クラスターは処理を進められない状態に陥りました。現在は、ノードは適用失敗をクラスターに報告し、整合性チェックに不合格となります。そして、状態転送を介して再参加できるよう、自動的に排除されます (MDEV-38843)
- 提供されているwsrep.cnfから設定オプションとして非推奨となったwsrep_causal_readsを削除 (MDEV-39691)
- --repeat使用時に失敗するGalera MTRテストにおける不完全なクリーンアップを修正 (MDEV-38386)
- Galeraレプリケーションアプライヤーによる高優先度の中断によって、中断された被害トランザクションのInnoDBロックがロック待機キュー内に孤立したまま残ることがあり、その結果、状況によっては一時的なノードのハングやクラッシュを引き起こす可能性があります。このバージョンには、優先度の高いトランザクションが中断された時のロック待機状態の処理に関する修正が含まれています(MDEV-39681)
- wsrep_debug=1の場合、Galeraのメタデータ競合ロックが正しく表示されない可能性がある (MDEV-40538)
- SST後のMariaDBエラー1950 (MDEV-38147)
- mariabackup SST後にN個の準備済みトランザクションが見つかりました (MDEV-40179)
- レプリケーションにおけるgtid_slave_posテーブルの処理をリファクタリングした、MDEV-34924に起因するリグレッションの修正。今回の修正は、非同期レプリケーションによってDDLやシーケンスへのアクセスがクラスタにレプリケートされる時に発生し得るクラスタのハングアップに対処するものです (MDEV-38260)
GIS
- 不正な形式のWKBポイントでのASANエラー (MDEV-39657)
- ST_GeomFromGeoJSONは、そのJSONオブジェクトの処理において、処理の深さをチェックしておらず、メモリオーバーランを引き起こす可能性がありました。MariaDB 12.3未満のバージョンでは、深さの制限として32が強制されるようになりました。それ以降のバージョンでは、深さはオペレーティングシステムのスタックサイズによって制限されます。(MDEV-39813)
- ST_GEOMFROMGEOJSONにおいて、GeoJSONオブジェクトを定義する他のすべてのGeoJSONオブジェクトの後にその"type"が指定されたJSONオブジェクトを渡すと、以前はオブジェクトではなくNULLが返されました。(MDEV-39981)
- 不正な形式のWKBマルチポリゴンにおけるASANエラー (MDEV-40328)
- 深くネストされたGeometryCollectionにおけるST_GeomFromTextのスタックオーバーラン (MDEV-40409)
- 深くネストされたGeometryCollectionにおけるST_GeomFromWKBのスタックオーバーラン (MDEV-40540)
- ST_GeomFromWKBに渡された時に無効なバイトオーダーフィールドを持つWKBマルチラインは、以前は有効な値を返していましたが、NULLの結果を返すように修正されました (MDEV-26813)
- ネストされたST_BUFFERを伴うget_n_sincosでのサーバークラッシュまたはアサーション失敗 (MDEV-31267)
- ST_GeomFromWKB関数に渡された時に無効なバイトオーダーフィールドを持つWKBマルチポイントは、以前は有効な値を返していましたが、NULLの結果を返すように修正されました (MDEV-40552)
- ST_CROSSESは、次元の異なるジオメトリに対して常に0を返す (MDEV-40584)
情報スキーマ
- SHOW CREATE TABLEが、バッククォートで囲まれたテーブルオプションを破損させる (MDEV-39776)
- 外部キー名内のバッククォートがSHOW CREATE TABLEを壊す (MDEV-39818)
- DATA DIRECTORY内のシングルクォートがSHOW CREATE TABLEを壊す (MDEV-40159)
JSON
- 大規模な入力を伴うJSON関数(JSON_CONTAIN、JSON_CONTAINS_PATH、JSON_EXISTS、JSON_EXTRACT、JSON_KEYS)は、以前はKILL queryによる中断ができず、最大クエリ時間を超過する可能性がありました(MDEV-28404)
- JSON_EXISTSは、JSON関数の深さ制限を超えることが許容されていました (MDEV-39276)
- JSON_ARRAYAGG()は、off-by-oneエラーにより不正な値を返す (MDEV-39817)
- mysql_jsonプラグインにおけるOOB読み取り (MDEV-40678)
- ビッグエンディアンのプラットフォームにおいて、JSON関数の実行の中断は以前は不可能でしたが、これは修正されました。すべてのプラットフォームにおいて、JSON_OVERLAPSの中断は、正しいエラーコードを返すようになりました (MDEV-30518)
- JSON_EQUALS、JSON_NORMALIZE、または順序付けを使用して2つのJSONオブジェクトを比較すると、同一のオブジェクトキーが複数回出現するオブジェクトが含まれていると、予期しない結果が生じる可能性がありました。この正規化が一貫したものとなるよう修正されました (MDEV-28922)
- SQLカーソルを使用してJSON関数からfalseという値を取得する時、プロトコルの誤った幅のために、falseがfalsに切り詰められました(MDEV-31554)
- パス引数をとる一連のJSON関数において、文字セットを持たないSQL式が渡された場合、サーバーがクラッシュしました(MDEV-32331)
- json_table使用時の予期しない照合順序 (MDEV-36764)
- JSON_OVERLAPS、JSON_LENGTH、JSON_DEPTH、JSON_EQUALS、JSON_NORMALIZEがKILLクエリに応答したり、max_statement_timeシステム変数を尊重したりしませんでした。JSON_EQUALSおよびJSON_NORMALIZEは、構文が正しくない場合に警告を返すようになりました (MDEV-40165)
- JSON_VALIDは、大きなドキュメントが渡された場合、処理を停止させることができませんでした。また、max_statement_timeも尊重されませんでした。この関数のエラー処理の修正で、JSONが無効な場合には、その無効な箇所と理由を示すSQL上の通知も行われます (MDEV-40175)
- JSON操作時のCharset::charsetにおけるサーバークラッシュ (MDEV-40414)
- オブジェクトの配列を含むJSONに対して、JSON_SCHEMA_VALID()が誤った結果を返していました。(MDEV-38033)
- カーソルからJSON_ARRAY_INTERSECTの結果を選択する時、長さの設定が誤っていたために結果フィールドが空になりました (MDEV-39716)
- JSON_ARRAY_INTERSECT、JSON_OBJECT_TO_ARRAY、JSON_SCHEMA_VALIDなどを含む、バージョン11.4で追加されたJSON関数は、KILL QUERY、またはmax_statement_time の超過によって、現在は中断可能になっています。追加された簡易機能であるJSON_KEY_VALUE関数は、今回のケースには適用できません。すべての関数において、無効なJSONが渡された場合に警告が生成されるようになりました(MDEV-39742)
ロック
- 現在のテーブル定義にNEXTVAL式が含まれている状態で、LOCK=EXCLUSIVEを指定してALTER TABLEを実行した時にサーバーがクラッシュする問題を修正しました (MDEV-31808)
mariabackup
- Redoログが正常であり、容量にも十分な余裕がある場合でも、mariadb-backupは”Was only able to copy log from X to Y, not Z; try increasing innodb_log_file_size”という誤解を招くエラーで異常終了することがありました。ログコピー機能は、CRCが有効として解析可能な、部分的に書き込まれた末尾ブロックを読み取り、その解析位置をミニトランザクションの途中にまで進めてしまう可能性がありました。その結果、ターゲットのLSNに追いつくことができなくなりました。コピー処理は現在、サーバーが永続的にフラッシュしたLSN(Innodb_lsn_flushed)までの範囲でredoログを解析し、該当するバイトは後のパスで再読み込みされるようになりました(MDEV-39468)
- mariadb-backup --decompressにおけるファイル名チェックの欠如 (MDEV-39565)
オプティマイザー
- 名前解決:マージされた派生テーブルからのグループ化SELECTでの誤った結果 (MDEV-17846)
- 64列を超える派生テーブル(または derived_merge=offが設定されたビュー)に対してNATURAL JOINを実行すると、アサーションでサーバーがクラッシュしました (MDEV-24931)
- QUICK_GROUP_MIN_MAX_SELECT::get_nextにおいて、予期しないロックのバイパスが発生し、アサーション (have_max && !have_min) || (have_max && have_min && (max_res == 0)) が失敗しました (MDEV-25964)
- インデックス内の仮想列を含む範囲選択時に、アサーション marked_for_read()が失敗しました (MDEV-28610)
- 再帰的CTEとサブクエリを組み合わせた一部のクエリは、実行中にサーバーのクラッシュを引き起こす可能性があります (MDEV-32326)
- group by <subquery>の簡略化に伴うサーバークラッシュ (MDEV-35565)
- GROUP BYの下で、LONGTEXTに対する単項否定の結果が誤っていました (MDEV-38210)
- CTEエイリアス使用時にItem_func_lastval::val_intおよびItem_func_setval::val_intでサーバーがクラッシュする (MDEV-39063)
- 暗黙の型変換を伴うNOT ( ... XOR ... )評価における論理バグ(MDEV-39363)
- 無効化されたオプティマイザトレースの場合について高速パスをインライン化し、ホットパス上の関数呼び出しを予測分岐に置き換えました (MDEV-39490)
- HAVING句からWHERE句へ”NOT a”条件をプッシュする際にクラッシュする (MDEV-39916)
- sql_mode=ONLY_FULL_GROUP_BYが設定されている場合、相関サブクエリが外部クエリの列を集約すると、サーバーは正しい結果の代わりに、誤ってER_WRONG_FIELD_WITH_GROUPエラーを発生させました (MDEV-39932)
- ネストされたVIEWを含むPS実行での2回目のクラッシュ (MDEV-36059)
オプティマイザー - Windows関数
- 以前は、Windows関数を含むクエリは、Windows関数の処理中に強制終了することができませんでした。また、Windows関数の実行に対する max_statement_time ステートメント時間も無視されました。これらの動作はいずれも修正されました (MDEV-31209)
- 浮動小数点例外: Item_sum_ntile::val_intにおけるゼロ除算 (MDEV-39451)
その他
- COMPRESSEDカラムを、その値のサブストリングに更新する時(例: UPDATE t SET c = RIGHT(c, n) や SUBSTRING(c, n))、カラムの現在の値が非圧縮で格納される程度に短い(column_compression_threshold、デフォルト100バイト未満)場合に発生し得るメモリ破損 (MDEV-39450)
パッケージング
- FILE権限を持ち、かつ、/run/mysqldへの書き込みが可能なsecure_file_privシステム変数の設定(デフォルトで有効)を持つユーザーは、次回の再起動時にMariaDBサービスが使用する環境ファイル /run/mysqld/wsrep-new-clusterを作成することが可能でした。(MDEV-40629)
- stunnelは、Galeraのrsync SSTメカニズムの依存関係です。SSTメカニズムに対してTLS設定が適用されるまでは、これはオプションです。stunnelは現在、MariaDB-server RPMおよびmariadb-server DEBの推奨パッケージとなっています(MDEV-40630)
- SBOMにlibmariadbまたはlibmarias3の無効なサプライヤー名が含まれていました (MDEV-39708)
- MariaDBのRPMパッケージでは、mariadbdを実行するための専用mysqlユーザーが作成されます。このユーザーのホームディレクトリは、データディレクトリから存在しないパスである/nonexistentに変更されました。これは、FILE権限を持つ悪意のあるユーザーが、ホームディレクトリ($HOME)内に様々なドットファイルを作成できないようにするためです。例えば、そこで作成された .bash_profileは、su - mysql -s /bin/bashによって実行されます。既存のインストールをアップグレードすると、ホームディレクトリもリセットされます。
- MariaDBのdebパッケージ(DebianおよびUbuntu)は、ホームディレクトリがすでに/nonexistentに設定されているため、影響を受けません。
パーサー
- ALTER TABLE ... DROP PERIOD IF EXISTS FORは、デバッグビルドではアサーション失敗を引き起こし、非デバッグビルドではクラッシュする可能性があります (MDEV-30297)
パーティショニング
- ”ALTER TABLE tbl CONVERT TABLE normal_table TO partition_definition”クエリでクエリキャッシュ(デフォルトではない)を使用する場合、解放済みのメモリにアクセスする”normal_table”のクエリキャッシュ無効化が発生し、未定義の動作を引き起こす可能性がありました (MDEV-33170)
- パーティション化されたテーブルは、大文字と小文字を区別しないファイルシステム上でも正しく命名されるようになり、名前の変更や変更を行う時の結果も予測可能になりました (MDEV-37739)
- ROW_START/ROW_ENDカラムを解決するためにテーブルが事前にオープンされていない場合、InnoDBのパージ中に、InnoDBのパーティション化されたシステムバージョン管理テーブルがクラッシュする可能性がありました (MDEV-40237)
プラットフォーム Windows
- Ariaテーブルからの削除により、Windows上でインデックスが破損する可能性がある (MDEV-37000)
プラグイン - 監査
- server_auditプラグインがアンインストールされてから再インストールされると、サーバーがクラッシュする可能性がありました (MDEV-34074)
プラグイン - ファイルキー管理
- キーファイルが空の場合、file_key_managementプラグインがクラッシュする可能性がある (MDEV-40658)
プラグイン - HashiCorpキー管理
- HashiCorpキー管理プラグインにおいて、負荷の高い時刻取得関数の呼び出しを回避することで、パフォーマンスが向上しました (MDEV-37187)
プラグイン
- zlib以外のinnodb_compression_algorithmが指定されている場合、MariaDBは起動時にページ圧縮されたInnoDBテーブルを開くことができません (MDEV-36147)
- プラグイン名が純粋なASCIIであることを確認する (MDEV-39245)
- HandlerSocketが多数のフィールドを含む読み取りでクラッシュする (MDEV-40425)
プロトコル
- DNS名前解決が有効な場合(skip_name_resolveが設定されていない場合)、リモートホストからのPROXYプロトコル接続においてメモリリークが発生した (MDEV-37556)
- PROXYプロトコル v1ヘッダーパーサーにおける1バイトのOOB書き込み (MDEV-39564)
- PROXY v2プロトコルの未初期化メモリの読み取り (MDEV-39576)
クエリキャッシュ
- クエリに\0が含まれる場合のqc_info OOB読み取り (MDEV-40670)
レプリケーション
- 破損または途中で切断された Table_map_log_eventメタデータを解析する時に発生した複数の範囲外メモリ読み取りを修正しました。これにより、スレーブやmariadb-binlog --print-table-metadataは、不正な形式のテーブルマップイベントに遭遇しても、クラッシュしたりヒープメモリをリークしたりすることなく、安全に処理できるようになりました (MDEV-39689)
- STOP SLAVEコマンドがSQLスレッドを停止するのと同時に、SHOW SLAVE STATUS(または SHOW ALL SLAVES STATUS)を実行すると、サーバーがクラッシュする可能性がありました。そのステートメントによるSQLスレッドの状態の読み取りは、IOスレッドのシャットダウンとしか同期されておらず、そのため、停止中のSQLスレッドが読み取りの最中にその状態を解放してしまう可能性がありました。読み取りは、現在、SQLスレッドのシャットダウンとも同期されるようになったため、クラッシュは発生しなくなりました (MDEV-40298)
- レプリケーションスレーブがエラーなしで停止したままになる (MDEV-34135)
- 切り詰められた追加データを含むv2 Rows Eventで、(クラッシュしない場合でも)メモリが情報漏洩する問題を修正しました (MDEV-39485)
- 圧縮されたイベント(log_bin_compress)をレプリケートする時、イベントに記録された非圧縮サイズが破損して極めて大きな値になっていた場合、レプリカがクラッシュする可能性がありました。レプリカはその値をチェックすることなくその値に基づいて展開用ワークスペースのサイズを決定し、その結果生じた不整合によってレプリカのメモリが破損したり、あるいは4GBの割り当てが要求される事態となりました。レプリカは現在、マスターが生成可能な最大パケットサイズを超える非圧縮サイズを拒否し、詳細なエラーと共にI/Oスレッドを停止します (MDEV-39762)
- 不完全な内容を含むFormat Descriptionイベントでのクラッシュを修正 (MDEV-40365)
- 不完全な内容を含むFormat Descriptionイベントでのクラッシュを修正 (MDEV-40366)
- マスターのバイナリログファイル名が許容される最大長を超えている場合、レプリカのリレーログが書き込まれた時点の設定とは異なるbinlog_checksum設定を持つマスターにレプリカが接続すると、クラッシュする可能性がありました。レプリカは、マスターが報告したファイル名を保存する前にその長さをチェックしていなかったため、長すぎる名前によってレプリカのメモリが破損しました。レプリカは現在、サイズが大きすぎる名前を拒否し、クラッシュするのではなくエラーを伴ってI/Oスレッドを停止します (MDEV-40492)
- mariadb-binlog --force-readが、Unknownイベントについても”既知の”イベントと同様にチェックサムを一貫して表示するようになりました (MDEV-40542)
- mariadb-binlog --verify-binlog-checksum --force-readにおける不正なチェックサムによるメモリリークを修正 (MDEV-40544)
- レプリカは、マスターからのハートビートやその他のイベントが途切れた状態で届くと、クラッシュする可能性がありました。これは、レプリケーションストリームが転送中に破損した場合に起こり得ます。そのレプリカは、切り詰められたイベントが示したサイズを信頼し、イベントに含まれていたデータ量をはるかに上回るデータを読み込み、割り当てようとしました(一部のビルドでは4GB近くに及びました)。そのようなイベントが発生すると、現在では、不正なイベント長を特定するエラーと共にレプリカのI/Oスレッドが停止します (MDEV-40643)
- MariaDBが許容する識別子の長さを超えるデータベース名やテーブル名を含む行イベントをマスターが送信した場合、レプリカがクラッシュする可能性がありました。これは、イベントが破損または改ざんされていることを示唆しています。そのレプリカは、与えられた長さを確認することなく、法的な識別子に適したサイズの記憶領域にその名前をコピーしました。そのようなイベントが発生すると、現在ではレプリカがクラッシュされるのではなく、レプリケーションエラーと共にレプリカのSQLスレッドが停止します (MDEV-40644)
- 不正なUser_var_log_eventによるスレーブのクラッシュ (MDEV-40645)
- 行イベントがそれに付随する列情報がカバーする数よりも多くの列を記述した場合、レプリカはクラッシュしたり、無関係なメモリの内容を複製されるテーブルの構造の自身の記録にコピーしたりする可能性がありました。レプリカは、不足分を検知するには不十分なサイズチェックに基づいてそのイベントを受け入れ、その後、そのイベントには含まれていないカラム情報を読み取りました。レプリカは、イベントが宣言したすべての列の列情報を含んでいることを検証し、そうでない場合はレプリケーションエラーでSQLスレッドを停止します (MDEV-40646)
- Rotateイベントの後に、Rotateイベントのサポートがないことを示すFormatDescriptionイベントが続く場合に発生するクラッシュを修正 (MDEV-40647)
- マスターは、宣言されたサイズと実際に送信されたデータ量が一致しないイベントを送信することで、レプリカに同じステートメントを2回適用させ、マスターのバイナリログには存在しなかったデータを作り出してしまう可能性がありました。レプリカはそのようなイベントを受信済みとしてリレーログに記録し、余剰バイトに含まれる隠れた2つ目のイベントは、後になって、あたかもマスターから送信されたかのように適用されました。レプリカは受信時に2つのサイズを比較するようになったため、不整合なイベントはIOスレッドをエラーで停止し、リレーログに書き込まれません。これにより、レプリカのデータがマスターのバイナリログと照合して検証できないという不整合が解消されます。 (MDEV-40648)
- ユニークなBLOBおよびbinlog_row_image=MINIMAL #3を使用するRBRにおいて、スレーブ上で アサーション marked_for_read()が失敗する (MDEV-40057)
スクリプトとクライアント
- mysqld_multiが同一インスタンスを複数回起動しました。これは、データベースをクラッシュさせる恐れがあります (MDEV-26910)
- 存在しない場合にフォールバックメッセージログ機能を提供する (MDEV-38075)
- 同梱のコマンドラインクライアントは、サーバーからの結果に対して常に長さ制限を適用するわけではない (MDEV-40065)
- mariadb-dumpは、識別子を常にクォートするわけではない (MDEV-40311)
- MariaDBクライアントは、コマンドライン履歴の保存名として .mariadb_histor(末尾の「y」なし)を使用していました (MDEV-40313)
- MariaDB Serverの起動に失敗した時、プログラム generate_option_listが失敗ステータスで終了するのではなく、クラッシュする可能性がありました (MDEV-39971)
- SHOW CREATE SERVER における不適切な引用符の使用 (MDEV-40312)
- mariadb-import --lock-tablesがクラッシュする (MDEV-40340)
サーバー
- group_concatがmax_allowed_packetを無視する (MDEV-39673)
- #mysql50#がテーブルキャッシュ中およびディスク上のテーブル名と混同される (MDEV-40362)
- テーブルを開く時のfrmデータの検証が不十分 (MDEV-40571)
- ER_DUP_ENTRYを発生させる、複数のUPDATE実行時のerr_conv / field_unpackでのASANエラー (MDEV-25813)
- プロキシプロトコルでログオンに成功しても、接続エラー数がリセットされない (MDEV-25817)
- Item_func_des_encrypt::val_strでのValgrind/MSANエラー (MDEV-27561)
- Binary_string::free_buffer / Item_func_sformat::~Item_func_sformatでのサーバークラッシュ/ASAN use-after-poison (MDEV-31024)
- 列の前に生成された列と外部キーがある場合、列を変更できません (MDEV-35630)
- Assertion decimals == 0 failed Item_func_mod::fix_length_and_dec_int (MDEV-35920)
- item_name_constは、type_handler()をラップされた値に転送しましたが、decmal_precision()には転送しませんでした。そのため、NAME_CONSTでラップされた16進数リテラルも、独自のdecmal_precision()の代わりに一般的な精度を報告しました (MDEV-38061)
- ZERO_DATE_TIME_CASTを使用してEXTRACTの下にネストされている場合に、テンポラル関数 ( LAST_DAY 、 CAST) が間違った間隔フラグを渡すことによって引き起こされるクラッシュとASAN/UBSANエラーを修正しました (MDEV-38971)
- mariadb-install-dbで使用される --bootstrapモードでは、不要な遅延が削除され、プラグインのクリーンアップ関数が呼び出されるようになりました (MDEV-39585)
- libaioが非同期カーネルインターフェイスのセットアップに失敗した時に関連付けられたエラーログが正しくありませんでした。エラーコード、テキストバージョン、および修正を示すマニュアルページへの参照が報告されるようになりました (MDEV-39925)
- システムバージョン管理されたテーブルを使用したREPLACE DELAYEDのMSAN警告を修正しました (MDEV-40099)
- THD::print_aborted_warning(unsigned int, char const*)での初期化されていない値の使用 (MDEV-40103)
- SFORMATはmax_allowed_packetを無視する (MDEV-40411)
- ベクトルテーブルの作成に失敗した時、サーバーが.ibdファイルを削除できない (MDEV-38842)
ストアドルーチン
- プロシージャ呼び出し時にサービスがクラッシュしました (MDEV-37086)
- クエリ内のテーブルメタデータが変更された後にカーソルを実行するストアドルーチンを2回目に実行した時のサーバーの異常終了 (MDEV-36481)
- Query_arena::free_items/sp_lex_cursor::~sp_lex_cursorにおけるASAN heap-use-after-free (MDEV-38561)
- シャットダウン時にsp_head::register_instr_mem_root_for_deallocationでサーバーがクラッシュする (MDEV-40004)
トリガー
- {{LOAD DATA LOCAL INFILE}}が正常に実行される場合、{{BEFORE INSERT}}トリガーがベースカラムを変更しても、{{STORED}} 生成カラムはトリガーによる変更前に計算された値を保持します。したがって、永続化された行は、それ自身の生成カラム式に違反しています (MDEV-40480)
変数
- proxy_protocol_networksの値が不正な場合のASANクラッシュ (MDEV-39658)
ベクトル検索
- ディスクからCOSINEメトリックインデックスを再読み込みすると、abs2量子化ノイズにより検索の再現率が低下する (MDEV-39858)
- BLOBからベクトルを作成する時のER_TOO_BIG_FIELDLENGTHまたはアサーション失敗 (MDEV-40486)
バージョン管理テーブル
- バージョン管理対象カラムを持つテーブルへのODKU実行時に、Assertion table->vers_writeが失敗する (MDEV-38854)
ビュー
- ビューのfrmファイルにおいて、ユーザー名がエスケープされるようになりました。定義者の名前にバックスラッシュが含まれる古いビューについては、再作成する必要があります (MDEV-40484)
仮想カラム
- VALUE(仮想カラム) を含むSELECTでアサーション marked_for_read()が失敗する (MDEV-26820)
- virtual my_time_t Field_timestamp0::get_timestamp(const uchar*, ulong*) constにおいてAssertion marked_for_read()が失敗しました (MDEV-34992)
XML関数
- ExtractValueは、再帰の深さを制御しない (MDEV-39750)
一般
- MariaDBの非推奨化ポリシーに基づき、これがDebian 11 "Bullseye"(i386、amd64、arm64)向けのMariaDB 11.8の最後のリリースとなります。
セキュリティ
以下のセキュリティ脆弱性に対する修正:
CVE ID / CVSS基本スコア(v3.1)
CVE-2026-61081 / 2.7
CVE-2026-60585 / 6.6
CVE-2026-60331 / 6.4
CVE-2026-60747 / 6.2
CVE-2026-47023 / 4.9
CVE-2026-60184 / 4.4
MariaDB 11.8.9のリリースノート(MariaDB社ウェブサイト):
https://mariadb.com/docs/release-notes/community-server/11.8/11.8.9
MariaDBプロダクト・サポート・サービス

MariaDBプロダクト・サポート・サービスは、MariaDBおよびその関連製品をご利用されているお客様へ、必要なソフトウェアや専門的なサポートなどを提供するサービスです。