v25.8 クラウド版変更履歴
後方互換性を損なう変更
JSON とデータ形式の変更
- 既定では、JSON 形式における 64 ビット整数のクオートを無効化しました。 #74079 (Pavel Kruglov).
- JSON 内で、異なる型の値から成る配列に対して、無名の
Tupleの代わりにArray(Dynamic)を推論するようにしました。以前の動作を使用するには、設定input_format_json_infer_array_of_dynamic_from_array_of_different_typesを無効化してください。 #80859 (Pavel Kruglov). - 既定では、Parquet 出力形式において
Enum型の値を、論理型ENUMを持つBYTE_ARRAYとして書き出すようにしました。 #84169 (Pavel Kruglov).
ストレージとパーティション分割
- hive パーティション方式での書き込みをサポートし、読み取り実装をリファクタリングしました(hive パーティション列は仮想列ではなくなりました)。#76802(Arthur Passos)。
- MergeTree の設定
write_marks_for_substreams_in_compact_partsをデフォルトで有効化しました。これにより、新しく作成された Compact パーツからのサブカラム読み取り性能が大幅に向上します。バージョン 25.5 未満のサーバーでは、新しい Compact パーツを読み取ることはできません。#84171(Pavel Kruglov)。 - SummingMergeTree において、合計対象として明示的に指定されたカラムを含む
RENAME COLUMNおよびDROP COLUMNを禁止しました。#81836 をクローズします。#82821(Alexey Milovidov)。
関数の機能拡張
quoting_characterが想定外に検出された場合の動作を制御する新しい引数unexpected_quoting_character_strategyを、関数extractKeyValuePairsに追加しました。詳細についてはextractKeyValuePairsのドキュメントを参照してください。#80657(Arthur Passos)。- 以前は、関数
countMatchesは、パターンが空のマッチを許可している場合でも、最初の空のマッチが発生した時点でカウントを停止していました。この問題を解消するため、countMatchesは空のマッチが発生した場合に 1 文字だけ進めて処理を継続するようになりました。従来の動作を維持したいユーザーは、設定count_matches_stop_at_empty_matchを有効にできます。#81676(Elmi Ahmadov)。
データ型の改善
DecimalからFloat32への変換精度を向上しました。DecimalからBFloat16への変換を実装しました。これにより #82660 がクローズされました。#82823(Alexey Milovidov)。
パフォーマンスとリソース管理
- 以前は、
BACKUPクエリ、マージ、およびミューテーションは、ローカルトラフィック(max_local_read_bandwidth_for_serverおよびmax_local_write_bandwidth_for_server)とリモートトラフィック(max_remote_read_network_bandwidth_for_serverおよびmax_remote_write_network_bandwidth_for_server)向けのサーバー全体スロットラーを使用せず、専用のサーバー設定(max_backup_bandwidth_for_server、max_mutations_bandwidth_for_server、max_merges_bandwidth_for_server)によってのみスロットリングされていました。現在では、両方の種類のスロットラーを同時に使用します。 #81753 (Sergei Trifonov). - 新しい設定
cluster_function_process_archive_on_multiple_nodesを追加しました。これは、true(デフォルト)に設定すると、クラスター関数でアーカイブを処理する際のパフォーマンスを向上させます。以前のバージョンでアーカイブ付きのクラスター関数を使用している場合、25.7+ へのアップグレード時の互換性を確保し、エラーを回避するためにはfalseに設定しておく必要があります。 #82355 (Kseniia Sumarokova). - 以前の
concurrent_threads_schedulerのデフォルト値はround_robinでしたが、多数のシングルスレッドクエリ(例:INSERT)が存在する場合に不公平であることが判明しました。この変更により、より安全な代替であるfair_round_robinスケジューラがデフォルトになります。 #84747 (Sergei Trifonov). - 遅延マテリアライゼーションは、アナライザーなしで運用する場合にメンテナンスが必要となり、いくつかの問題が発生し得る(例えば、条件で
indexHint()を使用する場合)ことを避けるため、アナライザー使用時にのみ有効化されます。 #83791 (Igor Nikonov).
スキーマと SQL 構文
- 挿入可能なカラムを持たないテーブルの作成を禁止しました。#81835 (Pervakov Grigorii).
- デフォルト式内でドットを含む識別子について、それらが複合識別子として解析されるのを防ぐため、識別子をバッククォートで囲むことを必須としました。#83162 (Pervakov Grigorii).
- PostgreSQL 形式の heredoc 構文
$tag$ string contents... $tag$(ドル引用文字列リテラルとも呼ばれます)をサポートしました。以前のバージョンではタグに対する制約がより緩く、句読点や空白を含む任意の文字を使用できました。これは、先頭をドル記号にできる識別子との間に構文解析上のあいまいさを生じさせます。一方で、PostgreSQL ではタグに使用できるのは単語文字のみです。この問題を解決するため、heredoc のタグとして使用できる文字を単語文字のみに制限しました。#84731 をクローズしました。#84846 (Alexey Milovidov).
セキュリティと権限
SYSTEM RESTART REPLICASは、SHOW TABLES権限を持つデータベース内のレプリカのみを再起動します。以前は、このクエリは、そのデータベースへのアクセス権がない場合でも、Lazy データベース内のテーブルが同時に削除されている間に、それらのテーブルを起動していました。#83321 (Alexey Milovidov).- 関数
azureBlobStorage、deltaLakeAzure、icebergAzureは、AZURE権限を正しく検証するように更新されました。すべてのクラスタ変種関数(-Cluster関数)は、それぞれに対応する非クラスタ版の関数に対して権限を検証するようになりました。権限エラーを防ぐために、-Cluster関数を実行するユーザーに、適切な権限(例:GRANT S3 ON *.* TO user)が付与されていることを確認してください。さらに、icebergLocalおよびdeltaLakeLocal関数は、FILE権限チェックを行うようになりました。#84938 ([Nikita Mikhaylov](https://github.com/nikitamikhaylov
新機能
データ型
- 新しいデータ型
Time([H]HH:MM:SS)とTime64([H]HH:MM:SS[.fractional])を追加し、いくつかの基本的なキャスト関数と他のデータ型との相互変換のための関数を追加しました。レガシー関数ToTimeとの互換性を保つための設定も追加しました。 #81217 (Yarik Briukhovetskyi).
関数
NumericIndexedVectorを追加しました。これは、ビットスライスされた Roaring Bitmap 圧縮を基盤とする新しいベクトルデータ構造であり、ベクトルの構築・解析・要素ごとの算術演算のための 20 個以上の関数を備えています。疎なデータに対するストレージ使用量を削減し、結合・フィルタ・集約を高速化できます。#70582 および T. Xiong および Y. Wang による VLDB 2024 の論文「Large-Scale Metric Computation in Online Controlled Experiment Platform」(https://arxiv.org/abs/2405.08411) を実装しています。 #74193 (FriendLey)。- 財務関数を追加:
financialInternalRateOfReturnExtended(XIRR)、financialInternalRateOfReturn(IRR)、financialNetPresentValueExtended(XNPV)、financialNetPresentValue(NPV)。#81599(Joanna Hulboj)。 - 2 つのポリゴンが交差しているかを判定する地理空間関数
polygonIntersectsCartesianおよびpolygonIntersectsSphericalを追加しました。 #81882 (Paul Lamb) - ウィンドウ関数
lagおよびleadをサポートしました。#9887 をクローズ。#82108(Dmitry Novik)。 - sRGB と OkLCH の各色空間の間で色を相互変換するための関数
colorSRGBToOkLCHおよびcolorOkLCHToSRGBを追加しました。 #83679 (Fgrtue). - ユーザーは、
JSONExtractCaseInsensitive(およびJSONExtractのその他のバリアント)を使用して、大文字と小文字を区別しない JSON キー検索を行えるようになりました。#83770(Alistair Evans)。 - 新しい関数
nowInBlock64を追加。 #84178 (Halersson Paris)。 - DateTime 型の値を UUIDv7 に変換する関数
dateTimeToUUIDv7を追加しました。使用例:SELECT dateTimeToUUIDv7(toDateTime('2025-08-15 18:57:56'))は0198af18-8320-7a7d-abd3-358db23b9d5cを返します。 #84319 (samradovich)。 timeSeriesDerivToGridおよびtimeSeriesPredictLinearToGrid集約関数を追加し、指定された開始タイムスタンプ・終了タイムスタンプ・ステップで定義される時間グリッドにデータを再サンプリングします。それぞれ PromQL のderivおよびpredict_linearに類似した計算を行います。#84328(Stephen Chi)。timeSeriesRangeおよびtimeSeriesFromGrid関数を追加。 #85435 (Vitaly Baranov)。
システムテーブル
- Kafka などのエンジンからの誤った受信メッセージを保持するための
system.dead_letter_queueテーブルを追加。#68873(Ilya Golshtein)。 - ZooKeeper 接続に関する履歴情報を保存するための
system.zookeeper_connection_logシステムテーブルを追加。#79494(János Benjamin Antal)。 - 利用可能なコーデックを確認できる新しいシステムテーブル
system.codecsを追加。(issue #81525)。#81600(Jimmy Aguilar Mena)。 system.completionsテーブルを導入。#81889 をクローズ。#83833(|2ustam)。
Iceberg と DeltaLake
- Iceberg のスキーマ進化で複合型をサポート。#73714 (scanhex12).
INSERTクエリ向けの Iceberg 書き込みを導入。#82692 (scanhex12).- Iceberg テーブルエンジンでの positional deletes をサポート。#83094 (Daniil Ivanik).
- フィールド ID に基づいて Iceberg のデータファイルを読み取り。#83065 をクローズ。#83653 (scanhex12).
CREATEクエリ向けの Iceberg 書き込みをサポート。#83927 をクローズ。#83983 (scanhex12).- Glue catalog への書き込みをサポート。#84136 (scanhex12).
- Iceberg REST catalog への書き込みをサポート。#84684 (scanhex12).
- すべての Iceberg positional delete ファイルをデータファイルにマージ。これにより、Iceberg ストレージ内の Parquet ファイルの数とサイズが削減される。構文:
OPTIMIZE TABLE table_name。#85250 (scanhex12). - Iceberg に対する
DROP TABLEをサポート (REST/Glue catalog からの削除 + テーブルに関するメタデータの削除)。#85395 (scanhex12). - merge-on-read フォーマットの Iceberg に対する
ALTER DELETEmutation をサポート。#85549 (scanhex12). - DeltaLake への書き込みをサポート。#79603 をクローズ。#85564 (Kseniia Sumarokova).
- min-max プルーニングのため、Iceberg のメタデータ (manifest entries) に、より多くの統計情報 (カラムサイズ、下限値および上限値) を書き込み。#85746 (scanhex12).
- Iceberg において、単純型に対する add/drop/modify column をサポート。#85769 (scanhex12).
MergeTree とストレージ
- すべてのテーブルで、Merge 型テーブルだけでなく
_table仮想列がサポートされるようになりました。#63665 (Xiaozhe Yu)。 Float32およびFloat64型のカラム向けに、非可逆だが誤差範囲が保証された圧縮コーデックとして SZ3 を追加しました。#67161 (scanhex12)。MergeTree系テーブルに対して lightweight update のサポートを追加しました。lightweight update は新しい構文UPDATE <table> SET col1 = val1, col2 = val2, ... WHERE <condition>で使用できます。さらに、lightweight_delete_mode = 'lightweight_update'を設定することで有効化できる、lightweight update を用いた lightweight delete の実装を追加しました。#82004 (Anton Popov)。- MergeTree 系テーブルで
_part_granule_offset仮想列をサポートしました。この列は、各行が属するデータパート内でのグラニュール/マークの 0 始まりのインデックスを示します。これは #79572 に対応するものです。#82341 (Amos Bird)。
プロトコルとクライアントのサポート
arrowflightテーブルエンジンを追加し、ArrowFlight RPC プロトコルをサポートしました。#74184(zakr600)。- PostgreSQL プロトコルの
COPYコマンドをサポートしました。#74344(scanhex12)。 - MySQL プロトコルを利用する C# クライアントに対応しました。これにより #83992 がクローズされます。#84397(scanhex12)。
mysql_portおよびpostgresql_portに対して安全な接続を必須にしました。#82962(Shaohua Wang)。
SQL とクエリの機能
DESCRIBE (SELECT …)に加えてDESCRIBE SELECTがサポートされました。 #82947 (Yarik Briukhovetskyi).USE DATABASE {name}構文がサポートされました。 #81307 (Yarik Briukhovetskyi).- 並列レプリカでプロジェクションから読み取れるようになりました。プロジェクションのサポートを有効にするかどうかを制御する新しい設定
parallel_replicas_support_projectionが追加されました。実装を簡素化するため、プロジェクションのサポートはparallel_replicas_local_planが有効な場合にのみ有効になります。 #82807 (zoomxi).
フォーマット
format_schemaの参照元を定義するformat_schema_source設定を追加しました。 #80874 (Tuan Pham Anh)。- 新しい出力フォーマットとして
Hashを追加しました。結果のすべてのカラムおよび行を対象に単一のハッシュ値を計算します。これは、たとえばデータ転送がボトルネックとなるユースケースにおいて、結果の「フィンガープリント」を計算するのに有用です。例:SELECT arrayJoin(['abc', 'def']), 42 FORMAT Hashはe5f9e676db098fdb9530d2059d8c23efを返します。 #84607 (Robert Schulze)。
サーバー構成とワークロード管理
- サーバー設定
cpu_slot_preemptionは、ワークロードに対して先取り型の CPU スケジューリングを有効化し、ワークロード間での CPU 時間の max-min フェアな割り当てを保証します。CPU スロットリング用の新しいワークロード設定が追加されました:max_cpus、max_cpu_share、max_burst_cpu_seconds。#80879(Sergei Trifonov)。 - ワークロード設定
max_waiting_queriesがサポートされるようになりました。クエリキューのサイズを制限するために使用できます。制限に達した場合、それ以降のすべてのクエリはSERVER_OVERLOADEDエラーで終了します。#81250(Oleg Doronin)。 - 設定されたクエリ数または時間しきい値に達した後に TCP 接続を切断します。#68000 を解決します。#81472(Kenny Sun)。
クラウドストレージ
client_idとtenant_idを用いて認証するために、AzureBlobStorageにextra_credentialsを追加。 #84235 (Pablo Marcos)
Keeper
- Keeper Multi クエリで任意のウォッチを設定できるようにしました。 #84964 (Mikhail Artemenko).
- 部分集約されたメトリクスをサポートしました。 #85328 (Mikhail Artemenko).
実験的機能
テーブルエンジンとテーブル関数
- Ytsaurusテーブルエンジンとテーブル関数を追加。#77606 (MikhailBurdukov)
テキストインデックスの改善
- テキストインデックスを検索するための汎用ツールとして、関数
searchAnyおよびsearchAllを追加しました。 #80641 (Elmi Ahmadov). - テキストインデックスで
stringトークナイザーをサポートしました。 #81752 (Elmi Ahmadov). textインデックスのデフォルトのインデックス粒度の値を 64 に変更しました。これにより、社内ベンチマークにおける平均的なテストクエリの想定パフォーマンスが向上します。 #82162 (Jimmy Aguilar Mena).- 256 ビットのビットマップは、ある状態からの遷移ラベルを順序付きで保持しますが、遷移先の状態はハッシュテーブルに現れる順序でディスク上に保存されます。そのため、ディスクから読み取る際に、あるラベルが誤った次の状態を指してしまう可能性がありました。 #82783 (Elmi Ahmadov).
- 現在、FST ツリーは非圧縮のままディスクに保存されています。これにより、ディスクへの書き込みおよびディスクからの読み取りの両方で、パフォーマンスの低下や I/O 帯域幅の増加につながる可能性があります。 #83093 (Elmi Ahmadov).
機能成熟度の更新
- catalog を beta 段階に移行しました。#85848 (Melvyn Peignon)。
- Lightweight updates を experimental から beta 段階に移行しました。#85952 (Anton Popov)。
パフォーマンスの向上
クエリ実行と集約
-If集約関数コンビネータに対する単純な最適化を行いました。#78454 (李扬).- メモリ効率の高い集約中に、一部のバケットを元の順序とは異なる順序で送信できるようにする新しいロジックを追加しました(設定
enable_producing_buckets_out_of_order_in_aggregationによって制御され、デフォルトで有効)。一部の集約バケットのマージに他よりも大幅に時間がかかる場合に、イニシエーターがその間により高いバケット ID のバケットをマージできるようにすることで、パフォーマンスを向上させます。デメリットは、メモリ使用量が増加する可能性があることですが(大きくはならないはずです)。#80179 (Nikita Taranov). TOTALSステップ以降のパイプラインをマルチスレッド化しました。#80331 (UnamedRus).- 集約クエリに、
NOT NULL列に対する単一のCOUNT()関数のみが含まれる場合、ハッシュテーブル探索中に集約ロジックを完全にインライン展開します。これにより、集約状態の割り当ておよび維持が不要となり、メモリ使用量と CPU オーバーヘッドを大幅に削減します。これは #81982 を部分的に解決します。#82104 (Amos Bird). - 複数の文字列または数値列で
GROUP BYを行う場合に、シリアライズされたキーを列指向で計算するようにしました。#83884 (李扬). -Ifコンビネータ向けにaddManyDefaultsを実装しました。#83870 (Raúl Marín).
JOIN の最適化
- 新しい設定
min_joined_block_size_rows(min_joined_block_size_bytesに対応、デフォルトは 65409)を追加し、JOIN の入力および出力ブロックに対する最小ブロックサイズ(行数)を制御できるようにしました(JOIN アルゴリズムが対応している場合)。小さなブロックはまとめられます。#81886(Nikita Taranov)。 HashJoinの性能を、キー列が 1 列のみという典型的なケースにおいてハッシュマップに対する余分なループを削除することで最適化しました。また、null_mapおよびjoin_maskが常にtrue/falseとなる場合には、それらのチェックも除去しました。#82308(Nikita Taranov)。- #82308 の
null_mapとJoinMaskの最適化を、複数の論理和条件(disjunct)を含む JOIN のケースにも適用しました。あわせて、KnownRowsHolderデータ構造も最適化しました。#83041(Nikita Taranov)。 - フラグへのアクセスごとにハッシュ計算を行うことを避けるため、JOIN フラグには単純な
std::vector<std::atomic_bool>を使用するようにしました。#83043(Nikita Taranov)。 max_joined_block_rowsをハッシュ JOIN のメインループの外で処理するようにしました。ALL JOIN においてわずかに性能が向上します。#83216(Nikolai Kochetov)。HashJoinがlazy出力モードを使用している場合、結果列のメモリを事前に確保しないようにしました。これは特にマッチ件数が少ない場合に非効率でした。さらに、JOIN 完了後にはマッチ件数を正確に把握できるため、より正確に事前確保できます。#83304(Nikita Taranov)。- 右側が JOIN キー列によって関数的に決定される(すべての行が一意な JOIN キー値を持つ)場合、すべての
LEFT/INNERJOIN は自動的にRightAnyに変換されます。#84010(Nikita Taranov)。 Joinモードでのパッチパーツ適用処理のパフォーマンスを改善しました。#85040(Anton Popov)。
分散クエリの改善
- ブロックの圧縮/伸張およびシリアル化/逆シリアル化を、ネットワーク接続に結びついた単一スレッドではなく、パイプラインスレッドにオフロードできるオプションを追加しました。
enable_parallel_blocks_marshalling設定で制御します。これにより、イニシエーターとリモートノード間で大量のデータを転送する分散クエリが高速化されます。#78694(Nikita Taranov)。 - 各シャード上で
INSERT SELECTを独立して実行するモードで、分散並列INSERT SELECTをデフォルトで有効化しました。parallel_distributed_insert_select設定を参照してください。#80425(Igor Nikonov)。 - ネイティブプロトコルでログとプロファイルイベントを圧縮するようにしました。100 以上のレプリカを持つクラスタでは、非圧縮のプロファイルイベントが 1〜10 MB/秒に達し、低速なインターネット接続ではプログレスバーの更新が遅くなります。これにより #82533 が解決されます。#82535(Alexey Milovidov)。
- 各シャード上で
INSERT SELECTを独立して実行するモードで、分散並列INSERT SELECTをデフォルトで有効化しました。parallel_distributed_insert_select設定を参照してください。#83040(Igor Nikonov)。 - 並列レプリカに対する最小タスクサイズの計算を修正しました。#84752(Nikita Taranov)。
インデックスの改善
- ベクター類似性インデックスを利用したベクター検索クエリが、ストレージ読み取りの削減と CPU 使用率の低減により、より低いレイテンシで完了するようになりました。 #79103 (Shankar Iyer).
- 他のインデックスによるフィルタリング手法と整合させるため、
filterPartsByQueryConditionCacheでmerge_tree_min_{rows,bytes}_for_seekの設定値を考慮するようにしました。 #80312 (李扬). - より細かい粒度の min-max インデックスを優先して処理するようにしました。 #75381 をクローズ。 #83798 (Maruth Goyal).
columnがArray型ではない場合のhas([c1, c2, ...], column)のような条件でも、Bloom フィルターインデックスが使用されるようになりました。これにより、そのようなクエリのパフォーマンスが向上し、IN演算子と同等の効率で実行できるようになります。 #83945 (Doron David).- インデックスをファイルサイズの昇順で処理するようにしました。最終的なインデックスの処理順では、(それぞれ単純さと選択性により)minmax インデックスとベクターインデックスを優先し、その後にサイズの小さいインデックスを処理します。minmax/ベクターインデックス内でも、より小さいインデックスが優先されます。 #84094 (Maruth Goyal).
- これまで、テキストインデックスのデータは複数のセグメントに分割されていました(各セグメントサイズはデフォルトで 256 MiB)。これはテキストインデックス構築時のメモリ消費を抑える可能性がありますが、その一方で必要なディスク容量を増やし、クエリ応答時間を長くする原因となっていました。 #84590 (Elmi Ahmadov).
サブクエリの最適化
- 等価クラスを使用して冗長な
JOIN操作を削除することで、相関サブクエリの生成されるプランを最適化します。すべての相関列に対して等価な式が存在する場合、query_plan_correlated_subqueries_use_substitution設定が有効であればCROSS JOINは生成されません。 #82435 (Dmitry Novik)。 - 関数
EXISTSの引数として相関サブクエリが使われている場合に、その相関サブクエリで必要な列のみを読み取ります。 #82443 (Dmitry Novik)。
Azure Blob Storage の改善
azureBlobStorageテーブルエンジンは、スロットリングを回避するために、可能な場合はマネージド ID 認証トークンをキャッシュして再利用するようになりました。#79860 (Nick Blakely).- Azure Blob Storage 向けの HTTP クライアントとして、
curlクライアントをpocoクライアントに置き換えました。これらのクライアントには、S3 の設定を反映した複数の設定を導入しました。Azure と S3 の両方に対して、より厳しめの接続タイムアウトを導入しました。Azure プロファイルのイベントおよびメトリクスの観測性を改善しました。新しいクライアントはデフォルトで有効になっており、Azure Blob Storage 上でのコールドクエリに対して大幅に優れたレイテンシを提供します。従来のCurlクライアントは、azure_sdk_use_native_client=falseを設定することで再び使用することができます。#83294 (alesapin).
ストレージエンジンの改善
- Redis および KeeperMap ストレージでのキーによるフィルタ処理を修正しました。 #81833 (Pervakov Grigorii).
ATTACH PARTITIONによってすべてのキャッシュが削除されることがないようにしました。 #82377 (Alexey Milovidov).- 高い同時実行負荷時のロック競合を減らすため、ストレージスナップショットデータの作成中はロックを保持しないようにしました。 #83510 (Duc Canh Le).
- 一時パーツの削除には時間がかかる場合があり(特に S3 使用時)、現在は
MergeTreeBackgroundExecutorでグローバルロックを保持している間に実行しています。接続喪失によりすべてのテーブルを再起動する必要があり、バックグラウンドタスクの完了を待っていると、テーブルが 1 時間近く readonly モードのまま固まってしまうことがあります。しかし、cancelを呼び出すためにこのロックは不要であると考えられます。 #84311 (Alexander Tokmakov).
フォーマットの改善
- 新しい Parquet リーダー実装。全体的に高速で、ページレベルのフィルタープッシュダウンおよび
PREWHEREをサポートします。現在は実験的機能です。設定input_format_parquet_use_native_reader_v3を有効にすると利用できます。 #82789 (Michael Kolupaev). - 解析エラーが発生しない場合にシリアライザーを再利用することで、ProtobufSingle 入力フォーマットのパフォーマンスを改善しました。 #83613 (Eduard Karacharov).
データ型とシリアライゼーションの最適化
- MergeTree の共有データに対する
JSON用の新しいシリアライゼーションを実装し、共有データからのJSONサブカラム読み取りのパフォーマンスを大幅に向上。#83777 (Pavel Kruglov)。 - コードを簡素化することで文字列デシリアライゼーションを最適化し、#38564 をクローズ。#84561 (Alexey Milovidov)。
パイプラインおよび実行の改善
- パイプライン構築中のポートヘッダーでのメモリコピーを最小化しました。元のPRはheymindによるものです。#83381(Raúl Marín)。
- パイプライン構築のパフォーマンスを改善しました。#83631(Raúl Marín)。
- MergeTreeReadersChain::getSampleBlock を最適化しました。#83875(Raúl Marín)。
- 1 行だけを返す目的で定数をマテリアライズするケースにおいて、そのマテリアライズ処理を最適化しました。#85071(Alexey Milovidov)。
メモリおよびリソースの最適化
- パフォーマンスを向上させるために、いくつかの jemalloc 設定を調整しました。 #81807 (Antonio Andelic).
- フォールスシェアリングを低減するため、ProfileEvents の Counter にアライメントを追加しました。 #82697 (Jiebin Sun).
- CompressedReadBufferBase::readCompressedData における不要な memcpy 呼び出しを削減しました。 #83986 (Raúl Marín).
クエリのプランニングと分析
- QueryTreeHash の高速化。 #82617 (Nikolai Kochetov).
ロギングの改善
- 非同期ロギングを導入。#82516 (Raúl Marín).
関数の最適化
- 一時データを削除することで
largestTriangleThreeBucketsを最適化しました。 #84479 (Alexey Milovidov)。 - 多くの文字列処理関数の実装を最適化および簡素化しました。複数の関数について誤っていたドキュメントを修正しました。注意:String カラムおよび String カラムを含む複合型の
byteSizeの出力は、空文字列1つあたり 9 バイトから 8 バイトに変更されましたが、これは想定された動作です。 #85063 (Alexey Milovidov)。
Keeper の改善
- Keeper の RocksDB を用いた初期ロード処理を改善。#83390 (Antonio Andelic).
データレイクの改善
- delta-kernel-rs バックエンドによるファイルの並列処理性能を向上。 #85642 (Azat Khuzhin).
改善点
アクセス制御とセキュリティ
- ソース用に新しいアクセス種別
READとWRITEを 2 つ導入し、ソースに関連するそれまでのすべてのアクセス種別は非推奨となりました。以前はGRANT S3 ON *.* TO userでしたが、現在はGRANT READ, WRITE ON S3 TO userとなります。これによりソースに対するREADとWRITE権限を分離できるようになり、例えばGRANT READ ON * TO user、GRANT WRITE ON S3 TO userのように付与できます。この機能は設定項目access_control_improvements.enable_read_write_grantsにより制御され、デフォルトでは無効になっています。#73659(pufit)。 CREATE USERクエリで、ユーザー名にパラメータを使用できるようにしました。#81387(Diskein)。- コアダンプから機微なデータを除外します。AWS ライブラリ互換の
AwsNodumpMemoryManagerと、STL 互換のJemallocNodumpSTLAllocatorの 2 つのアロケータを追加しました。どちらも Jemalloc アロケータのラッパーです。Jemalloc の extent hook と madvise を使用してメモリページを「ダンプしない」としてマークします。S3 資格情報、ユーザー資格情報、および一部のクエリデータに使用されます。#82441(Miсhael Stetsyuk)。 - 一時ユーザーによって作成されたビューは、実際のユーザー情報のコピーを保持するようになり、一時ユーザーが削除されても無効にならなくなりました。#84763(pufit)。
- 外部認証の forward_headers を、大文字・小文字を区別せずに照合するようにしました。#84737(ingodwerust)。
system.grantsにparameterカラムを追加し、GRANT READ/WRITEにおけるソースタイプおよびGRANT TABLE ENGINEにおけるテーブルエンジンを判別できるようにしました。#85643(MikhailBurdukov)。
バックアップとリストア
- PostgreSQL、MySQL、および DataLake データベースのバックアップをサポートしました。このようなデータベースのバックアップでは、内部のデータではなく定義のみが保存されます。 #79982 (Nikolay Degterinsky).
- バックアップファイルの書き込みに関するすべてのログメッセージを TRACE レベルに設定しました。 #82907 (Hans Krutzer).
- バックアップおよびリストア処理中に使用される S3 リトライ時のバックオフ戦略を構成するために、
backup_restore_s3_retry_initial_backoff_ms、backup_restore_s3_retry_max_backoff_ms、backup_restore_s3_retry_jitter_factorを導入しました。 #84421 (Julia Kartseva). SlowDownのようなエラーによって発生するリトライストーム時に S3 への負荷を軽減するため、リトライ可能なエラーが 1 件でも検出された時点で全スレッドを減速させる、新しいbackup_slow_all_threads_after_retryable_s3_error設定を導入しました。 #84854 (Julia Kartseva).
データ整合性と検証
- コミット直前に、パートに矛盾のない checksum.txt ファイルが存在することを検証します。 #76625 (Sema Checherinda).
- 未完了のデータミューテーションの影響を現在受けているカラムを
RENAME COLUMNでリネームしようとするALTERミューテーションの開始を禁止します。 #81823 (Mikhail Artemenko). - 今後はミューテーションのスナップショットは、可視なパートのスナップショットから構築されます。スナップショットで使用されるミューテーションカウンターも、含まれているミューテーションから再計算されます。 #82945 (Mikhail Artemenko).
- パートのプレフィックスおよびサフィックスをパースし、さらに非定数カラムに対してカバー範囲を検証できるようにします。 #83377 (Mikhail Artemenko).
Iceberg テーブルエンジン
- Iceberg テーブルエンジンで position delete をサポートしました。#80237 (YanghongZhong).
- Iceberg 用の圧縮された
metadata.jsonファイルを ClickHouse がサポートするようになりました。#70874 を修正。#81451 (alesapin). - 複合型に対するフィールド ID 単位での Iceberg の読み取りを修正しました。#84821 (scanhex12).
- pyiceberg で読み取ることができる Iceberg への書き込みをサポートしました。#84466 (scanhex12).
- データレイクテーブルエンジンにスナップショットバージョンを追加しました。#84659 (Pete Hampton).
- Iceberg で version-hint ファイルの書き込みをサポートしました。これにより #85097 が解決されました。#85130 (scanhex12).
iceberg_metadata_compression_method設定を通じて、圧縮された.metadata.jsonファイルをサポートしました。すべての ClickHouse の圧縮方式をサポートします。これにより #84895 が解決されました。#85196 (scanhex12).- Iceberg の positional delete ファイルに対してメモリ使用量を最適化しました。すべての delete ファイルデータをメモリにロードする代わりに、Parquet delete ファイルから現在の row-group のみを RAM に保持するようにしました。これにより、大きな positional delete ファイルを扱う際のメモリ消費が大幅に削減されます。#85329 (scanhex12).
- 各データファイルごとにオブジェクトを明示的に保持することなく、Iceberg テーブルからオブジェクトを非同期にイテレートできるようにしました。#85369 (Daniil Ivanik).
- Iceberg の equality delete をサポートしました。#85843 (Han Fei).
DeltaLake テーブルエンジン
DeltaLakeテーブルエンジンを改善しました。delta-kernel-rs にはExpressionVisitorAPI があり、この PR で実装され、パーティション列の式変換に適用されています(これは、当プロジェクトのコードで以前使用していた、delta-kernel-rs 内の古く非推奨となった方法を置き換えるものです)。将来的には、このExpressionVisitorにより、統計情報に基づくプルーニングや、いくつかの Delta Lake 独自機能も実装できるようになります。さらに、この変更の目的は、DeltaLakeClusterテーブルエンジンでのパーティションプルーニングをサポートすることです(パースされた式の結果である ActionsDAG はシリアライズされ、データパスとともにイニシエータから送信されます。プルーニングに必要なこの種の情報は、データファイル一覧のメタ情報としてのみ利用可能であり、これはイニシエータだけが実行しますが、各読み取りサーバー上のデータに適用する必要があります)。#81136(Kseniia Sumarokova)。- データレイククラスタ関数でのパーティションプルーニングを修正しました。#82131(Kseniia Sumarokova)。
- DeltaLakeCluster テーブル関数でのパーティション化されたデータの読み取りを修正しました。この PR ではクラスタ関数のプロトコルバージョンが増加しており、イニシエータからレプリカへ追加情報を送信できるようになっています。この追加情報には、パーティション列をパースするために必要な delta-kernel の変換式(および将来、生成列などのその他の要素)が含まれます。#82132(Kseniia Sumarokova)。
Datalakeデータベースが、より分かりやすい例外をスローするようになりました。#81211 を修正。#82304(alesapin)。- ストレージ
DeltaLakeにおいて、内部のdelta-kernel-rsフィルタリング(統計およびパーティションプルーニング)を実装しました。#84006(Kseniia Sumarokova)。 - 設定
delta_lake_enable_expression_visitor_loggingを追加しました。これは、何かをデバッグする際に、テストログレベルであっても冗長になりすぎる可能性がある ExpressionVisitor のログを無効化するためのものです。#84315(Kseniia Sumarokova)。 - テーブルエンジン
DeltaLakeで特定のスナップショットバージョンを読み取れるようにするため、設定delta_lake_snapshot_versionを追加しました。#85295(Kseniia Sumarokova)。
データレイク統合
- 非同期リクエストにより、データカタログでのテーブル一覧取得を高速化。#81084 (alesapin).
- Glue カタログで
TimestampTZをサポート。これにより #81654 が解決されます。#83132 (scanhex12). FormatParserGroupを 2 つの独立した struct に分割。1 つ目は共有の計算および I/O リソースを担当し、2 つ目は共有フィルタリソース(filterActionDag、KeyCondition)を担当します。これは、これらの構造体を異なるスレッドからより柔軟に共有利用できるようにするための変更です。#83997 (Daniil Ivanik).- Azure 設定に不足していた
partition_columns_in_data_fileを追加。#85373 (Arthur Passos). system.tablesにデータレイクテーブルを追加するかどうかを管理するためのshow_data_lake_catalogs_in_system_tablesフラグを追加し、#85384 を解決。#85411 (Smita Kulkarni).
S3 とオブジェクトストレージ
- データベースディスクとしてサポートするために、
s3_plain_rewritableにmoveFileおよびreplaceFileメソッドを実装しました。 #79424 (Tuan Pham Anh). max_remote_read_network_bandwidth_for_serverおよびmax_remote_write_network_bandwidth_for_serverによるスロットリングで発生する問題を回避するため、S3 の読み書きリクエストは、S3 リクエスト全体ではなく HTTP ソケットレベルでスロットリングされるようになりました。 #81837 (Sergei Trifonov).- この PR は、
s3_slow_all_threads_after_network_error設定が有効な場合に、S3 のリトライメカニズムにジッターを導入します。 #81849 (zoomxi). - 明示的に指定した IAM ロールを用いた AWS S3 認証を実装しました。GCS 向けには OAuth を実装しました。これらの機能は最近まで ClickHouse Cloud でのみ利用可能でしたが、今回オープンソース化されました。オブジェクトストレージ向けの接続パラメータのシリアライズなど、いくつかのインターフェースを統一しました。 #84011 (Alexey Milovidov).
- 外部集約およびソート処理に対して、任意のストレージポリシー(すなわち S3 などのオブジェクトストレージ)を使用できるようにしました。 #84734 (Azat Khuzhin).
- 削除対象のすべてのオブジェクトを集約し、オブジェクトストレージに対する単一の削除操作として実行するようにしました。 #85316 (Mikhail Artemenko).
S3Queue テーブルエンジン
{uuid}のようなマクロが、S3Queue テーブルエンジンのkeeper_path設定で使用できるようになりました。 #82463 (Nikolay Degterinsky)。- S3Queue テーブルエンジンを使用するテーブルでストリーミングを無効化する新しいサーバー設定
s3queue_disable_streamingを追加しました。この設定はサーバーの再起動なしに変更できます。 #82515 (Kseniia Sumarokova)。 system.s3queue_logにcommit_time、commit_idカラムを追加しました。 #83016 (Kseniia Sumarokova)。- S3Queue のシャットダウン処理用ログを追加しました。 #83163 (Kseniia Sumarokova)。
- サーバーのシャットダウン時に、任意のテーブルをシャットダウンする前に S3/Azure などの Queue のストリーミングを先に停止するようにしました。 #83530 (Kseniia Sumarokova)。
S3Queueテーブルレベルでのマテリアライズドビュー挿入設定の変更をサポートしました。新しいS3Queueレベルの設定min_insert_block_size_rows_for_materialized_viewsとmin_insert_block_size_bytes_for_materialized_viewsを追加しました。デフォルトではプロファイルレベルの設定が使用され、S3Queueレベルの設定がそれらを上書きします。 #83971 (Kseniia Sumarokova)。- S3Queue の順序モードを修正しました。シャットダウンが呼び出された場合に、より早く終了するようにしました。 #84463 (Kseniia Sumarokova)。
Kafka 連携
StorageKafka2で以前にコミットされたオフセットに依存しないように、消費したメッセージ数を手動でカウントするようにしました。 #81662 (János Benjamin Antal).StorageKafka2をsystem.kafka_consumersに統合しました。 #82652 (János Benjamin Antal).
ClickHouse Keeper の改善
- Keeper の改善: バックグラウンドスレッドでディスク間の changelog ファイルの移動を行うようにしました。以前は、changelog を別のディスクに移動する際、移動が完了するまで Keeper 全体がブロックされていました。これは、移動に長時間を要する操作(例: S3 ディスクへの移動)の場合にパフォーマンスの低下を引き起こしていました。#82485(Antonio Andelic)。
- Keeper の改善: 新しい設定
keeper_server.cleanup_old_and_ignore_new_aclを追加しました。有効にすると、すべてのノードの ACL がクリアされ、新しいリクエストに対する ACL は無視されます。ノードから ACL を完全に削除することが目的の場合は、新しいスナップショットが作成されるまでこの設定を有効のままにしておくことが重要です。#82496(Antonio Andelic)。 - Keeper の改善: world:anyone ACL に対して特定の権限をサポートしました。#82755(Antonio Andelic)。
- 設定ファイル内でパスに対して追加の Keeper ACL を指定できるようにしました。特定のパスに追加の ACL を付与したい場合は、設定ファイルの
zookeeper.path_aclsで定義します。#82898(Antonio Andelic)。 - Keeper がソフトメモリ制限により書き込みを拒否した際に、ProfileEvent を追加するようにしました。#82963(Xander Garbett)。
- Keeper で
create_if_not_exists、check_not_exists、remove_recursiveの各 feature flag をデフォルトで有効化し、新しい種類のリクエストを利用できるようにしました。#83488(Antonio Andelic)。 apply_to_children設定を使用して、特定の Keeper ノードに対して追加の ACL を適用するサポートを追加しました。#84137(Antonio Andelic)。- KeeperClient に
get_aclコマンドを追加しました。#84641(Antonio Andelic)。 - Keeper に 4LW コマンド
lgrqを追加し、受信したリクエストのリクエストログの有効化・無効化を切り替えられるようにしました。#84719(Antonio Andelic)。 - Keeper におけるストレージロックの競合を削減しました。#84732(Antonio Andelic)。
encrypt_decryptツールが暗号化された ZooKeeper 接続をサポートするようになりました。#84764(Roman Vasin)。- Keeper のログエントリキャッシュサイズを、
keeper_server.coordination_settings.latest_logs_cache_entry_count_thresholdおよびkeeper_server.coordination_settings.commit_logs_cache_entry_count_thresholdを使用してエントリ数で制限できるようにしました。#84877(Antonio Andelic)。
JSON および Dynamic 型
- パート内に保存されているすべてのサブストリームを追跡するため、Wide パートに
columns_substreams.txtファイルが追加されました。これにより、JSON 型および Dynamic 型における動的ストリームを追跡できるようになり、動的ストリームの一覧を取得するためにこれらのカラムのサンプルを読み取る必要がなくなります(たとえばカラムサイズの計算時など)。また、すべての動的ストリームがsystem.parts_columnsに反映されるようになりました。#81091(Pavel Kruglov)。 - JSON 型および Dynamic 型のカラムで
ALTER UPDATEが許可されました。#82419(Pavel Kruglov)。 - ユーザーは JSON 型の中で
TimeおよびTime64型を利用できるようになりました。#83784(Yarik Briukhovetskyi)。 - JSON 型のパース時に JSON キー内のドットをエスケープするための設定
json_type_escape_dots_in_keysが追加されました。この設定はデフォルトでは無効です。#84207(Pavel Kruglov)。
Parquet および ORC フォーマット
- ORC の圧縮ブロックサイズを設定するための設定項目を追加し、Spark や Hive と整合性を保つためにデフォルト値を 64KB から 256KB に更新しました。 #80602 (李扬)。
- Parquet の enum を、仕様 で規定されているとおりバイト配列として書き込むことをサポートしました。詳細は後日追記される予定です。 #81090 (Arthur Passos)。
- 出力フォーマットとして GeoParquet の書き込みをサポートしました。 #81784 (scanhex12)。
分散クエリとパラレルレプリカ
- 新しい設定
enable_add_distinct_to_in_subqueriesが導入されました。有効化すると、分散クエリにおいて ClickHouse は IN 句内のサブクエリに自動的にDISTINCTを追加します。これにより、シャード間で転送される一時テーブルのサイズを大幅に削減し、ネットワーク効率を向上させることができます。注意: これはトレードオフであり、ネットワーク転送は削減されますが、各ノードで追加のマージ(重複排除)処理が必要になります。ネットワーク転送がボトルネックとなっており、マージ処理のコストが許容できる場合にこの設定を有効化してください。 #81908 (fhw12345). address_expression引数にクラスターが指定されている場合、パラレルレプリカでのremote-()テーブル関数のサポートを追加しました。また、#73295 も修正しました。 #82904 (Igor Nikonov).- パラレルレプリカを用いた JOIN は現在、join の論理ステップを使用します。パラレルレプリカを利用する JOIN クエリで問題が発生した場合は、
SET query_plan_use_new_logical_join_step=0を試し、Issue を報告してください。 #83801 (Vladimir Cherkasov).
設定と構成
- 設定
allow_experimental_join_conditionを廃止予定としてマークしました。 #80566 (Vladimir Cherkasov). - 全体およびユーザーごとのネットワークスロットラはリセットされなくなり、
max_network_bandwidth_for_all_usersおよびmax_network_bandwidth_for_all_usersの制限を超過しないことが保証されます。 #81729 (Sergei Trifonov). - 設定
optimize_rewrite_regexp_functions(デフォルトで有効)を導入しました。特定の正規表現パターンが検出された場合に、一部のreplaceRegexpAll、replaceRegexpOne、extract呼び出しを、より単純で効率的な形式に書き換えることをオプティマイザに許可します。 (issue #81981). #81992 (Amos Bird). listen_backlog(デフォルト 4096)に基づいて、TCP サーバーのキュー(デフォルト 64)をチューニングしました。 #82045 (Azat Khuzhin).- サーバーを再起動せずに、その場で
max_local_read_bandwidth_for_serverおよびmax_local_write_bandwidth_for_serverをリロードできるようにしました。 #82083 (Kai Zhu). - ベクター類似度インデックスを使用するために有効化が必須となる設定
enable_vector_similarity_indexを導入しました。既存の設定allow_experimental_vector_similarity_indexは廃止予定となりましたが、必要な場合のために引き続き動作します。 #83459 (Robert Schulze). max_joined_block_size_rowsに加えて、重いカラムを持つ JOIN のメモリ使用量を制限するためにmax_joined_block_size_bytesを追加しました。 #83869 (Nikolai Kochetov).cluster_function_process_archive_on_multiple_nodesの互換性を修正しました。 #83968 (Kseniia Sumarokova).- 相関サブクエリのサポートをデフォルトで有効化しました。 #85107 (Dmitry Novik).
database_replicated設定を追加し、DatabaseReplicatedSettingsのデフォルト値を定義できるようにしました。Replicated DB の作成クエリ内にこの設定が指定されていない場合、この設定の値が使用されます。 #85127 (Tuan Pham Anh).s3またはs3Clusterテーブルエンジン/テーブル関数でキー・バリュー形式の引数を許可しました。例えばs3('url', CSV, structure = 'a Int32', compression_method = 'gzip')のように指定できます。 #85134 (Kseniia Sumarokova).- 非相関な
EXISTSをスカラーサブクエリとして実行するようにしました。これによりスカラーサブクエリのキャッシュを利用し、結果を定数畳み込みできるため、インデックスにとって有用です。互換性維持のため、新しい設定execute_exists_as_scalar_subquery=1を追加しました。 #85481 (Nikolai Kochetov). - 複合識別子の解決を、より多くのケースでサポートしました。特に、
ARRAY JOINの旧アナライザとの互換性が向上します。従来の動作を維持するために、新しい設定analyzer_compatibility_allow_compound_identifiers_in_unflatten_nestedを導入しました。 #85492 (Nikolai Kochetov).
System tables and observability
- ClickHouse の async metrics に負荷関連のメトリクスを追加しました。 #80779 (Xander Garbett).
- マークキャッシュからのエビクションを追跡するためのメトリクス
MarkCacheEvictedBytes、MarkCacheEvictedMarks、MarkCacheEvictedFilesを追加しました(issue #60989)。 #80799 (Shivji Kumar Jha). system.formatsテーブルに、HTTP コンテンツタイプやスキーマ推論の機能など、フォーマットに関する拡張情報が含まれるようになりました。 #81505 (Alexey Milovidov).TRUNCATE TABLE system.warningsを使用して、system.warningsテーブルからすべての警告をクリアできるようにしました。 #82087 (Vladimir Cherkasov).system.licensesで Rust クレートのライセンス一覧を表示するようにしました。 #82440 (Raúl Marín).- 統計情報を用いて、
(a < 1 and a > 0) or b = 3のような複雑な CNF/DNF を推定できるようにしました。 #82663 (Han Fei). - 場合によっては、メトリクスに複数のディメンションが必要となります。例えば、単一のカウンタではなく、エラーコードごとに失敗したマージやミューテーションをカウントするようなケースです。 #83030 (Miсhael Stetsyuk).
MergePartsエントリに対して、part_log の profile events にプロセスリソースメトリクス(UserTimeMicroseconds、SystemTimeMicroseconds、RealTimeMicrosecondsなど)を追加しました。 #83460 (Vladimir Cherkasov).- Cgroup レベルとシステム全体のメトリクスが、まとめて報告されるようになりました。Cgroup レベルのメトリクスは
CGroup<Metric>という名前で、OS レベルのメトリクス(procfs から収集)はOS<Metric>という名前になります。 #84317 (Nikita Taranov). - 併行実行される有界キューのサイズを監視するためのディメンション付きメトリクスを追加しました。キュー種別とインスタンス ID でラベル付けされ、オブザーバビリティが向上します。 #84675 (Miсhael Stetsyuk).
system.columnsテーブルで、既存のname列に対するエイリアスとしてcolumnを提供するようになりました。 #84695 (Yunchi Pang).system.errorsにフォーマット文字列のカラムを追加しました。このカラムは、アラートルールで同一のエラータイプをグループ化するために必要です。 #84776 (Miсhael Stetsyuk).- Async Log の制限値を調整可能にし、イントロスペクション機能を追加しました。 #85105 (Raúl Marín).
system.columnsでテーブルのカラムサイズを取得する際に、UNKNOWN_DATABASEを無視するようにしました。 #85632 (Azat Khuzhin).
データベースエンジン
システムおよび内部の改善
- 読み取り専用のリモートディスクを持つデータベースのアタッチ時に、テーブルの UUID を
DatabaseCatalogに手動で追加することで不具合を修正。#82670 (Tuan Pham Anh)。 distributed_ddl_output_mode='*_only_active'の場合に、max_replication_lag_to_enqueueを超えるレプリケーションラグを持つ新規または復旧済みレプリカを待機しないようにすることで DDL タスク処理を改善。これにより、初期化または復旧後に新しいレプリカがアクティブになったものの、大量のレプリケーションログを蓄積している場合に発生するDDL task is not finished on some hostsエラーを回避できる。また、レプリケーションログがmax_replication_lag_to_enqueue未満になるまで待機するSYSTEM SYNC DATABASE REPLICA STRICTクエリも実装。#83302 (Alexander Tokmakov)。SystemLogsのシャットダウン順序を、通常テーブルの後(かつシステムテーブルの前)に行うように変更(従来は通常テーブルの前)。#83134 (Kseniia Sumarokova)。- レプリケートされたデータベース設定向けにサーバー設定
logs_to_keepを追加し、レプリケートされたデータベースのデフォルトのlogs_to_keepパラメータを構成可能に。値を小さくすると ZooKeeper ノード数が減少(データベースが多い場合に特に有効)し、値を大きくすると長時間のダウンタイム後でも欠落レプリカが追いつけるようになる。#84183 (Alexey Khatskevich)。 - Replicated データベースの設定
max_retries_before_automatic_recoveryのデフォルト値を 10 に変更し、状況によってはより高速なリカバリを可能に。#84369 (Alexander Tokmakov)。 - Replicated データベースにおける append 以外の Refreshable マテリアライズドビューの DDL 操作を最適化し、古い一時テーブルの作成とリネームをスキップ。#84858 (Tuan Pham Anh)。
レプリケーションと同期
SystemAndInternalImprovements
- ZooKeeper 接続の問題が発生した場合にテーブル作成を再試行し、テーブルが忘れ去られてしまうことを防ぐように
SYSTEM RESTART REPLICAを改善しました。#82616 (Nikolay Degterinsky). - テーブルが
StorageIDの取得とIDatabase::alterTableの呼び出しの間で入れ替えられた場合に誤ったテーブル定義になってしまうのを防ぐため、ReplicatedMergeTree::executeMetadataAlterにおいて UUID の検証を追加しました。#82666 (Nikolay Degterinsky). - 実験的なゼロコピー複製に関連する実験的な
send_metadataロジックを削除しました。このコードは一度も使用されておらず、サポートもされておらず、おそらく壊れており、その機能を検証するテストもありませんでした。#82508 (alesapin). remote_fs_zero_copy_zookeeper_pathでのマクロ展開をサポートしました。#85437 (Mikhail Koviazin).
関数と式
- 関数
addressToSymbolおよびsystem.symbolsテーブルでは、仮想メモリアドレスではなくファイルオフセットが使用されるようになりました。#81896(Alexey Milovidov)。 - 名前付きタプルのスーパータイプを導出する際、要素名を可能な限り保持するようにしました。 #81345 (lgbo).
- 同じ列に対しても、ウィンドウごとに異なる照合順序を使用できるようにしました。 #82877 (Yakov Olkhovskiy).
- 型を WKB 形式で出力する関数を追加。 #82935 (scanhex12).
TimeおよびTime64を MM:SS、M:SS、SS、または S としてパースできる機能を追加しました。 #83299 (Yarik Briukhovetskyi)。- 関数
reinterpret()は、Tが固定長データ型である場合のArray(T)への変換をサポートするようになりました(issue #82621)。#83399(Shankar Iyer)。 structureToProtobufSchemaとstructureToCapnProtoSchema関数を修正し、改行文字ではなくゼロ終端バイトを正しく追加するようにして、出力から改行が抜けてしまう問題と、ゼロバイトに依存する関数(logTrace、demangle、extractURLParameter、toStringCutToZero、encrypt/decryptなど)で発生しうるバッファオーバーフローを防止しました。#85062 をクローズ。#85063(Alexey Milovidov)。regexp_tree辞書レイアウトを修正し、ゼロバイトを含む文字列を処理できるようにしました。 #85063 (Alexey Milovidov)。Valuesフォーマット、または行末に改行を含まないフォーマットで呼び出された場合に、出力の末尾の 1 文字を誤って切り落としていたformatRowNoNewline関数を修正しました。 #85063 (Alexey Milovidov).- まれな状況でメモリリークにつながる可能性があった
stem関数の例外安全性に関する不具合を修正しました。 #85063 (Alexey Milovidov)。 FixedString引数に対するinitcap関数を修正し、ブロック内で直前の文字列が単語文字で終わっている場合でも、文字列の先頭を単語の開始として正しく認識できるようにしました。 #85063 (Alexey Milovidov).- 初期化されていないメモリが露出するおそれのある Apache
ORC形式のセキュリティ脆弱性を修正しました。 #85063 (Alexey Milovidov). replaceRegexpAllとそのエイリアスであるREGEXP_REPLACEの動作を変更し、直前のマッチで文字列全体が処理されていた場合でも、文字列末尾での空マッチを許可するようにしました(例:^a*|a*$や^|.*)。これにより、JavaScript、Perl、Python、PHP、Ruby の仕様と整合しますが、PostgreSQL とは異なります。 #85063 (Alexey Milovidov).- 多くの文字列処理関数の実装を最適化および簡素化しました。いくつかの関数について、誤っていたドキュメント内容を修正しました。注記: String カラムおよび String カラムを含む複合型に対する
byteSizeの出力は、空文字列 1 つあたり 9 バイトから 8 バイトへと変更されました。これは期待される挙動です。 #85063 (Alexey Milovidov)。 - 関数
timeSeries*ToGrid()でステップ値 0 を許可します。これは https://github.com/ClickHouse/ClickHouse/pull/75036 のパート#3です。#85390(Vitaly Baranov)。 - 関数
nestedが内部配列をサポートするようになりました。 #85719 (Nikolai Kochetov)。
MergeTree の改善
- 実行時に更新される列やパッチパーツによって更新される列に依存するスキッピングインデックスを、より細かい粒度で無効化するようにしました。これにより、スキッピングインデックスは実行時ミューテーションやパッチパーツの影響を受けたパーツでのみ使用されなくなります。以前は、これらのインデックスはすべてのパーツに対して無効化されていました。 #84241 (Anton Popov).
- パーツを探索する対象範囲を制限するための MergeTree 設定
search_orphaned_parts_drivesを追加しました。たとえばローカルメタデータを持つディスク単位で範囲を制限できます。 #84710 (Ilya Golshtein). WHERE句に対するread_in_order_use_virtual_rowの不足していたサポートを追加しました。これにより、PREWHEREに完全にはプッシュダウンされなかったフィルタ条件を持つクエリで、より多くのパーツの読み取りをスキップできるようになります。 #84835 (Nikolai Kochetov).- MergeTree における「コンパクト」な Variant 判別子シリアライゼーションの利用を修正しました。以前は、利用可能であるにもかかわらず、一部のケースで使用されていませんでした。 #84141 (Pavel Kruglov).
- パッチパーツ内の非圧縮バイト数の合計に対する上限(テーブル設定
max_uncompressed_bytes_in_patches)を追加しました。これにより、軽量更新後のSELECTクエリが大幅に低速化することを防ぎ、軽量更新の不適切な使用も防止します。 #85641 (Anton Popov).
キャッシュとメモリ管理
- ファイルシステムキャッシュにおける論理エラー「Having zero bytes but range is not finished」を修正。 #81868 (Kseniia Sumarokova).
- キャッシュの局所性を改善するためにレンデブーハッシュを追加。 #82511 (Anton Ivashkin).
- ファイルシステムキャッシュの動的リサイズ機能をリファクタリングし、内部解析用のログを追加。 #82556 (Kseniia Sumarokova).
- 実行可能なユーザー定義関数に対するクエリのメモリトラッキングのオーバーヘッドを削減。 #83929 (Eduard Karacharov).
- 外部ライブラリによるすべてのメモリアロケーションが、ClickHouseのメモリトラッカーで把握され、正しく計上されるようになりました。この変更により、特定のクエリで報告されるメモリ使用量が「増加」したり、
MEMORY_LIMIT_EXCEEDEDにより失敗する場合があります。 #84082 (Nikita Mikhaylov). - 暗号化された named collection 向けの
encrypted_bufferに対して、必要最小限のメモリのみを確保するように変更。 #84432 (Pablo Marcos).
ベクトル類似性インデックス
NumericIndexedVectorでnanおよびinfを使用できないようにしました。これにより #82239 と、いくつかの関連問題が修正されています。#82681 (Raufs Dunamalijevs).- ベクトル類似性インデックスがバイナリ量子化をサポートするようになりました。バイナリ量子化により、メモリ消費量が大幅に削減されると同時に、(距離計算が高速になることで)ベクトルインデックスの構築処理も高速化されます。また、既存の設定
vector_search_postfilter_multiplierは廃止され、より汎用的な設定vector_search_index_fetch_multiplierに置き換えられました。#85024 (Shankar Iyer). - ベクトル類似性インデックスによる近似ベクトル検索が一般提供 (GA) になりました。#85888 (Robert Schulze).
エラー処理とメッセージ
- 接続を維持すべきかが分かってから、ヘッダー送信の最後に
Connectionヘッダーを送信するようにしました。#81951 (Sema Checherinda). - 以前のバージョンでは、集約関数の状態と IPv4 の乗算で、適切なエラーコードではなく論理エラーが発生していました。#82817 をクローズ。#82818 (Alexey Milovidov).
AsynchronousMetricsのエラー処理を改善しました。/sys/blockディレクトリが存在するがアクセスできない場合でも、サーバーはブロックデバイスの監視なしで起動します。#79229 をクローズ。#83115 (Alexey Milovidov).- 不正な
SELECT文を含むマテリアライズドビューへのINSERTにおいて、依存関係チェックが正しく行われておらず、わかりやすい説明付きの有意義なエラーではなく、分かりにくいstd::exceptionを受け取る可能性がありました。これは修正済みです。次の問題を修正します: #82889。#83190 (Nikita Mikhaylov). - 例外メッセージ内で、式アクションの非常に長い説明を出力しないようにしました。#83164 をクローズ。#83350 (Alexey Milovidov).
- ストレージのシャットダウン時に、
getStatusがErrorCodes::ABORTED例外を投げるようにしました。以前は、これによりSELECTクエリが失敗していました。現在はErrorCodes::ABORTED例外を捕捉し、意図的に無視します。#83435 (Miсhael Stetsyuk). - プロジェクションの読み込みおよび追加に関する特定の状況での例外メッセージを、より読みやすくしました。#83728 (Robert Schulze).
- 接続がキャンセルされているかどうかを EOF のチェック前に確認することで、クローズされた接続から読み込むことを防止しました。#83893 を修正。#84227 (Raufs Dunamalijevs).
- 内部チェックを単純化することで、クライアント接続に対するサーバーシャットダウン時の処理を改善しました。#84312 (Raufs Dunamalijevs).
- UDF 実行中の低レベルエラーは、これまではさまざまなエラーコードが返される可能性がありましたが、現在は
UDF_EXECUTION_FAILEDエラーコードで失敗するようになりました。#84547 (Xu Jia).
SQL フォーマットの改善
CREATE DICTIONARYのフォーマットの不整合を修正しました。 #82105 をクローズしました。 #82829(Alexey Milovidov)。materialize関数を含む場合のTTLのフォーマットの不整合を修正しました。 #82828 をクローズしました。 #82831(Alexey Milovidov)。INTO OUTFILEなどの出力オプションを含む場合の、サブクエリ内のEXPLAIN ASTのフォーマットの不整合を修正しました。 #82826 をクローズしました。 #82840(Alexey Milovidov)。- エイリアスが許可されていないコンテキストにおける、エイリアス付きの括弧付き式のフォーマットの不整合を修正しました。 #82836 をクローズしました。 #82837 をクローズしました。 #82867(Alexey Milovidov)。
- クエリパラメータ付きの
CREATE USER(例:CREATE USER {username:Identifier} IDENTIFIED WITH no_password)のフォーマットを修正しました。 #84376(Azat Khuzhin)。 CREATE DICTIONARYクエリのカラムで、パラメータを持つカラム(例:Decimal(8))の後に続く末尾のカンマのパース処理を修正しました。 #85586 をクローズしました。 #85653(Nikolay Degterinsky)。
外部連携
- 名前付きコレクションを使用する場合、ODBC と JDBC のパラメータ名を統一しました。 #83410 (Andrey Zvonov).
- MongoDB: 文字列から数値型への暗黙的な変換を行うようにしました。以前は、ClickHouse テーブルの数値カラムに対して MongoDB ソースから文字列値が受信されると、例外がスローされていました。現在は、エンジンが文字列から数値を自動的にパースしようと試みます。 #81167 をクローズ。 #84069 (Kirill Nikiforov).
- サポートされていないアーキテクチャ上でも
simdjsonを許可しました(以前はCANNOT_ALLOCATE_MEMORYエラーにつながっていました)。 #84966 (Azat Khuzhin).
その他の改善点
- Ytsaurus テーブルエンジンおよびテーブル関数を追加した。#77606 (MikhailBurdukov).
- HashJoin::needUsedFlagsForPerRightTableRow を改良し、クロス JOIN では false を返すようにした。#82379 (lgbo).
- map カラムをタプルの配列として書き込み/読み取りできるようにした。#82408 (MikhailBurdukov).
- この PR は取り消された。#82884 (Mithun p).
- 非同期ログ: キュー内に保持されるエントリ数の最大値を制限した。#83214 (Raúl Marín).
- JSON 入力フォーマットで Date/Date32 を整数として扱えるようにした。#83597 (MikhailBurdukov).
- bloom filter インデックス(通常、ngram、および token)が、第一引数が定数配列(集合)、第二引数がインデックス付きカラム(部分集合)の場合にも活用されるようサポートを改善し、より効率的なクエリ実行を可能にした。#84700 (Doron David).
- KeyValue ストレージのプライマリキー(例: EmbeddedRocksDB、KeeperMap)上に
IN/GLOBAL INフィルタをプッシュダウンする際に、集合値の型キャストを許可した。#84515 (Eduard Karacharov). - 並列レプリカ読み取りにおいて、インデックス解析の結果が空の範囲となるケースでの全スキャンを排除した。#84971 (Eduard Karacharov).
- ローカルホストで統合テストを実行しようとした際に発生しうる問題の一覧を修正した。#82135 (Oleg Doronin).
- 古いデプロイメントで trace_log.symbolize をデフォルトで有効化した。#85456 (Azat Khuzhin).
バグ修正(公式安定版リリースでユーザーから確認できる不具合)
パフォーマンス最適化
- バージョン 25.5 で https://github.com/ClickHouse/ClickHouse/pull/79051 によって発生した SummingMergeTree におけるパフォーマンス低下を修正しました。#82130(Pavel Kruglov)。
analyzerが有効な場合に、セカンダリクエリが常に VIEW からすべてのカラムを読み取っていたことによるパフォーマンス低下を修正しました。#81718 を修正します。#83036(Dmitry Novik)。- 依存関係を持たないテーブル作成時には循環依存関係のチェックを行わないようにしました。これにより、https://github.com/ClickHouse/ClickHouse/pull/65405 で導入された、数千のテーブルを作成するユースケースでのパフォーマンス低下を修正します。#83077(Pavel Kruglov)。
DISTINCTウィンドウ集約関数が線形時間で動作するようにし、sumDistinctのバグを修正しました。#79792 をクローズします。#52253 をクローズします。#79859(Nihal Z. Miaji)。
クエリ実行に関する修正
ORDER BY ... LIMIT BY ... LIMIT Nを組み合わせたクエリにおいて、ORDER BY が PartialSorting として実行される場合、カウンタrows_before_limit_at_leastは、ソート変換で消費された行数ではなく、LIMIT 句で消費された行数を反映するようになりました。 #78999 (Eduard Karacharov)。<=>演算子とJoinストレージにおける論理エラーを修正し、クエリが適切なエラーコードを返すようになりました。 #80165 (Vladimir Cherkasov).remote関数ファミリーと併用した場合にloop関数がクラッシュする問題を修正しました。loop(remote(...))で LIMIT 句が正しく適用されるようにしました。 #80299 (Julia Kartseva).- Unix エポック (1970-01-01) より前および最大日時 (2106-02-07 06:28:15) より後の日付を扱う際の
to_utc_timestamp関数とfrom_utc_timestamp関数の不正な動作を修正しました。これらの関数は、値をそれぞれエポック開始時刻と最大日時に正しく切り詰める(クランプする)ようになりました。 #80498 (Surya Kant Ranjan). - 左辺引数に NULL が含まれ、サブクエリ結果が非 NULL の場合における、
transform_null_in=1設定時のIN実行を修正。 #81584 (Pavel Kruglov). - スカラー相関サブクエリの処理中に必要な列が読み取られない問題を修正しました。#81716 を修正。#81805(Dmitry Novik)。
- クエリで定数エイリアス列のみが使用されている場合のフィルタ解析を修正しました。これにより #79448 が修正されます。#82037(Dmitry Novik)。
WHERE句およびIndexSetを含むクエリでarrayJoinを使用した際に発生していたNot found columnエラーを修正しました。 #82113 (Nikolai Kochetov).- CTE 定義が同名の別のテーブル式を参照している場合に発生する
TOO_DEEP_SUBQUERIES例外を修正。 #83413 (Dmitry Novik). WHERE ... IN (<subquery>)句を含むクエリで、use_query_condition_cache設定によるクエリ条件キャッシュを有効化している場合に誤った結果が返される問題を修正しました。 #83445 (LB7666).UNION ALLを伴うINSERT SELECTが、特定のレアケースにおいてヌルポインタ参照を引き起こす可能性がありました。この修正により #83618 がクローズされました。#83643(Alexey Milovidov)。- 相関付けられた列に対する行ポリシー式の解析中に発生する
LOGICAL_ERRORを修正しました。 #82618 (Dmitry Novik). - クエリ条件キャッシュを再帰CTEと併用した場合に誤った結果が返される不具合を修正しました(issue #81506)。#84026(zhongyuankai)。
- 不正な
WINDOW定義に対する無限再帰的な解析を修正します。 #83131 を解決します。 #84242(Dmitry Novik)。 additional_table_filters expression設定内でIN (subquery)を使用した場合のNot-ready Setの問題を修正しました。 #85210 (Nikolai Kochetov).optimize_syntax_fuse_functionsが有効な場合に発生する重複サブクエリに関する論理エラーを修正し、#75511 をクローズしました。#83300(Vladimir Cherkasov)。
Iceberg と DataLake の修正
- REST カタログ経由で Iceberg テーブルをクエリする際のメタデータ解決処理を修正。... #80562 (Saurabh Kumar Ojha).
- Iceberg におけるデータレースを修正。#82088 (Azat Khuzhin).
- Iceberg における "Context has expired" エラーを修正。#82146 (Azat Khuzhin).
- ClickHouse が、スキーマ変更後に Glue カタログから Iceberg テーブルを読み取れるようになりました。#81272 を修正。#82301 (alesapin).
- Iceberg におけるデータレースを修正。#82841 (Azat Khuzhin).
- Iceberg の配列要素および Iceberg の map 値(そのすべてのネストしたサブフィールドを含む)に対する、境界値ベースのファイルプルーニングを無効化。#83520 (Daniil Ivanik).
- 複合型に対する Iceberg への書き込みを修正。#85330 (scanhex12).
- 複合型に対しては、下限値および上限値の書き込みはサポートされません。#85332 (scanhex12).
- Iceberg におけるフィールドの NULL 許容性を修正。#85977 (scanhex12).
- 空の Iceberg の delete ファイルを作成しないように変更。#86061 (scanhex12).
- Iceberg への書き込み時にメタデータのタイムスタンプを更新。#85711 (scanhex12).
- Spark が position delete ファイルを読み取れない問題を修正。#85762 (scanhex12).
- マニフェストファイルからスキーマを取得するのをやめ、各スナップショットごとに該当するスキーマを独立して保存するように変更。各データファイルに対しては、そのファイルに対応するスナップショットから該当するスキーマを推論します。以前の動作では、既存ステータスを持つマニフェストファイルエントリに関して Iceberg の仕様に違反していました。#84588 (Daniil Ivanik).
- Iceberg は
SELECTクエリ間で関連するスナップショットバージョンをキャッシュしようとせず、常にスナップショットを正しく解決しようとするようになりました。以前の Iceberg スナップショットのキャッシュ試行は、タイムトラベルを用いた Iceberg テーブルの利用時に問題を引き起こしていました。#85038 (Daniil Ivanik). - REST カタログ経由で Iceberg テーブルをクエリする際のメタデータ解決処理を修正。... #85531 (Saurabh Kumar Ojha).
icebergS3ClusterおよびicebergAzureClusterテーブル関数でのシークレットマスキングを修正。#85658 (MikhailBurdukov).
DeltaLake の修正
- ストレージ
DeltaLakeにおける delta-kernel を用いたカラムプルーニングを修正しました。#84543 をクローズしました。#84745(Kseniia Sumarokova)。 - ストレージ
DeltaLakeの delta-kernel において認証情報をリフレッシュするようにしました。#84751(Kseniia Sumarokova)。 - delta-kernel 実装でのセグメンテーションフォルトを修正しました。#85160(Kseniia Sumarokova)。
DeltaLakeエンジンの delta-kernel 実装におけるレースコンディションを修正しました。#85221(Kseniia Sumarokova)。DeltaLakeエンジンで delta-kernel を無効化した状態でパーティション化されたデータを読み取む処理を修正しました。これは 25.7 で動作しなくなっていました (https://github.com/ClickHouse/ClickHouse/pull/81136)。[#85223](https://github.com/ClickHouse/ClickHouse/pull/85223)([Kseniia Sumarokova](https://github.com/kssenii))。- 互換性のため、25.5 より前のバージョンでの
allow_experimental_delta_kernel_rsの値をfalseに変更しました。#84587(Kseniia Sumarokova)。 - ストレージ
DeltaLakeにおけるキャッシュからのcountの読み取り処理を修正しました。#85704(Kseniia Sumarokova)。
TTL と MergeTree の修正
- TTL によって行が削除された際に、
minmax_count_projectionのような、それに依存するアルゴリズムの正しさを保証するために、min-max インデックスを再計算するようになりました。これにより #77091 が解決されます。#77166(Amos Bird)。 - TTL を更新する際、TTL GROUP BY での TTL の再計算が誤っていた問題を修正しました。#81222(Evgeniy Ulasik)。
- TTL 式で辞書を使用している場合に、マージ中に発生していた "Context has expired" エラーを修正しました。#81690(Azat Khuzhin)。
- GROUP BY および SET の TTL で同じカラムを使用した場合に発生していた LOGICAL_ERROR とそれに続くクラッシュを修正しました。#82054(Pablo Marcos)。
- テーブルからすべての TTL が削除された場合、MergeTree は TTL に関連する処理を一切行わないようになりました。#84441(alesapin)。
ALTER MODIFY ORDER BYがソートキー内の TTL カラムを検証していなかった問題を修正しました。TTL カラムは、ALTER操作中にORDER BY句で使用された場合に正しく拒否されるようになり、テーブル破損の可能性を防ぎます。#84536(xiaohuanlin)。
Projection の修正
- カラム型が Nullable に変更された場合に、projection をマテリアライズする際の論理エラーを修正しました。#80741 (Pavel Kruglov).
enable_shared_storage_snapshot_in_query = 1のときに、mergeTreeProjectionテーブル関数内で親メタデータを誤って使用していた問題を修正しました。これは #82634 の修正です。#82638 (Amos Bird).- テーブルに projection があり、
lightweight_mutation_projection_mode = 'rebuild'の設定時に、テーブル内の任意のブロックからすべての行を削除する lightweight delete をユーザーが実行した場合に、まれに発生する ClickHouse のクラッシュを修正しました。#84158 (alesapin). - 壊れた projection を含むパーツのバックアップ処理を修正しました。#85362 (Antonio Andelic).
- 安定化するまでの間、リリース版では projection 内で
_part_offsetカラムを使用できないようにしました。#85372 (Sema Checherinda).
Parallel replicas の修正
- 一部の parallel replicas を用いたクエリで、イニシエータ側では順序付き読み取り最適化が適用されるものの、リモートノードでは適用されないことがありました。これにより、parallel replicas のコーディネータ(イニシエータ上)とリモートノードで異なる読み取りモードが使用され、論理エラーが発生していました。 #80652 (Igor Nikonov).
- サブクエリに
FINALが含まれている場合は parallel replicas を無効化します。 #81401, #83455 (zoomxi). - parallel replicas と、複数の INNER JOIN に続く RIGHT JOIN を含むクエリで発生していた
LOGICAL_ERRORを修正しました。このようなクエリでは parallel replicas を使用しないようにしました。 #84299 (Vladimir Cherkasov). - parallel replicas を用いたクエリで、逆順読み取りの最適化を使用している場合、不正な結果が返されることがありました。 #85406 (Igor Nikonov).
認証とセキュリティ
- logs および query_log 内での名前付きコレクション値の非表示処理を修正しました。#82405 をクローズ。#82510(Kseniia Sumarokova)。
- 型が
SCRAM_SHA256_PASSWORDの AST から解析する際に、認証データに salt を設定するようにしました。#82888(Tuan Pham Anh)。 - ユーザーやログからは見えないように、Avro schema registry の認証情報をマスクしました。#83713(János Benjamin Antal)。
REVOKE S3 ON system.*の実行時に*.*の S3 権限まで取り消してしまう誤った動作を修正しました。この修正は #83417 に対応します。#83420(pufit)。no_passwordで作成されたユーザーが、サーバー設定allow_no_passwordを 0 に変更した後にログインしようとした際のサーバークラッシュを修正しました。#84426(Shankar Iyer)。- JWT で識別されるユーザーを作成しようとした際のエラーメッセージを改善しました。#85072(Konstantin Bogdanov)。
deltaLakeAzure、deltaLakeCluster、icebergS3Cluster、icebergAzureClusterの認証情報をマスクしました。#85889(Julian Maicher)。- #79963 で導入されたバグを修正しました。定義者付きマテリアライズドビューに挿入する際、権限チェックは定義者に付与された権限を使用する必要があります。#79951 を修正します。#83502(pufit)。
バックアップとリストアの修正
- 空の
Memoryテーブルのバックアップで発生していた不具合を修正。この不具合により、バックアップのリストアがBACKUP_ENTRY_NOT_FOUNDエラーで失敗していました。 #82791 (Julia Kartseva). - 読み取り専用ディスク上でバックアップをリストアする際に表示される、誤解を招くエラーメッセージを修正。 #83051 (Julia Kartseva).
- 接続問題の後に不要な内部バックアップが開始されてしまう不具合を修正。 #84755 (Vitaly Baranov).
ウィンドウ関数と集約関数
- マージ中に例外が発生した場合に
Aggregatorがクラッシュする可能性があった問題を修正しました。 #81450 (Nikita Taranov). - マージ中に例外が発生した場合に
Aggregatorがクラッシュする可能性があった問題を修正しました。 #82022 (Nikita Taranov). arraySimilarityにおけるコピーペーストの誤りを修正し、UInt32およびInt32の重みの使用を禁止しました。テストおよびドキュメントを更新しました。 #82103 (Mikhail f. Shiryaev).numericIndexedVectorPointwiseAdd、numericIndexedVectorPointwiseSubtract、numericIndexedVectorPointwiseMultiply、numericIndexedVectorPointwiseDivide関数を大きな数値に適用した際に発生していたオーバーフローを修正しました。 #82165 (Raufs Dunamalijevs).
Parquet とファイルフォーマットの修正
- Parquet のブルームフィルタが、
WHERE function(key) IN (...)のような条件をWHERE key IN (...)であるかのように誤って適用していた問題を修正。#81255 (Michael Kolupaev). - Parquet writer が Decimal 型に対して不正な統計情報 (min/max) を出力していた問題を修正。#83754 (Michael Kolupaev).
- 空要素がある場合の
groupArraySample/groupArrayLastのデシリアライズを修正(入力が空の場合にバイナリの一部をスキップしてしまう可能性があり、これによりデータ読み取り時の破損や TCP プロトコルにおける UNKNOWN_PACKET_FROM_SERVER が発生する可能性があった)。数値型および日時型には影響しない。#82763 (Pedro Ferreira). - RowBinary フォーマットで NULL 値を含む JSON パスを書き込む際の問題を修正。#83923 (Pavel Kruglov).
JOIN の修正
- ストレージ
Mergeを持つテーブルとの JOIN 式を含むクエリに対するフィルタ書き換え処理を修正しました。#82092 を修正。#82950(Dmitry Novik)。 - キーバリューストレージが型変換されたキーと JOIN される場合にクラッシュする問題を修正しました。#82497(Pervakov Grigorii)。
- 複数の JOIN を含むクエリで matcher を解決する際に発生する論理エラーを修正しました。#81969 をクローズ。#82421(Vladimir Cherkasov)。
- 等価演算子のオペランドの型が異なる場合や、定数を参照している場合に、フィルタを JOIN 条件へマージする処理を修正しました。#83432 を修正。#84145(Dmitry Novik)。
- 片方のカラムが
LowCardinalityで、もう一方が定数である非等価条件で JOIN を行う際に、論理エラーExpected single dictionary argument for functionが発生していた問題を修正しました。#81779 をクローズ。#84019(Alexey Milovidov)。
レプリケーテッドデータベースの修正
- DDLWorker と DatabaseReplicatedDDLWorker における markReplicasActive を修正。#81395 (Tuan Pham Anh)。
DatabaseReplicated::getClusterImplを修正。hostsの先頭要素(または複数の要素)がid == DROPPED_MARKであり、同じシャードに他の要素が存在しない場合、shardsの先頭要素が空のベクタとなり、std::out_of_rangeが発生する問題を修正。#82093 (Miсhael Stetsyuk)。- 非同期テーブルロードジョブの数を追跡するように変更。実行中のジョブがある場合は、
TransactionLog::removeOldEntriesにおいてtail_ptrを更新しないようにする。#82824 (Tuan Pham Anh)。 - MergeTree テーブルを
add_minmax_index_for_numeric_columns=1またはadd_minmax_index_for_string_columns=1を指定して作成した場合に、後の ALTER 操作時にインデックスがマテリアライズされ、それが原因で新しいレプリカ上で Replicated データベースが正しく初期化されない問題を修正。#83751 (Nikolay Degterinsky)。 - DEFINER が削除された場合に、Replicated データベースの新しいレプリカ上で RMV を作成する処理を修正。#85327 (Nikolay Degterinsky)。
- メタデータファイルの移動に長時間かかる場合の、レプリケーテッドデータベースの復旧処理を修正。#85177 (Tuan Pham Anh)。
- Keeper 上でデータベースメタデータを復元した後に、Replicated データベースを強制的に復旧するように変更。#85960 (Tuan Pham Anh)。
Replicatedデータベースの復旧におけるバグを修正。テーブル名に%記号が含まれている場合、復旧中に別の名前でテーブルが再作成される可能性があった。#85987 (Alexander Tokmakov)。- DDL worker がレプリカセットから古いホストをクリーンアップするようになった。これにより ZooKeeper に保存されるメタデータの量が削減される。#88154 (alesapin)。
軽量アップデートの修正
ReplacingMergeTreeおよびCollapsingMergeTreeエンジンを持つテーブルの軽量アップデートを修正。 #84851 (Anton Popov).- テーブル内のすべてのカラムを更新する軽量アップデートにおける論理エラーを修正。 #84380 (Anton Popov).
- バージョン 25.7 未満のサーバー上で作成された
ReplicatedMergeTreeエンジンを持つテーブルの軽量アップデートを修正。 #84933 (Anton Popov). ALTER TABLE ... REPLACE PARTITIONクエリ実行後の、非レプリケートなMergeTreeエンジンを持つテーブルの軽量アップデートを修正。 #84941 (Anton Popov).ReplicatedMergeTreeにおけるパッチパーツのクリーンアップを修正。これまで、パッチパーツを反映したマージ済みまたはミューテーション済みパーツが別のレプリカからダウンロードされるまで、軽量アップデートの結果が一時的にそのレプリカ上で見えない場合がありました。 #85121 (Anton Popov).
S3 とオブジェクトストレージの修正
- シークレットマスキングにおける S3 テーブル関数の引数検証を修正し、起こりうる
LOGICAL_ERRORを防止。#80620 をクローズ。#82056(Vladimir Cherkasov)。 - サーバーにメモリプレッシャーがかかっているときのリモートクエリにおけるデッドロックの可能性を修正。#82160(Kirill)。
- AWS ECS トークンに有効期限を追加し、再読み込みできるようにした。#82422(Konstantin Bogdanov)。
- 外部テーブルエンジンでキャッシュされたバッファに対する境界アラインメントの無効化を修正。これは https://github.com/ClickHouse/ClickHouse/pull/81868 で壊れていた。#82493(Kseniia Sumarokova)。
- S3 クライアントの
no_sign_requestを修正。これは S3 リクエストへの署名を明示的に回避するために使用できる。また、エンドポイントベースの設定を使うことで特定のエンドポイントに対して定義することもできる。#83379(Antonio Andelic)。 - s3Cluster() から複製 MergeTree への INSERT SELECT 中に、利用できないノードをスキップするようにした。#83676(Igor Nikonov)。
- S3 リクエストレート低下のための早期リターン条件を修正:再試行可能なエラーにより全スレッドが一時停止している場合にスローダウン動作を有効にするには、s3_slow_all_threads_after_network_error か backup_slow_all_threads_after_retryable_s3_error のいずれかが true であればよく、両方が必要という条件を改めた。#85505(Julia Kartseva)。
- Distributed テーブルまたはリモートテーブル関数経由でオブジェクトストレージ関数から読み取る際の論理エラーを修正。次を修正: #84658、#85173、#52022。#85359(alesapin)。
- S3Queue における "Table is already registered" の論理エラーを修正。#84433 をクローズ。https://github.com/ClickHouse/ClickHouse/pull/83530 以降で発生していた。#84677(Kseniia Sumarokova)。
- 大きな設定値によって S3Queue テーブルおよびレプリカの再起動が失敗する問題を修正。#86074(Nikolay Degterinsky)。
DynamicAndVariantTypeFixes
- パース失敗時の Dynamic 列のロールバック処理を修正。#82169 (Pavel Kruglov).
- UNION 内の Variant 型で発生しうるクラッシュを修正。#83295 (Pavel Kruglov).
- 遅延マテリアライズ時の Variant 列の読み取りを修正。#84400 (Pavel Kruglov).
- 既存テーブルの読み取り時に実行される default/materialize 式において、experimental/suspicious な型を検証しないように修正。#81618 (Pavel Kruglov).
Keeper の修正
- Keeper の修正: セッション終了時に一時ノードが削除された場合、合計 watch 数が正しく更新されるようにしました。#83583 (Antonio Andelic)。
- Keeper の changelog への書き込み順序が乱れる問題を修正しました。以前は、changelog への書き込みが処理中の状態でロールバックが発生すると、出力先ファイルが同時に変更される可能性がありました。これによりログの不整合やデータ損失が発生する可能性がありました。#84434 (Antonio Andelic)。
- RocksDB ストレージを使用する Keeper において、イテレータが破棄されずリークしていた問題を修正しました。#84523 (Azat Khuzhin)。
- Keeper の設定
rotate_log_storage_interval = 0により ClickHouse がクラッシュする問題を修正しました(issue #83975)。#84637 (George Larionov)。 - Keeper が返す合計 watch 数が正しくない問題を修正しました。#84890 (Antonio Andelic)。
- RefreshTask で 'view' から ZooKeeper を取得するときに 'mutex' をロックするようにしました。#84699 (Tuan Pham Anh)。
インデックスに関する修正
- オルタネーションを含み、先頭のオルタナティブがリテラルでない正規表現(regexp)を使用した token/ngram インデックスでのフィルタリング時に、granule を過剰にスキップしてしまう問題を修正しました。#79373 (Eduard Karacharov)。
use_skip_indexes_if_final_exact_mode設定の実装(25.6 で導入)が、MergeTreeエンジンの設定やデータ分布によっては、適切な候補範囲を選択できない場合がありました。この問題は解決されました。#82667 (Shankar Iyer)。use_skip_indexes_if_final_exact_mode設定の最適化(25.6 で導入)が、MergeTreeエンジンの設定やデータ分布によっては、適切な候補範囲を選択できない場合がありました。この問題は解決されました。#82879 (Shankar Iyer)。- 以前は、
setインデックスが、granule がフィルタ条件を満たしているかどうかを確認する際に、Nullableカラムを考慮していませんでした(issue #75485)。#84305 (Elmi Ahmadov)。 MinMaxインデックスの評価中に、NaN値との比較で正しい範囲が使用されていませんでした。#84386 (Elmi Ahmadov)。ngramおよびno_opトークナイザを使用した場合に、空の入力トークンによって(実験的な)テキストインデックスがクラッシュしなくなりました。#84849 (Robert Schulze)。
マテリアライズドビューの修正
- テーブルの依存関係に起因してマテリアライズドビューが INSERT クエリを取りこぼすバグを修正。#82222 (Nikolay Degterinsky)。
- https://github.com/ClickHouse/ClickHouse/pull/79963 以降、マテリアライズドビューでサブカラムを使用すると正しく動作せず、ユーザーが
Not found column X in blockエラーを受け取る可能性がありました。この挙動を修正しました。この変更により、次の Issue が修正されます: #82784。#83221 (Nikita Mikhaylov)。 - 型が異なる場合に
mvで発生していたillegal_type_of_argumentエラーを修正。#85135 (Sema Checherinda)。
Azure およびクラウドストレージの修正
- AzureBlobStorage において、ネイティブコピー時に認証方法を比較する際に例外が発生した場合、読み取りとコピー(非ネイティブコピー)にフォールバックするようコードを更新しました。#82693 (Smita Kulkarni).
AzureIteratorAsyncにおけるメモリの二重解放を修正しました。#85064 (Nikita Taranov).
クラッシュおよび安定性に関する修正
user_idが空になる場合があるため、セッション終了時のロギング中に発生しうるクラッシュを修正しました。 #82513 (Bharat Nallan).- 不正な
INSERT実行後に接続が切断状態のまま残ることによって発生するクライアントのクラッシュを修正しました。 #83253 (Azat Khuzhin). - 空のカラムを持つブロックのサイズ計算時に発生するクラッシュを修正しました。 #83271 (Raúl Marín).
- CPU スケジューリング有効時に、負荷下で実行される
max_threads=1設定付きクエリで発生しうるクラッシュを修正しました。 #83387 (Fan Ziqi). zoutofmemoryをハードウェアエラーとして扱うようにし、それ以外の場合には logical error をスローするようにしました。詳細は https://github.com/clickhouse/clickhouse-core-incidents/issues/877 を参照してください。 #84420 (Han Fei).BackgroundSchedulePoolのシャットダウン時に、タスクからのスレッド join に起因する可能性のあるアボートや、(ユニットテストにおける)ハングを修正しました。 #83769 (Azat Khuzhin).- バックグラウンドのキャンセルチェック用スレッドによって引き起こされるデッドロックを修正しました。 #84203 (Antonio Andelic).
- ライブラリブリッジのクリーンアップ時に、コンテキストの再帰的ロックによってシャットダウン時に発生するデッドロックを修正しました。 #83824 (Azat Khuzhin).
- 不正な
INSERT実行後に接続が切断状態のまま残ることによって発生するクライアントのクラッシュを修正しました。 #83842 (Azat Khuzhin). - String のデシリアライズ中に
MEMORY_LIMIT_EXCEEDEDが発生した場合に未定義動作(クラッシュ)となりうる問題を修正しました。 #85440 (Azat Khuzhin). log_commentまたはinsert_deduplication_tokenの設定を変更する非同期INSERTで、まれに発生するクラッシュを修正しました。 #85540 (Anton Popov).
Glue およびカタログの修正
- Glue カタログ統合におけるバグを修正しました。これにより、ClickHouse はサブカラムの一部に Decimal 型を含むネストされたデータ型のテーブルを読み取れるようになりました(例:
map<string, decimal(9, 2)>)。#81301 を修正。#82114(alesapin)。 - ClickHouse は、テーブルタイプが小文字で指定されている Glue Catalog からもテーブルを読み取るようになりました。#84316(alesapin)。
- Unity Catalog は、Delta 以外のテーブルの場合に、不正なデータ型を持つスキーマを無視するようになりました。#85699 を修正。#85950(alesapin)。
関数の修正
- 関数
trim{Left,Right,Both}は、型FixedString(N)の入力文字列をサポートするようになりました。たとえば、SELECT trimBoth(toFixedString('abc', 3), 'ac')が動作するようになりました。 #82691 (Robert Schulze). - 関数
trimがすべて定数の入力で呼び出された場合、定数の出力文字列を生成するようになりました(バグ #78796)。 #82900 (Robert Schulze). - フォーマッタ
%fが可変サイズのフォーマッタ(例:%M)と併用されたときの、関数formatDateTimeの不正な出力を修正しました。 #83020 (Robert Schulze). CASE関数におけるNULL引数のバグを修正しました。 #82436 (Yarik Briukhovetskyi).lowCardinalityKeys関数で、共有ディクショナリの無関係な部分を使用しないようにしました。 #83118 (Alexey Milovidov).- 定数引数と非定数引数が混在する場合の colorSRGBToOKLCH/colorOKLCHToSRGB を修正しました。 #83906 (Azat Khuzhin).
array()関数における空のタプルの不正な構築を修正しました。これにより #84202 が修正されました。 #84297 (Amos Bird).- Bech32 のエンコードおよびデコードが誤った結果になる原因となっていたバグを修正しました。このバグは、テストに使用していたアルゴリズムのオンライン実装にも同じ問題があったため、当初は検出されませんでした。 #84257 (George Larionov).
分散クエリの修正
LIMITを伴う並列分散INSERT SELECTが許可されていましたが、これは不正であり、ターゲットテーブルでデータの重複を引き起こします。 #84477 (Igor Nikonov).JOINまたはサブクエリが存在する場合には、テーブル関数をそのクラスタ用の代替(*Cluster版など)に置き換えようとしないようにしました。 #84335 (Konstantin Bogdanov).- クラッシュを避けるため、分散コンテキストで相関サブクエリが使用されているかどうかをチェックする処理を追加しました。 #82205 を修正します。 #85030 (Dmitry Novik).
*Cluster関数であることの判定指標としてdistributed_depthを使用するのは不正確であり、データ重複を引き起こす可能性がありました。その代わりにclient_info.collaborate_with_initiatorを使用します。 #85734 (Konstantin Bogdanov).Distributed宛先テーブルに対する並列分散INSERT SELECTで、WITHステートメントからのグローバル定数をサポートしました。これまで、このクエリはUnknown expression identifierエラーをスローすることがありました。 #85811 (Nikolai Kochetov).DatabaseReplicatedを用いたCREATE ... AS (SELECT * FROM s3Cluster(...))の試行時に論理エラーが発生する問題を修正しました。 #85904 (Konstantin Bogdanov).- Distributed テーブルの ALTER 時に
sharding_keyを検証するチェックを追加しました。以前は不正な ALTER によりテーブル定義が壊れ、サーバーの再起動時に問題が発生していました。 #86015 (Nikolay Degterinsky).
メトリクスおよびモニタリングの修正
- 非同期メトリクス設定
asynchronous_metrics_update_period_sおよびasynchronous_heavy_metrics_update_period_sの検証ロジックを修正。#82310 (Bharat Nallan)。 - メトリクス
IndexUncompressedCacheBytes/IndexUncompressedCacheCells/IndexMarkCacheBytes/IndexMarkCacheFilesを修正(以前はCacheプレフィックスのないメトリクスとしてカウントされていた)。#83730 (Azat Khuzhin)。 - QueryMetricLog で発生していた
LOGICAL_ERRORを修正(Mutex がNULLになり得ない問題)。#82979 (Pablo Marcos)。 - 不正確だったメトリクス
KafkaAssignedPartitionsおよびKafkaConsumersWithAssignmentを修正。#85494 (Ilya Golshtein)。 PREWHERE(明示的または自動)が使用される場合に、処理バイト数の統計が過小評価される問題を修正。#85495 (Michael Kolupaev)。- バックグラウンドスケジュールプールおよびエグゼキュータからのメモリトラッキングのずれを修正。#84946 (Azat Khuzhin)。
データ型および変換の修正
- Time のパースによって msan の問題が発生する可能性があったケースを修正しました。これにより次の問題が修正されました: #82477。#82514(Yarik Briukhovetskyi)。
LowCardinality(Float32|Float64|BFloat16)型における NaN 値のソートを修正しました。#83786(Pervakov Grigorii)。DateからDateTime64へのキャスト時に大きな値(>2106-02-07)がオーバーフローする問題を修正しました。#83982(Yarik Briukhovetskyi)。- 負の Time 値がテーブルに暗黙的に読み込まれる問題を修正し、ドキュメントの記述も分かりやすくしました。#83091(Yarik Briukhovetskyi)。
- コーデック
DoubleDeltaは、数値型のカラムにのみ適用できるようになりました。特に、FixedStringカラムはDoubleDeltaを使用して圧縮できなくなりました(#80220 の修正)。#84383(Jimmy Aguilar Mena)。 - JSON 数値を Decimal 型に変換する際の
JSONExtractにおける精度低下を修正しました。これにより、数値の JSON 値は浮動小数点の丸め誤差を回避し、元の 10 進表現を正確に保持します。#85665(ssive7b)。
メモリおよびリソース管理
max_untracked_memory周りの誤ったメモリ管理を修正。 #83607 (Azat Khuzhin).- クエリ間で
async_read_countersを共有しないように変更。 #83423 (Azat Khuzhin). - 一時データストレージとして使用される場合に、ファイルキャッシュが初期化されていない可能性によるエラーを修正。 #83539 (Bharat Nallan).
filesystem_prefetches_limitを常に適用するように変更(MergeTreePrefetchedReadPoolの場合に限らず)。 #83999 (Azat Khuzhin).
コンフィグレーションおよび設定の修正
- URI 経由で設定を渡す場合、最後の値が採用されるようにしました。#82137 (Sema Checherinda).
- クライアント内のデータレース(グローバルコンテキストを使用しないようにすることで)および
session_timezoneの上書きの問題を修正しました(以前は、session_timezoneがusers.xml/ クライアントオプションで空でない値に設定され、クエリコンテキストでは空に設定されていた場合、本来はクエリコンテキストが優先されるべきところでusers.xmlの値が使用されていましたが、現在は常にクエリコンテキストがグローバルコンテキストより優先されます)。#82444 (Azat Khuzhin). - サーバーの動作がスタックしないようにするため、
threadpool_writer_pool_sizeを 0 に設定することを禁止しました。#82532 (Bharat Nallan). - 設定項目
role_cache_expiration_time_secondsの構成における軽微な整数オーバーフローを解消しました(issue #83374)。#83461 (wushap). - 論理エラーを引き起こす可能性があるため、
max_insert_block_sizeに 0 を指定することを禁止しました。#83688 (Bharat Nallan). estimateCompressionRatio()においてblock_size_bytes = 0の場合に発生する無限ループを修正しました。#83704 (Azat Khuzhin).date_time_input_formatなどのパラメータが、multipart HTTP リクエスト使用時に無視されていた問題を修正しました。#85570 (Sema Checherinda).
MongoDB の修正
- 以前は、
MongoDBテーブルエンジンの定義でhost:port引数にパスコンポーネントを含めることができましたが、これは暗黙的に無視されていました。MongoDB 連携機能では、そのようなテーブルの読み込みは拒否されます。この修正により、MongoDBエンジンが 5 つの引数を取る場合には、そのようなテーブルの読み込みを許可し、引数で指定されたデータベース名を使用してパスコンポーネントを無視します。 注: この修正は、新しく作成されたテーブルやmongoテーブル関数を用いたクエリ、辞書ソースおよび名前付きコレクションには適用されません。 #81942 (Vladimir Cherkasov).
その他の修正
- 以前のバージョンでは、
/jsへのリクエストに対してサーバーが過剰な内容を返していました。これにより #61890 が解決されました。#81895(Alexey Milovidov)。 InterpreterInsertQuery::extendQueryLogElemImplを修正し、(名前に-のような特殊文字が含まれている場合など)必要に応じてデータベース名およびテーブル名にバッククォートを追加するよう修正しました。 #81528 (Ilia Shvyrialkin).- suggestion スレッドとメインクライアントスレッドの間で発生し得るデータレースを修正。 #82233 (Azat Khuzhin).
- union/intersect/except_default_mode の書き換えにおける例外安全性の問題を修正。 #82664 をクローズ。 #82820 (Alexey Milovidov).
- キャッシュを行わない Database 実装を使用している場合、対応するテーブルのメタデータは、カラムが返されて参照が無効になった後に削除されます。 #82939 (buyval01).
- JSONEachRowWithProgress における Onprogress 呼び出しが終了処理と同期されるように変更されました。 #83879 (Sema Checherinda).
MATERIALIZE COLUMNクエリの実行時にchecksums.txtに予期しないファイルが含まれ、最終的にデータパートが detached 状態になる可能性があった、まれに発生するバグを修正しました。 #84007 (alesapin).- パーツの定期的なリフレッシュ時に例外を適切に処理するようにしました。 #84083 (Azat Khuzhin).
- クエリ内のブール値リテラルに対するカラム名の生成を、
1/0ではなくtrue/falseを使用するように修正し、ブール値リテラルと整数リテラルのあいだでカラム名が衝突しないようにします。 #84945 (xiaohuanlin). - Merge テーブルエンジンにおいて不正確なソートが発生する可能性のある問題を修正します。 #85025 (Xiaozhe Yu).
- DiskEncrypted 向けの不足していた API を実装。 #85028 (Azat Khuzhin).
- 名前の競合が発生する場合に、新しいアナライザーが
WITH句内で外側のエイリアスを参照できるようにする後方互換性用の設定を導入しました。これにより #82700 が修正されます。 #83797 (Dmitry Novik)。 - analyzer を有効にしている場合、
remoteテーブル関数のview(...)引数内で任意のテーブルを参照できるようにしました。#78717 を修正。#79377 を修正。#83844(Dmitry Novik)。 plain_rewritable/plainメタデータタイプに対して、(実験的トランザクションで使用される MergeTree での)追記型書き込みが適切に処理されるように修正しました。以前はこれらのタイプは単純に無視されていました。 #83695 (Tuan Pham Anh).IAccessStorageにおけるロガーの使用を修正。 #84365 (Konstantin Bogdanov)。- データレイクでの仮想カラムを用いたファイルのプルーニングを修正。 #84520 (Kseniia Sumarokova).
- 遅延しているリモートソースをクエリした際に、ベクターの範囲外アクセスが発生する可能性があった問題を修正しました。 #84820 (George Larionov).
- オブジェクトキューエンジンのテーブルメタデータに、すべての設定が正しく保存されるようにしました。 #84860 (Antonio Andelic).
- lazyカラムを外部ソートと併用した場合に発生する
CORRUPTED_DATAエラーを修正しました。 #84738 (János Benjamin Antal). SYSTEM DROP REPLICAクエリ中の不要なgetStatus()呼び出しを削除しました。バックグラウンドでテーブルが削除されている場合に、Shutdown for storage is called例外がスローされてしまう問題を修正しました。 #85220 (Nikolay Degterinsky).CREATE OR REPLACEおよびRENAMEクエリに、不足していたテーブル名の長さチェックを追加しました。 #85326 (Michael Kolupaev).- JSON に対する
ALTER UPDATEの実行中に発生するクラッシュとデータ破損を修正。 #85383 (Pavel Kruglov). - 長い文字列に対する CoalescingMergeTree のセグメンテーションフォルトを修正しました。これにより #84582 がクローズされます。#85709(scanhex12)。
send_logs_source_regexpを修正(#85105 における非同期ログ処理のリファクタリング後)。 #85797(Azat Khuzhin)。MEMORY_LIMIT_EXCEEDEDエラー時に update_field を持つ辞書で起こりうる不整合を修正。#85807(Azat Khuzhin)。url()テーブル関数による HTTP リクエストを修正し、標準以外のポートへアクセスする際にHostヘッダーにポート番号が正しく含まれるようにしました。これにより、開発環境で一般的な、カスタムポートで動作する MinIO などの S3 互換サービスに対して事前署名付き URL を使用する場合に発生していた認証エラーが解消されます。(#85898 を修正)。#85921(Tom Quist)。