メインコンテンツへスキップ
メインコンテンツへスキップ

2026年の変更履歴

ClickHouse リリース 26.1、2026-01-29。プレゼンテーションビデオ

後方互換性を持たない変更

  • フォーマッタにおけるエイリアスの誤った置換によって発生していた一貫性のないフォーマットを修正します。これにより #82833 がクローズされます。これにより #82832 がクローズされます。これにより #68296 がクローズされます。この変更は後方互換性に影響する可能性があります。analyzer が無効化されている場合、IN でエイリアスを参照している特定の CREATE VIEW クエリを処理できません。非互換性を避けるには、analyzer を有効化してください(24.3 以降はデフォルトで有効になっています)。#82838Alexey Milovidov)。
  • コーデック DEFLATE_QPLZSTD_QAT は削除されました。既存の DEFLATE_QPL または ZSTD_QAT で圧縮されたデータは、アップグレード前に別のコーデックへ変換することを推奨します。これらのコーデックを使用するには、設定 enable_deflate_qpl_codec および enable_zstd_qat_codec を有効にしておく必要があった点に注意してください。 #92150 (Robert Schulze)。
  • system.query_log.exception における stderr キャプチャを有効化して UDF のデバッグを改善しました。以前は、UDF の stderr はファイルにのみログ出力され、クエリログには表示されなかったため、デバッグが不可能でした。今回の変更により、stderr はデフォルトで例外を発生させるようになり、スロー前に最大 1MB まで蓄積されます。その結果、system.query_log.exception に完全な Python のトレースバックとエラーメッセージが表示され、効果的なトラブルシューティングが可能になります。#92209Xu Jia)。
  • JOIN USING () 句における空のカラムリストは、現在は構文エラーと見なされるようになりました。以前はクエリ実行中に INVALID_JOIN_ON_EXPRESSION になるはずでしたが、Join ストレージとの結合など一部のケースでは LOGICAL_ERROR が発生していました。#82502 をクローズ。#92371Vladimir Cherkasov)。
  • JSON 用の高度な共有データ機能をデフォルトで有効化します。この変更以降は、25.8 より前のバージョンへのダウングレードは不可能になります。これらのバージョンは JSON カラムを含む新しいデータパーツを読み取ることができないためです。安全にアップグレードするには、compatibility 設定を前のバージョンに設定するか、MergeTree 設定で dynamic_serialization_version='v2', object_serialization_version='v2' を指定することを推奨します。#92511Pavel Kruglov)。
  • JSON 型における SKIP REGEXP のデフォルト動作を部分一致に変更しました。 #79250 をクローズしました。 #92847Pavel Kruglov)。
  • 「simple な ALIAS カラムへの INSERT を許可する変更」をリバート(ClickHouse/ClickHouse#84154 をリバート)。カスタムフォーマットでは動作せず、設定でも制御されていません。#92849Azat Khuzhin)。
  • データレイクカタログがオブジェクトストレージにアクセスできない場合にエラーを発生させる設定。 #93606 (Konstantin Vedernikov).
  • Lazy データベースエンジンは削除され、利用できなくなりました。#91231 をクローズしました。#93627Alexey Milovidov)。
  • metric_logtransposed_with_wide_view モードを削除しました。このモードはバグにより使用できないためです。このモードで system.metric_log を定義することは、もはやできなくなりました。この変更により、#78412 の一部が元に戻ります。#93867Alexey Milovidov)。
  • ワークロードのCPUスケジューリングは、既定でプリエンプティブになりました。cpu_slot_preemption サーバー設定を参照してください。 #94060 (Sergei Trifonov)。
  • パーツの破損を防ぐために索引ファイル名をエスケープします。この変更により、以前のバージョンで作成された、名前に非 ASCII 文字を含む索引は ClickHouse で読み込めなくなります。これに対処するには、MergeTree の SETTING escape_index_filenames を使用してください。 #94079 (Raúl Marín).
  • フォーマット設定 exact_rows_before_limitrows_before_aggregationcross_to_inner_join_rewriteregexp_dict_allow_hyperscanregexp_dict_flag_case_insensitiveregexp_dict_flag_dotall および dictionary_use_async_executor は、通常の(非フォーマット)設定に変更されました。これは純粋に内部的な変更であり、(可能性は低いですが)Iceberg、DeltaLake、Kafka、S3、S3Queue、Azure、Hive、RabbitMQ、Set、FileLog、または NATS のテーブルエンジン定義でこれらの設定のいずれかを指定している場合を除き、ユーザーから見える副作用はありません。これらのケースでは、以前はこれらの設定は無視されていましたが、現在はそのような定義はエラーとなります。 #94106 (Robert Schulze)。
  • joinGet/joinGetOrNull 関数は、背後で使用される Join テーブルに対して SELECT 権限を必須とするようになりました。この変更以降、joinGet('db.table', 'column', key) を実行するには、Join テーブルで定義されているキー カラムと、取得対象の属性カラムの両方に対して SELECT 権限が必要です。これらの権限を持たないクエリは ACCESS_DENIED により失敗します。移行にあたっては、テーブル全体へのアクセスには GRANT SELECT ON db.join_table TO user を、カラム単位のアクセスには GRANT SELECT(key_col, attr_col) ON db.join_table TO user を使用して、必要な権限を付与してください。この変更は、明示的な SELECT 権限が事前に設定されていなかった joinGet / joinGetOrNull に依存するすべてのユーザーおよびアプリケーションに影響します。 #94307 (Vladimir Cherkasov)。
  • CREATE TABLE ... AS ... クエリについては、SHOW COLUMNS をチェックするようにしました。以前は SHOW TABLES をチェックしていましたが、この種の権限チェックとしては誤りでした。#94556pufit)。
  • Hash 出力フォーマットをブロックサイズに依存しないようにしました。#94503Alexey Milovidov)。これにより、以前のバージョンと比べて出力されるハッシュ値が変わることに注意してください。

新機能

  • ClickHouse Keeper 用の HTTP API と組み込み Web UI。 #78181 (pufit).
  • 非同期挿入の重複排除が、依存する materialized view でも動作するようになりました。block_id による衝突が発生した場合、元のブロックからその block_id に関連付けられた行がフィルタリングで取り除かれ、残りの行に対して、関連するすべての materialized view の SELECT クエリが適用されます。これにより、競合する行を含まない元のブロックが再構築されます。 #89140 (Sema Checherinda)。materialized view が関与している場合でも、非同期挿入で重複排除を使用できるようになりました。 #93957 (Sema Checherinda)。
  • projection 索引機能を簡素化し拡張するための新しい構文とフレームワークを導入しました。これは https://github.com/ClickHouse/ClickHouse/pull/81021 のフォローアップです。 #91844 (Amos Bird)。
  • Array カラム向けのテキスト索引サポートを追加。#89895Jimmy Aguilar Mena)。
  • デフォルトで use_variant_as_common_type を有効にし、これにより Array 内や UNION クエリ内、if / multiIf / case の各分岐内で互換性のない型を使用できるようにしました。 #90677 (Alexey Milovidov).
  • 新しいシステムテーブル zookeeper_info を追加しました。#88014 を実装しています。 #90809Smita Kulkarni)。
  • すべての関数で Variant 型をサポートするようにしました。 #90900 (Bharat Nallan).
  • 主にバージョン情報を含む ClickHouse_Info メトリクスを Prometheus の /metrics エンドポイントに追加し、詳細なバージョン情報を時間の経過とともに追跡するチャートを作成できるようにしました。#91125Christoph Wurm)。
  • keeper 向けにクラスタ構成を変更できる新しい4文字の rcfg コマンドを導入しました。このコマンドは、標準の reconfigure リクエストよりも柔軟かつ広範な構成変更を可能にします。コマンドは引数として json 文字列を受け取ります。TCP インターフェイスに送信されるバイト列全体は、次の形式になります: rcfg{json_string_length_big_endian}{json_string}。コマンドの例は次のとおりです: {"preconditions": {"leaders": [1, 2], "members": [1, 2, 3, 4, 5]}, "actions": [{"transfer_leadership": [3]}, {"remove_members": [1, 2]}, {"set_priority": [{"id": 4, "priority": 100}, {"id": 5, "priority": 100}]}, {"transfer_leadership": [4, 5]}, {"set_priority": [{"id": 3, "priority": 0}]}]}#91354alesapin)。
  • 指定されたセパレーターで区切られた文字列内の部分文字列の順序を反転させる関数 reverseBySeparator を追加しました。 #91463 をクローズしました。 #91780Xuewei Wang)。
  • 挿入ブロックの構成をより細かく制御できる新しい設定 max_insert_block_size_bytes を追加しました。 #92833Kirill Kopnev)。
  • ignore_on_cluster_for_replicated_database 設定が有効な場合、Replicated データベースに対して ON CLUSTER 句付きの DDL クエリを実行できます。この場合、クラスター名は無視されます。 #92872 (Kirill)。
  • mergeTreeAnalyzeIndex 関数を実装しました。 #92954 (Azat Khuzhin).
  • 新しい設定 use_primary_key を追加しました。プライマリキーに基づく granule pruning を無効化するには、false に設定してください。 #93319 (Nihal Z. Miaji).
  • icebergLocalCluster テーブル関数を追加しました。 #93323 (Anton Ivashkin).
  • 2 点間の cosine distance を近似計算する cosineDistanceTransposed 関数を追加しました。 #93621 (Raufs Dunamalijevs)。
  • 各データパーツのファイル数を示す files カラムを system.parts テーブルに追加しました。 #94337 (Match).
  • 同時実行制御のために max-min 公平スケジューラを追加しました。多くのクエリが限られた CPU スロットを奪い合うような、高いオーバーサブスクリプション状態でも、より良い公平性を提供します。時間の経過とともに多くのスロットを蓄積した長時間実行クエリによって、短時間実行クエリが不利にならないようにします。concurrent_threads_scheduler サーバー設定の max_min_fair 値を指定することで有効になります。#94732Sergei Trifonov)。
  • ClickHouse クライアントがサーバーに接続する際に、TLS SNI を上書きできる機能を追加しました。 #89761 (Matt Klein).
  • joinGet 関数呼び出しで一時テーブルをサポートできるようにしました。 #92973 (Eduard Karacharov)。
  • DeltaLake テーブルエンジンで deletion vectors をサポートしました。 #93852 (Kseniia Sumarokova).
  • deltaLakeCluster で削除ベクターをサポートするようになりました。 #94365 (Kseniia Sumarokova).
  • データレイク向けの Google Cloud Storage サポート。 #93866 (Konstantin Vedernikov).

実験的機能

パフォーマンスの改善

  • JSON の高度な共有データをデフォルトで有効化します。この変更により、バージョン <25.8 へのダウングレードができなくなります。これらのバージョンでは JSON カラムを含む新しいデータパーツを読み取れないためです。安全なアップグレードのため、compatibility 設定を前のバージョンに設定するか、MergeTree 設定 dynamic_serialization_version='v2', object_serialization_version='v2' を設定することを推奨します。 #92511 (Pavel Kruglov).
  • 設定 use_skip_indexes_on_data_read をデフォルトで有効化しました。この設定により、読み取りと同時にストリーミング形式でフィルタリングが可能になり、クエリのパフォーマンスと起動時間が向上します。 #93407 (Shankar Iyer).
  • Parquet リーダー v3 におけるデータレイクの PREWHERE および multistage PREWHERE。 #89101 を解決します。 #93542 (Konstantin Vedernikov).
  • LowCardinality カラムに対する DISTINCT のパフォーマンスを向上させます。 #5917 を解決します。 #91639 (Nihal Z. Miaji).
  • distinctJSONPaths 集計関数を最適化し、データパーツから JSON パスだけを読み取り、JSON カラム全体を読み取らないようにします。 #92196 (Pavel Kruglov).
  • JOIN にさらに多くのフィルターをプッシュダウンします。 #85556 (Nikita Taranov).
  • フィルターが一方の入力のみを使用する場合の JOIN ON 条件からのプッシュダウンを、より多くのケースでサポートします。ANYSEMIANTI JOIN をサポートします。 #92584 (Dmitry Novik).
  • SEMI JOIN のフィルタープッシュダウンに同等のセットを使用することを許可します。 #85239 を解決します。 #92837 (Dmitry Novik).
  • 右側が空の場合、ハッシュ JOIN の左側読み取りをスキップします。以前は最初の非空ブロックまで左側を読み取っていましたが、重いフィルタリングや集計がある場合に多くの処理が発生する可能性がありました。 #94062 (Alexander Gololobov).
  • クエリーパイプライン内のデータパーティショニングに "fastrange" (Daniel Lemire) 手法を使用します。これにより、並列ソートと JOIN のパフォーマンスが向上する可能性があります。 #93080 (Alexey Milovidov).
  • PARTITION BY がソートキーまたはそのプレフィックスと一致する場合のウィンドウ関数のパフォーマンスを向上させます。 #87299 (Nikita Taranov).
  • 外部フィルターをビューにプッシュダウンし、ローカルおよびリモートノードで PREWHERE を適用できるようにします。 #88189 を解決します。 #88316 (Igor Nikonov).
  • より多くの関数に対して JIT コンパイルを実装します。 #73509 を解決します。 #88770 (Alexey Milovidov with Taiyang Li).
  • FINAL クエリで使用されるスキップインデックスがプライマリキーの一部を構成するカラムにある場合、他のパーツでのプライマリキー交差チェックの追加ステップは不要となり、これを実行しなくなりました。 #85897 を解決します。 #93899 (Shankar Iyer).
  • 小数 LIMIT および OFFSET のパフォーマンスとメモリ使用量を最適化します。 #91167 (Ahmed Gouda).
  • Parquet Reader V3 プレフェッチャーの高速ランダム読み取りロジックの使用を修正します。 #90890 を解決します。 #91435 (Arsen Muk).
  • icebergCluster のパフォーマンスを向上させます。 #91462 を解決します。 #91537 (Yang Jiang).
  • 定数フィルターによる仮想カラムのフィルタリングを回避します。 #91588 (c-end).
  • 非常に広いテーブルに対する wide パーツを使用した INSERT/マージのメモリ使用量を、適応型書き込みバッファーを有効化することで削減します。暗号化ディスクに対する適応型書き込みバッファーのサポートを追加します。 #92250 (Azat Khuzhin).
  • インデックス内の検索トークン数を削減することで、テキストインデックスと sparseGrams トークナイザーによる全文検索のパフォーマンスを向上させました。 #93078 (Anton Popov).
  • 関数 isValidASCII を、すべての ASCII 入力値(肯定的な結果の場合)に対して最適化しました。 #93347 (Robert Schulze).
  • 読み取り順最適化が、WHERE 条件により ORDER BY カラムが定数である場合を認識し、高効率な逆順読み取りを可能にします。これにより、WHERE tenant='42' ORDER BY tenant, event_time DESC のようなマルチテナントクエリで、完全ソートを必要とする代わりに InReverseOrder を使用できるようになります。 #94103 (matanper).
  • メモリ消費を最適化するため、ASTLiteral の子要素の代わりに (string, integer) ペアで値パラメーターを格納する Enum AST 特殊クラスを導入します。 #94178 (Ilya Yatsishin).
  • 複数のレプリカに対する分散インデックス分析を実装します。共有ストレージやクラスタ内の大量データに有効です。これは SharedMergeTree (ClickHouse Cloud) に適用可能であり、共有ストレージ上の他の MergeTree テーブル種別にも適用可能になる可能性があります。 #86786 (Azat Khuzhin).
  • 以下のケースで JOIN ランタイムフィルターを無効化することで、そのオーバーヘッドを削減します: - ブルームフィルターに設定されたビットが多すぎる場合 - ランタイムでフィルタリングされる行が少なすぎる場合。 #91578 (Alexander Gololobov).
  • 相関サブクエリの入力を複数回評価するのを避けるため、メモリ内バッファーを使用します。 #79890 の一部です。 #91205 (Dmitry Novik).
  • 並列レプリカ読み取りで、全レプリカが孤立範囲を奪い合うことを許可します。これにより、負荷分散が向上し、ロングテール遅延が低減されます。 #91374 (zoomxi).
  • 外部集計/ソート/JOIN がすべてのコンテキストでクエリ設定 temporary_files_codec を尊重するようになりました。また、grace hash JOIN の欠落したプロファイルイベントを修正しました。 #92388 (Vladimir Cherkasov).
  • 集計/ソート中のディスクへのスピル時のクエリメモリ使用量検出をより堅牢にします。 #92500 (Azat Khuzhin).
  • 集計キー カラムの総行数および NDV(distinct 値の数)統計を推定します。 #92812 (Alexander Gololobov).
  • simdcomp を用いたポスティングリスト圧縮を最適化します。 #92871 (Peng Jian).
  • バケットを使用した S3Queue の Ordered モード処理をリファクタリングします。これにより、パフォーマンスが向上し、keeper リクエスト数が減少するはずです。 #92889 (Kseniia Sumarokova).
  • 関数 mapContainsKeyLike および mapContainsValueLike が、それぞれ mapKeys() または mapValues() に対するテキストインデックスを活用できるようになりました。 #93049 (Michael Jarrett).
  • 非 Linux システムでのメモリ使用量を削減します(jemalloc のダーティページの即時パージを有効化)。 #93360 (Eduard Karacharov).
  • ダーティページサイズの比率が max_server_memory_usage に対して memory_worker_purge_dirty_pages_threshold_ratio を超えた場合に、jemalloc アリーナのパージを強制します。 #93500 (Eduard Karacharov).
  • AST のメモリ使用量を削減します。 #93601 (Nikolai Kochetov).
  • テーブル読み取り時に ClickHouse がメモリ制限を遵守しないケースがありました。この動作を修正しました。 #93715 (Nikita Mikhaylov).
  • CHECK_STAT および TRY_REMOVE Keeper 拡張機能をデフォルトで有効化します。 #93886 (Mikhail Artemenko).
  • Iceberg マニフェストファイルエントリから位置削除に対応するファイル名の上下限を解析し、対応するデータファイルの選択を改善します。 #93980 (Daniil Ivanik).
  • JSON カラム内の動的サブカラムの最大数を制御するための設定をさらに 2 つ追加します。1 つ目は MergeTree 設定 merge_max_dynamic_subcolumns_in_compact_part(すでに追加された merge_max_dynamic_subcolumns_in_wide_part に類似)で、Compact パーツへのマージ中に作成される動的サブカラムの数を制限します。2 つ目はクエリレベルの設定 max_dynamic_subcolumns_in_json_type_parsing で、JSON データの解析中に作成される動的サブカラムの数を制限し、INSERT 時に制限を指定できるようにします。 #94184 (Pavel Kruglov).
  • 一部のケースで JSON カラムの squashing をわずかに最適化します。 #94247 (Pavel Kruglov).
  • 本番環境の経験に基づき、スレッドプールキューサイズを低減します。また、MergeTree からデータを読み取る前に明示的なメモリ消費チェックを追加します。 #94692 (Nikita Mikhaylov).
  • CPU 飢餓状態でスケジューラーが MemoryWorker スレッドを優先することを保証します。これにより、ClickHouse プロセスを深刻な脅威から保護します。 #94864 (Nikita Mikhaylov).
  • MemoryWorker のメンスレッドとは別のスレッドで jemalloc ダーティページのパージを実行します。パージが遅い場合、RSS 使用量の更新が遅延し、プロセスの OOM キルにつながる可能性があります。また、総メモリ使用量の比率に基づいてダーティページのパージを開始する新しい設定 memory_worker_purge_total_memory_threshold_ratio を導入します。 #94902 (Antonio Andelic).

改善

  • system.blob_storage_log が Azure Blob Storage での利用が可能になりました。 #93105 (Alexey Milovidov).
  • blob_storage_log を Local および HDFS 向けに実装。S3Queueblob_storage_log でログ出力にディスク名以外のものを使用していた場合に発生するエラーを修正。blob_storage_logerror_code カラムを追加。ローカルテストを簡素化するためにテスト設定ファイルを分割。 #93106 (Alexey Milovidov).
  • clickhouse-clientclickhouse-local は、数値リテラル入力時に桁区切り(千、百万など)を強調表示するようになりました。これにより #93100 が解決されました。#93108Alexey Milovidov)。
  • clickhouse-client で、等号の前後に空白を含むコマンドライン引数をサポートするようにしました。#93077 をクローズ。#93174Cole Smith)。
  • &lt;interactive_history_legacy_keymap&gt;true&lt;/interactive_history_legacy_keymap&gt; を使用すると、CLI クライアントは通常の検索には従来どおり Ctrl-R を使用し、Ctrl-T でファジー検索を行えるようになりました。 #87785 (Larry Snizek).
  • キャッシュをクリアするためのステートメント SYSTEM DROP [...] CACHE は、そのステートメントがキャッシュを無効化するものだという誤った印象を与えていました。ClickHouse では、より明確な SYSTEM CLEAR [...] CACHE ステートメントがサポートされるようになりました。古い構文も引き続き利用可能です。#93727Pranav Tiwari)。
  • EmbeddedRocksDB で複数のカラムをプライマリキーとしてサポートします。 #32819 をクローズします。 #33917usurai)。
  • スカラ値に対して非定数の IN を使用できるようになりました(val1 NOT IN if(cond, val2, val3) のようなクエリ)。#93495Yarik Briukhovetskyi)。
  • サポートされていないため、HeadObjectUploadPart および CompleteMultipartUpload の各 S3 リクエストへ x-amz-server-side-encryption ヘッダーが伝播されないように防ぎます。 #64577 (Francisco J. Jurado Moreno).
  • ALTER クエリに対して ALTER TABLE <table> ATTACH PART <part_name> FROM <directory_name> という構文を追加しました。これにより、detached/ ディレクトリ配下の任意のサブディレクトリからパーツをアタッチできるようになります。これは、broken-on-startunexpected などのカスタムプレフィックスを持つパーツを、誤ってデタッチしてしまった場合に、手作業による介入なしで再アタッチする際に役立ちます。以前は、ファイルシステム上でディレクトリ名を手動で変更する必要がありました。#74816Anton Popov)。
  • S3Queue の ordered モードにおいて Hive パーティショニングを追跡できるようにした。#71161 を解決。#81040 (Anton Ivashkin)。
  • ファイルシステムキャッシュにおける領域予約を最適化しました。FileCache::collectCandidatesForEviction はユニークロックを取得せずに実行されるようになりました。 #82764 (Kseniia Sumarokova).
  • サーバーログのサイズおよび時間に基づく複合ローテーション戦略をサポートしました。 #87620 (Jianmei Zhang).
  • CLI クライアントで、コマンドラインオプション --no-warnings の代わりに <warnings>false</warnings> を指定できるようになりました。 #87783 (Larry Snizek)。
  • avg 集約関数で Date、DateTime、Time 型の値を引数として扱えるようにしました。#82267 をクローズ。#87845Yarik Briukhovetskyi)。
  • 最適化機能 use_join_disjunctions_push_down はデフォルトで有効です。 #89313 (Alexey Milovidov)。
  • 相関サブクエリで、より多くのテーブルエンジンおよびデータソースの種類をサポートしました。#80775 をクローズ。#90175Dmitry Novik)。
  • パラメータ化されたビューのスキーマが明示的に指定されている場合、その内容が表示されます。 #88875#81385 をクローズしました。 #90220Grigorii Sokolik)。
  • Keeper のログエントリで、最後にコミットされたインデックスより前のログが存在する場合、そのギャップを正しく処理するようにしました。 #90403 (Antonio Andelic)。
  • JBOD ボリューム上でも正しく機能するように min_free_disk_bytes_to_perform_insert 設定を改善しました。 #90878 (Aleksandr Musorin).
  • S3 テーブルエンジンおよび s3 テーブル関数向けの名前付きコレクションで、storage_class_name 設定を指定できるようにしました。 #91926 (János Benjamin Antal).
  • system.zookeeper 経由で補助的な ZooKeeper を挿入することをサポートしました。 #92092 (RinChanNOW).
  • Keeper 向けに新しいメトリクスを追加:KeeperChangelogWrittenBytesKeeperChangelogFileSyncMicrosecondsKeeperSnapshotWrittenBytes および KeeperSnapshotFileSyncMicroseconds の profile events に加えて、KeeperBatchSizeElementsKeeperBatchSizeBytes の histogram metrics を追加しました。 #92149 (Miсhael Stetsyuk)。
  • 新しい設定 trace_profile_events_list を追加し、trace_profile_event によるトレース対象を指定されたイベント名のリストに制限できるようにしました。これにより、大規模なワークロードに対して、より精度の高いデータ収集が可能になります。 #92298 (Alexey Milovidov)。
  • 一時停止可能なフェイルポイント向けに SYSTEM NOTIFY FAILPOINT をサポート。- SYSTEM WAIT FAILPOINT fp の PAUSE/RESUME をサポート。#92368 (Shaohua Wang).
  • system.data_skipping_indicescreation(暗黙的/明示的)カラムを追加。#92378Raúl Marín)。
  • YTsaurus の dyn テーブルに対するカラム定義を Dictionary のソースに渡せるようにしました。 #92391 (MikhailBurdukov).
  • #63985 で、ポートごとに TLS 構成に必要なすべてのパラメータを指定できるようになりました(composable protocols を参照)。これにより、グローバルな TLS 設定に依存する必要がなくなりました。しかし、この実装では依然として暗黙的にグローバルな openSSL.server 設定セクションの存在を前提としており、ポートごとに異なる TLS 構成が必要なセットアップとは競合してしまいます。たとえば keeper-in-server デプロイメントでは、keeper 間通信と ClickHouse クライアント接続それぞれに対して、別々の TLS 設定が必要です。#92457Miсhael Stetsyuk)。
  • バイナリ形式でデコードされる型ノードの総数を制限し、悪意のあるペイロードを防止する新しい設定 input_format_binary_max_type_complexity を導入しました。 #92519 (Raufs Dunamalijevs)。
  • 実行中のタスクを system.background_schedule_pool{,_log} に反映するようにしました。ドキュメントを追加しました。 #92587 (Azat Khuzhin).
  • 履歴に一致が見つからない場合、クライアントの Ctrl+R 検索時に現在のクエリを実行するようにしました。 #92749 (Azat Khuzhin).
  • EXPLAIN indexes = 1 のエイリアスとして EXPLAIN indices = 1 をサポートします。#92483 をクローズします。#92774Pranav Tiwari)。
  • Parquet リーダーは、Tuple または Map のカラムを JSON として読み込めるようになりました。f.parquet 内のカラム x の型が Tuple または Map であっても、select x from file(f.parquet, auto, 'x JSON') が動作します。 #92864 (Michael Kolupaev)。
  • Parquet リーダーで空のタプルをサポート。#92868Michael Kolupaev)。
  • Azure Blob Storage でネイティブコピーが BadRequest(例: 不正なブロックリスト)で失敗した場合に、読み取り・書き込みコピーへのフォールバックを行うようにしました。これまでは、異なるストレージアカウント間で BLOB をコピーする際に発生していた Unauthorized エラーに対してのみフォールバックしていました。しかし、「The specified block list is invalid」エラーが発生することもあります。そのため、すべてのネイティブコピー失敗時に読み取り・書き込みにフォールバックするよう条件を更新しました。 #92888 (Smita Kulkarni).
  • 多数の S3 クエリを EC2 インスタンスプロファイル認証情報で同時に実行する際に発生していた、EC2 メタデータエンドポイントのスロットリングの問題を修正しました。以前は、各クエリが独自の AWSInstanceProfileCredentialsProvider を作成していたため、EC2 メタデータサービスへの同時リクエストが発生し、その結果、タイムアウトや HTTP response code: 403 エラーが発生する可能性がありました。現在は、認証情報プロバイダーがキャッシュされ、すべてのクエリ間で共有されます。 #92891 (Sav)。
  • insert_select_deduplicate 設定を再設計し、後方互換性を維持できるようにする機能を追加しました。 #92951 (Sema Checherinda)。
  • バックグラウンドタスクのうち平均より遅いもののみをログ出力するようにして(background_schedule_pool_log.duration_threshold_milliseconds=30)、タスクのログ出力が過剰にならないようにしました。#92965 (Azat Khuzhin)。
  • 以前のバージョンでは、一部の C++ 関数名が system.trace_log および system.symbols 内で正しく表示されず(「mangled」された形で表示され)、demangle 関数もそれらを適切に処理できていませんでした。これにより #93074 がクローズされました。 #93075 (Alexey Milovidov)。
  • backup_data_from_refreshable_materialized_view_targets というバックアップ設定を導入し、リフレッシャブルmaterialized view をバックアップ対象から除外できるようにしました。APPEND リフレッシュ戦略を持つ RMV は常にバックアップされます。 #93076 (Julia Kartseva). #93658 (Julia Kartseva)
  • 関数などの重い翻訳単位では、デバッグ情報を付加しないのではなく、最小限のデバッグ情報を付加するように変更しました。 #93079 (Alexey Milovidov).
  • MinIO 固有のエラーに対するエラーコードのマッピングを実装することで、AWS S3 C++ SDK に MinIO 互換サポートを追加しました。この変更により、AWS S3 の代わりに MinIO デプロイメントを使用している場合でも、ClickHouse が MinIO サーバーエラーを適切に処理して再試行できるようになり、セルフホストされた MinIO クラスター上でオブジェクトストレージを運用しているユーザーの信頼性が向上します。 #93082 (XiaoBinMu).
  • シンボル解決済みの jemalloc プロファイルを書き出し、ヒーププロファイル生成時にバイナリが不要になるようにしました。 #93099 (Azat Khuzhin).
  • clickhouse git-import ツールを復活させました。大規模なコミットや不正なコミットで動作しなくなっていました。https://presentations.clickhouse.com/2020-matemarketing/ を参照してください。 #93202 (Alexey Milovidov).
  • URL ストレージのパスワードをクエリログに表示しないようにしました。 #93245 (Konstantin Vedernikov).
  • flipCoordinatesGeometry 型をサポートするようになりました。 #93303 (Bharat Nallan).
  • SYSTEM INSTRUMENT の ADD/REMOVE 操作の UX を改善: 関数名に String リテラルを使用し、一致するすべての関数にパッチを適用し、REMOVE で function_name を使用できるようにしました。 #93345 (Pablo Marcos).
  • マージ処理中に統計をマテリアライズするかどうかを制御する新しい設定 materialize_statistics_on_merge を追加しました。デフォルト値は 1 です。 #93379 (Han Fei)。
  • ClickHouse では、DESCRIBE SELECT クエリにおける SELECT を、かっこで囲まずにパースできるようになりました。 #58382 をクローズしました。 #93429 (Yarik Briukhovetskyi)。
  • キャッシュの正しさ検証を確率的にランダム実行するようにしました。 #93439 (Kseniia Sumarokova).
  • 設定 type_json_allow_duplicated_key_with_literal_and_nested_object を追加し、リテラルとネストされたオブジェクトが混在する JSON 内で重複したパスを許可できるようにしました。例: {"a" : 42, "a" : {"b" : 42}}。一部のデータは、重複パスに対するこの制約が https://github.com/ClickHouse/ClickHouse/pull/79317 で導入される前に作成されたものであり、そのようなデータを後から操作すると、現在ではエラーになる可能性があります。この設定を使用すると、そのような古いデータもエラーなしで引き続き利用できます。 #93604 (Pavel Kruglov).
  • Pretty JSON でプリミティブ型の値を別々の行に出力しないようにしました。 #93836 (Pavel Kruglov).
  • 多くの alter table ... modify setting ... 文がある場合、5秒間ロックを取得できない場合があります。その場合は logical error よりも timeout を返す方が望ましいです。 #93856 (Han Fei).
  • 構文エラー発生時の過剰な出力を防止しました。この変更以前は、多数のクエリを含む可能性のある SQL スクリプト全体を出力していました。 #93876 (Alexey Milovidov).
  • Keeper 内で統計情報を使って check リクエストのバイトサイズを適切に計算するようにしました。 #93907 (Mikhail Artemenko).
  • 実行時のハッシュテーブルサイズの統計情報を結合の再順序付けに利用するかどうかを制御するための use_hash_table_stats_for_join_reordering 設定を追加しました。この設定はデフォルトで有効になっており、collect_hash_table_stats_during_joins の既存の挙動が維持されます。#93912Vladimir Cherkasov)。
  • ユーザーは、system.server_settings テーブル内のネストされたグローバルサーバー設定(例:logger.level)の一部を表示できるようになりました。これは、固定構造を持つ設定(リスト、列挙型、繰り返しなどを含まないもの)のみに対応します。 #94001Hechem Selmi)。
  • QBit で等価比較ができるようになりました。 #94078 (Raufs Dunamalijevs)。
  • Keeper が破損したスナップショットや不整合な変更ログを検出した場合、手動でアボートしたりファイルを自動的にクリーンアップしたりするのではなく、例外をスローするようにしました。これにより、手動での介入に依存する Keeper の動作がより安全になります。 #94168 (Antonio Andelic).
  • CREATE TABLE が失敗した場合に不要な残りが残る可能性があった問題を修正。 #94174 (Azat Khuzhin).
  • パスワードで保護された TLS キーが使用されている場合に発生する、未初期化メモリへのアクセス(OpenSSL のバグ)を修正しました。 #94182 (Konstantin Bogdanov)。
  • chdig を v26.1.1 に更新しました。 #94290Azat Khuzhin)。
  • S3Queue の ordered モードで、より汎用的なパーティショニングをサポートしました。 #94321 (Bharat Nallan).
  • 設定 allow_statistics_optimize にエイリアス use_statistics を追加しました。これにより、既存の設定 use_primary_key および use_skip_indexes との一貫性が高まりました。 #94366 (Robert Schulze).
  • Numbers から Enum への変換時に要素が存在するかどうかを確認するため、input_format_numbers_enum_on_conversion_error 設定を有効にしました。 #94384 (Elmi Ahmadov).
  • S3(Azure)Queue の Ordered モードにおいて、制限を追跡することで失敗したノードのクリーンアップを行うようにしました(これまでは Unordered モードで、失敗ノードおよび処理済みノードの両方に対してのみ行われていたため、今後は Ordered モードでも失敗ノードに対してのみ実行されます)。 #94412 (Kseniia Sumarokova).
  • clickhouse-local で default ユーザーに対してアクセス管理を有効化しました。clickhouse-localdefault ユーザーには access_management 権限が付与されておらず、そのため本来は無制限であるべきユーザーであるにもかかわらず、DROP ROW POLICY IF EXISTS のような操作が ACCESS_DENIED エラーで失敗していました。 #94501 (Alexey Milovidov)。
  • YTsaurus の辞書およびテーブルで named collection を有効化しました。 #94582 (MikhailBurdukov)。
  • S3 および Azure Blob Storage 向けの SQL で定義された名前付きコレクションを BACKUP/RESTORE でサポートしました。#94604 をクローズ。#94605Pablo Marcos)。
  • ordered モードにおける S3Queue 向けに、パーティションキーに基づくバケット分割のサポートを追加しました。 #94698 (Bharat Nallan).
  • 最も長時間実行されているマージの経過時間を報告する非同期メトリクスを追加しました。 #94825 (Raúl Marín)。
  • IcebergBitmapPositionDeleteTransform を使用してポジション削除を適用する前に、対応するファイルのチェックを追加。 #94897 (Yang Jiang).
  • view_duration_ms は、グループ内のスレッドの実行時間の合計ではなく、そのグループがアクティブだった時間を示すようになりました。 #94966 (Sema Checherinda).
  • hasAnyTokenshasAllTokens 関数における検索トークン数の最大数(64 に制限されていた)の制限を削除しました。例: SELECT count() FROM table WHERE hasAllTokens(text, ['token_1', 'token_2', [...], 'token_65']]); このクエリは検索トークンが 65 個あるため、BAD_ARGUMENTS エラーになっていました。この PR によりこの制限は完全に撤廃され、同じクエリはエラーなく実行されます。 #95152 (Elmi Ahmadov).
  • Numbers から Enums 型への変換時に値が存在するかどうかをチェックするための input_format_numbers_enum_on_conversion_error SETTING を追加しました。関連 Issue: #56144#56240Nikolay Degterinsky)。
  • Iceberg テーブルにおいて、データファイルと position delete ファイルの読み取り間でフォーマットパーサーリソースを共有し、メモリ割り当てを削減しました。 #94701 (Yang Jiang).

バグ修正(公式安定版リリースにおけるユーザー可視の不具合)

  • 事前定義済みのクエリハンドラーで、挿入時に末尾の空白がデータとして解釈されてしまう不具合を修正。 #83604 (Fabian Ponce)。
  • Join ストレージに対して outer から inner への join 最適化が適用された場合に発生していた INCOMPATIBLE_TYPE_OF_JOIN エラーを修正しました。 #80794 を解決しました。 #84292Vladimir Cherkasov)。
  • allow_experimental_join_right_table_sorting を有効にした状態でハッシュ結合を使用する際に発生する例外「Invalid number of rows in Chunk」を修正しました。 #86440 (yanglongwei).
  • ファイルシステムが大文字小文字を区別しない場合は、MergeTree で常にファイル名をハッシュに置き換えるようにしました。これまでは、大文字小文字を区別しないファイルシステム(macOS など)では、複数のカラム/サブカラム名が大文字小文字だけ異なる場合にデータ破損を招く可能性がありました。 #86559 (Pavel Kruglov).
  • materialized view 内部の基礎となるクエリに対して、CREATE 段階で完全な権限チェックを行うようにしました。 #89180 (pufit).
  • 定数引数でクラッシュしていた icebergHash 関数を修正しました。 #90335 (Michael Kolupaev).
  • トランザクションを伴わない mutation が、最終的にロールバックされるアクティブなトランザクション内のパーツを変更してしまうという論理エラーを修正しました。 #90469 (Shaohua Wang).
  • Ordinary データベースを Atomic データベースに変換した後に、system.warnings が正しく更新されるようになりました。 #90473 (sdk2).
  • Parquet ファイルの読み取り時に、クエリ内の別の場所で prewhere 式の一部が使用されている場合に発生するアサーション失敗を修正します。 #90635 (Max Kainov).
  • Iceberg をバケット分割モードで読み込む際に、単一ノードクラスタで発生していたクラッシュを修正しました。これにより #90913 がクローズされます。#91553Konstantin Vedernikov)。
  • サブカラム読み取り時の Log エンジンにおける発生しうる論理エラーを修正。#91710 をクローズ。#91711Pavel Kruglov)。
  • ATTACH AS REPLICATED 実行時に発生する「Storage does not support transaction」という論理エラーを修正。 #91772 (Shaohua Wang)。
  • LEFT ANTI JOIN に追加の post-condition がある場合に runtime フィルタが正しく動作しない問題を修正しました。 #91824 (Alexander Gololobov).
  • Nothing 型を含む null セーフな比較で発生していたエラーを修正します。#91834 をクローズ。#84870 をクローズ。#91821 をクローズ。#91884Yarik Briukhovetskyi)。
  • 非常に繰り返しの多い文字列データに影響する、ネイティブ Parquet リーダーの DELTA_BYTE_ARRAY デコード処理のバグを修正しました。 #91929 (Daniel Muino).
  • スキーマ推論時に、グロブでマッチしたすべてのファイルではなく、推論元となったファイルのみのスキーマをキャッシュするようにしました。 #91745 をクローズ。 #92006 (Pavel Kruglov)。
  • 誤ったアーカイブエントリのサイズヘッダーが原因で発生する Couldn't pack tar archive: Failed to write all bytes エラーを修正。 #89075 を解決。#92122Julia Kartseva)。
  • INSERT SELECT においてリクエストストリームを解放し、HTTP 接続が閉じられないようにしました。 #92175 (Sema Checherinda).
  • USING 句と join_use_nulls を使用する複数の JOIN を含むクエリで発生していた論理エラーを修正しました。 #92251 (Vladimir Cherkasov)。
  • join_use_nulls 使用時の結合再順序付けにおける論理エラーを修正し、https://github.com/clickhouse/clickhouse/issues/90795 をクローズ。 #92289 (Vladimir Cherkasov).
  • negate リテラルを含む arrayElement の AST フォーマットの不整合を修正。#92288#92212#91832#91789#91735#88495#92386 をクローズ。#92293Pavel Kruglov)。
  • join_on_disk_max_files_to_merge SETTING で発生し得るクラッシュを修正。 #92335 (Bharat Nallan).
  • 関連する issue:https://github.com/ClickHouse/support-escalation/issues/6365。 #92339Tuan Pham Anh)。
  • SYSTEM SYNC FILE CACHE における欠落していたアクセスチェックを修正。#92101 をクローズ。#92372Kseniia Sumarokova)。
  • ウィンドウ関数および複数の引数に対する count_distinct_optimization の処理を修正。 #92376 (Raúl Marín).
  • 特定の集計関数をウィンドウ関数と併用した際に発生する「Cannot write to finalized buffer」エラーを修正しました。#91415 をクローズ。#92395Jimmy Aguilar Mena)。
  • CREATE TABLE ... AS urlCluster() とデータベースエンジン Replicated を使用した場合の論理エラーを修正しました。#92216 をクローズ。#92418Kseniia Sumarokova)。
  • MergeTree における mutation 実行時に、ソースパーツのシリアライゼーション情報の設定を継承するようにしました。これにより、データ型シリアライゼーションの変更後に、mutation 後のパーツに対するクエリ結果が誤ったものになる可能性があった問題が修正されます。 #92419 (Pavel Kruglov).
  • 同じ名前を持つカラムとサブカラムの競合により、誤ったシリアライゼーションが使用されてクエリが失敗する可能性があった問題を修正しました。#90219 をクローズ。#85161 をクローズ。#92453Pavel Kruglov)。
  • 外部結合を内部結合に変換する際に、意図しないクエリプランの変更によって発生していた LOGICAL_ERROR を修正しました。また、結合時に集約キーへ単射関数が適用されているケースでもこの最適化を適用できるよう、要件を緩和しました。 #92503 (János Benjamin Antal).
  • 空のタプルカラムのソート中に発生しうるエラー SIZES_OF_COLUMNS_DOESNT_MATCH を修正しました。 #92422 をクローズしました。 #92520Pavel Kruglov)。
  • JSON 型の互換性のない型付きパスをチェックするようにしました。#91577 をクローズ。#92539Pavel Kruglov)。
  • Backup データベースに対する SHOW CREATE DATABASE で発生するデッドロックを修正。 #92541 (Azat Khuzhin).
  • hypothesis 索引の検証時に適切なエラーコードを使用するようにしました。 #92559 (Raúl Marín).
  • analyzer におけるカラムエイリアス内の動的サブカラムの解決処理を修正しました。以前は、カラムエイリアス内の動的サブカラムは getSubcolumn でラップされており、場合によってはまったく解決されないことがありました。#91434 をクローズします。#92583Pavel Kruglov)。
  • 第二引数が null の場合に tokens() がクラッシュする問題を修正しました。 #92586 (Raúl Marín).
  • 基になる const PREWHERE カラムをインプレースで変更してしまうことで発生し得るクラッシュを修正しました。これは、カラムの縮小(IColumn::shrinkToFit)やフィルタリング(IColumn::filter)が複数スレッドから同時に呼び出された場合に発生する可能性がありました。 #92588 (Arsen Muk).
  • 巨大なパーツ(4,294,967,295 行を超える)を含むテーブル上でのテキストインデックスの作成およびマテリアライズは、一時的に無効化されています。この制限は、現在のインデックス実装がそのような大きなパーツをまだサポートしておらず、不正確なクエリ結果が返されるのを防ぐためのものです。 #92644 (Anton Popov)。
  • JOIN の実行中に発生していた論理エラー Too large size (A) passed to allocator を修正します。#92043 をクローズします。#92667Yarik Briukhovetskyi)。
  • ngram 長さ(第 1 パラメータ)が 8 を超える ngrambf_v1 索引で例外がスローされる不具合を修正しました。 #92672 (Robert Schulze).
  • ZooKeeper ストレージが使用されている場合に、バックグラウンドでの名前付きコレクション再読み込み中に発生する未処理例外を修正します。https://github.com/ClickHouse/clickhouse-private/issues/44180 をクローズします。#92717Kseniia Sumarokova)。
  • ワイルドカードによるアクセス権付与チェックにおけるロジックの誤りを修正します。以前の試みである https://github.com/ClickHouse/ClickHouse/pull/90928 は重大な脆弱性に対処しましたが、結果として制約が厳しすぎるものとなり、無関係な REVOKE によって一部のワイルドカード付き GRANT 文が失敗する状況を招いていました。#92725pufit)。
  • WHEREnot match(...) が使用された場合に誤った結果が返されていた data skipping ロジックのバグを修正します。#92492 をクローズ。#92726Nihal Z. Miaji)。
  • 読み取り専用ディスク上に MergeTree テーブルが CREATE されている場合、起動時に一時ディレクトリを削除しようと試みないようにしました。 #92748 (Alexey Milovidov).
  • ALTER TABLE REWRITE PARTS (v2) での「Cannot add action to empty ExpressionActionsChain」を修正しました。 #92754 (Azat Khuzhin).
  • 切断された Connection から読み取った際にクラッシュしないようにしました。 #92807 (Raufs Dunamalijevs)。
  • Ordered モードのストレージ S3Queue で発生していた論理エラー Failed to set file processing within 100 retries を修正しました。現在はこのメッセージはエラーではなく警告として出力されます。このエラーは 25.10 より前のバージョンでは Keeper セッションの期限切れが発生した場合に起こる可能性がありましたが、Ordered モードで処理の並行実行度が高い場合には理論的には依然としてこのエラーが発生し得るため、25.10 以降のバージョンでも常に警告として扱われます。 #92814 (Kseniia Sumarokova).
  • 以前は、PK sharding を常に偽となる条件付きで使用していた一部のクエリが失敗していましたが、現在は失敗しなくなりました。https://github.com/ClickHouse/ClickHouse/pull/89313 のために必要な変更です。 #92815 (Yarik Briukhovetskyi)。
  • system.parts テーブルにおけるテキスト索引の非圧縮サイズの計算を修正しました。 #92832 (Anton Popov).
  • WHERE 句の述語内でサブクエリを含む IN 句を伴う論理更新におけるプライマリ索引の利用方法を修正しました。 #92838 (Anton Popov).
  • JSON 内パス 'skip' の型ヒント生成を修正。 #92731 をクローズ。 #92842 (Pavel Kruglov)。
  • S3 テーブルエンジンでは、非決定的関数が含まれている場合は、パーティションキーをキャッシュしないようにする必要があります。 #92844 (Miсhael Stetsyuk).
  • ratio_of_defaults_for_sparse_serialization=0.0 を使用してスパースなカラムに対するミューテーション実行後に発生する可能性のあるエラー FILE_DOESNT_EXIST を修正しました。#92633 をクローズしました。#92860Pavel Kruglov)。
  • JSON カラムが Tuple カラムの後に続く場合に、旧 parquet リーダー(デフォルトでは使用されない)での parquet スキーマ推論を修正しました。空のタプルで失敗していた旧 parquet リーダー(デフォルトでは使用されない)を修正しました。 #92867 (Michael Kolupaev).
  • 定数条件と join_use_nulls を用いた複数の JOIN における論理エラーを修正し、#92640 をクローズ。#92892Vladimir Cherkasov)。
  • パーティション式にサブカラムを含むテーブルへの挿入時に発生する可能性のあるエラー NOT_FOUND_COLUMN_IN_BLOCK を修正しました。#93210#83406 をクローズ。#92905Pavel Kruglov)。
  • エイリアス付きテーブルを扱う Merge エンジンで発生するエラー NO_SUCH_COLUMN_IN_TABLE を修正しました。#88665 をクローズします。#92910 (Pavel Kruglov)。
  • LowCardinality(Nullable(T)) カラム上の full_sorting_join における NULL != NULL というケースを修正しました。 #92924 (Vladimir Cherkasov).
  • MergeTree テーブルにおけるテキスト索引のマージ処理中に発生していたクラッシュを複数件修正しました。 #92925 (Anton Popov).
  • テーブル最適化中の例外を防ぐため、必要に応じて有効期限 (TTL) 集約時に Set 式の結果に対する LowCardinality ラッパーを復元します。 #92971 (Seva Potapov).
  • has 関数で空配列が使用された場合に索引解析で発生する論理エラーを修正しました。 #92906 をクローズしました。 #92995Nihal Z. Miaji)。
  • バックグラウンドスケジュールプールの終了時にハングアップが発生する可能性のある問題を修正しました(サーバーのシャットダウン時にサーバーがハングアップする可能性があります)。 #93008 (Azat Khuzhin).
  • スパースなカラムの mutation の後、ALTER で SETTING ratio_of_defaults_for_sparse_serialization1.0 に変更した際に発生しうるエラー FILE_DOESNT_EXIST を修正しました。 #93016 (Pavel Kruglov).
  • WHERE 句で not materialize(...) または not CAST(...) が使用された場合に誤った結果の原因となっていた data skipping ロジックのバグを修正しました。 #88536 をクローズ。 #93017Nihal Z. Miaji)。
  • 共有されるパーツでのTOCTOU競合により古いパーツが使用される可能性がある問題を修正。 #93022 (Azat Khuzhin).
  • 範囲外のオフセットを含む不正な groupConcat 集約状態をデシリアライズした際に発生するクラッシュを修正しました。 #93028 (Raufs Dunamalijevs).
  • 事前キャンセルされた分散クエリの実行後に、接続が不正な状態のまま残る問題を修正。 #93029 (Azat Khuzhin).
  • 右側の結合キーがスパースなカラムである場合の結合結果を修正します。これにより #92920 がクローズされます。set compatibility='23.3' を設定した場合にのみこのバグを再現できました。バックポートすべきかどうかは不明です。#93038Amos Bird)。
  • estimateCompressionRatio() で発生する可能性がある Cannot finalize buffer after cancellation を修正。次を修正: #87380#93068Azat Khuzhin)。
  • concat(col1, col2) のような複雑な式に基づいて構築されたテキスト索引のマージ処理を修正しました。 #93073 (Anton Popov).
  • フィルターにサブカラムが含まれている場合の PROJECTION の適用を修正。#92882 をクローズ。#93141Pavel Kruglov)。
  • クエリプランに join のランタイムフィルタが追加された一部のケースで発生する論理エラーを修正しました。原因は、join の一方の入力から重複した const カラムを誤って返していたことです。 #93144 (Alexander Gololobov).
  • 結合ランタイムフィルタで使用される特殊な関数 __applyFilter が、一部の妥当なケースにおいて ILLEGAL_TYPE_OF_ARGUMENT エラーを返していました。 #93187 (Alexander Gololobov).
  • 実質的に同一のカラムに対するエイリアスとなっている補間されたカラムについて、ブロック内で異なる補間カラムが同じカラムにマージされてしまわないようにしました。 #93197 (Yakov Olkhovskiy).
  • 事前にデータが入っている右側のテーブルとの結合時には runtime filter を追加しないようにしました。 #93211 (Alexander Gololobov).
  • セッションが切断された後の keeper における persistent watches のクリーンアップ処理を修正しました。これにより #92480 がクローズされます。#93213Konstantin Vedernikov)。
  • iceberg における ORDER BY タプルを修正。これにより #92977 がクローズされます。#93225Konstantin Vedernikov)。
  • S3Queue の SETTING s3queue_migrate_old_metadata_to_buckets に関するバグを修正しました。 #93392#93196#81739 をクローズしました。 #93232Kseniia Sumarokova)。
  • マージ時にPROJECTIONを再構築する際、未使用のカラムを削除するようにしました。これによりメモリ使用量が削減され、一時パーツの作成数も減少します。 #93233 (Nikolai Kochetov)。
  • スカラーな相関サブクエリが存在する場合に、サブクエリから未使用カラムを削除する処理を修正しました。修正前は、相関サブクエリ内でのみ使用されているカラムが削除されてしまい、その結果クエリが NOT_FOUND_COLUMN_IN_BLOCK エラーで失敗していました。 #93273 (Dmitry Novik)。
  • 元のテーブルに対する ALTER 中に、マテリアライズドビューでサブカラムが欠落する可能性のあった問題を修正しました。#93231 をクローズ。#93276Pavel Kruglov)。
  • ローカルおよびリモート/Distributed テーブルをマージする際に hostName() に対して ILLEGAL_COLUMN をスローする可能性があった、アナライザ使用時の Merge テーブルエンジンのクエリプランニングを修正しました。#92059 をクローズ。#93286Jinlin)。
  • 非定数の配列引数を取る NOT IN が誤った値を返していた問題を修正し、非定数の Array 関数をサポートしました。#14980 をクローズ。#93314Yarik Briukhovetskyi)。
  • use_top_k_dynamic_filtering 最適化で発生していた Not found column エラーを修正しました。 #93186 を修正。 #93316Nikolai Kochetov)。
  • サブカラム上に作成されたテキスト索引の再構築処理を修正しました。 #93326 (Anton Popov).
  • hasAllTokens および hasAnyTokens 関数の第 2 引数として空配列が渡された場合の処理を修正しました。 #93328 (Anton Popov)。
  • 右側テーブルに対する totals を含むクエリで runtime filter が使用されている場合に発生する論理エラーを修正。 #93330 (Alexander Gololobov).
  • tokens 関数を非 const な tokenizer パラメータ(第 2、3、4 引数)で呼び出しても、サーバーがクラッシュしなくなりました。例: SELECT tokens(NULL, 1, materialize(1))#93383Robert Schulze)。
  • 細工された集約状態によりメモリ安全性上の問題を引き起こす可能性があった、groupConcat の状態デシリアライズ処理における整数オーバーフローの脆弱性を修正しました。 #93426 (Raufs Dunamalijevs)。
  • インデックスにトークンが含まれていない場合(すべての配列が空であるか、トークナイザーによってすべてのトークンがスキップされる場合)における、配列カラムに対する固定テキスト索引の解析処理を修正しました。 #93457 (Anton Popov).
  • ユーザー名とパスワードが接続文字列に含まれている場合は、ClickHouse Client で OAuth ログインを行わないようにしました。 #93459 (Krishna Mannem).
  • DataLakeCatalog における Azure ADLS Gen2 から払い出される認証情報のサポートを修正し、Iceberg REST カタログから adls.sas-token.* キーをパースするとともに、ABFSS URL のパースを修正しました。 #93477 (Karun Anantharaman)。
  • analyzer を使用する GLOBAL IN のサポートを修正(以前は Set がリモートノード上で再作成されていた)。 #93507 (Azat Khuzhin).
  • デシリアライズ中にサブカラムを直接スパースカラムに抽出する処理を修正。 #93512 (Pavel Kruglov).
  • 重複した検索クエリを伴うテキスト索引からの直接読み取りを修正しました。 #93516 (Anton Popov).
  • runtime filter が有効で、結合結果に同じカラムが複数回含まれる場合(例: SELECT a, a, a FROM t)に発生する NOT_FOUND_COLUMN_IN_BLOCK エラーの修正。 #93526 (Alexander Gololobov).
  • ssh を使用して接続する際に clickhouse-client がパスワードを 2 回要求するバグを修正。 #93547 (Isak Ellmer).
  • zookeeper がシャットダウン時に確実に finalize されるようにし(きわめてまれなケースで発生しうるシャットダウン時のハングの可能性があった問題を修正)、ます。 #93602 (Azat Khuzhin).
  • ReplicatedMergeTree を復元する際の重複排除のレースコンディションにより発生していた LOGICAL_ERROR を修正しました。 #93612 (Pablo Marcos).
  • いくつかの入力フォーマットで Sparse カラムへ直接デシリアライズする際に、有効期限 (TTL) の更新に Sparse カラムを使用する処理を修正しました。これにより、論理エラー Unexpected type of result TTL column が発生する可能性を解消しました。 #93619 (Pavel Kruglov).
  • 無効な入力に対して呼び出された場合に h3 索引関数がクラッシュしたりハングしたりすることがある問題を修正しました。 #93657 (Michael Kolupaev)。
  • 非 UTF-8 データに対して ngram_bf 索引を使用すると、未初期化メモリを読み取ってしまい、その値が結果として生成される索引構造内に含まれ得る問題がありました。これにより #92576 がクローズされました。 #93663Alexey Milovidov)。
  • 解凍後のバッファサイズが想定どおりであることを検証します。 #93690 (Raúl Marín)。
  • merge テーブルエンジンを使用する場合に、SHOW COLUMNS 権限のチェックを行わずにテーブルからカラムの一覧を取得できないようにしました。 #93695 (János Benjamin Antal).
  • サブカラムに作成されたスキップ索引のマテリアライズ処理を修正しました。 #93708 (Anton Popov).
  • PipelineExecutor が存続している間に IStorage オブジェクトが破棄されないようにするため、ストレージの shared_ptrQueryPipeline::resources::storage_holders に保存します。 #93746 (Miсhael Stetsyuk)。
  • 再起動後にインターサーバーホストが変更された場合に Replicated DB のアタッチに失敗する問題を修正。 #93779 (Tuan Pham Anh).
  • キャッシュが有効な場合に発生することがあった ReadBufferFromS3 内のアサーション !read_until_position を修正しました。#93809Kseniia Sumarokova)。
  • Map カラムで空のタプルが使用されるまれなケースで発生する論理エラーを修正。#93784 をクローズ。#93814Nihal Z. Miaji)。
  • マージ中にプロジェクションが再構築される際に発生していた _part_offset の破損を修正し、_part_offset カラムの不要な読み取りを回避するとともに、プロジェクション計算で不要なカラムをスキップすることでプロジェクション処理を最適化しました。これは、#93233 で導入された最適化をさらに発展させるものです。#93827Amos Bird)。
  • 'Bad version' の処理を削除。 #93843 (Anton Ivashkin).
  • キーが符号付き整数型のときに、分散クエリにおいて optimize_inverse_dictionary_lookup が動作しない不具合を修正しました。#93259 をクローズしました。 #93848 (Nihal Z. Miaji)。
  • 分散 remote() クエリで lag / lead が動作しない問題を修正。#90014 をクローズ。#93858Nihal Z. Miaji)。
  • システムインストルメントのディスパッチに関するバグを修正。 #93937 (Pablo Marcos).
  • https://github.com/ClickHouse/ClickHouse/pull/89173 において、内部パイプを通じて TraceSender が送信する構造体にフィールドを 1 つ追加しました。しかし、バッファサイズは更新されていませんでした(こちら)。その結果、buffer_size を超えるデータを書き込んでしまい、flush が複数回発生します。また TraceSender::send は複数のスレッドから呼び出されるため、異なるスレッドによる flush が入り交じり、受信側(TraceCollector)が前提としている不変条件が破られてしまいます。#93966Miсhael Stetsyuk)。
  • ストレージ JoinUSING 句を用いた結合操作において、上位型への型変換を修正しました。#91672 を修正。#78572 を修正。#94000Dmitry Novik)。
  • Join runtime filter が Mergeテーブルに適用された場合に、FilterStep が正しく追加されない問題を修正しました。 #94021 (Alexander Gololobov).
  • 複数のカラムに対する述語を含み、Bloom filter スキップ索引を使用し、かつ ORNOT の両方の条件が存在する SELECT クエリで、結果が不整合になる可能性がありました。この問題は修正されました。 #94026 (Shankar Iyer).
  • 依存インデックスを持つカラムに対する CLEAR の処理を修正。 #94057 (Raúl Marín).
  • ReadWriteBufferFromHTTP における未初期化値の使用の問題を修正。 #94058 (Alexey Milovidov).
  • JSON の型付きパスに対する不適切なチェックを修正しました。このチェックは https://github.com/ClickHouse/ClickHouse/pull/92842 で導入され、既存テーブルの起動時にエラーが発生する可能性がありました。#94070Pavel Kruglov)。
  • OUTER JOIN を含む場合のフィルタ解析中に発生するクラッシュを修正。#90979 を修正。#94080Dmitry Novik)。
  • 並列処理(max_threads > 1、デフォルト)で UInt8 集約キーを使用する場合の uniqTheta の精度の問題を修正。 #94095 (Azat Khuzhin).
  • SCOPE_EXIT 内の socket.setBlocking(true) 呼び出しからスローされる例外により発生していたクラッシュを修正。 #94100 (Miсhael Stetsyuk).
  • ReplicatedMergeTree で、後からのログエントリによって作成されたパーツが DROP PARTITION によって削除され、データが失われる問題を修正しました。 #94123 (Tuan Pham Anh)。
  • ページ境界をまたぐ配列を誤って処理していた parquet reader v3 を修正しました。これは、たとえば Arrow が page statistics や page index を有効化せずに書き出したファイルで発生します。Array データ型のカラムにのみ影響します。代表的な症状として、約 1 MB ごとに 1 つの配列が切り捨てられることがあります。この修正以前の回避策としては、次の設定を使用してください: input_format_parquet_use_native_reader_v3 = 0#94125 (Michael Kolupaev).
  • ログエントリの待機中に ReplicatedMergeTree で過剰な watch が発生する問題を修正。 #94133 (Azat Khuzhin).
  • 関数 arrayShufflearrayPartialShufflearrayRandomSample により const カラムをマテリアライズして、行ごとに異なる結果が得られるようにしました。 #94134 (Joanna Hulboj)。
  • materialized view 内でのテーブル関数評価時のデータレースを修正。 #94171 (Alexey Milovidov).
  • PostgreSQL データベースエンジンにおける、クエリが不正な場合の nullptr デリファレンスを修正しました。#92887 をクローズしました。#94180Alexey Milovidov)。
  • 複数のサブクエリを含む SELECT クエリを使用したリフレッシャブルmaterialized view におけるメモリリークを修正。 #94200 (Antonio Andelic).
  • DataPartStorageOnDiskBase::removesystem.parts 間のデータレースを修正します。 #49076 をクローズします。 #94262Alexey Milovidov)。
  • メモリ例外発生時にクラッシュ(std::terminate)を引き起こす可能性がある HashTable のコピー代入演算子に誤って付けられていた noexcept 指定子を削除しました。 #94275 (Nikita Taranov).
  • 以前は、GROUP BY で重複するカラムを含む PROJECTION を作成し(例: GROUP BY c0, c0)、データを挿入すると、optimize_row_order が有効になっている場合に std::length_error が発生していました。#94065 をクローズ。#94277Alexey Milovidov)。
  • 接続時の ZooKeeper クライアントで、ハングやクラッシュを引き起こす原因となっていた不可解なバグを修正しました。 #94320 (Azat Khuzhin).
  • サブカラムに適用されていなかった関数からサブカラムへの最適化を修正。 #94323 (Pavel Kruglov).
  • enable_lazy_columns_replication が有効な場合の入れ子の RIGHT JOIN において、誤った結果が返される可能性がある問題を修正しました。このバグにより、レプリケーション対象のカラム内のすべての行が本来は異なる値を持つにもかかわらず、誤って同一の値を返していました。 #93891 をクローズしました。 #94339Vladimir Cherkasov)。
  • 同値集合を使用した SEMI JOIN のフィルタのプッシュダウンを修正。引数の型が変更されている場合はフィルタをプッシュダウンしないようにする。#93264 を修正。#94340Dmitry Novik)。
  • DeltaLake CDF を DataLake データベースエンジン(Delta Lake カタログ統合)と組み合わせて使用する際の挙動を修正しました。#94122 をクローズ。#94342Kseniia Sumarokova)。
  • SLRU キャッシュポリシーが使用されている場合に、現在のメトリック FilesystemCacheSizeLimit の値が誤った値になる問題を修正。 #94363 (Kseniia Sumarokova).
  • 2 つ未満の引数で Backup データベースエンジンを作成すると、よりわかりやすいエラーメッセージ(std::out_of_range: InlinedVector::at(size_type) const failed bounds check. ではなく Wrong number of arguments)を返すようになりました。 #94374 (Robert Schulze).
  • データベースレベルのグローバル権限のうち GRANT OPTION 付きのものに対する、実行不可能な REVOKE を無視するようにしました。 #94386 (pufit).
  • コンパクトなパーツからスパースオフセットを読み取る処理を修正しました。#94385 をクローズしました。#94399Pavel Kruglov)。
  • alter_column_secondary_index_modethrow モードが使用されている場合でも、暗黙的な索引を使用しているカラムに対する ALTER を禁止しないように変更しました。 #94425 (Raúl Marín).
  • 複数回の receivePacketsExpectQuery 呼び出しで Protocol::Client::IgnoredPartUUIDs が読み込まれた際に発生する TCPHandler のクラッシュを修正しました。 #94434 (Miсhael Stetsyuk)。
  • system.functions 内の機密データのマスキングを修正しました。 #94436 (Vitaly Baranov).
  • send_profile_events が無効化されている場合に発生する nullptr 参照の問題を修正しました。この機能は ClickHouse Python ドライバー向けに最近導入されたものです。#92488 をクローズしました。#94466Alexey Milovidov)。
  • マージ処理中の text 索引 .mrk の非互換性を修正。 #94494 (Peng Jian)。
  • read_in_order_use_virtual_row が有効になっている場合、コードは索引が切り詰められているかどうかを確認せずに、完全なプライマリキーのサイズに基づいて索引のカラムにアクセスしていたため、use-after-free/未初期化メモリの問題が発生していました。#85596 を修正。#94500Alexey Milovidov)。
  • GLOBAL IN を伴うサブクエリに外部テーブルを送信する際、型が Nullable の場合に発生していた型不一致エラーを修正しました。#94097 をクローズします。#94511Alexey Milovidov)。
  • 以前のバージョンでは、同じ式に対して複数の索引条件を含むクエリが、誤って Not found column という例外をスローすることがありました。#60660 をクローズ。#94515Alexey Milovidov)。
  • ランタイムフィルターにおける Nullable 結合カラムの誤った処理を修正しました。 #94555 (Alexander Gololobov).
  • 現在使用中の別のワークロード内にワークロードを作成しても、クラッシュすることがなくなりました。 #94599 (Sergei Trifonov).
  • 欠落しているカラムに対して isNotNull が評価される場合に、ANY LEFT JOIN の最適化中に発生するクラッシュを修正しました。 #94600 (Molly).
  • 計算されたデフォルト値を持つ他のカラムを参照するデフォルト式の評価を修正しました。 #94615 (Alexey Milovidov)。
  • BACKUP/RESTORE 操作における権限の問題を修正しました。 #94617 (Pablo Marcos).
  • データ型が Nullable(DateTime64) の場合の誤った型キャストにより発生するクラッシュを修正しました。 #94627 (Miсhael Stetsyuk).
  • ORDER BY を含む特定の分散クエリにおいて、ALIAS カラムの値が入れ替わって返されることがあるバグを修正しました(例: カラム a にカラム b のデータが表示され、その逆も同様)。 #94644 (filimonov).
  • keeper-bench の結果をファイルに保存する処理を修正。 #94654 (Antonio Andelic).
  • カラムに負の浮動小数点値が含まれている場合の MinMax 型統計による誤った推定を修正しました。#94665 (zoomxi).
  • map のキーが struct の場合の Parquet ファイルの読み取りを修正。 #94670 (Konstantin Vedernikov)。
  • 複雑な ON 条件を使用した場合に、RIGHT JOIN の結果が誤ったものになる可能性がある問題を修正しました。#92913 をクローズしました。#94680Vladimir Cherkasov)。
  • Vertical マージ後も一定の索引粒度 (use_const_adaptive_granularity) が保持されるようにしました。 #94725 (Azat Khuzhin).
  • スカラーサブクエリとテーブルの依存関係に関連するミューテーションのバグを修正。テーブルがあるカラムに対する依存関係(索引や PROJECTION)を持つ場合、スカラーサブクエリがデータなしで評価・キャッシュされ、不正な変更につながる可能性がありました。 #94731 (Raúl Marín).
  • エラー時に AsynchronousMetrics の cpu_pressure フォールバックを修正。 #94827 (Raúl Marín).
  • getURLHostRFC 関数では、ポインタをデリファレンスする前の境界チェックが欠けていました。空文字列が domainRFC に渡されると、未初期化メモリを読み込んでしまい、MSan エラーを引き起こしていました。 #94851Alexey Milovidov)。
  • 暗号化ディスクが読み取り専用になってしまう問題を修正しました。 #94852 (Azat Khuzhin).
  • 旧アナライザーで分散テーブルを使用している場合に、小数を指定した LIMIT/OFFSET で発生していた論理エラーを修正しました。#94712 をクローズ。#94999Ahmed Gouda)。
  • デフォルトで join ランタイムフィルタが有効になっている場合に、一部の条件下で発生していたクラッシュを修正しました。 #95000 (Alexander Gololobov).
  • テーブルエンジン URL() およびテーブル関数 url() で使用される URL におけるパスワードのマスキング処理を改善しました。 #95006 (Vitaly Baranov).
  • enable_extended_results_for_datetime_functions が有効になっている場合、toStartOfInterval 関数は toStartOfX と同じように動作するようになりました。ここで XDay, Week, Month, Quarter, Year です。 #95011 (Kirill Kopnev)。
  • 定数文字列の比較が cast_string_to_date_time_modebool_true_representationbool_false_representationinput_format_null_as_default の各 SETTING を正しく考慮していなかった問題を修正しました。 #91681 をクローズ。 #95040Nihal Z. Miaji)。
  • ファイルシステムキャッシュのデータレースを修正しました。 #95064 (Alexey Milovidov).
  • Parquet リーダーで発生しうるまれな競合状態を修正。 #95068 (Alexey Milovidov).
  • LIMIT がゼロのときに top K 最適化でクラッシュする問題を修正しました。 #93893 をクローズ。 #95072Alexey Milovidov)。
  • DateTime/整数から Time64 への変換では、toTime を使用して一日の時刻コンポーネントを抽出しますが、これは単調な関数ではありません。ToDateTimeMonotonicity テンプレートはこの変換が単調であると誤ってみなしており、デバッグビルドにおいて "Invalid binary search result in MergeTreeSetIndex" という例外を引き起こしていました。 #95125 (Alexey Milovidov)。
  • マニフェストファイルのエントリ一覧は、必要な場合にのみ再作成されるようにしました(以前は各イテレーションごとに再作成していました)。 #95162 (Daniil Ivanik)。

ビルド/テスト/パッケージングの改善