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

ClickHouseリリース 26.5、2026-05-21。プレゼンテーションビデオ

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

  • date_time_input_formatcast_string_to_date_time_mode のデフォルトを basic から best_effort に変更しました。これまで basic 以外の datetime 文字列 (例: 2024 April 4, Apr 15, 2020 10:30:00) をパースできず失敗していたクエリも、今後はデフォルトで成功する可能性があります。従来の厳格なパース動作を維持するには、これらの設定を basic に設定してください (または compatibility を使用してください) 。 #89334 (Alexey Milovidov).
  • Nullable の null map で使われるサブカラム名と競合し、サブカラムの解決が曖昧になるため、Tuple 要素名 null は使用禁止になりました。 #98377 (Alexey Milovidov).
  • 動的ディスクで from_envfrom_zkinclude を使用できないようにするため、設定 dynamic_disk_allow_from_envdynamic_disk_allow_from_zkdynamic_disk_allow_include を追加しました。以前はデフォルトで許可されていた動作が、今後はデフォルトで禁止されるため、後方互換性を持たない変更です。 #99138 (Kseniia Sumarokova).
  • 廃止された Arrow ベースの Parquet リーダーおよびライターは、今後使用できなくなりました。代わりにネイティブ実装が使用されます。 #100949 (Alexey Milovidov).
  • SHOW CREATE TABLE t は、永続 table と一時テーブルの両方に t という名前が存在し、database が指定されていない場合、DESCRIBE TABLE の既存の動作に合わせて一時テーブルを優先するようになりました。さらに、DESCRIBE TEMPORARY TABLE 構文もサポートされました。 #100966 (Alexey Milovidov).
  • HTTP connections による認証前の memory usage を制限するため、デフォルトの http_max_fields を 1,000,000 から 1,000 に、http_max_field_name_size を 128 KB から 4 KB に引き下げました。また、http_max_request_header_sizehttp_headers_read_timeout 設定を追加しました。以前のより高い上限に依存している Users は、設定でそれらを復元できます。 #103285 (Sema Checherinda).
  • system.metric_log に、登録されているすべての histogram metric を行ごとにスナップショットする histograms nested カラムを追加しました。あわせて、ゼロ値を出力するかどうかを制御する新しい設定 system_metric_log_show_zero_values_in_histograms も追加しました。これにより system.histogram_metric_log table は非推奨になります。 #103770 (Miсhael Stetsyuk).
  • 明示的な time zone を指定しない DateTime または DateTime64 への CAST は、ソース argument の time zone (ソースが明示的な time zone を持つ DateTime/DateTime64 の場合) を保持するようになり、toDateTime/toDateTime64 関数の動作と一致するようになりました。#55072 をクローズします。 #104433 (Alexey Milovidov).
  • kql table function を削除しました。KQL ダイアレクトで queries を実行するには、SET dialect = 'kusto' を使用してください。 #105101 (Alexey Milovidov).
  • window functions の RANKDENSE_RANK は、SQL 標準に従い、arguments を受け付けず、指定すると NUMBER_OF_ARGUMENTS_DOESNT_MATCH を throw するようになりました。以前は、RANK(x) OVER (ORDER BY id) のようなクエリも、argument を無視したまま暗黙に受け入れられていました。以前の緩やかな動作に戻すには、allow_rank_dense_rank_arguments = 1 を設定してください。 #49526 をクローズします。 #104324 (Groene AI).

新機能

  • max_bytes_ratio_before_external_group_by および max_bytes_ratio_before_external_sort に対応する新しい設定 max_bytes_ratio_before_external_join を追加しました。これは、ハッシュ結合におけるディスクへの spill のしきい値を、利用可能なメモリに対する比率で表すものです。絶対値の max_bytes_before_external_join と組み合わせた場合は、より小さい方のしきい値が適用されます。#103862 (Alexey Milovidov). 新しい max_bytes_ratio_before_external_join 設定は、max_bytes_ratio_before_external_group_by および max_bytes_ratio_before_external_sort と同様に、デフォルトで 0.5 に設定され有効になります。右側のデータが利用可能なシステムメモリの半分を超えると (メモリ制限が設定されている場合) 、ハッシュ結合は自動的に Grace Hash Join に spill します。#104285 (Alexey Milovidov).
  • table function filesystem を追加しました。これにより、ディレクトリ構造をテーブルとして表現し、ファイルのメタデータや内容を SQL でクエリできるようになります。元の実装は #42039 の @perst20 によるものです。#42039 を参照してください。#50208 を参照してください。#53610 (Alexey Milovidov).
  • arrayMaparrayFilter などの高階関数に、関数名だけをそのまま渡せるようにしました。たとえば、arrayMap(negate, [1, 2, 3])arrayMap(x -> negate(x), [1, 2, 3]) と等価になりました。#101033 (Alexey Milovidov).
  • 設定 send_table_structure_on_insert_with_inline_data と client オプション --inline-insert-data を追加し、ネイティブプロトコル経由で server 自身がインライン INSERT データをパースできるようにしました。これにより、テーブル構造を受け取るためのラウンドトリップを回避し、多数の小さな insert のパフォーマンスを向上させます。#101034 (Alexey Milovidov).
  • SQL クエリのトークン化と構文ハイライトのための関数 tokenizeQueryhighlightQuery を追加しました。tokenizeQuery は、lexer の token をバイト offset および token type とともに返します。highlightQuery は、ハイライトカテゴリ (keyword、identifier、function、number、string など) 付きの、パーサーに基づく構文ハイライト範囲を返します。#101054 (Alexey Milovidov).
  • RFC 3986 のセマンティクスに従って、url table function および URL table engine で relative URL を解決するための設定 url_base を追加しました。#101113 (Alexey Milovidov).
  • LIMIT BY clause で負の値をサポートし、各グループの先頭ではなく 末尾 から行を選択できるようにしました。たとえば、LIMIT -2 BY idid ごとの最後の 2 行を返します。負の OFFSET (LIMIT -1 OFFSET -1 BY id) および符号が混在する指定 (LIMIT -2 OFFSET 1 BY id) もサポートされます。#103222 (Nihal Z. Miaji).
  • 複数の json クエリのパフォーマンス向上のため、json_value 関数で tuple および array への出力をサポートしました。#78362 (kevinyhzou). @KevinyhZou により、JSON_VALUEJSON_EXISTSJSON_QUERY で複数パスの Tuple/Array JSONPath argument をサポートしました。#101102 (Alexey Milovidov).
  • 新しい kafka_autodetect_client_rack パラメータが導入されました。設定すると、クラウド環境の機能を利用して Availability Zone を検出し、それを librdkafkaclient.rack パラメータとして伝播することで、ゾーン間通信を回避します。#81323 (Ilya Golshtein).
  • オブジェクトストレージの読み取り操作を追跡するため、system.blob_storage_logRead イベントタイプを追加しました。これは新しい設定 enable_blob_storage_log_for_read_operations で制御されます。#96867 (Alexey Milovidov).
  • ユーザーは、新しい system.zookeeper_watches テーブルを使用して、clickhouse-server が発行した ZooKeeper のウォッチを確認できるようになりました。#99277 (Den Kalantaevskii).
  • すべてのテーブルをまたいで合算した、分散クエリに関与する分片数をカウントする Shards プロファイルイベントを追加しました。#99470 (Alexey Milovidov).
  • WASM UDF を DETERMINISTIC として宣言できるようになり、定数畳み込みの対象になります。#100005 (Vasily Chekalkin).
  • parallel_replicas_prefer_local_replica 設定を追加しました。無効にすると、並列レプリカはロードバランシングアルゴリズムのみに基づいて選択されるため、max_parallel_replicas = 1 のクエリであっても別のホストに送られる可能性があります。#100139 (Alexey Milovidov).
  • 送信 HTTP 接続の TCP ソケットバッファサイズを制御するための {disk,storage,http}_connections_rcvbuf および {disk,storage,http}_connections_sndbuf サーバー設定を追加しました。これにより、運用者はカーネルの自動調整を上書きし、接続ごとのメモリ使用量に上限を設定できます。#100478 (Sema Checherinda).
  • CREATE OR REPLACE TABLE と同じアトミックスワップのセマンティクスで CREATE OR REPLACE MATERIALIZED VIEW をサポートしました。内部テーブル、TO テーブル、POPULATEREFRESHON CLUSTER で動作します。#100539 (DQ).
  • S3 GET リクエストの接続ライフタイムと消費バイト数を観測するため、s3_read_request_duration_microseconds および s3_read_request_bytes ヒストグラムメトリクスを追加しました。これらは system.histogram_metrics と Prometheus エンドポイントで確認できます。#102058 (Sema Checherinda).
  • Keeper の snapshot 進捗追跡を基盤として、インクリメンタル読み取りをサポートする PaimonPaimonS3PaimonAzurePaimonHDFSPaimonLocal の table engine を追加しました。インクリメンタルモードでは、最後に commit 済みの snapshot 以降の新しい行のみを返します。特定 snapshot の delta 読み取りは paimon_target_snapshot_id で利用でき、クエリごとの snapshot 上限は max_consume_snapshots で設定できます。バックグラウンドのメタデータのリフレッシュは paimon_metadata_refresh_interval_sec で構成可能です。allow_experimental_paimon_storage_engine で制御されます。#102343 (XiaoBinMu).
  • 新しい Kafka table 設定 kafka_map_virtual_columns_on_write を追加しました。有効にすると、Kafka table スキーマ内の _key_timestamp_headers.name_headers.value という名前のカラムは、INSERT 時に対応する Kafka メッセージの key、timestamp、headers として生成され、メッセージペイロードからは除外されます。#103243 (Alexey Milovidov).
  • リフレッシュ可能なマテリアライズドビュー向けに、SYSTEM PAUSE VIEW [db.]name および SYSTEM PAUSE VIEWS クエリを追加しました。SYSTEM STOP VIEW とは異なり、SYSTEM PAUSE VIEW は現在実行中のリフレッシュを中断しません。進行中のリフレッシュは完了まで継続され、以降のリフレッシュのみが抑止されます。解除には SYSTEM START VIEW または SYSTEM START VIEWS を使用し、これらは停止状態と一時停止状態の両方を一律にクリアするようになりました。#103252 (Nikita Mikhaylov).
  • 文字列内で N 番目に一致した正規表現のバイト位置を返す関数 regexpPosition (PostgreSQL 互換の別名 regexpInstr および regexp_instr を含む) を追加しました。開始オフセット、一致後の位置を返すモード、正規表現フラグ、キャプチャグループの選択をサポートします。#104172 (Abhinav Agarwal).
  • 素数判定のための新しい関数 isPrimeisProbablePrime を追加しました。isPrimeUInt64 までの符号なし整数に対して正確な結果を返します。isProbablePrimeUInt128UInt256 にも対応しており、これらのより広い型では、0 は確実に合成数、1 はおそらく素数であることを意味します。isProbablePrime の省略可能な第 2 引数 rounds は信頼度を制御し (上限は 256) 、デフォルトの 25 ラウンドでは、ランダムな合成数に対する偽陽性率は 10^-15 未満に抑えられます。また、isProbablePrime はキャンセル可能です。#104234 (Nihal Z. Miaji). #104639 (Alexey Milovidov). #104806 (Nihal Z. Miaji).
  • clear/clear は、誤ってクエリとして実行されるのではなく、clickhouse のコマンドラインツールでターミナルをクリアするようになりました。#104318 (Tyler Hannan).
  • SELECT クエリで、file テーブル関数が Array(String) のパスを受け取れるようになりました。#104442 (Yue).
  • system.functions テーブルに deterministic および higher_order カラムを追加しました。#104479 (Pedro Ferreira).
  • 非 SegWit アドレスのエンコード (例: Cosmos SDK、Injective、Osmosis) 向けに、bech32Encode に省略可能なエンコーディングのバリアントパラメーター (bech32 / bech32m) を、bech32Decode に生デコードモードを追加しました。#98986 (Yash ).
  • これまで入力専用だった AvroConfluent フォーマットで、データを書き込めるようになりました。これにより、たとえば Kafka への書き込み時に、Confluent スキーマレジストリ形式の Avro メッセージを ClickHouse から直接生成できます。スキーマは自動的にスキーマレジストリへ登録されます。subject 名を指定するには、新しい output_format_avro_confluent_subject 設定を使用してください。#101935 (János Benjamin Antal).
  • JSON 文字列を人が読みやすい形式に整形する prettyPrintJSON 関数を追加しました。これまで整形にクライアント側で追加の手順が必要だったダッシュボードやレポートで便利です。#62523 をクローズします。#102594 (Dmitry Prokofyev).
  • PostgreSQL / SQL 標準との互換性のため、groupConcat の大文字と小文字を区別しないエイリアスとして STRING_AGG を追加しました。#105125 (Alexey Milovidov).
  • 特定のサブクエリに SETTINGS use_query_cache = true を指定することで、外側のクエリ全体をキャッシュせずに、各サブクエリの結果を個別にキャッシュできるようになりました。新しい設定 query_cache_for_subqueries = true を使用すると、use_query_cache をすべてのサブクエリに一括で伝播できます。注: 外側のクエリに指定した use_query_cache は、サブクエリに自動伝播されなくなりました。#99804 (Vincent Voyer).
  • Web UI (play.html) のクエリエディタに、clickhouse-client の配色を参考にしたレキサーベースのシンタックスハイライトを追加しました。#105105 (Alexey Milovidov).

実験的機能

  • WebSocket 経由でブラウザ内に対話型の clickhouse-client セッションを提供する、実験的なウェブターミナル インターフェイスを /webterminal に追加しました。デフォルトでは無効で、allow_experimental_webterminal サーバー設定で有効にできます。 こちら で確認できます。 #100277 (Alexey Milovidov). #105191 (Alexey Milovidov). #105059 (Alexey Milovidov).
  • Kafka2 エンジン (実験的機能で、Keeper ベースのオフセット保存を使用) が、直接 SELECT クエリと kafka_commit_on_select 設定をサポートするようになりました。 #100276 (Alexey Milovidov).
  • WASM UDFs は、より多くの数値型の型強制に対応しました。たとえば、より小さい整数型からより広い整数型へ (Int8 から UInt64 など) 、および任意の整数型から浮動小数点型へ (Int32 から Float32 など) 変換できます。 #100435 (Vasily Chekalkin).
  • DELETE FROM system.webassembly_modules クエリで LIKE 関数をサポートしました。 #104397 (Vladimir Cherkasov).
  • Iceberg で Geo 型をサポートしました。 #103113 (Konstantin Vedernikov).
  • ArrowFlight SQL server にプリペアドステートメント機能を追加しました。 #103047 (Yakov Olkhovskiy).
  • KQL パーサー (Kusto 言語サポート用) の堅牢性を改善しました。KQL パーサーの各段階でパーサーの深さとバックトラックのカウンターを維持することで、複雑な KQL クエリでもパーサーの制限を一貫して追跡できるようになりました。 #103528 (Yakov Olkhovskiy).

パフォーマンス改善

  • file table function または File table engine 経由でローカルの Parquet files を読み込む際に、Parquet フッターのメタデータキャッシュを再利用するようにしました。従来は、このメタデータキャッシュは object storage の backend でしか参照されていませんでした。#104260 (Alexey Milovidov).
  • ソートキーが join によって保持される側のカラムのみを参照している場合、LEFT/RIGHT joins に対して ORDER BY ... LIMIT n を push down し、join 前に保持側の入力が生成する必要のある行数を制限します。これは新しい設定 query_plan_top_k_through_join (デフォルトで有効) で制御されます。#104268 (Alexey Milovidov).
  • ORDER BY ... LIMIT N クエリのパフォーマンスを向上させるため、use_top_k_dynamic_filtering および use_skip_indexes_for_top_k 設定をデフォルトで有効にしました。#99537 (Alexey Milovidov). また、use_top_k_dynamic_filtering はデフォルトで固定長のソートカラムに限定されるようになり、行ごとのしきい値比較コストが I/O 削減の効果を上回る ORDER BY <var-length-column> LIMIT N クエリでの性能低下を回避します。従来の動作は、新しい use_top_k_dynamic_filtering_for_variable_length_types 設定で利用できます。#104216 (Alexey Milovidov).
  • jemalloc の oversize-arena 機能を使用してページフォールトを削減します。#103958 (Nikita Taranov).
  • Peak memory usage を抑えるため、UNION ALL で同時にアクティブになる streams を制限します。#100176 (Alexey Milovidov).
  • ユーザー空間 page cache をわずかに最適化しました。#100300 (Alexey Milovidov). これにより、ユーザー空間 page cache は常に OS page cache より優れたものになりました。
  • ユーザー空間 page cache (use_page_cache_for_object_storage = 1) 経由で object storage をコールド read する場合の速度が大幅に向上しました。これは、連続する cache miss が page_cache_block_size block ごとに 1 件の HTTP request になるのではなく、1 件の HTTP request にまとめられるようになったためです。#104230 (Alexey Milovidov).
  • 型変換や function の適用を伴う索引解析を高速化しました。#55653 をクローズします。#100366 (Alexey Milovidov).
  • 非常に多くの基になるテーブルを持つ Merge tables に対する大規模クエリを高速化しました。#32465 をクローズします。#100369 (Alexey Milovidov).
  • 設定のフィールド型から vtable を削除し、Settings のコピーサイズを約 28 分の 1 に削減するとともに、すべての設定型で typed-array layout による cache locality の改善を実現しました。#102269 (Raúl Marín).
  • サーバーの空きメモリが少ない場合にクエリの並列度を自動的に下げるため、max_threads_min_free_memory_per_thread および max_insert_threads_min_free_memory_per_thread 設定を追加しました。#100383 (Alexey Milovidov).
  • 低メモリシステム (< 4 GiB) での memory usage を削減しました。#100389 (Alexey Milovidov).
  • OptimizeTrivialGroupByLimitPass を追加しました。単純な SELECT ... FROM t GROUP BY k LIMIT n クエリ (HAVINGORDER BY、window functions なし) では、アナライザが max_rows_to_group_by = n + offsetgroup_by_overflow_mode = 'any' を設定するようになり、入力全体をグループ化する代わりに、n 個の異なるキーが生成された時点で aggregation を停止します。これは新しい設定 optimize_trivial_group_by_limit_query で制御されます (デフォルトで有効) 。#104473 (Amos Bird) (Alexey Milovidov).
  • _part_offset および _block_number の仮想カラムに対して、granule レベルの暗黙的な min-max 索引を追加しました。projections にも対応しています。これにより、仮想カラムの predicates に基づく granules の高速な pruning が可能になります。#103952 (Mikhail Artemenko). #104746 (Mikhail Artemenko). #105137 (Mikhail Artemenko).
  • aggregation methods の prealloc_serialized ファミリーについて、batch-serialization パス中に各行の hash を事前計算し、それを使って (a) emplaceKey/findKey での再ハッシュを省き、(b) 次の行の bucket を software-prefetch するようにしました。これにより、ハッシュテーブルの cache-miss latency を隠蔽し、複数キーの string/serialized aggregation を高速化します。#104475 (Amos Bird) (Alexey Milovidov).
  • Iceberg table 向けの query condition cache。#102115 (Konstantin Vedernikov).
  • cramersVcramersVBiasCorrectedtheilsUcontingency を window functions とともに使用する場合を最適化しました。#83521 をクローズします。#93384 (Nihal Z. Miaji).
  • tupleElement(dictGet('dict', ('a', 'b', 'c'), key), N)dictGet('dict', 'a', key) に書き換えるクエリ最適化を追加し、不要な Dictionary 属性の fetch を回避します。これは optimize_dictget_tuple_element 設定で制御されます (デフォルトで有効) 。#100186 (Alexey Milovidov).
  • ソートを伴う distributed queries について、イニシエーター上のソート処理で buffering を有効にしました。#100661 (Nikita Taranov).
  • partial_merge JOIN のパフォーマンス改善。#100945 (Artem Zuikov).
  • partial_merge JOIN における memory の過剰割り当てをわずかに削減しました。#100963 (Artem Zuikov).
  • memory-tracker 階層全体を走査する代わりに sampling 設定を cache することで、割り当て/deallocations を最適化しました。#101267 (Azat Khuzhin).
  • 内部追跡用コンテナーを事前割り当てすることで、S3 multipart upload 時のメモリ割り当て overhead を削減しました。#101799 (Gagan Dhakrey).
  • 大規模な hash table に対するメモリアクセス latency を低減するため、hash join の probe phase に software prefetch を追加しました。設定 enable_software_prefetch_in_join で制御されます。#102444 (Xiaozhe Yu).
  • MemoryTracker のレイアウトを最適化し、パフォーマンスを約 25% 向上させました。#103464 (Azat Khuzhin).
  • coalesce(a, b, ...) <op> const および ifNull(a, b) <op> const の predicate を索引解析の前に Rewrite し、各 argument に対するカラムごとの主キーおよびスキップ索引で granule を刈り込めるようにしました。これは新しい設定 allow_key_condition_coalesce_rewrite で制御されます (既定で有効) 。#103468 (Manuel).
  • エスケープされたスラッシュの処理を最適化することで、大きな JSON メタデータファイルを持つ Iceberg カタログの読み取り時のクエリパフォーマンスを大幅に改善しました。#103998 (Mohaidoss).
  • cache が無効な場合の非圧縮キャッシュのオーバーヘッドを回避するようにしました (server setting index_uncompressed_cache_size = 0。これは既定値です) 。#104063 (Michael Kolupaev).
  • 非選択的な WHERE filter と組み合わせたときに、小さな limit を持つ ORDER BY ... LIMIT クエリで過剰な granule を読み込んでしまう問題を修正しました。従来は、順序付き読み取りの上に filter があると、マーク範囲ごとのタスク分割が無効になり、その結果 pipeline が granule 間でキャンセルできず、各 stream ごとに part 全体を読み込んでいました。#104112 (Vladimir Cherkasov).
  • JOIN の左右を並べ替えた後に、hash table サイズの cache 再利用が行われていなかった問題を修正しました。#104131 (Nikita Taranov).
  • fsync_after_insert が有効な場合、part file の fsync が I/O スレッドプールを使って並列に実行されるようになり、列数の多いテーブルでの insert 完了処理が高速化されました。ClickBench の hits のフルロードは約 22% 高速化されています。#104137 (Alexey Milovidov).
  • AArch64 で NEON を使って find_first_symbolsfind_first_not_symbolsfind_last_symbols_or_nullfind_last_not_symbols_or_nullsplitInto をベクトル化しました。従来、これらの helpers は x86 (SSE2 / SSE4.2) でのみ SIMD パスを持ち、ARM では scalar ループにフォールバックしていました。これにより、ClickBench の hits dataset では TSV のパースが約 2 倍、URL 関数と splitByChar が約 1.3 倍高速化されます。一方、非常に高密度な JSON のパース (16 バイト未満間隔の field cadence) は、既存の SSE2 のトレードオフと同様にわずかに低下します。#104228 (Alexey Milovidov).
  • 単純な ALIAS カラム (例: some_alias ALIAS msome_alias['key']) を介したデータ読み取りが、基になるカラムを直接参照する場合と同じ subcolumn ごとの読み取りパスを通るようになり、MapArrayTupleNullable のエイリアス化されたカラムで大きな I/O 削減効果が復元されました。#104245 (Raúl Marín).
  • クエリごとの AsyncReadCounters を lockless にすることで、非同期 remote-FS 読み取りパスでのロック競合を軽減しました。#104374 (Nikita Mikhaylov).
  • projections の順序付きスキャンに対するクエリプランをわずかに改善しました。#103723 (Mikhail Artemenko).
  • optimizeUseNormalProjections を拡張し、何も filter されていない場合でも、projection の sorting key によってクエリプランからソート処理を除去できる特定のケースに対応しました。#104680 (Mikhail Artemenko).
  • 型付き JSON パスで、json.path[] のシンタックスシュガーと明示的な型ヒントが正しく機能するようにしました。#99179 (Pavel Kruglov).
  • json.path[N].nested.path (tupleElement(tupleElement(json.path[N], 'nested'), 'path') に展開される) を json.path[].nested.path[N] に最適化し、読み取るデータ量を大幅に削減しました。#99802 (Pavel Kruglov).
  • system.parts における SHOW TABLES のアクセスチェックを最適化し、データベースレベルの grant チェックをテーブルごとのループの外に移しました。#100860 (Shaohua Wang).
  • system.tablesSELECT name / SELECT database, name 高速パスにある、テーブルごとの冗長な SHOW TABLES アクセスチェックを削除しました。#100881 (Shaohua Wang).
  • macOS で JIT コンパイルを有効にしました。#100947 (Alexey Milovidov).
  • 行ポリシーがソートキーのキーカラムのみに依存し、かつ決定論的である場合は、FINAL 後に行ポリシーを遅延させないようにしました。また、その場合に行ポリシーによって強制されていた対応する PREWHERE の遅延も省略するようにしました。#102884 (Yarik Briukhovetskyi).
  • テキスト索引のフィルタ述語として hasAnyhasAll のサポートを追加しました。#103266 (Anton Popov).
  • 長寿命の MergeTree ヒープ状態 (パーツごとおよびテーブルごとのメタデータ) を専用の jemalloc アリーナに割り当て、jemalloc.mergetree_arena.* 非同期メトリクスとして公開するようにしました。これにより、定常状態でのデフォルトアリーナの断片化を減らし、パーツ単位で残存するオブジェクトが本来減衰可能なページを保持し続けるのを防ぎます。#104136 (Raúl Marín).
  • 多数のリクエストを単一セッションでパイプライン化した高負荷時に、ZooKeeper クライアントのタイムアウト処理を改善しました。ZooKeeper クライアントは進捗ベースのタイムアウトを使用するようになり、session_timeout_ms 以内にサーバーから何らかのデータを受信している限り、待機時間が延長されます。各リクエストには引き続き 3 * session_timeout_ms の上限が適用され、呼び出し側のレイテンシを抑えます。#100466 をクローズしました。#104351 (Antonio Andelic).
  • イベントごとのトレースフラグを別配列に移し、必要になるまで割り当てないようにすることで、ProfileEvents トレーシングのオーバーヘッドを削減しました。#105030 (Azat Khuzhin).
  • ColumnDecimalcompareTrackAt を追加し、Decimal カラムの比較性能を改善しました。#105110 (Artem Zuikov).
  • 複数の入力を並列にハッシュ化する MD5 (AVX2 / AVX512) の SIMD 実装を追加し、スループットを改善しました。#105161 (Joanna Hulboj).

改善

  • すべての ClickHouse アプリケーションでヘルプ出力を改善しました。--help は常に終了コード 0 を返し、stdout に出力されるようになり、最上位の clickhouse --help ではすべてのサブコマンドが一覧表示されます。さらに、clickhouse start / restart--no-sudo オプション (Docker で便利) を追加し、clickhouse help サブコマンドも追加しました。@qoega による #58244 の続きです。#98148 (Alexey Milovidov)。
  • input_format_column_name_matching_mode の既定値が match_case から auto に変更されました。入力カラム名をテーブルのスキーマと照合する入力フォーマット (JSONEachRow, CSVWithNames, JSONColumns, BSONEachRow, RowBinaryWithNames など) は、まず大文字小文字を区別して照合し、一致しない場合は大文字小文字を区別しない照合にフォールバックするようになりました。従来の厳密な動作は compatibility で維持されます。#104320 (Alexey Milovidov)。
  • PostgreSQL/SQL 標準との互換性のため、STDDEVstddevSamp の大文字小文字を区別しない別名として追加しました。#105120 (Alexey Milovidov)。
  • PostgreSQL 互換性のため、array_to_stringarrayStringConcat の大文字小文字を区別しない別名として追加しました。#105121 (Alexey Milovidov)。
  • PostgreSQL 互換性のため、unnestarrayJoin の大文字小文字を区別しない別名として追加しました (関数呼び出し形式) 。#105124 (Alexey Milovidov)。
  • clickhouse-client のプログレスバーに、RAM の横へ一時データのディスク使用量 (たとえば外部ソート、aggregation、または JOIN 用) が表示されるようになり、distributed queries ではホストごとの内訳も確認できるようになりました。#105190 (Alexey Milovidov)。
  • system.predicate_statistics_log を追加しました。これは、predicate filter の selectivity と、クエリごとの MergeTree の index-granule pruning を記録する新しいサンプリングログです。既定では無効で、predicate_statistics_sample_rate server setting で有効化できます。自動的な索引および projection の推奨に必要です。#98727 (Yarik Briukhovetskyi)。
  • skip_unavailable_shards が有効な場合、テーブルが存在しないローカル分片をスキップできるようにしました。#100141 (Alexey Milovidov)。
  • Linux の mdraid アレイが再同期中、または劣化状態にある場合に、起動時警告 (system.warnings に表示) を出すようにしました。いずれもディスク I/O 性能に影響する可能性があり、ディスク障害の兆候でもあるためです。#100941 (Alexey Milovidov)。
  • WASM UDFs が system.functions に正しい origin (WasmUserDefined) で表示され、syntaxargumentsreturned_value カラムに ClickHouse の型メタデータから値が設定されるようになりました。従来は表示されないか、誤った origin の重複項目として表示されていました。#101053 (Vasily Chekalkin)。
  • generate_series table function が負の step 値をサポートし、降順の数列を生成できるようになりました。たとえば SELECT * FROM generate_series(99, 0, -1) です。#101056 (Alexey Milovidov)。
  • 必要に応じてこれらの関数が強い Context を保持するようにし、DEFAULT/MATERIALIZED 式や table engine の設定などの遅延実行パスで使用した際に、一部の関数 (dotProductformatRowstructureToCapnProtoSchema/structureToProtobufSchema、user-defined functions) で発生していた Context has expired 例外を修正しました。#101109 (Alexey Milovidov).
  • ゼロ制限で作成された優先度において、誤って Cache limits violated 論理エラーが発生する問題を修正しました (たとえば、enable_filesystem_query_cache_limit が有効な場合に使用されるクエリ単位のファイルシステムキャッシュ優先度) 。#101428 (Alexey Milovidov).
  • s3express endpoints の Region を自動検出するようにしました。#101520 (Pradeep Chhetri).
  • Iceberg への書き込みで、data files のフィールド ID をサポートしました。#102322 をクローズしました。#102362 (Konstantin Vedernikov).
  • web UI (play.html) の左パネルが独立してスクロールするようになり、ページをスクロールしても表示されたままになり、table をクリックするとクエリ領域までスクロールするようになりました。#102498 (Alexey Milovidov).
  • 左パネルの ClickHouse ロゴを Ctrl/Cmd/Shift+クリックまたは中クリックすると、Play UI を新しい tab で開けるようにしました。#102501 (Alexey Milovidov).
  • すべての table を対象に、projection 主キーおよび projection index granularity が使用するメモリを追跡するための新しいメトリクスを追加しました。#102587 (Narasimha Pakeer).
  • max_network_bandwidth_for_usermax_network_bandwidth_for_all_users を、リモートファイルシステムの reads/writes にも適用するようにしました。#103080 (Azat Khuzhin).
  • グローバルな状態ではなく、スナップショットされた table の状態に基づいて判断するようにすることで、リフレッシュ可能なマテリアライズドビュー が継続的に refresh される場合の backups の耐障害性を向上させました。#103384 (Nikita Mikhaylov).
  • SELECT * FROM system.databases は、show_data_lake_catalogs_in_system_tables setting にかかわらず、data lake catalog database を常に一覧表示するようになりました。以前はデフォルトで非表示でしたが、常に表示していた SHOW DATABASES と整合していませんでした。#103444 (Alsu Giliazova).
  • code 内の server setting concurrent_threads_soft_limit_ratio_to_cores のデフォルト値を、同梱の config.xml の値 (2) に合わせました。これにより、同梱の config.xml を使用しない場合でも、デフォルトの max_min_fair concurrent threads scheduler は、初期状態で query processing threads をコア数の 2 倍までに制限します。#103446 (Alexey Milovidov).
  • getURLScheme で空入力を処理し、Lexer::nextTokenmax_query_size チェックで null ポインタ演算を回避し、空の haystack に対する UTF-8 subsequence evaluation をデコード前に短絡評価することで、パーサーおよび文字列関数のエッジケースにおける sanitizer の堅牢性を向上させました。#103489 (Yakov Olkhovskiy).
  • divide(0, x)intDiv(0, x) の単調性推論の正確性を改善しました。従来、これらの関数は無条件に単調と判定されていましたが、0 / x は 0 を含む任意の範囲では非単調です。これは 0 / 0 が未定義であるためです (divide では NaN/InfintDiv ではゼロ除算例外) 。この誤判定により、KeyCondition::applyMonotonicFunctionsChainToRangeleft > right となる範囲を生成し、主キーに対する IN / NOT IN 式でキーが divide(0, key) または intDiv(0, key) で包まれている場合、デバッグビルドで LOGICAL_ERROR Invalid binary search result in MergeTreeSetIndex が発生していました。リリースビルドには影響ありません。これは、このアサーションが #ifndef NDEBUG によって有効化されるためです。#103621 (Groene AI).
  • HTTPConnectionPool*TCP{Rcv,Snd}BufBytes_{p50,p75,p90,p95} 非同期メトリクスを、system.histogram_metrics 内のバケットベースのヒストグラム http_pool_tcp_buf_bytes (ラベルは groupdirection) に置き換えました。グループごとの合計非同期メトリクスは引き続き維持されます。#103704 (Sema Checherinda).
  • サーバー設定 {disk,storage,http}_connections_{rcvbuf,sndbuf} が、system.server_settings で再起動なしで変更可能として表示されるようになりました。これらの値は SYSTEM RELOAD CONFIG で更新できます。実行時に適用する仕組み自体は、すでに #100478 の時点で実装されていました。#103772 (Sema Checherinda).
  • flameGraph で解決済みシンボル (Array(String)) をサポートしました。#103816 (Azat Khuzhin).
  • CLI クライアントで、端末の色表示が括弧と干渉する環境向けに、設定で <rainbow_parentheses>false</rainbow_parentheses> を指定できるようになりました (同様に、clickhouse format でも --no_rainbow_parentheses が使えるようになりました) 。#103851 (Larry Snizek).
  • 失敗時に部分的な putNGram の挿入をロールバックし、失敗した検索パターンをフォールバック検索に切り替えることで、不整合な状態を回避し、MultiVolnitsky の UTF-8 大文字小文字を区別しない検索を修正しました。#103864 (Yakov Olkhovskiy).
  • glibc 互換 musl で、rseq TLS を介した sched_getcpu を実装しました。#104016 (Azat Khuzhin).
  • APPEND モードの Replicated なリフレッシャブルmaterialized view は、refresh 中に ZooKeeper への接続が一時的に失われても、2 回 refresh されなくなりました。#104051 (Michael Kolupaev).
  • 明示的なカラム一覧のない分散テーブルで、推論されたリモートテーブル構造に対して sharding key を検証できるようにしました。#104111 (Yue).
  • Azureabfss path での REST カタログの不具合を修正しました。#104120 (Konstantin Vedernikov).
  • Keeper S3 snapshot client で role_arn および role_session_name の認証設定が尊重されるようになり、snapshot のアップロードで STS AssumeRole ベースの認証を使用できるようになりました。#104140 (Alexey Milovidov).
  • MATERIALIZED CTE を使用するクエリ実行時に発生するメモリリークを修正しました。#104153 (Alexey Milovidov).
  • 大規模な非 ASCII データセットの処理時 (たとえばテキスト索引のビルド中) に、累積した出力バッファが 2 GiB を超える場合に発生していた lowerUTF8 / upperUTF8 の例外を修正しました。また、過度に長い単一の行は、明確なエラーを返して拒否するようにしました。#104229 (Shaohua Wang).
  • 一時的な I/O 障害が発生しても MergeTree のカラム統計情報の読み込みが堅牢に動作するようにし、影響を受けたパーツで統計ベースの最適化が恒久的に無効化されるのを防ぐようにしました。#104372 (zoomxi).
  • INSERT INTO ... SELECT FROM input(...) で、CREATE TEMPORARY TABLE の grant が不要になりました。#104470 (Alexey Milovidov).
  • 新しい MergeTree setting concurrent_part_removal_threshold_for_remote_disk (デフォルト 16) を追加しました。削除対象のパーツのうち少なくとも 1 つがリモートディスク上に保存されている場合は、concurrent_part_removal_threshold の代わりにこの設定が使用されます。従来のしきい値 100 では、各削除が個別のネットワーク往復を伴うにもかかわらず逐次実行されていたため、object storage バックエンド上の DROP TABLE やその他のパーツ削除操作が数十秒にわたって停止することがありました。この新しい設定により、リモートストレージでは並列削除パスにより早く入るようになり、ローカルディスクでの動作は変わりません。#104676 (Groene AI).
  • 新しい設定 defer_partition_pruning_after_final (デフォルト 1) により、26.3 で導入された、FINAL の下ではパーティション pruning をスキップする動作をオプトアウトできるようになりました。これを 0 に設定すると、26.3 より前のパーティション pruning が復元されます。これは、同一 PK の行がパーティションをまたがない event-log workload で大幅な高速化につながります。compatibility = '26.2' を指定すると、自動的に 0 になります。#104705 (Nikita Fomichev).
  • 範囲外の入力に対して intExp2 が誤った結果を返す問題を修正しました (JIT では shifts >= 64、両方のコードパスでは絶対値が INT_MAX を超える整数) 。#105054 (Raúl Marín).
  • clickhouse install および clickhouse git-import で、CLI オプションとパース済みの入力から構築されるシェル引数をクォートするようにし、空白やシェルのメタ文字を含む path、user/group 名、commit hash も正しく扱えるようにしました。#105232 (Raúl Marín).
  • Alias table engine は Experimental ではなくなり、allow_experimental_alias_table_engine 設定なしで利用できるようになりました。#103488 (Alexey Milovidov).
  • clickhouse-benchmark--queries-format オプションを追加し、デフォルトのタブエスケープ済み・1 行 1 クエリ形式の入力 (tsv) と、; で区切られた複数クエリのスクリプトとして標準入力をパースする形式 (script) を選べるようにしました。#99972 (Aleksandr Musorin).
  • 要素ごとの tuple 演算子 tuplePlustupleMinustupleMultiplytupleDividetupleModulotupleIntDivtupleIntDivOrZero が可変長引数に対応し、同じサイズの 2 つ以上の tuple を受け取れるようになりました。要素ごとに左畳み込みとして適用されます。以前は引数をちょうど 2 つしか受け付けませんでした。#104659 (Aruj Bansal).
  • /processors-profile に、system.query_logsystem.processors_profile_log をもとに、過去の任意の SELECT クエリのパイプラインをヒートマップとして可視化する新しい組み込み web UI を追加しました。各プロセッサは elapsed_us に応じて色分けされ、ホバーするとプロセッサごとの統計情報 (行数、バイト数、待機時間) が表示されます。#104614 (Nikita Mikhaylov).
  • Setting query_plan_use_logical_join_step (およびそのエイリアス query_plan_use_new_logical_join_step) は廃止され、現在は効果がありません。logical join step は常に使用されます。#104017 (Vladimir Cherkasov).
  • play.html と他の組み込み web ページ (dashboard.html, jemalloc.html, merges.html, binary.html, webterminal.html) の user 入力欄は、文字列 default が事前入力されなくなりました。代わりに user のプレースホルダーが表示され、デフォルトで空になります。空のままにすると、ページは user= URL パラメータを送信せず (WebTerminal の認証 JSON でも user フィールドは省略されます) 、server は通常どおり default ユーザーへのフォールバックを適用します。これにより、他の経路 (X-ClickHouse-User、HTTP Basic、ハンドラー単位の <handler><user> 設定) で指定された HTTP 認証情報が上書きされることもなくなりました。#105254 (Alexey Milovidov).
  • ORC reader: オフセットベースの読み取り (readBigAt) を use_prefetch から切り離し、HDFS 上の EC エンコードされたデータを use_prefetch = false の場合でも (たとえば Gluten によって) 正しく読み取れるようにしました。#103348 (zhanglistar).
  • play.html から CSVWithNames フォーマットでダウンロードしたファイルで、.csv ファイル拡張子が使われるようになりました。#103737 (JackFielding).
  • BigLake カタログの入力検証を強化しました。#105117 (Konstantin Vedernikov).

バグ修正 (正式な安定版リリースでユーザーに影響する不具合)

  • 式が括弧で囲まれていたかどうかを保持することで、フォーマットの不整合を修正しました。#92340 (Alexey Milovidov).
  • Decimal 型と Float 型の比較が正しく行われない問題を修正しました。#94293 (zoomxi).
  • 分散クエリで位置引数を使用できるようにしました。#94359 (simonmichal).
  • 同名の materialized view を削除して再作成した際に DatabaseCatalog::updateDependencies で発生していたアサーション失敗を修正しました。また、参照依存関係が空の場合に RENAME TABLE または EXCHANGE TABLES の実行中に view の依存関係が黙って失われる問題も修正しました。#98779 (Alexey Milovidov).
  • 既存の database と同じ UUID を使って ON CLUSTER 経由で table を作成した際に発生していた server の abort (DatabaseCatalog::getTableImpl でのアサーション失敗) を修正しました。#98861 (xiaohuanlin).
  • データ読み取り時 (setting use_skip_indexes_on_data_read が有効な場合) のスキップ索引の使用と、論理更新で作成された既存の patch parts の扱いを修正しました。#99543 (Alexey Milovidov).
  • クエリオプティマイザーによって IN (subquery) を含む filter が PREWHERE に移動されたときに発生する “Not-ready Set” 例外を修正しました。#100375 (Alexey Milovidov).
  • 1 つの ALTER TABLE ステートメント内で ADD COLUMNRENAME COLUMN を組み合わせた際に発生する “Cannot find column” エラーを修正しました。#100387 (Alexey Milovidov).
  • DETACH/ATTACH または server の再起動後に、UNIONINTERSECT/EXCEPT 演算子が混在する view が誤った結果を返す問題を修正しました。#100390 (Alexey Milovidov).
  • IN clause に correlated subquery が現れた場合に、AST fuzzer によるストレステスト中に発生しうる “Trying to execute PLACEHOLDER action” 例外を修正しました。#100398 (Alexey Milovidov).
  • yearmonthday 変換でパーティション分割された Date カラムを持つ Iceberg table への insert 時に発生する論理エラー例外を修正しました。#100404 (Alexey Milovidov).
  • ALTER TABLE MODIFY COLUMN でカラム型が変更された後に、互換性のないデータに対してスキップ索引が使用される問題を修正しました。この問題により、sanitizer builds での server クラッシュや誤ったクエリ結果が発生する可能性がありました。#100526 (Alexey Milovidov).
  • paimonClusterpaimonS3ClusterpaimonAzureCluster、および deltaLakeS3 table functions で、query_log に認証情報が漏えいする問題を修正しました。#100529 (JIaQi Tang).
  • Kafka エンジン table に対する DROP TABLE が、rd_kafka_consumer_close でのデッドロックにより無期限にハングする可能性がある問題を修正しました。#100604 (Alexey Milovidov).
  • ハードコードされていた source_table_engines リストを、StorageFactoryDatabaseFactory を使った runtime ルックアップに置き換えました。あわせて、ソースエンジン (PostgreSQL、MySQL、S3 など) を使用する CREATE DATABASE で、CREATE TABLE と同じ source grants が必要になるよう、source_access_typeDatabaseFactory::EngineFeatures に追加しました。これにより、table_engines_require_grant=false のときに GRANT TABLE ENGINE ON * が失敗する問題を修正しました。#71544 をクローズしました。#100746 (pufit).
  • ALIAS カラムに、関数呼び出し内にネストされた相関サブクエリ (例: ALIAS toString(intDivOrZero(x, (SELECT ...)))) を含むテーブルの読み取り時に発生する server crash を修正しました。CREATE TABLEALTER TABLE は現在、DEFAULT / ALIAS / MATERIALIZED カラム式内の任意の深さにあるサブクエリを、THERE_IS_NO_DEFAULT_VALUE で拒否します。以前は浅い検証のためネストされたサブクエリが通ってしまい、相関ありのケースでは読み取り時に crash が発生し、相関なしのネストされたケースでは一見動作しているように見えても、予期しない挙動につながる可能性がありました。現在はどちらも DDL 時に拒否されます。#100753 (Groene AI).
  • optimize_substitute_columnsconvert_query_to_cnf settings が有効な場合に、CONSTRAINT ... ASSUME 定義を持つテーブルに対して相関サブクエリを含むクエリを使用すると発生し得た server crash (Logical error: Bad cast from type DB::FunctionNode to DB::ColumnNode) を修正しました。#100756 (Groene AI).
  • JSON column に行を insert した際、その行によって互換性のない値を持つ型付きフィールドと並んで新しい動的フィールドが導入され、その後そのカラムが GROUP BY キーとして使用されると発生し得た例外を修正しました。#100758 (Jimmy Aguilar Mena).
  • DiskObjectStorageTransaction パス (s3_with_keeper disks で使われ、use_fake_transaction=false の場合には明示的にも使用) を経由する S3 / object storage への書き込みで、workload I/O scheduling が暗黙のうちにバイパスされていた問題を修正しました。以前は、そのようなディスク上の MergeTree テーブルへの INSERT 書き込みで、トランザクション書き込みパスの WriteSettings に resource link が注入されていなかったため、CREATE RESOURCE / CREATE WORKLOAD による throttling が無視されていました。#100777 (JIaQi Tang).
  • ProtobufProtobufList の間で共有される schema-cache の競合を修正しました。最初に FORMAT Protobuf としてメッセージを読み取り、その後 FORMAT ProtobufList として読み取ると、ProtobufList が cache 済みスキーマを envelope 形式に強制していたため、失敗することがありました。現在は、envelope スキーマが利用できない場合、ProtobufList は cache 済みのメッセージ型にフォールバックします。#100849 (Callum Cooper).
  • std::exception ABI の不一致による Rust CXX bridge の heap-buffer-overflow を修正しました。#100931 (Azat Khuzhin).
  • FunctionVariantAdaptor は、すべての Variant の代替型が関数と非互換な場合、黙って Nullable(Nothing) を返すのではなく、ILLEGAL_TYPE_OF_ARGUMENT を throw するようになりました。以前は、どの代替型も互換性がない WHERE function(variant_col) predicate は、エラーなしで 0 行を返していましたが、同等の SELECT コンテキストではすでに正しく throw されていました。#100939 (Vasily Chekalkin).
  • データベースにビューが含まれていても、TRUNCATE ALL TABLES は失敗しなくなりました。#100943 (Alexey Milovidov).
  • optimize_rewrite_array_exists_to_has の最適化を修正し、型互換性のないケース (例: Date と String) を正しく処理できるようにしたうえで、デフォルトで再有効化しました。 #100944 (Alexey Milovidov).
  • S3 設定の優先順位を修正し、storage_configuration のディスク設定がグローバルな <s3> セクションより優先され、さらにユーザー/プロファイル/クエリレベルの設定がその両方より優先されるようにしました。 #100975 (Alexey Milovidov).
  • BFloat16、Float32、Float64 のカラムで、スパースなシリアライゼーションにより負のゼロ (-0.0) の符号が失われる問題を修正しました。 #100983 (Takumi Hara).
  • WKT エンコードされた GeoParquet および Arrow ファイルの読み取り時に使用される WKT ジオメトリパーサーの 2 つのバグを修正しました。MULTILINESTRING ジオメトリが誤って Polygon として解析されていた問題 (型付きカラムでは例外を引き起こし、混在した Geometry カラムではデータ破損が黙って発生していました) と、型キーワードのない不正な WKT 文字列が、明確なエラーではなく未定義動作をトリガーしていた問題です。 #100997 (Vasily Chekalkin).
  • 単一の分片を持つ分散テーブル上の grouping/GROUPING SETS クエリで、“Method executeImpl is not supported for ‘grouping’ function” というエラーにより失敗していた問題を修正しました。 #101030 (Alexey Milovidov).
  • 同じテーブル式が複数回処理された際に planner で発生することがあった LOGICAL_ERROR “Column identifier is already registered” を修正しました。 #101048 (Alexey Milovidov).
  • additional_result_filter 設定を UNION または EXCEPT クエリと併用した際に発生していた、LOGICAL_ERROR 例外 “Column identifier is already registered” を修正しました。 #101051 (Alexey Milovidov).
  • GROUPING SETS、ROLLUP、または CUBE とともに group_by_use_nulls=1 を使用し、さらに集約関数と * APPLY を併用した際に発生していたサーバークラッシュ (Logical error: Bad cast from ColumnVector to ColumnNullable) を修正しました。 #101062 (Groene AI).
  • input_format_csv_skip_first_lines または input_format_tsv_skip_first_lines がファイル内の行数を超えた場合に発生する無限ループを修正しました。 #101111 (Alexey Milovidov).
  • 遅延マテリアライゼーションの最適化における範囲外アクセスを修正しました。これにより、デバッグビルドで例外が発生する可能性がありました。 #101144 (Alexey Milovidov).
  • 再帰 CTE における型推論を修正しました。非再帰側と再帰側の UNION ALL 全体で、カラム型は収束するまで getLeastSupertype によって反復的に拡張されるようになり、x + 1 のような式で整数オーバーフローが発生するのを防ぎます。 #101155 (Alexey Milovidov).
  • MergeTree の圧縮ブロックサイズ設定 (max_compress_block_size、min_compress_block_size、marks_compress_block_size、primary_key_compress_block_size) の上限を 256 MiB に制限し、極端な値が CREATE TABLE SETTINGS で設定された際のサーバークラッシュを防ぐようにしました。 #101159 (Groene AI).
  • ROW POLICY が USING 句でスカラサブクエリ (例: USING (SELECT 1)) を使用している場合に、QueryAnalyzer::resolve() で発生する LOGICAL_ERROR によるクラッシュを修正しました。#100695 をクローズしました。#101263 (Groene AI).
  • ストリームの割り当てに失敗した際に MergeTreeDataPartWriterCompact::cancel で発生する未定義動作を修正しました。#101292 (Alexey Milovidov).
  • ALTER ステートメントでの代入時にタイムゾーンが含まれないことがある問題を修正しました。#101328 をクローズしました。関連: https://github.com/ClickHouse/ClickHouse/pull/100647. #101403 (Yarik Briukhovetskyi).
  • SELECT パイプラインが複数のストリームを生成する場合に、ORDER BY ALL を含む INSERT SELECT クエリで発生するサーバークラッシュ (LOGICAL_ERROR) を修正しました。#101443 (Groene AI).
  • join の並べ替えによって、INNER JOIN フィルター (outer join の保持側のみを参照するもの) が outer join の ON 句に押し込まれ、誤ったクエリ結果になる問題を修正しました。#101504 (Vladimir Cherkasov).
  • arrayJoin を含む実行プランでは遅延マテリアライゼーションを適用しないようにし、limit が守られなくなる可能性がある問題を修正しました。#101608 をクローズしました。#101644 (Vladimir Cherkasov).
  • mergeFilterIntoJoinCondition 最適化によって、型が一致しない WHERE の等価条件が暗黙に破棄され、不正な JOIN クエリ結果になる問題を修正しました。#101652 (Xiaozhe Yu).
  • 構文エラー/パースエラーに対して error テストヒントが機能しない問題を修正しました。従来は、不正なクエリに対する -- { error SYNTAX_ERROR } がクライアント側のパースエラーに一致せず、“Expected server error” で失敗していました。#101675 (Groene AI).
  • INTO OUTFILE ... TRUNCATE が実際には atomic なリネームを使用していなかった問題を修正しました。書き込みは一時ファイルではなく元のファイルに直接行われていたため、クエリ失敗時に元の内容が失われていました。現在は一時ファイルにデータを書き込み、成功時にのみリネームするようになりました。#101884 (Pablo Marcos).
  • スキーマに varchar(n) または char(n) のカラム型が含まれる Delta Lake テーブルの読み取り時に発生していた例外 Unsupported DeltaLake type: varchar(n) を修正しました。これらの型は、Delta Lake プロトコルが Parquet では単なるバイト配列として保存する仕様に合わせて、String にマッピングされるようになりました。#101973 (Flavio Malavazi).
  • schema_inference_mode=union と異種の Parquet スキーマを使用して S3 から tar アーカイブを読み取る際に、データが静かに失われる問題を修正しました。Parquet メタデータキャッシュが、アーカイブ内の後続ファイルすべてに対して最初のファイルのメタデータを誤って再利用していました。#101990 (Ahaan Limaye).
  • 同じサーバー lifetime 内でそのテーブルに対する SELECT または INSERT がそれまで一度も実行されていない場合に、Iceberg テーブルで ALTER TABLE UPDATE/DELETE を実行すると発生するサーバークラッシュ (LOGICAL_ERROR) を修正しました。#102113 (Alexey Milovidov).
  • インメモリデータベース上のテーブル (例: 一時テーブル) に対して ALTER クエリを実行した際に発生する可能性があるクラッシュを修正しました。 #102360 (Den Kalantaevskii).
  • 同じログソースに対する後方互換の READ/WRITE grants をフォーマットする際に、formatQueryGRANT FILE ON *.*, FILE ON *.* TO x のような重複した grants を生成し、本来の GRANT FILE ON *.* TO x にならない問題を修正しました。 #102411 (Groene AI).
  • max_streams_to_max_threads_ratio が 1 より大きい場合に、read-in-order クエリ後の aggregation で並列度が失われる問題を修正しました。 #102467 (Alexey Milovidov).
  • Buffer テーブルエンジンからサブカラム (Nullable の .null、Array の .size0、Tuple の要素、map の keys/values など) を選択した際に発生するクラッシュ (LOGICAL_ERROR: Unknown virtual column) を修正しました。 #102470 (Groene AI).
  • join_use_nulls を伴う LEFT/RIGHT JOIN が、3 テーブル以上を含む他の joins と組み合わされた場合に、join reorder optimization で発生する “Cannot fold actions for projection” 例外を修正しました。 #102516 (Alexey Milovidov).
  • スカラーが範囲外の場合に、numericIndexedVector 上の要素ごとのスカラー演算 (例: numericIndexedVectorPointwiseAdd) で発生していた検出されない overflow を修正しました。今後は、このような入力に対して破損した値を返す代わりに INCORRECT_DATA を返します。 #102546 (FriendLey).
  • SAMPLE とクエリレベルの OFFSET を伴う INSERT で、AST のフォーマットが一貫しない問題を修正しました。 Closes #102523. #102547 (zoomxi).
  • 不正な aggregate function state のデシリアライズ時に groupConcat で発生する LOGICAL_ERROR 例外を修正しました。 #102558 (Christoph Wurm).
  • input_format_csv_use_default_on_bad_values=0 の場合、Time64 の CSV 値の末尾にある不正な文字列を受け付けないようにしました。 Closes #102490. #102596 (Yarik Briukhovetskyi).
  • Enum 型のパスを持つ JSON column にデフォルト値を insert する際に発生する UNKNOWN_ELEMENT_OF_ENUM 例外を修正しました。 Closes #102359. #102687 (Pavel Kruglov).
  • 一部のケースで、カラムのリネーム時に columns&#95;substreams.txt が破損する問題を修正しました。 Closes #102259. #102689 (Pavel Kruglov).
  • JSON のパース中に Time data type への insert に失敗する問題を修正しました。 Closes #102016. #102690 (Pavel Kruglov).
  • キャッシュされたスキーマのファイル名に含まれる content サンプルの 16 進エンコードを修正しました。 Closes #101904. #102703 (Pavel Kruglov).
  • Float32 カラムに signaling NaN 値が含まれている場合に、ORDER BY キーがハッシュ式になっている SummingMergeTree のマージ中に発生するソート順序違反 (debug ではクラッシュ、release ではサイレントなデータ破損) を修正しました。 #102791 (Groene AI).
  • waitDetachedTableNotInUse を呼び出す DETACH DATABASE ... SYNC などの操作を、KILL QUERY でキャンセルできるようにし、サーバーのシャットダウンにも応答するようにしました。これにより、同時実行中のクエリがテーブル参照を保持している場合に無期限にハングするのを防ぎます。 #102804 (Antonio Andelic).
  • ANY RIGHT JOIN が誤った結果を返す可能性がある不具合を修正しました。 #102893 (Nikita Taranov).
  • socket 層からの short write を Poco の BufferedStreamBuf::flushBuffer が処理できないことが原因で、S3 リクエストがリトライされず、ios_base::clear: unspecified iostream_category error で失敗する不具合を修正しました。 #102894 (Sema Checherinda).
  • INSERT SELECT クエリで、input('auto') テーブル関数が HTTP interface 経由で失敗する不具合を修正しました。 #102902 (Miсhael Stetsyuk).
  • row policies/additional_table_filters 使用時の trivial LIMIT 最適化を無効化しました (並列な索引解析を可能にするため) 。 #102921 (Azat Khuzhin).
  • HMAC SQL function でシークレットキーを隠すようにしました。#102927 を修正しました。 #102997 (Mikhail f. Shiryaev).
  • optimize_syntax_fuse_functions が有効な場合に、同じ quantile 呼び出しを複数回参照する分散クエリ (たとえば SELECTHAVINGORDER BY 内) で発生する MULTIPLE_EXPRESSIONS_FOR_ALIAS 例外を修正しました。 #103014 (tanner-bruce).
  • フィルターが左側のカラムに依存しているときに、未準備の set が渡されるケースを CI で発見し、これを修正しました。#102966 をクローズしました。 #103029 (Yarik Briukhovetskyi).
  • 一部のケースで JSON への castOrNull を修正しました。#101818 をクローズしました。 #103036 (Pavel Kruglov).
  • aggregate projection がクエリに一致し、かつテーブルの一部のパーツに projection データが存在しない場合 (たとえば、すでにデータが入っているテーブルに projection を追加し、MATERIALIZE PROJECTION を実行していない場合) に、SELECT DISTINCT が不完全な結果をサイレントに返す不具合を修正しました。#102951 をクローズしました。 #103052 (Nihal Z. Miaji).
  • アナライザでの共通式抽出中に、AND(OR(A, A), A) のような WHERE 条件式が単一の最上位引数に畳み込まれた際に発生する TOO_FEW_ARGUMENTS_FOR_FUNCTION 例外を修正しました。 #103072 (Peng).
  • タプル、マップ、または QBit 要素を含む配列に対して if/ifNull を評価する際に発生していた論理エラー Function writeSlice expects same column types for GenericArraySlice and GenericArraySink を修正しました。ColumnQBit::structureEquals が、一方の QBit カラムの内部タプルを他方の外側ラッパーと誤って比較していたため、構造的に同一の QBit カラムが異なるものとして扱われていました。#103084 (Groene AI).
  • テーブル参照が保持されている場合に無期限にハングするのではなく、database_atomic_wait_for_drop_and_detach_synchronously を指定した DETACH DATABASEKILL QUERY に従うよう修正しました。#103095 (Alexey Milovidov).
  • 非識別子の predicate (例: WHERE 1=1) を使って WASM モジュールを削除した際に発生する segfault を修正しました。#103101 (Joe Redfern).
  • processInsertQuery の末尾で sendProgress を無条件に呼び出していたことが原因で、古いクライアントが remote() または分散テーブル経由で新しいサーバーに insert した際に UNEXPECTED_PACKET_FROM_SERVER で失敗していた後方互換性の問題を修正しました。#103148 (Sema Checherinda).
  • 定数でないタプルを第 2 引数に取る IN では、タプル要素を左辺の型に CAST で縮小してはなりません。これはオーバーフローを引き起こす可能性があります。#103055 をクローズしました。#103169 (Yarik Briukhovetskyi).
  • プロトコル関数での未初期化値の使用を修正しました。#103187 (Pavel Kruglov).
  • WHERE clause が LowCardinality のキー column を、ネストされた LowCardinality を含む型 (たとえば Variant(LowCardinality(Date), String)) にキャストした定数と比較する場合に、MergeTree の索引解析中に発生する LOGICAL_ERROR (Bad cast … to ColumnLowCardinality) を修正しました。#103211 (Groene AI).
  • timeSeries*ToGrid aggregate function ファミリー (例: timeSeriesResampleToGridWithStalenesstimeSeriesChangesToGridtimeSeriesResetsToGridtimeSeriesRateToGrid) を、bucket 数の計算で符号付き 64 ビット整数演算がオーバーフローするような極端な timestamp パラメータで呼び出した際に発生する Logical error: 'index < bucket_count' を修正しました。あわせて、悪意ある入力による意図しない大規模メモリ割り当てを防ぐため、グリッド bucket の総数を 1,600 万に制限しました。#103223 (Groene AI).
  • ReplacingMergeTree の遅延 FINAL パスでのパイプライン展開中に発生する Logical error: 'Port is already connected' 例外を修正しました。この不具合は、ReadFromMergeTree::initializePipeline が内部変換 (例: Resize) を挿入してサブパイプラインのプロセッサ同士を接続した結果、LazyUnorderedReadFromMergeTreeSource::expandPipeline がすでに接続済みの出力ポートを再接続しようとしていたため、query_plan_optimize_lazy_final = 1 のクエリに影響していました。#103230 (Groene AI).
  • 入力がソート済みの subqueries からなる UNION ALL の場合に、LIMIT BYDISTINCT が誤った結果を返す問題を修正しました。クエリプラン オプティマイザーがそのようなユニオン全体をグローバルにソート済みと誤って扱い、余分な行を返していました。#103231 (Nihal Z. Miaji).
  • 遅延レプリケーションを伴う Map type での統計計算中に発生しうるクラッシュを修正しました。#102390 をクローズしました。#103273 (Pavel Kruglov).
  • clone() constinvalidate_query_response 文字列を読み取り、isModified() const が同じ文字列に書き込むことで発生していた、ClickHouse、MySQL、PostgreSQL、XDBC の Dictionary ソースにおける data race を修正しました。#103277 (Miсhael Stetsyuk).
  • Date32 の単調性検出の誤りを修正しました。#101265 をクローズします。#103283 (Yarik Briukhovetskyi).
  • 認証前の TCP Hello パケット内の文字列を 64 KB に制限し、ハンドシェイク全体の時間を制限する handshake_timeout_milliseconds server setting を追加しました。これにより、未認証の client が過剰なメモリを消費したり、threads を無期限に占有したりすることを防ぎます。#103284 (Sema Checherinda).
  • String カラムにおける Parquet ColumnIndex stats の min_value > max_value を修正しました。#103334 (Saurabh Kumar Ojha).
  • flattenTuple および tupleToNameValuePairs において、Nullable(Tuple(...)) 入力の NULL 行が誤って処理される問題を修正しました。flattenTuple は外側の null map を保持するようになり、NULL 行が NULL のまま維持されます。tupleToNameValuePairs は、入力が Nullable(Tuple(...)) の場合、可能であれば結果の値の型を Nullable(T) に変更するようになり、NULL 行は [('a', 0), ('b', 0)] ではなく [('a', NULL), ('b', NULL)] を生成します。要素型を Nullable でラップできない場合 (例: Array) は、NULL の代わりにデフォルト値が使用されます。#103312 をクローズします。#103383 (Nihal Z. Miaji).
  • Native format 内の不正な flattened Dynamic data を検出するようにしました。#103392 (Pavel Kruglov).
  • snapshot 同期後に stale RPC が原因でレプリケーションが停止する問題を修正しました。#103406 (Seva Potapov).
  • BSON 型が Nullable(T) または Array(Nullable(T)) カラム内の対象カラム型と互換性のない値を含む不正な BSON document を読み取る際に、LOGICAL_ERROR “Cannot pop N rows from X” によって server が異常終了していた問題 (debug / sanitizer builds で発生) を修正しました。今後は、不正な行に対して意図どおり ILLEGAL_COLUMN exception が正常に生成されます。#103418 (Groene AI).
  • 先頭の行が空で、かつ常に false を返すラムダとともに適用された Array(String) カラムに対する arrayFill および arrayReverseFill での server 異常終了を修正しました。aggregate / sub-array ループで size_t 索引 が underflow して SIZE_MAX となり、その結果 ColumnString::doInsertManyFrom 内で範囲外読み取りが発生していました。同じ bug family の事例として #12263 があります。#103424 (Groene AI).
  • 上流の REPLACE RMV の EXCHANGE によって解決途中で対象ストレージの identity が切り替わる際、SQL SECURITY DEFINER を使用する下流の APPEND RMV で発生していた ACCESS_DENIED / UNKNOWN_TABLE を修正しました。#103427 (Alexander Gololobov).
  • url table function から _time カラムを設定するようにしました。#103437 (Nikita Taranov).
  • 無効なビット幅を持つ不正な入力の処理時に、ALP コーデックの伸長処理経路で発生しうる範囲外読み取りを修正しました。#103457 (Raufs Dunamalijevs).
  • SYSTEM SYNC FILESYSTEM CACHE '<name>' ON CLUSTER ... で、クエリのフォーマット時に cache 名が失われ、指定した cache のみではなくリモートノード上のすべてのファイルシステムキャッシュが同期されてしまう不具合を修正しました。#103469 (Asish Kumar).
  • deltaLakeAzure における URL エンコードされたパスの処理を修正しました。#103509 をクローズしました。#103525 (Smita Kulkarni).
  • AggregateFunction の state に整数を掛ける処理 (例: quantilesExactState(...) * N) で発生する heap-use-after-free を修正しました。二乗法によるべき乗ループで state を自身と merge しており、集約関数の merge が内部ストレージを再割り当てする場合、これは未定義動作になります。STID 0988-40af をクローズしました。#103536 (Groene AI).
  • ディスク上にある 2 つの空の unexpected パーツのブロック範囲が重複しているものの、一方が他方を包含していない場合に、ReplicatedMergeTree テーブルの起動時にまれに発生していた LOGICAL_ERROR “Part X intersects previous part Y” を修正しました。この例外により table-attach スレッドが中断され、テーブルを起動できなくなっていました。#103537 (Groene AI).
  • 非アダプティブインデックス粒度 (index_granularity_bytes = 0) を使用する MergeTree テーブルで、最後の data mark が不完全な場合に mutation によって引き起こされていた Logical error: Incorrect mark rows for part ... (デバッグ時のみのアサーション) を修正しました (DETACH/ATTACH の後に論理削除を行うと最も確実に再現できます) 。#103538 (Groene AI).
  • file() テーブル関数経由で /proc および /sys の疑似ファイルを読み取る際に、clickhouse-local が 0 行を何も警告せず返してしまう不具合を修正しました (例: SELECT * FROM file('/proc/cpuinfo', 'RawBLOB')) 。#103548 (Ashrith Bandla).
  • GenerateRandom table engine における max_string_length 引数の処理を修正しました。#103550 (Alex Kuleshov).
  • ログ内でネストされた認証情報のマスキングを修正しました。#103552 (Vitaly Baranov).
  • 利用できない場合でも SVE 命令を使用してしまう SVE 検出を修正しました。#103568 (Raúl Marín).
  • GenerateRandom のストレージ引数のパースを修正しました。#103574 (Konstantin Bogdanov).
  • ±inf で始まるデータに対して WITH FILL で無限ループが発生する問題を修正しました。#103580 (Konstantin Bogdanov).
  • Variant 型への JSONExtract で JSON の小数が暗黙に切り捨てられていた問題を修正しました。以前は、JSONExtract('{"x": 3.14}', 'x', 'Variant(Int64, Float64)')Int64=3 を返し、JSONExtract('{"x": 3.14}', 'x', 'Variant(String, Int64)')Int64=3 を返して、小数部分が失われていました。現在は小数値が損失なく保持されます。Float64/Decimal のメンバーが存在する場合はそれが値を保持し、存在しない場合は String のメンバーが元の JSON をそのまま取り込みます。整数メンバーのみを含む Variant 型 (例: Variant(Int64, Int32)) および整数への直接抽出 (JSONExtract(json, 'Int64')JSONExtractInt など) の挙動は変わりません。 #103620 (Groene AI).
  • 引数なしの SYSTEM INSTRUMENT REMOVE が、SYNTAX_ERROR (エラーコード 62) ではなく std::bad_optional_access (エラーコード 1001) を発生させる問題を修正しました。 #103622 (Pablo Marcos).
  • 3 番目の argument に timezone 文字列を指定して呼び出した際の、windowID および tumble window view における論理エラー / 未定義動作を修正しました。 #103641 (Alexey Milovidov).
  • S3 client のログで、空でない x-amz-bucket-region header を含む HTTP 400 レスポンス (SigV4 の署名 Region が誤っている場合) を、汎用的なエラー扱いではなく、より明確なログ行を伴う wrong-region の情報メッセージとして扱うようになりました。また、STS web identity credentials provider は、web identity が設定されている場合にのみ S3 credentials chain に追加されるようになり、これを使わないデプロイメントで不要な警告が減ります。 #99140 をクローズします。 #103673 (MeltonSmith).
  • SYSTEM SYNC REPLICA <db>.<tbl> IF EXISTS を、database が存在しない場合でも黙って成功するよう修正しました。これにより、存在しない table に対する既存の挙動と DROP TABLE IF EXISTS の先例に一致します。以前は、IF EXISTS があるにもかかわらず、このクエリは UNKNOWN_DATABASE を返していました。 #103629 をクローズします。 #103689 (Groene AI).
  • MergeTree table のソートキーに Array(LowCardinality(...)) があり、WHERE clause でそのカラムと element type が異なる Array 定数との間で plus / minus を使用した場合に、FunctionBinaryArithmetic::executeImpl2 が論理エラー Arguments of 'plus' have incorrect data types を投げる問題を修正しました。KeyCondition::getMonotonicityForRange は、内部の数値ディスパッチを呼び出す前に LowCardinality を再帰的に取り除くようになりました。 #103701 (Groene AI).
  • 26.1+ における動的な cache リサイズ競合を修正しました。 #103702 (Kseniia Sumarokova).
  • 式にキャプチャされた定数を持つラムダ (例: arrayMap((k, v) -> concat(k, '=', v), mapKeys(m), mapValues(m)))) が含まれる ALIAS カラムで、text および bloom_filter のスキップインデックスが暗黙に無視されていた問題を修正しました。 #103708 (Anton Popov).
  • start_posUINT64_MAX に近い場合の position および positionCaseInsensitive で、ポインタ演算のオーバーフローにより処理が停止したり segmentation fault を引き起こしたりする問題を修正しました。 #103766 (Raúl Marín).
  • 小数部が二重になった dateTime のパース中に発生する未定義動作を修正しました。 #103773 (Yarik Briukhovetskyi).
  • 26.x で、JIT コンパイルされた if および multiIf において、結果型が Decimal で、いずれかの分岐に非 Decimal (整数または浮動小数点) のリテラルがある場合、実際より 10^scale 倍小さい値がそのまま返されるデータ正確性のリグレッションを修正しました。低速な (非 JIT の) 経路は影響を受けていませんでした。影響を受けるバージョンでの回避策: SET compile_expressions = 0#103809 (Groene AI).
  • テキスト索引から対応する関数へトークナイザーが正しく受け渡されない問題を修正しました。#103826 (Elmi Ahmadov).
  • WHERE 句で、要素が単一のキーカラムに重複排除されるタプルに対して IN または NOT IN を使用したとき、numbersgenerate_series、および同様の範囲対応ソースが誤った結果を返す問題を修正しました (例: WHERE tuple(number, number) NOT IN (tuple(1, 2))) 。#103660 をクローズします。#103835 (Groene AI).
  • 自動スピリングを行うハッシュ結合の実際のメモリ使用量ピークが max_bytes_before_external_join を超えないようにしました。従来は、統計に基づく事前割り当て、インプレースでのハッシュテーブルの倍増、制限のない GraceHashJoin のインメモリバケットのいずれでも、クエリが設定された上限を超えて MEMORY_LIMIT_EXCEEDED が発生する可能性がありました。#103838 (Alexey Milovidov).
  • clickhouse-local の終了時に、system logs (text_logfilesystem_cache_log など) が設定されているとハングする問題を修正しました。SystemLogs::flushImplBaseDaemon::instance().flushTextLogs() を呼び出していましたが、これは clickhouse-server の外では std::bad_cast を送出するため、保存スレッドが動作し続け、最終的に pthread_cond_destroy が system log queue の破棄をブロックしていました。#103874 (Alexey Milovidov).
  • MATERIALIZED CTE クエリで、ボディが参照ごとに異なる推論カラム型に解決される場合、サーバーを Bad cast LOGICAL_ERROR でクラッシュさせるのではなく、明確な TYPE_MISMATCH error を返して拒否するようにしました。これは以前、CTE のボディが外側のスコープの識別子 (たとえば呼び出し元のサブクエリの projection 内の alias) を参照し、それらが参照ごとに異なる定数としてインライン展開される場合に発生していました。#103879 (Groene AI).
  • ANY OUTER JOIN の上にある filter に randnowrowNumberInAllBlocks などの非決定論的関数が含まれる場合、JOIN 変換クエリプラン optimizer (tryConvertAnyOuterJoinToInnerJoin, tryConvertAnyJoinToSemiOrAntiJoin) で未初期化値が使用される問題を修正しました。optimizer はこのような filter を定数畳み込みしなくなり、JOIN を変更しないままにします。これにより、行が気付かないうちに欠落するおそれのある INNER/SEMI/ANTI JOIN への誤変換も防止されます。#103880 (Groene AI).
  • consumer が一時的な topic-partition lock を保持している間に Keeper session が置き換えられた場合、サーバーがクラッシュする可能性のあった StorageKafka2 の use-after-free を修正しました。#103890 (Groene AI).
  • EmbeddedRocksDB テーブルを JOIN ... USING (key) で、キーカラムの型がストレージの主キーと異なるサブクエリ (例: Nullable(UInt64)Int64Decimal) と JOIN した際に、LOGICAL_ERROR “Primary key type mismatch” が送出される問題を修正しました。planner は型不一致時に DirectKeyValueJoin を選択せず、型変換を処理できる HashJoin にフォールバックするようになりました。#103928 (Groene AI).
  • SET max_threads = DEFAULT (max_final_threadsmax_parsing_threads も同様) を実行しても、auto 状態が失われなくなりました。以前は、これらの設定のいずれかをリセットすると、system.settings には 'auto(32)' ではなく解決後のコア数 (例: 32) が表示され、サーバーもその値が明示的に固定されたかのように動作していました。#103991 (Groene AI).
  • 永続化された alpha_size が 25.12 より前の deserialize+serialize サイクルで拡張されていた AggregateFunction(topK(N), String) カラムの読み取り時に発生する SIZES_OF_ARRAYS_DONT_MATCH を修正しました。#104002 (Raúl Marín).
  • PostgreSQL、Cassandra、XDBC の Dictionary ソースにおける SQL インジェクション脆弱性を修正しました。単一引用符を含む文字列キーが \' (バックスラッシュ) でエスケープされていましたが、これらのバックエンドではこれがエスケープシーケンスではなくリテラルのバックスラッシュとして扱われるため、Dictionary ルックアップクエリに任意の SQL を注入できていました。ExternalQueryBuilder は、これらのバックエンド向けに SQL 標準の '' エスケープを出力するようになりました。ClickHouse と MySQL の Dictionary ソースは、引き続きバックスラッシュエスケープを使用します。#104009 (Shaohua Wang).
  • カラム型を LowCardinality に変更、または LowCardinality から変更した際に、min-max projection が再構築されていなかった場合に発生しうる集約時の型不一致を修正しました。#104013 (Nikita Taranov).
  • 式のマージ時に未使用カラム削除の抑止が伝播されないことで発生していた、クエリ最適化の無限ループを修正しました。#104083 (János Benjamin Antal).
  • 名前ベースではなく UUID ベースの追跡を使用することで、ストリーミングテーブル (S3Queue、Kafka、RabbitMQ) の一括リネーム時に StreamingStorageRegistry::renameTable で発生する LOGICAL_ERROR を修正しました。#104101 (Nikita Taranov).
  • UNION ALL で構築された CTE に SELECT DISTINCT の分岐が含まれ、外側のクエリが CTE のカラムの一部だけを射影している場合に、誤った結果が返る問題を修正しました。新しいアナライザの RemoveUnusedProjectionColumnsPass が、内側の DISTINCT 射影から未参照カラムを誤って削除していたため、本来は DISTINCT のままであるべき行 (射影されたカラムの値は同じでも、削除されたカラムの値が異なる行) が 1 行に潰れていました。#104114 (Groene AI).
  • 設定 optimize_inverse_dictionary_lookup における複数のエッジケースでの正しさの問題を修正しました。この最適化により、行が気付かないうちに欠落したり、例外が抑制されたりする可能性がありました。Closes #103270. Close #103085. #104133 (Nihal Z. Miaji).
  • quantileTiming state のデシリアライズ中に境界外書き込みが発生する問題を修正しました。#104141 (Alexey Milovidov).
  • 範囲外の Float64 値を広い整数型 (UInt64Int64Int128UInt128Int256UInt256) に変換した際の未定義動作を修正しました。以前は、Float64(numeric_limits<T>::max()) と等しい値 (実際の最大値を上回る値に丸められる) が境界チェックをすり抜け、その後の cast で UB を引き起こしていました。これは、集約関数パラメータのパース (topKhistogramuniqUpTogroupArrayInsertAt など) や、SET <setting> = <Float64> による整数型設定に影響していました。Closes #103817. #104154 (Groene AI).
  • ネストした Tuple(Tuple(Nullable(...))) (またはそれ以上に深くネストしたもの) を String リテラルと比較した際に発生していた LOGICAL_ERROR 例外 “Unexpected return type from comparison. Expected UInt8. Got Const(Nullable(UInt8))” を修正しました。比較の戻り値型は、実行時の挙動に一致する Nullable(UInt8) として正しく推論されるようになりました。#104171 (Groene AI).
  • query_plan_optimize_lazy_final = 1 のとき、SELECT ... FROM <ReplacingMergeTree(version, is_deleted)> FINAL PREWHERE is_deleted = <expr> AND <other column expr> で発生していた server abort (UndefinedBehaviorSanitizer: reference binding to null pointer、release build での segfault) を修正しました。lazy-FINAL の非交差読み取り step では、prewhere が is_deleted カラムを入力として消費したにもかかわらず、それを出力として再公開していなかったため、出力 header から is_deleted カラムが失われていました。その結果、下流の addIsDeletedFilter step で null の ActionsDAG::Node pointer が逆参照されていました。#104177 (Groene AI).
  • system.failpoints table の呼び出し時に failpoint が使われ、その結果無効化される可能性があった問題を修正しました。#104237 (Pedro Ferreira).
  • 入力に UTF-8 文字がちょうど buffer 境界で終わる場合に、detectLanguage* 関数で発生していた MemorySanitizer: use-of-uninitialized-value を修正しました。#104257 (Raúl Marín).
  • 基盤の object storage がファイルシステムキャッシュのような decorator でラップされたディスクに対して SETTINGS disk = '...' を指定して呼び出した際に、data-lake の table function やエンジン (icebergS3deltaLakeS3 など) で argument のパースが中断されていた論理エラー (Bad cast from type DB::CachedObjectStorage to DB::S3ObjectStorage) を修正しました。#89300 をクローズします。#104258 (Groene AI).
  • values という名前のカラムに対する括弧付き添字式 (例: (values['a'])) のパースを修正し、SQL 標準の VALUES table 式として解釈されないようにしました。#104312 (Desel72).
  • ファイルシステムキャッシュの background エビクション thread (SLRUFileCachePriority::collectEvictionInfo) で発生しうる server abort/LOGICAL_ERROR を修正しました。これは、keep_free_space_size_ratio または keep_free_space_elements_ratio が、すべての cache entries がすでに SLRU protected queue に昇格済み (probationary は空) である状況でもエビクションがトリガーされるほど高い場合に発生する可能性がありました。#104313 (Groene AI).
  • UNION ALL views、window functions、または alias-column 名の衝突と組み合わせて projections を使用した際に発生する例外 (NOT_FOUND_COLUMN_IN_BLOCKLOGICAL_ERRORAMBIGUOUS_COLUMN_NAME) を修正しました。#88798 からのリグレッションです。#104317 (Amos Bird).
  • postgres arrays のパースにおける underflow の可能性を修正しました。#104322 (Grant Holly).
  • Nullable型 (ArrayTupleMap など) を返す関数で、Nullableな引数を受け付けるようになりました。対象の関数は extractAllextractAllGroupsextractAllGroupsHorizontalextractAllGroupsVerticalextractGroupssplitByCharsplitByStringsplitByRegexpsplitByWhitespacesplitByNonAlphaalphaTokens です。NULL 入力行では、“Nested type is not allowed inside Nullable type” を発生させる代わりに、結果型のデフォルト値 (たとえば空の配列) を返すようになりました。#104326 (Alexey Milovidov).
  • パーティション化されたテーブルにおける Iceberg の統計情報の不具合を修正しました。これにより #104321 はクローズされます。#104329 (Konstantin Vedernikov).
  • macOS (および同様の jemalloc ビルド) で、オプションの background_thread / max_background_threads mallctl が存在しないにもかかわらず、Jemalloc::verifySetupjemalloc_enable_background_threads の不一致を誤って報告していたことにより、server 起動時に発生していた致命的な論理エラーを修正しました。これらの mallctl が利用できない場合は検証をスキップし、getValue も失敗時に出力を未初期化のまま残さなくなりました。#102183 をクローズします。#104330 (SAYON DEEP).
  • max_rows_to_read_leafread_overflow_mode_leaf = 'throw' を指定した SELECT クエリで、スキップ索引によって読み取り行数が leaf 上限未満まで減る場合でも、誤って TOO_MANY_ROWS をthrowしてしまうことがあった不具合を修正しました。対になる非 leaf 側の設定 (max_rows_to_read / read_overflow_mode) については、すでに処理済みでした。#104331 (Groene AI).
  • toUUIDtoUUIDOrNulltoUUIDOrZerotoUUIDOrDefaultUUID および Nullable(UUID) への CASTUUID への accurateCastOrNull、さらにテキストから UUID を解析する入力フォーマット (AvroMsgPackJSONExtract、…) で、長さは正しくても 16 進数以外の文字を含む文字列を拒否するようになりました。従来はこのような入力は、16 進数字のルックアップテーブルの末尾を越えて参照することで、黙って捏造された UUID に変換されていました。現在は toUUIDCANNOT_PARSE_UUID をthrowし、Or* 系のバリアントは NULL / ゼロ UUID / 指定されたデフォルト値を返します。#104370 (Groene AI).
  • THEN のみの supertype と、(THEN 群 + ELSE) の supertype が異なる ColumnDecimal ストレージに配置される場合に、caseWithExpression (および SQL の CASE expr WHEN ... THEN ... ELSE ...) で発生する Bad cast LOGICAL_ERROR を修正しました。たとえば、THEN の値が (UInt16, Int8) で、ELSE が Decimal(9, 2) の場合です。#104335 をクローズします。#104378 (Groene AI).
  • logExceptionBeforeStart (非同期挿入の flushes、マテリアライズドビューの refreshes、内部クエリ中に発生した parse エラー) 経由で報告される内部障害で、ユーザー可視の FailedQueryFailedSelectQueryFailedInsertQuery の counters に加えて、FailedInternalQueryFailedInternalSelectQueryFailedInternalInsertQuery の ProfileEvents も正しく増加するようになりました。従来は、クエリ実行開始前に発生した障害ではこれらの内部カウンターが 0 のままで、主要な種類の内部障害が過少計上されていました。#104399 (Groene AI).
  • BACKUP または RESTORE ステートメントの base_backup 設定内でクエリパラメータを使用した際に発生する Code: 36. BAD_ARGUMENTS Expected literal, got {name:Type} を修正しました (例: BACKUP ... SETTINGS base_backup = S3({backup_name:String}, ...)) 。このリグレッションは PR #99205 により 26.1.5 で導入されたものです。#103324 をクローズしました。#104413 (Groene AI).
  • ALTER TABLE ... DROP COLUMN の後、iceberg_metadata_staleness_ms が 0 より大きい状態で INSERT を実行すると発生していた、IcebergLocal/IcebergS3 への書き込み時の server abort を修正しました。ALTER 実行時にローカルの Iceberg metadata files cache が無効化されるようになり、以後の読み取りと書き込みで新しいスキーマが参照されます。#104419 (Groene AI).
  • DROP ROLEDROP USERDROP SETTINGS PROFILEDROP ROW POLICYDROP QUOTADROP MASKING POLICY について、削除された entity を参照していた他の access entity からその参照 (例: ユーザーの DEFAULT ROLE リスト、settings profile の TO リスト、row policy の grantee) を削除し、そのクリーンアップ結果をディスクに永続化するよう修正しました。従来は、SHOW CREATE が不明な UUID を filter するため in-memory state は正しく見えていましたが、ディスク上の .sql ファイルには不正な ID('<dropped-uuid>') エントリが残っており、次回 server を再起動すると参照が復活し、distributed query execution 中に ACCESS_ENTITY_NOT_FOUND error として表面化していました。#104427 (Groene AI).
  • BlobEndpoint URL に空、非数値、または範囲外のポートを含む接続文字列 (例: BlobEndpoint=http://host:abc/) を使った azureBlobStorageAzureBlobStorage-engine、および Azure 上の Delta Lake で発生する server abort を修正しました。debug/sanitizer builds でも server が abort する代わりに、適切な BAD_ARGUMENTS error を返すようになりました。#104460 (Groene AI).
  • remote および remoteSecure table functions で、ユーザー名としてクォートなしの識別子を使えるようにしました。これは database 引数や table 引数がクォートなし識別子を受け付ける動作に合わせたものです。従来、このようなクエリは default ユーザーを参照する誤解を招く authentication error で失敗していました。#104465 (Alexey Milovidov).
  • SQL user-defined function の本体に、括弧で囲まれた内側の UNION ALL が含まれている場合に発生する Logical error: Incorrect ASTSelectWithUnionQuery (modes: M, selects: N) を修正しました (例: CREATE FUNCTION f AS x -> (SELECT 1 UNION ALL (SELECT 1 UNION ALL SELECT 1))) 。#104477 (Groene AI).
  • 第 2 引数が空の uniqTheta state である場合に、uniqThetaIntersect0 ではなく第 1 引数のカーディナリティを返していた不具合を修正しました。たとえば、predicate によってすべての行が除外された場合の uniqThetaMergeStateIf(s, predicate) の結果で発生していました。#104529 (Groene AI).
  • Iceberg REST カタログ (iceberg-restonelakebiglake) をバックエンドとする DataLakeCatalog database で、SHOW TABLESsystem.tables の一覧が途中で黙って切り捨てられる問題を修正しました。カタログ server が list-tables または list-namespaces のレスポンスをページ分割している場合 (たとえば Microsoft Fabric / OneLake で 1 ネームスペースあたり約 50 テーブルを超える場合) 、後続ページの table は直接 SELECT ではクエリできるにもかかわらず、SHOW TABLESsystem.tables では表示されなくなっていました。RestCatalog は現在、Iceberg REST OpenAPI spec で定義された継続トークン next-page-token をたどるようになり、既存の PaimonRestCatalog および UnityCatalog の動作と一致します。#104531 (Groene AI).
  • input table function は、固定スキーマを持つフォーマット (LineAsStringRawBLOBJSONAsString など) の場合、周囲の INSERT クエリの FORMAT clause から structure を推論するようになりました。これにより、これらのフォーマットで input('line String') のように structure を繰り返し指定する必要がなくなります。#104532. #104533 (Groene AI).
  • Iceberg history 内のフィールドの datatype を Int32 から Int64 に更新しました。#94176 をクローズします。#104579 (Smita Kulkarni).
  • カンマの後に lambda が続く関数呼び出しをパースする際に発生していた Inconsistent AST formatting LOGICAL_ERROR を修正しました。例: SELECT substring(x, `x` -> `x`)。従来、パーサーは直前の argument を lambda の左辺に黙ってマージしてしまい、その結果、同じ AST に再パースできない単一 argument の呼び出しを生成していました。現在は関数本来の arity を保持します。#104626 (Groene AI).
  • CHECK TABLE t は、database 修飾子が指定されていない場合、同名の永続 table よりも TEMPORARY table を優先するようになりました。これは SHOW CREATE TABLEDESCRIBE TABLEOPTIMIZE TABLEALTER TABLE ですでに使われている優先順位と一致します。従来の CHECK TABLE t は一時 table を完全に無視していたため、これらのエンジンが CHECK をサポートしているにもかかわらず、一時 Log または File table に対して UNKNOWN_TABLE で失敗していました。#100966 のフォローアップです。#104637 (Groene AI).
  • <placement> が設定されていない Keeper に対して quorum_reads=true を付けて get /keeper/availability_zone を送信したときに、Keeper の終了と再起動のループが発生する問題を修正しました。#104663 (myeongjun).
  • 論理エラーを引き起こす FutureSetFromTuple::buildOrderedSetInplace の TOCTOU data race を修正しました。#104673 (Miсhael Stetsyuk).
  • arguments がカラムとして渡されたか定数として渡されたかによって、同じ入力でも異なる結果を返していた複数の関数を修正しました: bitRotateLeft / bitRotateRight (境界 shift カウント) 、length(FixedString) / concatWithSeparator における LowCardinality(Nullable) 入力、NaN に対する roundDown、および不正な UTF-8 に対する rightUTF8#104710 (Raúl Marín).
  • 最頻値がカラムのデフォルト値で、かつ data が複数の MergeTree パーツにまたがって存在する場合 (スパースカラム読み取りパス) に、anyHeavy が heavy ではない値を返していた問題を修正しました。#104712 (Raúl Marín).
  • 設定制約の処理に関する複数の不具合を修正しました。設定の正規名に対して宣言された MergeTreeSettings の制約が、その設定の alias への書き込みによって回避できてしまう問題と、disallowed_values 制約のチェックが clamp パス (secondary queries、ON CLUSTER workers、SQL SECURITY DEFINER views) で変更を黙って破棄すべきところで例外を投げていた問題を修正しました。 #104737 (Raúl Marín).
  • まだメタデータが読み込まれていない遅延 attached 状態の Iceberg / IcebergLocal / Delta Lake / Hudi テーブルに対して、OPTIMIZE TABLEALTER TABLE ... DELETEALTER TABLE ... ADD COLUMN、およびその他の ALTER バリアントで発生していた LOGICAL_ERROR 例外 (Metadata is not initialized) を修正しました (典型的には、server の再起動後や、以前のメタデータ書き込み失敗によってディスク上に corrupted なメタデータファイルが残った後に発生します) 。これにより、メタデータの読み込みに成功した場合は操作が通常どおり続行され、失敗した場合でも debug / sanitizer builds で server を abort する代わりに、根本原因である読み込み失敗が通常のユーザー向け例外として表示されるようになりました。 #104738 (Groene AI).
  • AvroConfluentRowInputFormat の use-after-free バグによる segfault を修正しました。 #104751 (Miсhael Stetsyuk).
  • numericIndexedVectorPointwiseMultiplynumericIndexedVectorPointwiseDividenumericIndexedVectorPointwiseEqualnumericIndexedVectorPointwiseNotEqual の scalar バリアントは、Int64::max を超える UInt64 scalar を指定して呼び出された場合に INCORRECT_DATA を返すようになりました。 #104784 (FriendLey).
  • compatibility 設定の適用後に、その alias 名で設定を手動で上書きした場合 (例: SET allow_experimental_analyzer = 1 ではなく SET enable_analyzer = 1) 、その後の compatibility 設定の変更によってその上書きが取り消されてしまうことがある不具合を修正しました。 #104829 (Raúl Marín).
  • https://github.com/ClickHouse/ClickHouse/commit/0e8ad4355c9d 以降、AWS ロガーが無効になっていた問題を修正しました。 #104837 (Konstantin Bogdanov).
  • 引数がカラムとして渡されたか定数として渡されたかによって、同じ入力でも異なる結果を返していたさらに 3 つの関数を修正しました。対象は、定数 Date/Date32/Enum/FixedString のデフォルト値を持つ transform (およびそれを介した caseWithExpression) 、String と定数 FixedString の比較演算子、そして定数条件下で FixedString 分岐を持つ if/ifNull/nullIf です。 #104858 (Raúl Marín).
  • パーティション式に、単一の定数値へ畳み込まれる関数 chain (floor(NULL, toRelativeYearNum(...)) など) が含まれている場合に、MergeTree テーブルの partition pruning 中に発生していた Bad cast from type DB::ColumnConst to DB::ColumnNullable による server abort を修正しました。 #104861 (Groene AI).
  • ContextData の copy constructor における ThreadSanitizer data race を修正しました。table_function_resultstable_function_results_mutex を取得せずにコピー元オブジェクトから複製されていたため、同時実行中の Context::executeTableFunction writer と、copy constructor 内の非同期化 read が競合する可能性がありました。 #104879 (Groene AI).
  • 動的 structure を持つ型に対する data part の整合性チェックを修正し、corrupted な columns_substreams.txt を検出できるようにしました。追加の変更を含む https://github.com/ClickHouse/ClickHouse/pull/103858 の再提出です。 #104888 (Pavel Kruglov).
  • DatabaseCatalog における DROP と UNDROP の競合を修正しました。#104915 (Azat Khuzhin).
  • 部分的にダウンロードされた segments を含む場合のファイルシステムキャッシュの動的リサイズを修正し、Failed なエビクション後の restore accounting も修正しました。#104921 (Antonio Andelic).
  • 一時テーブルに対する DETACH TABLE (TEMPORARY keyword なし) で、DETACH TEMPORARY TABLE と同様に SYNTAX_ERROR が正しく発生するようになりました。これまでは内部の is_detached フラグを暗黙に設定し、エラーなしで終了していました。一時テーブルを削除するには、DROP TEMPORARY TABLE または DROP TABLE を使用してください (後者は Context::ResolveExternal を介して一時テーブルを解決します) 。#103475 をクローズしました。#104943 (Groene AI).
  • filesystem table function が、ファイル内容の loading 時に max_memory_usage / max_server_memory_usage を尊重するよう修正しました。これまでは、大きなファイル内容や多数の並列読み取りにより、MEMORY_LIMIT_EXCEEDED を発生させないまま制限を超過し、最終的に OOM によって強制終了されることがありました。#104956 (Alexey Milovidov).
  • uuidsystem.detached_tables を filter した際に発生していた LOGICAL_ERROR を修正しました (例: SELECT count() FROM system.detached_tables WHERE uuid = '...') 。これにより、クエリは server を異常終了させることなく、期待どおりの結果を返すようになりました。#104979 (Groene AI).
  • ネストされた structure に空の Tuple() リーフしか含まれない tuple (例: Tuple(c0 Array(Tuple())) または Tuple(c0 Tuple())) に対して flattenTuple を呼び出した場合でも、LOGICAL_ERROR は発生しなくなりました。こうした入力では、flatten の結果が空の tuple になることを説明する、ユーザー向けの ILLEGAL_TYPE_OF_ARGUMENT 例外が返されるようになりました。#104989 (Groene AI).
  • GROUP BY を伴う loop(remote(...)) (または aggregation を遅延できるストレージを loop() でラップしたもの) へのクエリで発生していた、server の異常終了と誤った結果を黙って返す不具合を修正しました。これまでは、外側の planner が内側のストレージから報告された processing stage に基づいて MergingAggregatedStep を追加していましたが、LoopSource は常に内側の select を QueryProcessingStage::Complete で materialize し、通常の column chunks を出力するため、enable_parallel_replicas = 1 の場合に MergingAggregatedTransformLOGICAL_ERROR (Chunk info was not set for chunk in MergingAggregatedTransform) を引き起こし、それ以外では外側の aggregation を黙って欠落させていました。#105001 (Groene AI).
  • clickhouse-benchmark --reconnect (値なしの単独指定) は、--reconnect を値必須の整数オプションに変更した影響で、25.4 で意図せず壊れていました。値なしの形式が再び使えるようになり、--reconnect=1 (すべてのクエリで再接続) と同等になりました。#105006 (Groene AI).
  • 不完全な UTF-8 シーケンスで終わるカラム名に対して、不正な JSON が出力される問題を修正しました。#105012 (Pablo Marcos).
  • materialized view の source table に対する EXCHANGE TABLES または CREATE OR REPLACE TABLE の後に、データが黙って失われる問題を修正しました。MV の source-view dependency edge は元の名前に保持されるようになり、INSERT 時にも引き続き動作します。#98779 で導入されたリグレッションで、今回の修正によりリグレッション前の動作が復元されます。#105029 (Sema Checherinda).
  • toUInt128(<Float64 expression>) のように FloatUInt128 に変換する式を JIT コンパイルする際に発生していた CANNOT_COMPILE_CODE Could not find symbol __fixunsdfti を修正しました。符号なし 128 ビットの float-to-int compiler-rt 組み込み関数が JIT シンボルリゾルバに不足していました。#105031 をクローズしました。#105048 (Raúl Marín)。
  • send_logs_level が設定されているときに、失敗したクエリのログメッセージを clickhouse-local が出力しない問題を修正しました。#105067 (Alexey Milovidov)。
  • 同じクエリ内で、同じパラメーター化ビューを異なる引数値で複数回参照した場合に、結果が不正になる問題を修正しました。以前は、アナライザがそれらの呼び出しを 1 つにまとめ、最初の filter 以外をすべて暗黙に破棄していました。#105170 (Alexey Milovidov)。
  • play.html の web UI で、TOTALS 行が結果テーブルの下部に 2 回表示される問題を修正しました。#103803 (Alexey Milovidov)。
  • vector search 中に有限でないベクトル (NaN±Inf) を拒否するようにしました (検索対象ベクトルと参照ベクトルの両方) 。これらは以前、usearch で未定義動作を引き起こしていました。#104079 (Groene AI)。
  • PromQL: 空のベクトルに対する aggregation operator を修正しました。#104425 (Vitaly Baranov)。
  • PromQL: Prometheus query API のエラー処理を修正しました。#104741 (Vitaly Baranov)。
  • MergeTreeTransaction::afterCommit における競合状態を修正しました。これは、commit CSN を ZooKeeper に書き込んだ後、トランザクションを完了する前に connection が失われると、system.parts で新しい creation_csn / removal_csn が見えるようになる前に、COMMIT の応答が client に届く可能性があるという問題でした。#104708 (Tuan Pham Anh)。
  • ネストした配列の索引付け (arr[arr[arr[...]]]) を変換する際に、KQL パーサーでメモリ使用量が指数的に増加する問題を修正しました。#105142 (Alexey Milovidov)。
  • 右側の table で 1 つの key に対して複数の行があり、サイズ制限によって出力 block が分割される場合に、RIGHT ANY JOIN の結果が不正になる問題を修正しました。#99431 をクローズしました。#102064 (Vladimir Cherkasov)。
  • ネスト型のデシリアライゼーション中に、Avro リーダーでスタックオーバーフローをチェックするようにしました。#102417 (Pavel Kruglov)。
  • MergeTree settings に対する system.completions 内の重複行を修正しました。各設定名が 2 回ずつ表示されていたのは、設定名が同一であるにもかかわらず、getMergeTreeSettingsgetReplicatedMergeTreeSettings の両方が dump されていたためです。#102013 をクローズしました。#102015 (Groene AI)。
  • StorageObjectStorageQueue (S3QueueAzureQueue) で、部分的に処理されたファイルを object storage から最後まで読み切るまでシャットダウンがブロックされる問題を修正しました。これにより、シャットダウン時にはソースが読み取りを即座に中断するようになりました。deduplication により、シャットダウン前に宛先テーブルへすでにストリーミングされた行は、次回起動時にファイルが再試行されても重複しません。#103126 (Tuan Pham Anh).
  • insert_deduplication_token を指定した Alias table engine への複数 block の insert で、すべての block が保持されるよう修正しました。#103246 (Enric Calabuig).
  • native JSON カラムに対する JSONHas および JSONExtractBool が、0/1 ではなく抽出された値 (UInt8 に cast されたもの) を返してしまう問題を修正しました。#103313 (zxuhan7).
  • format_custom_row_after_delimiter を省略した不正または悪意あるデータに対して、CustomSeparated input format を保護するようにしました。header 検出、schema inference、可変カラムの行では、以前はフィールドが際限なく蓄積され、失敗するまでに数 GB のメモリが確保される可能性がありました。現在は、1 つの行に 1,000,000 個を超えるフィールドが含まれていると、読み取りは INCORRECT_DATA で失敗します。#103404 (Groene AI).
  • replicated MergeTree table の RESTORE を修正し、復元した part の Attach に通常の insert 用 Keeper 再試行回数ではなく backup_restore_keeper_max_retries が使われるようにしました。#104610 (Pablo Marcos).
  • MergeTree table における WHERE p AND <LowCardinality(Nullable(int)) constant> の誤った結果を修正しました。以前は、この種のクエリは 0 行を返していました。これは、パーツ剪枝が LowCardinality(Nullable(...)) 型からデフォルトの NULL を導出し、notEquals(x, NULL) ガードを生成して、すべての part を剪枝していたためです。#104767 (Groene AI).
  • カラムの非単射関数で group 化し、そのカラムが同時に partition key でもある場合の誤った aggregation 結果を修正しました (例: PARTITION BY aGROUP BY intDiv(a, 2) または a % 2) 。以前は、異なるパーティションにあっても同じグループに対応する値が merge されず、allow_aggregate_partitions_independently = 1 の場合に重複したグループ行が生成されていました。#104869 (Nihal Z. Miaji).
  • 復旧中の follower へ送信中の snapshot が削除または移動される可能性があった Keeper の snapshot 転送における race を修正しました。#104941 (Antonio Andelic).
  • hilbertEncodemortonEncode において、非定数の Tuple の第 1 引数 (range mask) が、すべての行の bit shift に行 0 の値を使っていたため、誤った結果を静かに返していたバグを修正しました。これらの関数は現在、行ごとの mask 値を計算するため、結果が入力の定数性や block サイズに依存しなくなりました。#104992 (Groene AI).
  • clickhouse-local./clickhouse-local.xml~/.clickhouse-local/config.xml、または /etc/clickhouse-local/config.xml から configuration file を自動検出した際に、ユーザーレベルの設定 (profilesusersquotas、access-control settings) を黙って無視していた問題を修正しました。以前は、これらの設定は --config-file が指定された場合、または現在のディレクトリに ./config.xml が存在する場合にのみ適用されていましたが、現在はすべての discovery path で一貫した動作になります。#105008 (Groene AI).
  • 文字列リテラルと比較した際に BFloat16 カラムが一致件数 0 を何もエラーを出さずに返していた問題を修正しました (例: WHERE bf16_col = '49.9') 。 #105042 (Raúl Marín).
  • SummingMergeTreeAggregatingMergeTreeCoalescingMergeTree で、マージ時に必要なカラムが存在しない、または期限切れの場合の CLEAR COLUMN および TTL 処理を修正しました。 #101953 をクローズします。 #105203 (Antonio Andelic).
  • shared->clusters_config を参照外しする前に明示的な null ガードを追加し、DNSCacheUpdater::runContext::reloadClusterConfig の競合状態を修正しました。 #105220 (Mikhail f. Shiryaev).
  • ms および ns の精度を使用する toDateTime64 に対する best_effort の日付時刻パースを修正しました。 #105233 (Kaviraj Kanagaraj).
  • OSIOWaitMicroseconds がクエリ単位の I/O 待機時間ではなく、スレッドの生存期間全体にわたる I/O 待機時間を報告していた問題を修正しました。 #105246 (Mikhail f. Shiryaev).
  • Hudi table engine で、table directory 内の Parquet file が Hudi の [FileId]_[FileWriteToken]_[Timestamp].[extension] 命名規則に一致しない場合、LOGICAL_ERROR ではなく INCORRECT_DATA (通常のクエリレベルの例外) を発生させるようになりました。従来は、このようなファイル名が debug builds で例外の原因になっていました。 #105266 (Groene AI).
  • ParallelFormattingOutputFormat で、スケジュール失敗時に発生するデッドロックを修正しました。scheduleFormatterThreadForUnitWithNumber が例外をスローすると (例: CANNOT_SCHEDULE_TASK) 、そのユニットが READY_TO_FORMAT のまま残り、処理する formatter thread も存在しないため、ハングしていました。現在はスケジュール呼び出しを try/catch でラップし、失敗時は onBackgroundException 経由で処理されるため、collector は正常に終了します。 #105275 (Azat Khuzhin).
  • 異常終了からの復旧時に Distributed 非同期 INSERT でデータが気付かれないまま失われる問題を修正しました。保存された Batch 内で最後の .bin ファイルが正常でも途中のファイルが破損していた場合、DistributedAsyncInsertBatch::recoverBatch は最後のファイルのヘッダーしか検証せず、その後 sendBatch が正常なファイルも含めて Batch 全体を破損扱いにしていたため、そこに含まれる行が失われていました。現在は各ファイルのヘッダーを個別に検証するため、実際に破損したファイルだけが broken/ に移動され、残った行はリモート分片に届きます。 #105281 (Groene AI).
  • clickhouse extract-from-config --try のリグレッションを修正しました。config で from_env 属性を使用し、include_from 要素が存在しない場合 (または存在していても見つからないファイルを指している場合) 、すべての from_env substitution が何もエラーを出さずに無視され、空文字列が返されていました。これにより 26.2.5 では Docker entrypoint のポート discovery が壊れていました。 #101704 をクローズします。 #105283 (Groene AI).
  • 挿入する値が EnumJSONAggregateFunction のいずれかで、そのテキスト表現にシングルクォートが含まれている場合に、SQLite table への INSERT INTO が SQLite の構文エラーで失敗する問題を修正しました。対応するシリアライゼーションでも output_format_values_escape_quote_with_quote 設定が反映されるようになりました (従来これが反映されていたのは StringFixedString のみでした) 。 #105285 (Groene AI).
  • allow_push_predicate_ast_for_distributed_subqueries = 1 (デフォルト) を指定した分散クエリで、GLOBAL IN のタプルが、射影に重複したカラム名を含むサブクエリと照合される際に発生していた Code: 44. ILLEGAL_COLUMN: Cannot add column ...: column with this name already exists を修正しました。例: (x, y) GLOBAL IN (SELECT number, number FROM numbers(5))#105290 (Groene AI).
  • Array(LowCardinality(...)) への reinterpret が、実行時にわかりにくい NOT_IMPLEMENTED エラーを返していた問題を修正しました。現在は型チェック時に ILLEGAL_TYPE_OF_ARGUMENT を返します。 #105301 (Raúl Marín).
  • minMap/maxMap (配列形式) および minMappedArrays/maxMappedArrays が、NaNORDER BY と一貫した形で扱うようになりました。NaN は末尾として扱われ (すべての値が NaN の場合にのみ返されます) 、従来は IEEE 754 の順序なし比較の意味論により、結果がデータ中の NaN の位置に依存していました。また、#100448 で修正された minMap/maxMapMap 引数形式とも一致していませんでした。 #105331 (Raúl Marín).
  • Nested カラムを持つ MergeTree 系テーブル向けの、テーブル単位の ColumnsDescription cache におけるメモリリークを修正しました。share_nested_offsets = 1 (デフォルト) の場合、ALTER ADD COLUMN/DROP COLUMN のサイクルをまたいでもエントリが追い出されることはありませんでした。 #105376 (Groene AI).
  • TYPE set(N) スキップ索引を持つ SELECT で、WHERE 句のアトムの結果型が FloatBFloat16、またはその他の非整数型 (たとえば WHERE c0 + 0.1WHERE log(c0)) である場合に発生していた BAD_ARGUMENTS 例外 “It’s a bug! Only integer types are supported by __bitWrapperFunc” を修正しました。この場合、スキップ索引は通常のフィルターパスにフォールバックするようになりました。 #105384 (Groene AI).

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

  • システムの compiler-rt ライブラリおよびヘッダーの使用を停止しました。#91475 をクローズします。#102857 (Konstantin Bogdanov).
  • libssl3t64 の OpenSSL CVE を修正するため、distroless Docker ベースイメージを更新しました。#103583 (Rahul Nair).
  • keyserver.ubuntu.com でタイムアウトする代わりに複数の Ubuntu keyserver を連鎖的に利用することで、リリース時に GPG 鍵を確実に取得できるようにしました。#103834 (Mikhail f. Shiryaev).
  • ビルド時の CMake チェック (check_*, try_compile, try_run) を削除し、使用を禁止しました。コンパイラとツールチェーンは固定されているため、設定時の feature 検出は不要であり、現在はプロジェクト全体で無効化されています。バージョン固有の動作は、明示的に CMAKE_CXX_COMPILER_VERSION に基づいて切り替える必要があります。#103980 (Alexey Milovidov).
  • libarchive を 3.8.6 から 3.8.7 に更新しました。#104047 (Robert Schulze).
  • mongo-c-driver を 2.3.0 に更新しました。#104300 (Raúl Marín).
  • 22.x 向けに LLVM の dependencies を更新しました。#104381 (Joshua Carp).
  • Linux 専用の #if ガードを削除し、移植性のある POSIX の posix_openpt / grantpt / unlockpt を使用することで、埋め込み client と PTY ディスクリプタ class が macOS および FreeBSD でもビルドできるようにしました。#104436 (Alexey Milovidov).
  • librdkafka をバージョン 2.14.1 にアップグレードしました。#105222 (János Benjamin Antal).

ClickHouse リリース 26.4、2026-04-30。プレゼンテーションビデオ

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

  • IN 演算子は、Bool 型に対して厳密な値セマンティクスを使用するようになりました。セット内の 01 の値のみが Bool 値に一致します。以前は、IN セット内の 255 を超える数値が Bool との比較時に誤って true に丸め込まれていたため、SELECT CAST(1, 'Bool') IN (256) は 1 を返していました。現在は正しく 0 を返します。#92980 をクローズしました。#93115 (Ashrith Bandla).
  • H3 ライブラリが v4 に更新され、長さ、面積、その他の計算の精度が向上しました。新しい結果は以前の結果と異なるため、この変更には後方互換性がありません。#100348 (Alexey Milovidov).
  • WITH 式リストの要素で、SELECT をクォートなしの識別子として使用することを禁止しました。#101059 (Aruj Bansal).
  • このパッチでは、merge テーブルの仮想カラムの扱いが変更されます。基になるテーブルに _table または _database が含まれている場合、これらのカラムはストレージから読み取られます。含まれていない場合は、読み取りステップの後に expression ステップを使って補完されます。#101742 (Mikhail Artemenko).
  • IN 演算子は、複合型 (TupleArrayMap) 内での情報損失を伴う Decimal 変換も拒否するようになり、トップレベルの scalar 比較と一貫した動作になりました。以前は、精度チェックはトップレベルの scalar 値に対してのみ適用されていました。たとえば、CAST('33.3', 'Decimal64(1)') IN (33.33) は正しく 0 を返していましたが、CAST(['33.3'], 'Array(Decimal64(1))') IN ([33.33]) は、情報損失を伴う変換が Array 内で発生していたため、誤って 1 を返していました。現在はどちらの場合も正しく 0 を返します。#101812 (Nihal Z. Miaji).
  • HTTP 接続による認証前のメモリ使用量を制限するため、デフォルトの http_max_fields を 1,000,000 から 1,000 に、http_max_field_name_size を 128 KB から 4 KB に引き下げました。http_max_request_header_size および http_headers_read_timeout 設定を追加しました。以前のより高い上限を利用しているユーザーは、設定で元に戻すことができます。#103285 (Sema Checherinda).

新機能

  • メモリ制限に達した際、ハッシュ結合および並列ハッシュ結合を Grace Hash Join に変換することで、自動的にディスクへ書き出すようにしました。この動作は max_bytes_before_external_join で制御されます。 #97813 (János Benjamin Antal).
  • Arrow Flight SQLのサポートを追加しました。 #91170 (Yakov Olkhovskiy).
  • Keeper を利用したスナップショット進捗の追跡機能を備えた Paimon テーブルエンジンの増分読み取りサポートを追加し、paimon_target_snapshot_id による特定スナップショットの差分読み取りに対応するとともに、型マッピング、パーティションプルーニング、増分読み取りシナリオのテストカバレッジを拡充しました。 #93655 (XiaoBinMu).
  • stem 関数は実験的機能ではなくなりました (以前は、設定 allow_experimental_nlp_functions を有効にする必要がありました) 。 #102399 (Jimmy Aguilar Mena) 。stem 関数を使うと、StringFixedStringArray([Fixed]String)NullableLowCardinalityConst 型のカラム内にあるすべての単語/トークンを簡単に語幹化できるようになりました。 #99137 (Jimmy Aguilar Mena) 。
  • 互換性設定 use_strict_insert_block_limits において、まとめる処理での max_insert_block_size_rowsmax_insert_block_size_bytesmin_insert_block_size_rowsmin_insert_block_size_bytes の新しい動作を実装しました。#94207 (Kirill Kopnev) 。
  • 各ラグに対する数値 Array の正規化自己相関を計算する関数 arrayAutocorrelation(arr [, max_lag]) を追加しました。整数、浮動小数点数、Decimal の Array 型をサポートします。 #94776 (Wenyu Chen) 。
  • SQL関数 obfuscateQuery を追加しました。#98010 をクローズしました。#98305 (Xuewei Wang)。
  • Dictionary の属性として、Map および JSON/Object 型をサポートしました。これにより、FLAT レイアウトと HASHED レイアウトの両方で、Dictionary に Map(String, String)、Map(String, Array(String))、JSON、Nullable(JSON) などの複雑な型を保存し、取得できるようになりました。#98627 (yanglongwei).
  • 新たに2つのMergeTree設定 — replicated_fetches_min_part_levelreplicated_fetches_min_part_level_timeout_seconds — が追加され、レプリカは新規に挿入されたばかりの (未マージの) パーツをピアから取得せずに済むようになり、大量インジェスト時のレプリケーション負荷を軽減できます。 #98625 (tanner-bruce).
  • JSONAllPaths と bloom_filter、tokenbf_v1、ngrambf_v1、および text (転置) 索引タイプを使用した、JSON カラム向けの MergeTree スキップ索引のサポートを追加しました。これにより、各グラニュールに含まれる JSON パスの集合に基づいてグラニュールをスキップできるようになりました。#98886 (Pavel Kruglov) 。
  • printf 関数が非定数のフォーマット文字列をサポートするようになり、カラムの値に基づいて、行ごとに異なるフォーマットパターンを使用できるようになりました。#98991 (Yash ).
  • データを挿入順に再編成する新しいプロジェクション索引 commit_order が追加されました。#99004 (Mikhail Artemenko) 。
  • 検索語がテキスト文字列内に出現した箇所を HTML タグ (デフォルトは <em>/</em>) で囲む highlight 関数を追加しました。ASCII の大文字・小文字を区別しない照合、重複する一致箇所の自動マージ、開始タグ/終了タグのカスタマイズに対応しています。#99131 (Peng).
  • 正規化クエリハッシュ単位のクォータを実装し、公開 ClickHouse サービスを濫用から保護します。1. クォータキーの型として NORMALIZED_QUERY_HASH をサポート - 一意の正規化済みクエリごとに個別のクォータバケットを設けることで、CREATE QUOTA q KEYED BY normalized_query_hash はそれぞれの異なるクエリを独立して追跡します。2. クォータリソース型として QUERIES_PER_NORMALIZED_HASH をサポート — これにより、一定期間内における単一の正規化済みクエリの最大実行回数を制限できるため、MAX queries_per_normalized_hash = 100 によって、どのクエリパターンも 100 回を超えて実行できなくなります。 #99586 (Alexey Milovidov).
  • ユーザーは NATURAL JOIN 構文を使って JOIN クエリを記述できるようになりました。これにより、同じ名前のカラム同士が自動的に対応付けられ、結果ではそれらのカラムの重複が排除されます。#99840 (Peter Nguyen).
  • SET TIME ZONE 'tz'SET session_timezone の別名としてサポートしました。#99883 (phulv94).
  • Web UI (play.html) でパラメータ化クエリがサポートされるようになりました。{name:Type} のようなクエリパラメータが検出されると、その値を入力するための入力フィールドが表示されます。#100041 (Alexey Milovidov).
  • FROM 内のテーブル式として、SQL 標準の VALUES 句をサポートしました。たとえば、SELECT * FROM (VALUES (1, 'a'), (2, 'b')) AS t(id, val) のように使用できます。#100143 (Desel72).
  • EXTRACT 演算子に、PostgreSQL 互換の単位 EPOCHDOWDOYISODOWISOYEARWEEKCENTURYDECADEMILLENNIUM を追加しました。あわせて、従来はエラーになっていた EXTRACT(WEEK FROM date) も修正しました。#100274 (Alexey Milovidov) 。
  • TO 範囲修飾子付きの SQL 標準複合インターバルリテラル (例: INTERVAL '1:30' HOUR TO MINUTE) のサポートが追加されました。内部的には、インターバルの和に分解されます。#100453 (Desel72).
  • HTTP 接続プールソケットのカーネル TCP の受信・送信バッファメモリ (sk_rmem_alloc, sk_wmem_alloc) について、接続グループごとの p50/p75/p90/p95 パーセンタイルおよび totals として報告される非同期メトリクスを追加しました。#100575 (Sema Checherinda) 。
  • ClickHouse Keeper 向けの jemalloc profiling Web UI を追加しました。HTTP 制御ポートの /jemalloc で利用できます。#100606 (murphy-4o) 。
  • 順序付きモードおよび順不同モード向けのコマンド SYSTEM FLUSH OBJECT STORAGE QUEUE db.table PATH 'x' を実装しました。#100709 (Bharat Nallan) 。
  • JSON カラム内のすべての値を Array(String) として返す関数 JSONAllValues を追加しました。値はテキスト表現にシリアライズされ、パス名順に並べられます。JSON カラム上の JSONAllValues 式に対するテキスト索引のサポートも追加しました。JSONAllValues(json_column) にテキスト索引を作成すると、JSON サブカラムに対するクエリのフィルタ条件 (例: json_column.key1 = 'value') に自動的に使用されます。#100730 (Anton Popov).
  • 入力フォーマットで大文字・小文字の区別を異なる方式で扱えるようにする新しい設定 input_format_column_name_matching_mode を追加しました。#99346 (manerone) 。
  • clickhouse-keeper-clientwatch コマンドを追加し、getexistsls コマンドでの watch をサポートしました。#100834 (Den Kalantaevskii) 。
  • ClickHouse Keeper に getChildrenRecursive (ListRecursive) リクエストを、clickhouse-keeper-clientlsr コマンドを追加しました。これにより #99916 が解決されます。#100998 (Konstantin Vedernikov) 。
  • 二次元配列 (行列) を受け取り、転置を行う新しい関数 arrayTranspose を追加しました: SELECT arrayTranspose([[1, 2, 3], [4, 5, 6]]). #101214 (Vitaly Baranov).
  • auto_statistics_types mergetree 設定のデフォルト値は 'minmax, uniq' です — 新しいテーブルでは、適切なすべてのカラムに対して minmax および uniq の統計情報が自動的に作成されます - materialize_statistics_on_insert のデフォルトは false です — 統計情報は insert 時ではなくマージ時に構築されるようになり、insert のオーバーヘッドが削減されます。以前の動作に戻すには、SET materialize_statistics_on_insert = 1 を使用してください。 #101275 (Han Fei).
  • レプリカ間のレプリケーションラグによるデータ欠落を減らすため、materialized view の依存チェーン向けに prefer_dependency_replica refresh 設定を追加しました。#101591 (Seva Potapov).
  • フレーズ検索 (連続したトークン列) 向けの hasPhrase (別名 matchPhrase) 関数を追加しました。検索は総当たりで行われるため、現時点ではテキスト索引にはまだ対応していません。#101997 (Elmi Ahmadov) 。
  • S3 GET リクエスト接続の存続時間と消費バイト数を観測するための s3_read_request_duration_microseconds および s3_read_request_bytes ヒストグラムメトリクスを追加しました。これらは system.histogram_metrics と Prometheus エンドポイントで確認できます。#102058 (Sema Checherinda).
  • Date および Date32 の値に TimeTime64 の値を + 演算子で加算し、DateTime または DateTime64 の結果を得られるようになりました。たとえば、SELECT toDate('2024-01-15') + toTime('14:30:25')2024-01-15 14:30:25 を返します。結果はセッションのタイムゾーンで計算され、範囲外の結果は date_time_overflow_behavior 設定に従って処理されます。#95914 をクローズしました。#102421 (Nihal Z. Miaji).
  • テキスト索引は GA となり、compatibility 設定にかかわらず常に有効のままとなったため、バックアップの復元時や互換性モードでの実行時に予期せず無効化されるのを防ぎます。#101518 (Nikita Fomichev).

実験的機能

  • Icebergテーブル向けに ALTER TABLE ... EXECUTE remove_orphan_files を追加し、オブジェクトストレージ内の未参照ファイルを特定して削除できるようにしました。#99127 (murphy-4o).
  • join の並べ替えに使用される統計情報をランダム化する query_plan_optimize_join_order_randomize 設定を追加しました。テスト用途に有用です。#100643 (Vladimir Cherkasov).
  • ClickHouse に AI 関数のサポートを追加し、ユーザーが SQL を使って OpenAI および Anthropic のエンドポイントを呼び出せるようにしました。aiGenerate はその最初の関数です。#100831 (George Larionov).
  • ClickHouse で LLM API を利用するための AI 関数 aiClassifyaiExtractaiTranslate を追加しました。#100832 (George Larionov).
  • 新しいシステムテーブル system.histogram_metric_log を追加しました。これはすべてのヒストグラムメトリクス (例: S3/Azure のレイテンシー、Keeper リクエスト処理段階の所要時間) のスナップショットを定期的に取得します。あわせて、system.histogram_metricsvalue カラムは、より柔軟で Prometheus のデータモデルとの互換性が高いため、Float64 に変更されます。#103046 (Miсhael Stetsyuk). このテーブルの構造は、今後のリリースで変更される可能性があります。

パフォーマンス改善

  • ClickHouse は、min/max 統計に基づいて、SELECT クエリでデータパーツ全体をスキップできるようになりました。#94140 (zoomxi) 。
  • 完了済みの mutation がある ReplicatedMergeTree テーブルに対する readonly 操作時のロック競合を軽減しました。#95771 (Eduard Karacharov) 。
  • プロジェクションの読み取り時に optimize_read_in_order を考慮するようにしました。#89453 をクローズしました。#95885 (Andrey Zvonov) 。
  • ハッシュ結合および同時実行ハッシュ結合にいくつかの改善を加えました。 #96663 (Yarik Briukhovetskyi).
  • 入力データの重複がほとんどない場合は、LowCardinality カラムの最適化を無効にすることで、DISTINCT 変換を最適化しました。 #97113 (Nihal Z. Miaji) 。
  • #97723 による LIKE クエリのパフォーマンス最適化。これらのクエリでテキストインデックスを使用できるようになりました。#98149 (Elmi Ahmadov) 。
  • ベクトル化された数学関数 (explogsigmoidtanh) が、AArch64 (NEON/SVE を使用) および FreeBSD/Darwin で高速化されました。これらの環境では、以前は低速な scalar のフォールバック実装が使用されていました。#98230 (Raúl Marín) 。
  • MergeTree の主キーカラムを対象に、^(abc-1|abc-2) のようなリテラル文字列の正規表現オルタネーションでフィルタするクエリでは、選択肢が共通のプレフィックスを持つ場合に、主キーのプルーニングを利用できるようになりました。#98988 (Yash ).
  • ORDER BY ... LIMIT の top-k 動的フィルタリングを、NullableStringCOLLATE 型にも対応できるよう一般化しました。#99033 (murphy-4o).
  • 値の範囲が小さいInt32およびInt64キーでのハッシュ結合を、直接索引型ハッシュテーブルを使用することで高速化しました。#99275 (Hechem Selmi).
  • 単一の辞書を使用する LowCardinality カラムに対する非連続クエリを高速化しました。 #99285 (Ivan Babrou).
  • 内部ループをデバーチャライズすることで、Float64 カラムに対する var*Stable および stddev*Stable 関数を高速化しました。注: これにより、浮動小数点演算の結果が ULP レベルで変化するコンパイラ最適化 (FMA/レジスタ) が有効になります。#99460 (Riyane El Qoqui).
  • 32/64 バイトの入力に対して、最適化された Firedancer の base58 エンコードを使用するようになりました (base58Encode では自動) 。デコード結果が 32/64 バイトの場合は、最適化された base58 デコードも使用できるようになりました (base58Decode('...', 32) などで明示的に指定) 。#99461 (Joanna Hulboj).
  • リンカーのセクション単位の最適化 (-ffunction-sections, -fdata-sections, --icf=all) を有効にし、バイナリサイズを削減するとともに、命令キャッシュの利用効率を向上させます。#99474 (Alexey Milovidov) 。
  • 多数のコアを搭載したマシンで、集約を伴う短時間のクエリにおける負のスケーリングを修正しました。クエリが少数のマークしか読み取らない場合、集約後にパイプラインが max_threads まで拡張されなくなり、ほぼ空のストリームが大量に生じることによるオーバーヘッドを回避します。 #99493 (Alexey Milovidov).
  • 読み取りタスクサイズを適切に選択することで、並列レプリカ使用時のクエリのパフォーマンスを改善しました。 #99801 (Nikita Taranov).
  • ユーザー空間ページキャッシュ経由でリモートファイルを読み込む際に、先読みを有効にしました。 #99919 (Alexey Milovidov).
  • サブカラムの列挙時に、String .size サブカラムの不要な計算を回避。#99941 (Pavel Kruglov) 。
  • ホテルから、非常に多数のレプリカを持つクラスターに接続して作業する際でも、clickhouse-client のプログレスバーが過度に揺れないようにしました。#100145 (Alexey Milovidov).
  • ページキャッシュが有効な場合に clickhouse-localMemoryWorker を起動し、ユーザー空間のページキャッシュを実際に利用できるようにしました。 #100306 (Alexey Milovidov).
  • LIMIT句をUNION ALLにプッシュダウンすることで、クエリを最適化します。#100364 (Alexey Milovidov) 。
  • ORDER BY における String および FixedString カラム比較の JIT コンパイル対応を追加し、文字列を多く含むソートキーでのマージフェーズのソート性能を 6〜17% 向上させました。@lgbo-ustc との共著です。#100577 (Raúl Marín) 。
  • 新しい read_in_order_use_virtual_row_per_block 設定とあわせて read_in_order_use_virtual_row を有効にすると、MergeTree から読み取った各 block の後に仮想行の境界情報が出力されるようになり、WHERE/PREWHERE/JOIN によってデータが完全に除外されるパーツについて、マージ処理がストリームの途中でソースの優先順位を付け替えられるようになりました。#99945 をクローズしました。#100603 (Vladimir Cherkasov).
  • itoa の高速パスを dragonbox 互換の丸め処理で拡張し、大きな整数値の Float-to-String 変換を高速化しました。#100649 (Raúl Marín) 。
  • dragonboxzmij に置き換え、Float-to-String 変換を 1.5~3 倍高速化。#100650 (Raúl Marín) 。
  • ソフトウェア除算をBarrett還元に置き換え、変換ループをアンロールすることで、Int128/UInt128 から文字列への変換を高速化しました。#100671 (Raúl Marín) 。
  • uniqExact の並列マージで余分なスレッドが生成されるのを防ぎました。#100686 (Jiebin Sun) 。
  • uniqExact のバッチ並列マージに対応しました。#100687 (Jiebin Sun).
  • 基になる MergeTree テーブルを持つシンプルなビューに対するクエリで、並列レプリカ実行時の並列化が向上しました。 #100815 (Igor Nikonov).
  • parallel_replicas_allow_view_over_mergetree=1 の場合、単純なビュー (MergeTree テーブル上の対象となる UNION ALL ビューを含む) に対する並列レプリカのサポートを追加しました。これにより、ビューの内側のクエリではなく外側のクエリを並列化できるようになり、ノード間でのクエリの並列実行が向上します。#100958 (Igor Nikonov)。
  • IN を含むフィルターがクエリプランに存在する場合の、full_sorting_merge における主キー順での読み取りを最適化。 #101261 (Nikita Taranov).
  • サンプリング設定をキャッシュし、メモリトラッカー階層全体をたどらないようにすることで、割り当て/解放を最適化しました。 #101267 (Azat Khuzhin).
  • deduplicate_insert = 'enable' (26.2以降のデフォルト設定) で発生していた INSERT の重大な性能低下を修正しました。データハッシュの計算をまとめる処理から sink へ遅らせ、updateHashWithValueRange を使ったバッチ単位のカラムハッシュ計算を行うことで、22カラム・500万行におけるオーバーヘッドを約2.5秒から約0.5秒に削減しています。#101494 (Sema Checherinda) 。
  • try_lock を使用して競合のないロック取得の計測を回避し、保持時間の計測を削除することで、プロファイル対象ロックのオーバーヘッドを削減しました。#101502 (Antonio Andelic) 。
  • arrayDotProduct の手書きの AVX-512 intrinsic を、プラットフォーム非依存で自動ベクトル化可能なループに置き換え、AVX2 と ARM NEON のサポートを追加しました。#101571 (Peng) 。
  • エスケープされた文字列 (例: '{\'key\':1}') として値が渡された場合のMapArrayTupleカラムに対するINSERT VALUESのパフォーマンスを改善し、SQL式パーサーへの不要なフォールバックを回避しました。#102119 (Joanna Hulboj).
  • RabbitMQ テーブルエンジンで CPU 使用率が過剰になる問題を修正しました。#102711 (Jaap Elst) 。
  • JOIN 順序オプティマイザは、既存の JOIN 条件から推移的な等値 JOIN 述語を推論できるようになりました。たとえば、A.x = B.x AND B.x = C.x が与えられた場合、A.x = C.x という等価関係も認識されるため、オプティマイザは推移的に接続されたテーブル間の直接 JOIN も検討できます。これにより、ディメンションテーブルが共通のファクトテーブルを介して接続されるスター型およびスノーフレーク型のスキーマでは、実行計画の品質が向上する可能性があります。この機能は、新しい enable_join_transitive_predicates 設定で制御されます (デフォルトではオフ) 。 #98479 (Alexander Gololobov).
  • マージを並列に事前キャンセルすることで、TRUNCATE DATABASE TABLES LIKE を最適化しました。#98597 (Shaohua Wang) 。
  • multiply が単調性に対応し、key * constant 式で主キーの絞り込みが可能になりました。#98983 (Amos Bird) 。
  • cacheディクショナリでは、hasKeys で排他ロックを取得しなくなりました。cache の読み取りに共有ロックを使用することで、ロック競合が軽減されます。 #100796 (liuguangliang).
  • VIEW により多くの最適化を適用できるようにするため、クエリツリー内で VIEW サブクエリをインライン化。 #100830 (Dmitry Novik).
  • サーバー起動時のcacheの読み込みを最適化しました。 #101500 (Kseniia Sumarokova).
  • 述語の選択性が十分に高い場合に、FINAL を伴う ReplacingMergeTree で遅延カラム実体化を実装しました。#101647 (Nikolai Kochetov).
  • optimize_rewrite_array_exists_to_has 最適化を再度有効化しました (23.10 以降、デフォルトでは無効) 。これにより、arrayExists(x -> x = elem, arr) は大幅に高速な has(arr, elem) に書き換えられます。また、配列の要素型と elemhas に対して互換性がない場合 (例: DateString) は、この書き換えを正しくスキップするようになったため、以前は失敗していたクエリも引き続き動作します。#71431 をクローズしました。#100944 (Alexey Milovidov) 。

改善

  • EXPLAIN PLAN pretty=1 の出力を改善: 最上位クエリの出力カラムを表示し、推定結果行数とローカリティ付きで JOIN の関係を表すラベル/シンボルを表示するほか、JOIN/ソースの各ステップについてステップごとの出力カラムも含めるようになりました。この変更は #98117 の Information Deficit の部分に対応しています。#99462 (Kirill Kopnev).
  • MergeTree テーブル設定 share_nested_offsets (デフォルトは true) を追加しました。false に設定すると、ドット付きの名前 (例: n.an.b) を持つ Array カラムは、従来の Nested セマンティクスの一部としてオフセットファイルを共有し、配列サイズが同一であることを検証するのではなく、独立したカラムとして扱われます。#98416 (Amos Bird).
  • users.xml/yaml の設定で複数の認証方法を指定できるようになりました (SQL では以前から可能でした) 。#91998 (Flip-Liquid).
  • TLS を使用している Raft のノード間接続を自動的に再読み込みするようにしました。 #93455 (Evgeny).
  • cast_keep_nullable を拡張し、Dynamic/JSON 型でも動作するようにしました。これを設定すると、Nullable にできる型から NULL をキャストした場合は NULL が返され、それ以外では NULL に対して CANNOT_INSERT_NULL_IN_ORDINARY_COLUMN エラーが発生します。#96504 (Seva Potapov) 。
  • オブジェクトプールの導入により、内部データ構造 (ISerialization オブジェクト) のメモリ使用量を削減しました。#96563 (Nikita Mikhaylov) 。
  • keeper-client の XML 設定で password および identity フィールドがサポートされました。#96800 (Grigorii Sokolik).
  • Unity Catalog 向けの Iceberg への書き込みを改善しました。#98162 (Konstantin Vedernikov) 。
  • INSERT 時にプロジェクションパーツを同期的にファイナライズできるようにする設定 finalize_projection_parts_synchronously を追加しました。これにより、デフォルトでは既存の非同期動作を維持したまま、多数のプロジェクションを持つテーブルでピークメモリ使用量を削減できます。 #98228 (Amos Bird).
  • 各プロジェクションのマージ/再構築にかかった時間をミリ秒単位で記録する projections_duration_ms カラムを system.part_log に追加しました。#98292 (Amos Bird) 。
  • KILL QUERY および clickhouse-client でのクエリキャンセル (Ctrl+C) によって、ExpressionTransform と NumbersRangedSource を使用するクエリのキャンセルを改善しました。#98908 (Roman Vasin) 。
  • ハードコードされた source_table_engines のリストを、StorageFactory::getAllStorages() による実行時ルックアップに置き換えました。これにより、これまで漏れていた一部のテーブルエンジンに対するアクセスチェックが追加され、#71544 を解消しました。#98984 (pufit).
  • Variant と Dynamic で型不一致が発生した際の動作 (throw または NULL を返す) を制御する設定を追加しました。 #99085 (Bharat Nallan).
  • Iceberg と Spark の互換性を改善しました。ストレージパスとメタデータパスの混在使用によって生じていた一貫性のないパス処理を修正し、Iceberg テーブルが記録するテーブルロケーションは URL または絶対パスのいずれかでなければならないようにしました。また、一部の ClickHouse リーダーが走査後のバイト数カウントをサポートしていないため、Azure でファイルサイズをカウントするためのフォールバックを追加し、Spark と互換性のある形で version-hint.txt を処理するようにしました。さらに、今後パスの型を取り違えにくくする型レベルの抽象化を導入し、中間的なアップロード/ダウンロードなしでエンジン間の相互運用性を検証する Azure および Local 向けのテストを追加しました。加えて、position deletes の扱いを修正しました。これは以前、不適切な場面でパス推論ヒューリスティクスに依存していました。 #99163 (Daniil Ivanik). #100420 (Daniil Ivanik).
  • https://github.com/ClickHouse/ClickHouse/pull/92844 で導入された IPartitionStrategy::cached_result におけるレースコンディションの可能性を修正しました。#99400 (Arthur Passos).
  • ユーザーは、ArrowフォーマットでClickHouseのIntervalデータ型を書き出せるようになりました。#99519 (Peter Nguyen).
  • Arrow および Parquet フォーマットでの UUID データ型のインポートとエクスポートがネイティブにサポートされました。これにより、ユーザーは手動で文字列に変換したり回避策を講じたりすることなく、ClickHouse と他のデータツールの間で UUID データを直接クエリおよび転送できるようになりました。トップレベルの UUID に対する自動的な論理推論と、ネストされた UUID に対する明示的なスキーマヒントもサポートされています。 #99521 (Ivan).
  • オブジェクトストレージ上の7zアーカイブをサポート。#70968 をクローズ。#99600 (Alexey Milovidov) 。
  • オブジェクトストレージ (S3Azure など) のファイル一覧取得・読み取りパイプラインを内部的に把握できるよう、ObjectStorageListedObjectsObjectStorageGlobFilteredObjectsObjectStoragePredicateFilteredObjectsObjectStorageReadObjects の ProfileEvents を追加しました。#99778 (Sema Checherinda) 。
  • 基になるすべての distributed/remote テーブルに存在しないカラムをクエリした際に、merge テーブル関数が UNKNOWN_IDENTIFIER エラーで失敗する問題を修正しました。#99833 (Alexey Milovidov).
  • ReplicatedMergeTree のミューテーションの総実行時間メトリックに、commit time が再び含まれるようになりました。#96376 以降は除外されていました。#99936 (alesapin).
  • MetadataStorageFromDisk に、削除待ちのブロブオブジェクト向けの先行書き込みログを追加し、オブジェクト削除時のメタデータとリモートオブジェクトストレージの間の耐久性と整合性を向上させました。#100019 (Maksim Kita).
  • サーバーの環境変数にアクセスできないようにするため、組み込みクライアント (SSH および WebSocket プロトコル) で AI SQL 生成 (?? コマンド) を無効化しました。#100290 (Alexey Milovidov) 。
  • カタログを使った Iceberg への insert のインターフェイスを変更しました。設定 storage_catalog_typestorage_aws_access_key_id などは非推奨になりました。#100334 (Konstantin Vedernikov).
  • clickhouse-client に貼り付ける際、タブを 4 つのスペースとして扱うようにしました。#100405 をクローズしました。#100416 (Raúl Marín).
  • show_data_lake_catalogs_in_system_tables が無効な場合、「もしかして …」というテーブル候補のヒントを表示するために、リモートのデータレイク カタログ全体をスキャンしないようにしました。#100452 (Alsu Giliazova) 。
  • パーティションプルーニング後に distributed_index_analysis_min_indexes_bytes_to_activate を適用します。#100477 (Azat Khuzhin) 。
  • 空の IN/NOT IN 句の使用時に、Parquet の bloom filter プッシュダウンで発生するアサーション失敗を修正しました。#100543 (zoomxi) 。
  • MinMaxカラム STATISTICS は、最小値と最大値を Float64 ではなく Field (型付き) として格納するようになりました。シリアライズされたフォーマットには、値に加えてカラムの型名も含まれます。STATISTICS ファイルのバージョンは V2 に更新され、以前のバージョンで書き込まれたファイルは再マテリアライズ (ALTER TABLE … MATERIALIZE STATISTICS ALL) が必要です。修正 #53140#100605 (Han Fei).
  • Consumer のクローズ時に発生するデッドロックの修正を含むよう、cppkafka を更新しました。#100612 (Azat Khuzhin) 。
  • Iceberg でデータファイルをパースする際に使用されるオブジェクト情報に、マニフェストファイルからパースしたファイルの行数とバイト単位のファイルサイズが含まれるようになりました。 #100645 (Daniil Ivanik).
  • cache メモリアリーナの分離を制御できるようにするため、use_separate_cache_arena 設定パラメータが追加されました。#100664 (Seva Potapov) 。
  • Apache Arrow の StringView および BinaryView データ型を ClickHouse の String カラムにインポートするネイティブサポートが追加され、Arrow ベースのインジェストとの互換性が向上しました。#100762 (Ivan).
  • いくつかの Keeper サーバー設定が、実行時に設定ファイルが変更された場合にホットリロードされるようになりました: max_requests_batch_size, max_requests_batch_bytes_size, max_request_size, quorum_reads。 #100773 (Michael Kolupaev).
  • リリースビルドで、プロファイルイベント MemoryAllocatedWithoutCheck/MemoryAllocatedWithoutCheckBytes を増加させました。 #100899 (Pavel Kruglov).
  • Cgroupv2 のメモリ追跡で、カーネルメモリから slab_reclaimable が除外されるようになり、回収不能なメモリ使用量をより正確に把握できるようになりました。#100901 (Antonio Andelic) 。
  • use_partition_pruning = 0 は、パーティションキーに基づくプルーニングの無効化に加え、MinMax 索引のプルーニングとパーティションキーのカラムに対する count 最適化も無効にするようになりました。#100904 (Nihal Z. Miaji).
  • EXPLAIN [PLAN]pretty=1 で、式が人間にとって読みやすい形式で表示されるようになりました。 #100927 (Kirill Kopnev).
  • accurateCastOrNullaccurateCastOrDefault が、Nullable 要素を含むネストした Tuples を含め、変換先の Tuple 型をサポートするようになりました。これまでは TupleNullable の内部に置けなかったため、これらの関数では変換先に Tuple を指定できませんでした。#100820 をクローズしました。#100942 (Nihal Z. Miaji).
  • ライトテーマとダークテーマを切り替えた際に、Play UIでチャートが重複表示される問題を修正しました。 #101058 (Alexey Milovidov).
  • chdig を v26.3.1 に更新 (perfetto UI、CPU/メモリ/マージ処理/クエリのサマリーへのスパークライン追加、system.warnings、ログ内の正規表現検索) 。#101092 (Azat Khuzhin) 。chdig を v26.4.3 に更新 (perfetto の改善、pastila.nl 経由の共有に関する修正、フレームグラフの差分、リアルタイムでの設定変更) 。#103145 (Azat Khuzhin) 。
  • これで、SELECT クエリの前にある WITH 句で末尾カンマを使えるようになりました。#101093 (Aruj Bansal) 。
  • compact パーツ内で圧縮ブロックをどのように編成するかを制御する compress_per_column_in_compact_parts MergeTree setting を追加しました。true の場合 (デフォルトで、現在の動作を維持) 、各カラムが新しい圧縮ブロックの先頭となるため、必要なものだけを選択的に展開できます。false の場合は、granule 内のすべてのカラムが同じ圧縮ブロックにまとめられるため、常にすべてのカラムを読み取るワークロードでは圧縮率と読み取り性能が向上します。#101114 (Amos Bird).
  • Play UIで、テーブル情報のバルーンを行全体ではなく、テーブル名にホバーしたときのみ表示するようにしました。#101118 (Alexey Milovidov).
  • Play UI のサイドバーに engine ごとのアイコンを追加し、table 一覧の UX を改善しました。#101134 (Alexey Milovidov) 。
  • ArrowArrowStreamORC、および従来のParquetフォーマットでNullable(Tuple)をサポート。#101272 (Nihal Z. Miaji).
  • web UI (play.html) で、TOTALS 行をテーブルのフッターに表示。#101286 (Alexey Milovidov).
  • Web UI (play.html) でマルチクエリモードに対応:複数のクエリを一度に実行でき、SELECT系クエリは並列で実行され、各クエリの結果が個別に表示されます。#101290 (Alexey Milovidov).
  • 結果テーブルの Web Component 化に伴って発生していた、play.html の Web UI におけるカラムのリサイズ不具合を修正しました。#101295 (Alexey Milovidov) 。
  • 一定の時間間隔ごとに、MEMORY_LIMIT_EXCEEDED 発生時の jemalloc プロファイルの flush 回数を制限できるようになりました。#101396 (Azat Khuzhin).
  • Keeper 設定 nuraft_streaming_mode (デフォルトは false) 、nuraft_max_log_gap_in_streamnuraft_max_bytes_in_flight_in_stream を追加しました。#90743 をクローズしました。#101427 (Kseniia Sumarokova) 。
  • カーネル OS のページキャッシュと ClickHouse のユーザー空間ページキャッシュの両方を除いた cgroup のメモリ使用量を報告する非同期メトリクス CGroupMemoryUsedWithoutPageCache を追加し、MemoryResidentWithoutPageCache と同様の扱いにしました。あわせて、CGroupMemoryUsed メトリクスの説明も明確にしました。#101513 (Francesco Ciocchetti).
  • SQL 標準の OVERLAY 関数構文向けに、パーサーレベルのシンタックスシュガーを追加しました。overlay 関数自体はすでに存在しており、今回の変更で PLACINGFROMFOR を区切りとして使うキーワードベースの形式もサポートされます。#101681 (Desel72).
  • information_schema.tables システムテーブルに、このテーブルの既存の大文字の別名と同様のカラム別名 INDEX_LENGTH を追加しました。#101705 (Robert Schulze).
  • システムテーブル information_schema.tables が、非アクティブなテーブルパーツを無視するようになりました。これにより、表示されるテーブルサイズの値がより実態に即したものになります。#101706 (Robert Schulze) 。
  • ngrams 関数は、無効な N-gram 長を受け付けなくなりました。例: SELECT ngrams('abc', 0) はエラーを返すようになりました。 #101922 (Robert Schulze).
  • #91820 および #90837 のフォローアップ: エラーメッセージから未対応のアルゴリズムを除外し、FIPS builds で FIPS 固有のテストを実行するようにしました。#102067 (Mikhail f. Shiryaev).
  • Web UI (play.html) でセルの高さを3行までに制限し、クリックで展開できるようにしました。 #102154 (Alexey Milovidov).
  • S3 エンドポイントで (virtual/path) スタイルを強制できる新しいオプションを追加しました。#82019#76007 を解決します。https://github.com/ClickHouse/ClickHouse/pull/83168 の続きです。#102378 (Konstantin Vedernikov).
  • restore_replace_external_engines_to_null 設定により、失敗したり外部接続を開始したりする代わりに、外部エンジン (例: DataLakeCatalogMySQLPostgreSQLS3) を使用するデータベースの復元もスキップするようになりました。#102400 (Nikita Fomichev) 。
  • hasPhrase 関数で、HINT モードによるテキスト索引解析をサポートしました。#102438 (Elmi Ahmadov) 。
  • MATERIALIZE STATISTICS ALL 実行時の LOGICAL_ERROR を修正するため、ColumnDependency で STATISTICS を読み取り専用として扱うようにした。 #102627 (Konstantin Bogdanov).
  • keeper-as-serverモードで system.asynchronous_metric_log を作成し、データを格納します。 #102664 (Miсhael Stetsyuk).
  • default_system_log_flush_policy.skip_alias_columns 設定オプションを追加し、システムログテーブルで ALIAS カラムを省略できるようにしました。これにより、ALIAS カラムを受け付けない S3 バックエンドのシステムログの問題を修正しました。#102669 (Miсhael Stetsyuk).
  • システムテーブルでは自動統計を有効にしないでください。利用されることはほとんどありません。 #102862 (Han Fei).
  • LIKE 最適化で array トークナイザーをサポート。#102880 (Elmi Ahmadov) 。
  • リリースビルドでも MemoryAllocatedWithoutCheck を送信するようにしました。 #103064 (Azat Khuzhin).
  • system.stack_trace でスレッドごとの untracked_memory を表示。 #103065 (Azat Khuzhin).

バグ修正 (正式な安定版リリースでユーザーに影響する不具合)

  • 遅延マテリアライゼーションで返される不要なカラムが原因で発生する Block structure mismatch in stream エラーを修正しました。#95191 を修正。#96682 (Nikolai Kochetov)。
  • データマスキングポリシーに対する ON CLUSTER クエリの論理エラーを修正しました。#97594 (Bharat Nallan).
  • GCS上で Unity Catalog を使用する際のバグを修正しました。#98456 (Melvyn Peignon) 。
  • DataLakeCatalog は、auth_header 設定を検証する際に、サーバーの http_forbid_headers 設定を考慮するようになりました。#98827 (Michael Anastasakis).
  • S3 のブレース展開グロブにおける N+1 件の HeadObject 呼び出しを修正しました。#99219 (Konstantin Bogdanov) 。
  • エンジン自体も設定をサポートしている場合、CREATEクエリ内の設定変更を検証する。 #99279 (János Benjamin Antal).
  • ALTER TABLE UPDATE/DELETE が、式が EPHEMERAL カラムに依存する MATERIALIZED カラムを持つテーブルで Missing columns エラーにより失敗する問題を修正しました。#99281 (Yash ).
  • JDBC、ODBC、NATS の接続文字列に含まれる認証情報は、クエリログと SHOW CREATE の出力でマスクされるようになり、機密情報の意図しない露出を防げるようになりました。URI 形式の接続文字列 (例: {scheme}://{user}:{password}@{host}) では、パスワード部分のみがマスクされ、それ以外はデバッグしやすいよう引き続き表示されます。nats_token 設定もマスクされるようになりました。#99344 (János Benjamin Antal) 。
  • DD-month-YYYY フォーマットで、月名のプレフィックスで始まる単語を parseDateTimeBestEffort が誤ってパースしてしまう問題を修正しました。#99345 をクローズしました。#99350 (Pavel Kruglov).
  • アナライザ非使用時に TABLE_UUID_MISMATCH が無視されていた問題を修正しました。#99380 (Azat Khuzhin) 。
  • 同じリクエスト内で compatibility と一緒に送信された明示的な設定が、その値がサーバーのデフォルト値と一致している場合に、気付かれないまま無視されることがある不具合を修正しました。#99402 (Raufs Dunamalijevs).
  • Hive パーティションパス内で先頭にゼロが付いた数値が原因でエラーが発生していたケースを修正しました。 #98801#99458 (Yarik Briukhovetskyi).
  • 実行中の読み取りクエリと同時にテーブルが削除された際に発生する heap-use-after-free を修正 (過去90日間のCIで19件発生) 。 #99483 (Alexey Milovidov).
  • Keeper で、同じサーバー上の別の無関係なセッションがちょうど悪いタイミングで閉じられると、read request がハングし (その結果セッションがタイムアウトする) 得る不具合を修正しました。 #99484 (Michael Kolupaev).
  • パッチを適用する前に、カラム構造を検証するようにしました。 #99531 (Seva Potapov).
  • Dynamic カラムを持つテーブルのマージ中に、SYSTEM STOP/START MERGES を短時間で繰り返し切り替えた際に発生する、vertical merge の rows_sources アサーション失敗を修正しました。#99532 (Alexey Milovidov).
  • toWeek() における誤ったパーティションプルーニングを修正し、toYYYYMM(date) でパーティション化されたテーブルで WHERE toWeek(date, mode) = N を含むクエリが第49〜52週で空の結果を返していた問題を解消しました。#99542 (Takumi Hara).
  • JOIN によって生成された未参照の行がある ColumnReplicated を扱う関数で発生する例外を修正しました。#99564 (Hechem Selmi).
  • CLEAR COLUMN 実行時にプロジェクションが再構築されず、またクリアしたカラムに依存するマテリアライズドカラムが再評価されない問題を修正しました。この問題により、その後のマージで例外やデータ破損が発生する可能性がありました。 #99565 (Desel72).
  • ConditionSelectivityEstimator において、クエリが単一のスカラー クエリパラメータを指定した IN を使用し (例: WHERE col IN ({p:String})) 、対象のテーブルにカラム STATISTICS があり、use_statistics が有効になっている場合に発生していた例外 (Bad get: has Tuple, actual type String) を修正しました。#99614 (Ilya Yatsishin) 。
  • 不明なプロジェクションを含むパートは、永久に失われたものとしてマークすべきではありません。 #99623 (Sema Checherinda).
  • SYSTEM STOP MERGESSYSTEM START MERGES が同時実行された際に、vertical merge 中にまれに発生していた論理エラー例外を修正しました。 #99628 (Desel72).
  • マージ時にクラッシュを引き起こしていた injectRequiredColumns のダングリング参照を修正しました。 #99679 (Tuan Pham Anh).
  • 対象カラム型の範囲を超える数値を読み取る際に発生していた、Avro フォーマットリーダーの未定義動作を修正しました。これにより、オーバーフロー時には誤った値を黙って生成するのではなく、クエリが失敗するようになりました。#99697 (asyablue22).
  • executable テーブル関数の引数内にあるシェル形式のクォートのパースを修正しました。#99794 (Nikita Semenov) 。
  • NativeReader で、行数が一致しない Native format ストリームをデシリアライズする際に、abort が誤って発生する問題を修正しました。LOGICAL_ERRORINCORRECT_DATA に変更し、sanitizer/debug builds で abort() がトリガーされるのではなく、エラーがデータエラーとして処理されるようにしました。#99822 (Rahul Nair).
  • Tuple カラムのデシリアライゼーション中に、バイナリストリーム内のシリアライゼーション種別が DETACHED の場合に発生するプロセスの異常終了を修正しました。#99823 (Rahul Nair).
  • SLRU sub-queue promotion における競合状態が原因で、ファイルシステムキャッシュの動的リサイズ中に LOGICAL_ERROR 例外が誤って発生する問題を修正しました。 #99850 (Alexey Milovidov).
  • query_log とクライアント出力で、非同期 INSERT クエリの written_rowsread_rowsresult_rows が 0 と表示される問題を修正しました。#99879 (Sema Checherinda).
  • システムテーブルに対する内部クエリが ColumnConst でラップされたカラムを返す場合に、KILL QUERY で発生する例外 “Bad cast from type X to Y” を修正しました。#99881 (Alexey Milovidov) 。
  • untuple 引数内の相関サブクエリにおける論理エラーを修正しました。#99917 (Vladimir Cherkasov) 。
  • rightrightUTF8、またはその他の substring 関数を長さ INT64_MIN (-9223372036854775808) で呼び出した際に発生していた例外を修正しました。従来は整数オーバーフローにより未定義の動作を引き起こしていましたが、現在はこれらの関数が ARGUMENT_OUT_OF_BOUND error を正しく返すようになりました。#99934 (Jimmy Aguilar Mena).
  • これで ClickHouse は、Spark スタイルのテーブル (各ファイルが完全な絶対パスを持つ、または共通のテーブルパスからの相対パスを持つ場合) を適切に処理できるようになりました。 #92348 を修正しました。 #99935 (alesapin).
  • ALTER TABLE ... MODIFY QUERY で、ネストされたサブクエリに SETTINGS が含まれ、かつ ALTER 自体にも SETTINGS がある場合に発生する “Inconsistent AST formatting” 例外を修正しました。#99938 (Nikita Mikhaylov) 。
  • パフォーマンス退行が疑われるため、#97114 “子が 1 つの場合のチェックより前に join step の行数推定を移動” を元に戻しました。#99957 (Alexander Gololobov).
  • HEAD リクエストのレスポンスに Content-Length ヘッダーがない場合 (たとえば、GCS の展開的トランスコーディングが原因の場合) に、ClickHouse がファイルをスキップしてしまうことがある不具合を修正しました。#99971 (Yarik Briukhovetskyi).
  • NumericIndexedVector の aggregate states に偶数の整数定数を掛けた際に発生していたアサーション失敗 (デバッグビルドでは例外、リリースビルドでは誤った結果) を修正しました。原因は、pointwiseAddInplace 内でエイリアスされた Roaring bitmap に対して自己 XOR が行われていたことです。#99976 (Desel72).
  • join 変換後にキーの型が変わる場合でも、連鎖した JOIN USING を介する従来の filter pushdown で Unexpected return type 例外が発生しないようにしました。#99999 (Alexey Milovidov).
  • スカラー サブクエリが未解決のテーブル関数引数内で使用された際に発生する LOGICAL_ERROR 例外 “Unexpected node type for table expression … Actual IDENTIFIER” を修正しました。例: SELECT * FROM remote('localhost', view(SELECT 2 AS x), concat(x, (SELECT 1)))#100014 (Alexey Milovidov).
  • VALUES を伴う INSERT で、データの次の行に末尾SQLコメント (-- または /* */) があると失敗する問題を修正しました。コメントは別の行として解析されず、スキップされるようになりました。#100016 (Pratima Patel).
  • NULL の部分を含むタプルの比較時に arrayRemove で発生する例外を修正しました。#100017 (Alexey Milovidov) 。
  • system.asynchronous_inserts におけるユーザー間のデータ漏えいを修正しました。これまでは、テーブルに対する SELECT 権限を持つユーザーであれば、他のユーザーに属する保留中の非同期 INSERT エントリも閲覧できていました。現在は、SHOW_USERS 権限を持つユーザーを除き、エントリは現在のユーザーに基づいて絞り込まれます。#100024 (Shaohua Wang).
  • Time64 から UInt64 への CAST で、値が 24 時間に丸め込まれてしまうことがある問題を修正しました。#100025 (Yarik Briukhovetskyi) 。
  • CREATE DICTIONARY の定義に、存在しない関数を含むリスト値がある場合にローカルサーバーがクラッシュする問題を修正しました。#100036 (Yakov Olkhovskiy) 。
  • CSVMsgPack フォーマットで Nullable(Tuple) を正しく解析できない問題を修正しました。#99753 をクローズ。#100038 (Nihal Z. Miaji).
  • IN の右辺に WITH の関数式エイリアス (例: tuple(...)) を使用した際に、UNKNOWN_IDENTIFIER により CREATE VIEW が失敗する不具合を修正しました。#100042 (Peng).
  • 並列レプリカ使用時に、initializeAggregation または AggregatingMergeTree と併用すると時系列集約関数 (例: timeSeriesResampleToGridWithStaleness) が ILLEGAL_TYPE_OF_ARGUMENT で失敗する問題を修正しました。#100053 (Alexey Milovidov) 。
  • NumericIndexedVectorDataBSI 内部での負の値の処理を正しく行うようにしました。 #100086 (Daniil Ivanik).
  • accurateCastOrDefault および to*OrDefault 関数で、定数入力時に Const カラム型が保持されない問題を修正しました。#100132 (Alexey Milovidov) 。
  • 省略されたLowCardinality(Nullable(T))型のクエリパラメータは、Nullable(T)と同様に、正しくNULLがデフォルト値として扱われるようになりました。#100144 (Denys Melnyk).
  • StringSearcher.h での未初期化値の使用を修正しました。#100225 (Konstantin Bogdanov) 。
  • Ctrl+C で、スカラー サブクエリやその他の解析時パイプラインをキャンセルできるようにしました。以前は、長時間実行されるスカラー サブクエリの実行中に Ctrl+C を押しても、サブクエリが完了するまで中断できませんでした。また、clickhouse-clientclickhouse-local の両方で、スカラー サブクエリの実行中に読み取られた行数が、進行状況バーと JSON 統計に正しく表示されるよう修正しました。@YjyJeff との共同作業です。#100230 (Raúl Marín) 。
  • クロス結合およびランタイムフィルタを含む Dynamic カラム関連のクエリで発生していた LOGICAL_ERROR 例外を修正しました。原因は、hasOnlyNulls 最適化パスで ColumnVariant::filter が Variant カラムのポインタをクローンせずに共有していたことにありました。Closes https://github.com/ClickHouse/ClickHouse/pull/100147. #100234 (Pavel Kruglov).
  • arrayFirst/arrayLast 関数の呼び出し時にデータ型が誤って再解釈されることがある、Variant を含む Array の不具合を修正しました。たとえば以前は、実際の Variant 型が Date である場合でも、Array(Variant(Date, Bool))Bool に変換されていました。#100255 (timothygk).
  • 関数に関する軽微な変更がいくつかあります。h3 関数は境界の検証がより適切になりました。readWKB はサイズ制限 (新しい設定 max_wkb_geometry_elements) を確認します。乱数生成関数では、計算時の最大反復回数が制限されます。#93543 のフォローアップです。#100270 (Alexey Milovidov).
  • cutURLParameter が、他のパラメータ名の部分文字列として含まれているパラメータを誤ってスキップしてしまうことがある問題を修正しました。 #100280 (Nikita Semenov).
  • Iceberg のメタデータファイルパス設定に null byte が含まれている場合に発生する例外を修正しました。 #100283 (Alexey Milovidov).
  • distributed_index_analysisIN サブクエリを含む条件とともに使用した際に、実行されるクエリ数が二乗オーダーで増えてしまう問題を修正しました。#100287 (Anton Popov).
  • GROUP BY ... WITH TOTALS HAVINGUNION DISTINCT を Nullable式と組み合わせて使用した際に発生する “Block structure mismatch” 例外を修正しました。 #100293 (Alexey Milovidov).
  • block_size_bytes パラメータが極端に大きい場合に estimateCompressionRatio で発生する LOGICAL_ERROR 例外を修正。 #100298 (Alexey Milovidov).
  • GROUP BY CUBE(...) WITH ROLLUP や同様の組み合わせを使用した場合に、デバッグビルドで発生する “Inconsistent AST formatting” 例外を修正しました。#100376 (Alexey Milovidov) 。
  • カラムの別名を使用した、SELECT * または EXCEPT/INTERSECT クエリを含むビューの作成時に発生していた例外を修正しました。#100386 (Alexey Milovidov) 。
  • ハートビートエラー後のリバランスでコンシューマーがスタックした際、Kafkaエンジンのテーブルで DROP TABLE がいつまでも完了しない問題を修正しました。#100388 (Alexey Milovidov) 。
  • zipアーカイブを使ったバックアップ/リストア操作で発生していた ReadBuffer is canceled. Can't read from it. 例外を修正しました。#100400 (Alexey Milovidov).
  • granule 境界が揃っていない複数のパーツにデータが分割されている場合に、max_rows_to_read / force_primary_key 使用時の SELECT count() クエリで発生する TOO_MANY_ROWS 例外を修正しました。#100408 (Alexey Milovidov).
  • system.completions が、テーブル単位、DB単位、およびカラム単位の権限取り消しを含む、あらゆる権限付与の組み合わせで、データベース、テーブル、カラムをアクセス権に応じて正しくフィルタリングするよう修正しました。 #100432 (Shaohua Wang).
  • race condition に起因する NuRaft の SEGFAULT を修正しました。#100444 (Pablo Marcos) 。
  • min/max/argMin/argMax での NaN の扱いが ORDER BY と一貫するようになりました。NaN は常にスキップされ、返されるのはすべての値が NaN の場合のみです。従来は、IEEE 754 の順序なし比較セマンティクスにより、結果がデータ内の NaN の位置に依存していました。#100448 (Raúl Marín).
  • delta_lake_snapshot_start_version を設定せずに delta_lake_snapshot_end_version を設定した場合、本来は BAD_ARGUMENTS error が発生すべきところ、黙って無視されていたコピーペースト由来のバグを修正しました。#100454 (Mohammad Lareb Zafar).
  • StorageRabbitMQ::shutdown は冪等ではありませんでした (weak pointer に無条件にアクセスしたうえで、対応する shared pointer を破棄していました) が、現在は StreamingStorageRegistry で1回、その後 DatabaseCatalog でさらに1回、計2回呼び出されるようになっています。この修正により、このメソッドは冪等になり、予防的な null チェックも追加されました。#100455 (Miсhael Stetsyuk) 。
  • QBit をターゲット型として accurateCastOrNull を使用した際に発生する LOGICAL_ERROR 例外を修正しました。#100470 (Raufs Dunamalijevs).
  • optimize_on_insert=0 の wide パーツで、ネストされた Array(JSON) カラムを持つテーブルへの insert 時に発生する LOGICAL_ERROR 例外 “Stream … not found” を修正しました。#100475 (Pavel Kruglov) 。
  • バックアップメタデータ内のファイルエントリのパスを検証し、RESTORE 時にパストラバーサル、絶対パス、および空の名前を拒否するようにしました。#100483 (Pablo Marcos) 。
  • 動作しなかった LIMIT m OFFSET n WITH TIES 構文を修正しました。この構文は、すでに動作していた LIMIT n, m WITH TIES と等価です。#100491 (Nihal Z. Miaji).
  • 名前付きフィールドとLowCardinality要素を持つNullable(Tuple)カラムでINを使用した際に発生する例外 “No set is registered for key” を修正しました。 #100523 (Alexey Milovidov).
  • ベクトル類似度検索時にクラッシュや検知されないメモリ破損を引き起こすおそれがあった、usearch の sorted_buffer_gt::insert() における heap-buffer-overflow を修正しました。#100537 (Dustin Healy) 。
  • クエリで指定した FORMAT 句および INTO OUTFILE 句が EXECUTE AS で無視される問題を修正しました。#100538 (pufit).
  • クエリレベルの OFFSET を伴う SAMPLE で発生していた AST のフォーマットの不整合を修正しました。#100576 をクローズしました。#100579 (Pavel Kruglov) 。
  • Azure の polaris カタログを修正しました。25.12 以降、このカタログでは Azure 使用時に path の先頭へ bucket が追加されるようになっていました。たとえば、abfss://polaris-polaris@<some_url>.windows.net/<other-path> ではなく、abfss://polaris-polaris@<some_url>.windows.net/polaris-polaris/<other-path> となっていました。この PR では、path から bucket を取り除きます。#100583 (Konstantin Vedernikov) 。
  • 一部のブロックでデフォルトカラムが const の場合に、transform で発生していた型不一致の例外を修正しました。#100574 をクローズします。#100616 (Pavel Kruglov).
  • クエリの元の SELECT 部分に存在しないカラムが projection の SELECT 部分に含まれている場合に発生する NOT_FOUND_COLUMN_IN_BLOCK を修正しました。#100194 をクローズしました。#100623 (Yarik Briukhovetskyi).
  • 過大な次元を持つように細工された .npy ファイルによるサービス拒否攻撃を防ぐため、Npy フォーマットの shape をファイルサイズとオーバーフロー制限に照らして検証します。また、空の shape を拒否し、1行あたりのメモリ使用量を 2 GiB に制限します。#100625 (Raúl Marín).
  • 非同期 INSERT (TCP) 時および HTTP 経由のすべての INSERT で DateTime 値をパースする際に、session_timezone が無視される問題を修正しました。 #100647 (Sema Checherinda).
  • ソースとしてテーブル関数を使用する場合に、cluster() および clusterAllReplicas() テーブル関数へ分片キーを渡せるようになりました (例: cluster('name', view(...), sharding_key)) 。#100665 (Sergey Veletskiy) 。
  • quantileIfArrayArray(0.5)([[NULL]], [[1]]) のように、Array コンビネータと NULL 引数を伴うパラメトリック集計関数の使用時に発生していたサーバークラッシュ (アサーション失敗) を修正しました。#100679 (nerve-bot) 。
  • use_variant_as_common_type が有効な場合に、空のタプルと空でないタプルの共通スーパータイプの計算中に発生していた例外を修正しました。#100699 (Antonio Andelic) 。
  • Azure blob storage ディスクが設定されている場合でも、エンドポイントに一時的に到達できないとき (例: DNS 障害) にサーバーの起動が失敗しなくなりました。#100701 (Raúl Marín) 。
  • 符号なしの除数が符号付きの結果型に収まらない場合に発生する、positiveModulo の未定義動作を修正しました。#100705 (Raúl Marín) 。
  • use_top_k_dynamic_filtering が有効で、ORDER BY カラムの型が Dynamic または Variant の場合に発生していた、サーバーのクラッシュ (論理エラー “Unexpected return type from __topKFilter”) を修正しました。 #100742 (Groene AI) 。
  • LowCardinality 要素を含む Tuple キーに対して PREWHERE/WHERE で has() 関数を使用した際に、server がクラッシュする問題を修正しました。#100760 (Groene AI).
  • S3オブジェクトストレージ上の Log または StripeLog テーブルで、同時書き込み中に読み取る際に発生していた file_offset_of_buffer_end <= getFileSize() アサーション失敗 (デバッグビルドでは例外) を修正しました。 #100763 (Alexey Milovidov).
  • 統計が有効なテーブルで、WHERE句に関数式 (例: toDecimal64(col, 3)) が含まれている場合に、統計の選択率推定器で発生していた例外を修正しました。これにより、推定器は無効な型変換を試みる代わりに、そのような述語をスキップするようになりました。#100764 (Han Fei) 。
  • 並べ替えを伴う join が誤った結果になることがあるまれなケースを修正しました。#100790 (Yarik Briukhovetskyi) 。
  • 最適化された単純な count で AggregateFunction の引数型が誤っていた問題を修正しました。この問題により、分散テーブルで count(v0 + v1) のような式をクエリすると、NUMBER_OF_ARGUMENTS_DOESNT_MATCH 例外が発生していました。 #100794 (YjyJeff).
  • 一部のカタログでは、select * from system.databases クエリの結果の SETTINGS セクションに、一部のシークレットが表示されることがあります。このPRでは、そのような挙動を防止します。#100800 (Konstantin Vedernikov).
  • toStartOfInterval で、origin 引数を指定し、かつ Week、Quarter、または Year のインターバルに極端な値を使用した場合に発生する未定義動作 (符号付き整数オーバーフロー) を修正しました。#100817 (Raúl Marín) 。
  • Tuple 戻り値型と、1 つ以上の Nullable な引数を持つ IfDistinctDistinctIfIfState 集約関数コンビネータで、Nullable(Tuple) の導入後に古いシリアライズ済み状態を読み取れなくなっていた問題を修正しました。#98917 をクローズします。#100826 (Nihal Z. Miaji).
  • s3Cluster と分散クエリにおいて、接続プールの use-after-free が原因で発生していたセグメンテーションフォールトを修正しました。 #100837 (Konstantin Bogdanov) 。
  • サーバーのシャットダウン中に Dictionary を読み込む際、null ポインタのデリファレンスによるセグメンテーション違反が発生する不具合を修正しました。Context::getUserDefinedSQLObjectsStorage (user_defined_sql_objects_storage をデリファレンスする) は、メインスレッドが Context::shutdown (user_defined_sql_objects_storage を null に設定する) を呼び出すのと同時に、Dictionary のスレッドからも呼び出されます。Context::shutdown を実行する前に、Dictionary ローダーで今後の更新を無効にし、現在実行中の Dictionary クエリを停止し、Dictionary の読み込みスレッドを join しておく必要があります。これは通常のクエリに対して行っている処理と同様です。#100839 (Miсhael Stetsyuk).
  • 入力に非ASCIIバイトが含まれている場合にULIDStringToDateTimeで発生するバッファオーバーフローを修正しました。#100843 (Konstantin Bogdanov) 。
  • 複数のテーブル (Distributed テーブルを含む) を束ねる Merge テーブル (または merge() テーブル関数) に対して、distributed_group_by_no_merge=1 が有効な状態でクエリを実行すると発生していたクラッシュ (LOGICAL_ERROR) を修正しました。#100859 (Groene AI).
  • Cast_keep_nullable が有効な場合、dynamic null を Variant にキャストしても例外が発生しなくなりました。 #100864 (Seva Potapov).
  • clickhouse-keeper-clientgetexistsls コマンドで、重複した watch_id エラーメッセージが stderr ではなく stdout に出力される問題を修正しました。#100893 (Mohammad Lareb Zafar).
  • intDiv/intDivOrZero で、Nullable なタプルの配列に対して発生していた例外を修正しました。例: SELECT intDiv([divide((1, 2), ... AND NULL)], 2). #100895 (Raúl Marín).
  • 定義を保存する前に StorageAlias のエンジン引数を評価し、currentDatabase() のような式がデータベースに保存される前にリテラル値に解決されるようにしました。#100902 (Nikolay Degterinsky) 。
  • query_plan_merge_expressions = 0 のときに、ExpressionStepReadFromMergeTree の直上にある場合の processAndOptimizeTextIndexFunctions を修正しました。#100879 の修正です。#100909 (Jimmy Aguilar Mena).
  • do_complete_line の範囲外アクセスを修正した replxx に更新しました。 #100925 (Azat Khuzhin).
  • shard-by-PK 最適化を使用する JOIN でクエリ条件キャッシュが使われ、一部のパーツがキャッシュされた条件によって除外される場合に、誤った結果が返される問題を修正しました。 #100926 (Groene AI).
  • 一部のケースで、索引解析中にフィルタ式で divideintDiv を使用すると ILLEGAL_DIVISION が返されていた問題を修正しました。#100928 (Nihal Z. Miaji) 。
  • 非同期起動時に、起動時の依存関係の順序が誤っていたため、内部テーブルを持つmaterialized viewで発生していた”ターゲットテーブルが存在しない”エラーを修正しました。 #100946 (Nikolay Degterinsky).
  • parseDateTimeBestEffortで、小数点以下が19桁以上ある日時文字列をパースする際に発生する未定義動作 (符号付き整数オーバーフロー) を修正しました。 #100948 (Vasily Chekalkin).
  • IN 句にタプルのサブクエリを含む場合 (例: WHERE (id, str) IN (SELECT (id, str) FROM ...)) にテキスト検索索引を使用すると発生していたクラッシュ、またはサブクエリ内のカラム数が IN の左辺のタプルと一致しない場合に発生していたクラッシュを修正しました。#100959 (Anton Popov).
  • スパースカラムのシリアライゼーションを使用するMergeTreeテーブルからポリゴン Dictionary を構築する際に発生していたクラッシュを修正しました。#100964 (Anton Popov) 。
  • 定数畳み込みされた式に対して INTERSECT ALL / UNION ALL を使用した際に発生する論理エラー “Invalid action query tree node” を修正しました。#100977 (Alexey Milovidov).
  • Nullable(Tuple) の導入後、1 つ以上の Nullable 引数を持つ sumCountOrDefault aggregate function が、古いシリアライズ済みの状態を読み取れなくなっていた問題を修正しました。#100882 をクローズしました。#101021 (Nihal Z. Miaji) 。
  • 遅延カラムレプリケーション (enable_lazy_columns_replication) によって生成された ColumnReplicated カラムが、入力の到着が遅れるマージソートパイプラインに流れ込む場合に、マージアルゴリズムで発生するクラッシュ (Logical error: isConst/isSparse/isReplicated assertTypeEquality) を修正しました。#101036 (Groene AI).
  • SELECT で同じエイリアスが複数の式に使われている場合に、誤った UNKNOWN_IDENTIFIER エラーではなく、正しい MULTIPLE_EXPRESSIONS_FOR_ALIAS エラーが報告されるよう修正しました。#101040 (Alexey Milovidov) 。
  • 宣言されたタイムゾーンが式のタイムゾーンと異なる場合に、DateTime/DateTime64 型の ALIAS カラムでタイムゾーン変換が適用されない不具合を修正しました。 #101043 (Alexey Milovidov).
  • ビュー、サブクエリ、および INSERT ... SELECT で、query_log に行ポリシーが記録されない問題を修正しました。クエリプランニング中には行ポリシーが適用されていたものの、ログ記録のためにサブプランナーから親プランナーへ引き継がれていませんでした。行ポリシー (ログ記録専用) は、プランナーとサブプランナーの双方が設定できるよう、QueryAccessInfo に保持されるようになりました。#101044 (Narasimha Pakeer).
  • パイプラインブロックに通常のカラムとマージされる ColumnConst カラムが含まれている場合に DirectJoinMergeTreeEntity で発生する例外を修正しました。 #101046 (Alexey Milovidov).
  • CTE のカラム別名のフォーマットにおける不要なスペースを修正しました (WITH t (a, b)WITH t(a, b)) 。#101049 (Alexey Milovidov).
  • アナライザが有効な場合に、merge のようなネストされたテーブル関数を使用すると remote/cluster テーブル関数が失敗する問題を修正しました。#101055 (Alexey Milovidov).
  • prefer_localhost_replica=1 の場合に分散クエリで OFFSET が二重に適用され、想定より少ない行が返される不具合を修正しました。#101071 (Nihal Z. Miaji) 。
  • format_regexp 設定に無効な正規表現を指定して Regexp フォーマットを使用した際に発生するクラッシュを修正。 #101074 (Nihal Z. Miaji).
  • 並列レプリカで serialize_query_plan=1 を使用した際に、時系列集約関数で発生していた “Illegal type Decimal64 of start parameter” エラーを修正しました。#101083 (Groene AI).
  • PREWHERE を含むプロジェクションを ORDER BY ... LIMIT と併用した際に optimizeLazyMaterialization で発生する例外を修正しました。 #101115 (Anton Popov).
  • 内部専用の Null combinator (例: sumNull, avgNull) を使用する aggregate functions で、aggregate_functions_null_for_empty = 1 設定が有効な場合に発生していた server のクラッシュ (SIGABRT) を修正しました。#101147 (Groene AI) 。
  • 完了したファイルセグメントのログ記録時に解放済みメモリを読み取ってしまう可能性があった、ファイルシステムキャッシュの書き込みパスでの use-after-free を修正しました (BuzzHouse の MemorySanitizer により検出) 。#101161 (Groene AI).
  • 分散索引解析で、明示的な要素なしに構築された set を持つ GLOBAL IN 述語に遭遇した際、“明示的な要素なしで外部テーブルを準備済みの set にアタッチしようとしています” というエラーでサーバーがクラッシュする不具合を修正しました。#101178 (Groene AI).
  • JIT コンパイルが有効な場合 (コンパイル閾値に達した後) 、Decimal カラムに対する MAX/MIN 集約関数が誤った結果を返す不具合を修正しました。 #101203 (Raúl Marín).
  • 論理削除後、論理削除のマスクが付いたすべてのパーツがマージで解消された後も、minmax_count_projection と単純な COUNT(*) の最適化が恒久的に無効のままになる問題を修正しました。#101212 (Anton Popov).
  • listread の間にリモート object が上書きされると、以前は stale な object メタデータが生成され、その結果 cache から Having zero bytes, ... という論理 error が発生し得たケースを修正しました。#101219 (Kseniia Sumarokova).
  • LowCardinality 型の lc_column を持つ MergeTree テーブルに対して ORDER BY CAST(lc_column, 'Type') でクエリを実行した際に発生していたサーバークラッシュ (LOGICAL_ERROR: Bad cast from ColumnVector to ColumnLowCardinality) を修正しました。 #101220 (Groene AI).
  • S3Queue における期限切れの処理中ノードのクリーンアップを修正しました。#101230 (Kseniia Sumarokova) 。
  • 無効な optimizations 引数が指定された場合の mergeTreeAnalyzeIndexes() における UB を修正しました。#101253 (Azat Khuzhin).
  • パーティション化された Iceberg テーブルで ALTER TABLE UPDATE を連続実行した際に発生する Logical error: 'partitions_count > 0' 例外を修正しました。#101278 (Desel72).
  • 大きな整数定数 (例: 256、2147483648) を、MergeTreeテーブルに対する AND を含む WHERE 句でブール述語として使用した場合に、クエリ結果が誤っていた問題を修正しました。たとえば、SELECT count() FROM t WHERE (2147483648 > b) AND 2147483648 は、本来はすべての行に一致するべきところ、誤って 0 を返していました。#101287 (Groene AI).
  • Replicated MergeTree を使用する Delta Lake クラスターからの insert-select を修正しました。 #101299 (Konstantin Vedernikov).
  • スカラー サブクエリが、依存関係にあるマテリアライズド CTE の連鎖を参照したときに、“Logical error: Reading from materialized CTE before materialization” でクラッシュする問題を修正しました。 #101305 (Groene AI).
  • IStorage::getDependentViewsByColumn における storage_id のデータ競合を修正しました。#101385 (Nikolay Degterinsky) 。
  • BACKUP FROM SNAPSHOT AST のフォーマット処理とクローン作成を修正しました。#101405 (Pablo Marcos) 。
  • enforce_keeper_component_tracking 有効時に system.part_moves_between_shards をクエリすると発生していた、LOGICAL_ERROR クラッシュ “Current component is empty” を修正しました。#101462 (Groene AI).
  • fuzzer が不正な Dynamic 型の AST を生成した際に発生する DataTypeDynamic::create() のセグメンテーションフォールトを修正しました。 #101464 (Groene AI) 。
  • DeltaKernel が有効でない状態で delta_lake_snapshot_version または CDF version の設定を使用した場合、誤ったデータを黙って返すのではなく、エラーを返すようにしました。#101489 (Desel72).
  • ARRAY JOIN を JOIN USING とともに使用し、analyzer_compatibility_join_using_top_level_identifier 設定が有効な場合に発生していた NOT_FOUND_COLUMN_IN_BLOCK 例外を修正しました。#101240 をクローズしました。#101507 (Vladimir Cherkasov).
  • テーブルが iceberg_metadata_file_path を使用して作成され、対象のメタデータバージョンがすでに存在する場合に、Iceberg INSERT の再試行ループが失敗する問題を修正しました。#101548 (Groene AI).
  • シリアライゼーション/デシリアライゼーションの不整合を避けるため、arrayIntersect および関連関数の結果カラムから Nullable を削除しました。 #101569 (George Larionov).
  • IcebergLocal table engine を使用する materialized view に対して SELECT を実行した際に発生するサーバークラッシュ (LOGICAL_ERROR) を修正しました。 #101577 (Groene AI).
  • NaN 引数で intExp10 を呼び出した際の誤ったエラーメッセージを修正しました。intExp10 ではなく intExp2 と表示されていました。#101582 (Krishna Chaitanya).
  • #100288 のリファクタリング後、allow_statistics=0ALTER TABLE ADD STATISTICS および ALTER TABLE DROP STATISTICS がブロックされなくなっていた問題を修正しました。#101585 (Krishna Chaitanya) 。
  • 25.1 より前の不完全な drop によって残った ZooKeeper ノードに drop_lock_version ノードがない場合に、KeeperMapCREATE TABLE が “Cannot create metadata for table” で失敗する問題を修正しました。#101623 (Antonio Andelic).
  • Map のサブカラム読み取り時に発生する可能性がある論理エラーを修正しました。#100769 をクローズ。#101336 をクローズ。#101641 (Pavel Kruglov).
  • getSubcolumnData で、プレフィックス一致よりもサブカラムの完全一致を優先するよう修正し、クラッシュの可能性を防止しました。#101271 をクローズしました。#101645 (Pavel Kruglov).
  • use_variant_default_implementation_for_comparisons が無効な場合に、LowCardinality カラムを Variant の NULL 定数と比較するとクラッシュする問題 (LOGICAL_ERROR: “ColumnUnique can’t contain null values”) を修正しました。#101690 (Groene AI).
  • 内容: Bzip2ReadBuffer に空ストリーム用のガードを追加し、内部ストリームが空の場合に UNEXPECTED_END_OF_FILE を送出する代わりに EOF を返すようにしました。#101691 (ClickGap AI Bot) 。
  • 内容: system.s3_queue_settings および system.azure_queue_settingsalterable カラムで、説明文の内容が逆になっていた問題を修正しました。実際のコードの動作に合わせて、01 の意味を入れ替えました。 #101703 (ClickGap AI Bot).
  • positiveModulo(tuple, number) が、剰余ではなく誤って除算にディスパッチされていた問題を修正しました。#101709 (ClickGap AI Bot) 。
  • cache でラップされたディスクで thread_pool_size が設定されている場合に発生していたクラッシュを修正しました。従来は、FileCacheSettings::loadFromConfig()thread_pool_size を不明な設定として拒否していたため、server が起動できませんでした。この設定は有効な IDisk パラメータであり、バックグラウンドのパート移動中に行われるディスク間コピー処理で使用するスレッド数を制御します。#101712 (Francisco).
  • RANGE_HASHED Dictionary の作成時に、存在しない MAX 範囲属性を警告なしで受け入れてしまい、最小範囲属性と最大範囲属性の型が異なる場合に誤った型設定を使用していた不具合を修正しました。このバグは buildRangeConfiguration 内のコピー&ペーストミスが原因で、最大属性に対して max_attr_name ではなく min_attr_name を参照していたことによるものです。#101732 (Yakov Olkhovskiy).
  • 待機タイマーが、参照先の ProfileEvents::Counters を持つワーカースレッドより長く生存する場合に CPU lease scheduler で発生する use-after-free クラッシュを修正しました。 #101761 (Antonio Andelic) 。
  • arrayLevenshteinDistanceWeighted 関数および arraySimilarity 関数の不具合を修正しました。#101725 をクローズしました。#101767 (Mikhail f. Shiryaev).
  • POSTフォームボディを無視していた Prometheus Query API の問題を修正しました。 #101794 (James Cunningham).
  • S3 Client::~Client デストラクタから例外が伝播し、server が終了してしまう問題を修正しました。#101798 (Gagan Dhakrey).
  • Object 型の動的パスの並列デシリアライゼーションにおける use-after-scope の問題を修正しました。これは、動的パスが多数あるテーブルの読み取り時にクラッシュを引き起こす可能性がありました。#101823 (Antonio Andelic).
  • 特定の (デフォルト以外の) フォーマット設定で、関数 formatDateTime のフォーマッタ%W が誤った出力を返す問題を修正しました。 #101847 (Robert Schulze).
  • デマングルされたシンボル名のテンプレート引数内に検索文字列が最初に現れる場合に、SYSTEM INSTRUMENT ADDshouldPatchFunction の偽陰性が発生する問題を修正しました。#101885 (Pablo Marcos).
  • 定期的なリフレッシュ中に ZooKeeper のセッションが期限切れになると UDF レジストリが失われる不具合を修正しました。この不具合により、完全なリフレッシュが成功するまで、すべてのユーザー定義関数が利用できなくなる可能性がありました。 #101891 (Nikita Fomichev).
  • AES_256_GCM_SIVsystem.codecs の説明を修正し、AES-128 ではなく AES-256 と表示されるようにしました。#101917 (Jimmy Aguilar Mena) 。
  • JSON column 上に作成された min-max 索引で誤った極値が使われ、誤ったクエリ結果を引き起こす問題を修正しました。#101700 をクローズします。#101918 (Pavel Kruglov) 。
  • splitByString トークナイザーは、空の区切り文字列を受け入れなくなりました。#101928 (Robert Schulze).
  • materialize_skip_indexes_on_merge=false で、マージ時にテキスト (全文) 索引が抑止されない不具合を修正しました。これまでは、テキスト以外のスキップ索引 (minmax、set、bloom_filter) のみが抑止され、テキスト索引は引き続き構築されていたため、CPU と I/O を無駄に消費していました。#101932 (Groene AI) 。
  • sparseGrams トークナイザーが、指定された最大長を超えるトークンを生成していました (これは実装内で +2 がハードコードされていたためです) 。 #101934 (Elmi Ahmadov).
  • addStreams 中にストリームのコンストラクタが例外をスローし、column_streams に null エントリが残ることで発生する MergeTreeDataPartWriterWide::cancel の SIGSEGV を修正しました。 #101936 (Antonio Andelic).
  • query_plan_direct_read_from_text_index が有効な場合に、フルテキスト索引を持つ Merge または分散テーブルに対し、has*Tokens と LIKE が混在するフィルタ条件を含むクエリを実行すると例外が発生する問題を修正しました。 #101939 (Jimmy Aguilar Mena).
  • 無効な QueryProcessingStage 値を含むネイティブプロトコルのクエリパケットのパース時に発生する未定義動作を修正しました。 #101972 (Raúl Marín).
  • 初期クエリのパース中に例外が発生した場合、同期ずれしたストリームから不正なデータを読み取るのを防ぐため、TCP接続を閉じるようにしました。#101989 (Raúl Marín).
  • 26.1+ のファイルシステムキャッシュにおける SLRU の競合バグを修正しました。この不具合により、領域予約に関する論理エラーが発生する可能性があります。デバッグビルドでは、アサーション失敗 'Previous state is Evicting, but expected state to be Active while setting Evicting flag for 2c1e3484ecdc6b78a8978fa5b17c5097:0:339 (state: Evicting)'. が発生することもあります。#101991 (Kseniia Sumarokova).
  • 末尾に余分なデータが付いた文字列を空の Tuple() 型にキャストする際に発生する例外を修正しました。#102011 (Alexey Milovidov).
  • ORDER BY と grace_hash join アルゴリズムを使用するクエリで、行の並び順が誤る問題を修正しました。影響を受けるクエリでは、結果が誤った順序で返されることで、気付かないうちに不正確な出力が生成される可能性がありました。 #102036 (János Benjamin Antal).
  • max_bytes_in_join 設定が構成されている場合に、RIGHT JOIN および FULL JOIN クエリで発生する可能性があった LOGICAL ERROR (Unexpected size of index type) を修正しました。#102042 (Jimmy Aguilar Mena) 。
  • 負の値を持つ Time を DateTime と比較した際に、誤った結果が返されるケースを修正しました。#101670 をクローズしました。#102056 (Yarik Briukhovetskyi)。
  • ZooKeeperRetriesControl が古い (期限切れの) ZooKeeperセッションを更新せずに再試行していたことが原因で発生していた、UDF refresh のクラッシュを修正しました。 #102059 (Nikita Fomichev).
  • unlock snapshot のフォーマット時に欠けていたスペースを修正。https://github.com/clickhouse/clickhouse/issues/101723 をクローズ。#102063 (Han Fei).
  • WHERE 句を含むビューに対するクエリで、内部クエリがビューのメタデータと異なる型のカラム (たとえば、join_use_nulls を指定した LEFT JOIN による Nullable) を生成した場合にクラッシュ (SIGSEGV) する問題を修正しました。#102085 (Miсhael Stetsyuk).
  • cache キーの不一致により、パート削除後も VectorSimilarityIndexCache のエントリが追い出されない不具合を修正しました。#102152 (Seva Potapov).
  • rabbitmq ストレージの使用時に、破損したメッセージを NACK するようにしました。 #102157 (Seva Potapov).
  • 不正な空のタプル文字列のパース時に発生する論理エラーを修正しました。#102289 (Nihal Z. Miaji) 。
  • GROUP BY のカラムの順序がテーブルのソートキーと異なる場合に optimize_aggregation_in_order=1 を使用すると、誤った集計結果 (行の重複) が生じる問題を修正しました。 #102299 (Groene AI).
  • Avro フォーマットの使用時に IcebergLocalALTER TABLE ... UPDATE で発生していたクラッシュを修正しました。原因は、LowCardinality/Nullable のラッパー型がシリアライゼーション前にアンラップされていなかったことです。 #102337 (Desel72).
  • 式が定義されていないマテリアライズドカラムに対するミューテーションで発生していたセグメンテーションフォルトを修正しました。#102185 をクローズします。#102342 (zoomxi).
  • Array型における Coalescing merge tree の修正です。これにより #89509 をクローズします。#102384 (Konstantin Vedernikov).
  • ブルームフィルタのプッシュダウンが有効で、WHERE句に等値/不等値条件がある Parquet ファイルの読み取り時に発生する segfault (またはデバッグビルドでの LOGICAL_ERROR) を修正しました。このクラッシュは、Parquet の prefetcher におけるブルームフィルタデータ取得処理で範囲外のメモリアクセスが発生することが原因で、非決定論的に誤ったクエリ結果を引き起こす可能性もありました。#102385 (Groene AI).
  • サブキュー間でエビクション統計が共有されていたことと、失敗した候補に対するリカバリパスが誤っていたことが原因で、SLRU ファイルシステムキャッシュの動的リサイズ中に LOGICAL_ERROR で中断する問題を修正しました。#102396 (Antonio Andelic).
  • Database Replicated の新しいレプリカ上で、ターゲットテーブルのない Alias tables の初期化に失敗する問題を修正しました。#101320 をクローズしました。#102397 (Nikolay Degterinsky).
  • ヌルバイトのみで構成された needle を検索する際に、文字列検索関数 (countSubstringsposition など) で範囲外読み取りが発生する問題を修正しました。#102401 (Raúl Marín) 。
  • 全文テキスト索引の設定 (enable_full_text_indexallow_experimental_full_text_indexuse_skip_indexes_on_data_read) は、compatibility 設定が 26.1 より前のバージョンを指している場合でも、無効化されなくなりました。以前は、そのため SharedDatabaseCatalog がテキスト索引付きのテーブルを作成できないことがありました。#102422 (Nikita Fomichev) 。
  • 末尾が %printf における境界外読み取りを修正しました。#102472 (Raúl Marín) 。
  • AsynchronousMetrics において、rewind でバッファのキャンセルフラグがリセットされないことが原因で、debug builds で発生していた ReadBuffer is canceled という chassert 例外を修正しました。 #102524 (Yuri Fedoseev) 。
  • 区切り文字だけからなる needle (例: '()''!!!') を指定した hasToken / hasTokenOrNull について、テキスト索引を持つカラムでの動作を修正しました。従来は、BAD_ARGUMENTS をスローすべき場合 (hasToken) や NULL を返すべき場合 (hasTokenOrNull) に、索引がすべてのグラニュールを黙ってスキップしていました。#102544 (Jimmy Aguilar Mena).
  • Keeper における巨大な multi リクエストでの OOM を修正しました。OpenTelemetry のトレーシングでは、ZooKeeperRequest オブジェクト内の OpenTelemetry spans 用に無条件で >1 KiB を割り当てていたため、非常に巨大な multi リクエストでは追加で >10 GiB のメモリを確保しようとしていました。これを修正するため、共有データを静的メモリに保持するようにし、ZooKeeperOpentelemetrySpans では std::optional ではなく std::unique_ptr を使うようにしました。 #102586 (Miсhael Stetsyuk) 。
  • 既存のコレクションに対して CREATE NAMED COLLECTION IF NOT EXISTS を実行すると NamedCollection の CurrentMetric が過大に計上される問題と、起動時に config または SQL ストレージから読み込まれたコレクションでこれが初期化されない問題を修正しました。#102507 をクローズします。#102598 (Pablo Marcos).
  • 同時実行DDLによりローカル分片が空のカラムを返す場合に、getStructureOfRemoteTable で発生する例外を修正しました。 #102604 (Alexey Milovidov).
  • 複数の同時実行 CREATE TABLE IF NOT EXISTS クエリが Shared データベース上の同じ S3Queue テーブルを対象とした際に発生する LOGICAL_ERROR 例外を修正しました。 #102610 (Nikita Taranov).
  • WHERE フィルタ使用時に Nullable カラムを読み込む際、ネイティブ Parquet V3 リーダーで発生する LOGICAL_ERROR クラッシュ “Unexpected number of rows in column subchunk” を修正しました。 #102628 (Groene AI).
  • AzureWriteMicroseconds profile event の説明が、“write” ではなく “read” になっていた問題を修正しました。#102639 (Miсhael Stetsyuk) 。
  • 一部の特殊なケースで、行ポリシーによって ‘Not found column in block’ 例外が発生する不具合。#102648 (Yarik Briukhovetskyi).
  • 設定で定義された静的クラスターで、一時的に稼働中のノードが1つもない場合に ClusterDiscovery で発生していたサーバー例外を修正しました。 #102661 (Kseniia Sumarokova).
  • タイムゾーン調整後にオーバーフローが発生した場合、誤った日付データ型が推論される問題を修正しました。#102601 をクローズしました。#102674 (Pavel Kruglov).
  • リフレッシャブルmaterialized view が待機中に削除された場合に、SYSTEM WAIT VIEW がいつまでもハングしたままになる問題を修正しました。#102681 (Nikolay Degterinsky) 。
  • すべての行で ELSE が返されてしまう Dynamic expression を含む CASE を修正。#102511 をクローズ。#102684 (Pavel Kruglov).
  • バイナリエンコードされたデータ型で発生していた、フラット化されたDynamic型のシリアライゼーションの不具合を修正しました。#101911 をクローズします。#102692 (Pavel Kruglov) 。
  • format_schema_source=‘query’ が複数行の結果を暗黙に無視してしまう問題を修正しました。#101905 をクローズしました。#102698 (Pavel Kruglov).
  • すべてのエラーを 1 にマッピングするのではなく、SSHクライアント経由で実際の終了コードを報告するようにしました。#101741 を修正しました。#102700 (Konstantin Bogdanov) 。
  • 動的/定義済みクエリハンドラーで HTTP ヘッダーが失われる問題を修正しました。#101846 をクローズします。#102706 (Konstantin Bogdanov) 。
  • 折りたたまれた jemalloc ヒーププロファイルにポアソン・サンプリング補正を適用し、jeprof の出力と一致するようにしました。以前は、collapsed フォーマットでサンプリング確率が考慮されていなかったため、実際の割り当てサイズが過小評価されていました。#102759 (Antonio Andelic).
  • 関数 hasPhraseNULL 引数を渡した場合のクラッシュを修正しました。#102802 (Nikita Taranov) 。
  • 循環するシンボリック型参照を含む再帰的なスキーマを持つ Avro ファイルの読み取り時に発生していたサーバーのクラッシュ (SIGSEGV) を修正しました。今後は、このようなスキーマはクラッシュを引き起こす代わりに検出され、明確なエラーメッセージとともに拒否されます。#102853 (Groene AI).
  • FunctionVariantAdaptor で結果をキャストする際、Variant カラムに対する関数がメモリ制限に達するか、型変換以外の例外が発生した場合に起きていたサーバークラッシュ (LOGICAL&#95;ERROR アサーション) を修正しました。この例外は、内部エラーとして誤分類されるのではなく、正しく伝播されるようになりました。#102855 (Groene AI).
  • スキーマ推論中に std::length_error がスローされた場合 (たとえば、input_format_msgpack_number_of_columns に極端な値が設定されている場合や、入力データが不正な場合) に、debug/sanitizer ビルドでサーバーがクラッシュする問題を修正しました。#102859 (Groene AI).
  • レプリケートされたカラムおよびスパースなカラムのシリアライゼーションにおける NULL 表現が、設定 (例: format&#95;tsv&#95;null&#95;representation) に従うようにしました。 #102888 (Hechem Selmi).
  • #103499 にバックポート: Poco の BufferedStreamBuf::flushBuffer がソケット層からの短い書き込みを適切に処理していなかったため、ios_base::clear: unspecified iostream_category error が発生した S3 リクエストが再試行されずに失敗していた問題を修正しました。#102894 (Sema Checherinda).
  • 論理削除の後、論理削除マスク付きのパーツがすべてマージされて消えた後も、minmax_count_projection と単純な COUNT(*) の最適化が恒久的に無効のままになる不具合を修正しました。#102900 (Anton Popov).
  • LTO に起因する jemalloc の散発的なクラッシュを修正しました。#102913 (Azat Khuzhin) 。
  • 新しいアナライザで、行ポリシーの OR チェーンを IN に最適化しました。#102915 (Azat Khuzhin) 。
  • 誤ったアラインメントで page cache を解放することで発生し、クラッシュにつながる可能性がある jemalloc のメタデータ破損を修正しました。 #102918 (Azat Khuzhin).
  • materialized view を伴わない通常の INSERT では、過剰な ConcurrencyControl のスロットやスレッド (max_insert_threads ではなく max_threads) を要求しなくなり、INSERT スループットが高いクラスターでの CC スロットの枯渇やスレッド数の急増を防げるようになりました。 #102961 (Sema Checherinda).
  • カーネル OOM を回避するため、MEMORY_LIMIT_EXCEEDED を発生させられるように ArrowMemoryPool を再導入しました。#102999 (Azat Khuzhin) 。
  • cast_string_to_date_time_modeNullable(DateTime) への CAST で無視されていた問題を修正しました。#101840 をクローズしました。#103035 (Pavel Kruglov).
  • テキスト索引の direct read 最適化で、ALIAS カラムがサポートされるようになりました。#103037 (Anton Popov).
  • #103454 にバックポート: 集約プロジェクションがクエリに一致し、かつテーブルの一部のパーツにプロジェクションデータが存在しない場合 (たとえば、すでにデータが入っているテーブルにプロジェクションを追加したものの、MATERIALIZE PROJECTION を実行していない場合) に、SELECT DISTINCT が不完全な結果を何も通知せず返してしまう問題を修正しました。#102951 をクローズしました。#103052 (Nihal Z. Miaji).
  • MergeTree テーブルで、NUInt8 より大きい整数型 (例: 256655352147483648、または任意の負の整数) の場合に、WHERE x AND toNullable(N) が誤った結果を返す問題を修正しました。これは、splitFilterNodeForAllowedInputs が、簡約された ANDNullable な残り部分を boolean に変換する際に NULL のゼロ値を使っていたため、三値論理のもとで比較結果が NULL となり、filter がすべての行を誤って除外していたためです。#103077 (Groene AI).
  • 文字列検索関数 (locateposition など) で、引数を逆順 (function_locate_has_mysql_compatible_argument_order = 1 の場合の locate(needle, haystack)) で渡した際に、エラーメッセージで誤った引数型が表示される不具合を修正しました。#103102 (Alex Kuleshov) 。
  • disableFailPoint が、フェイルポイントで一時停止しているスレッドがない状態で呼び出された際に、waitForPause が無限にハングし続ける問題を修正しました。#103119 (Shaohua Wang) 。
  • 事前認証時の TCP Hello パケット内の文字列長を 64 KB に制限し、ハンドシェイク全体の時間を制限する handshake_timeout_milliseconds サーバー設定を追加しました。これにより、未認証のクライアントが過剰なメモリを消費したり、スレッドを無期限に占有したりすることを防ぎます。 #103284 (Sema Checherinda).
  • Parquet ColumnIndex の統計情報で、String カラムにおいて min_value > max_value となる問題を修正しました。 #103334 (Saurabh Kumar Ojha).
  • Native format のフラット化された Dynamic データの不正な形式をチェックするようにしました。 #103392 (Pavel Kruglov).
  • url テーブル関数から _time カラムを設定するようにしました。#103437 (Nikita Taranov) 。
  • SVE 命令が利用できない環境でも SVE 命令を使ってしまっていた SVE 検出を修正しました。#103568 (Raúl Marín) 。

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

  • Libstemmer (Snowball) の依存関係で、より新しい v3.0.1 を使用するようになりました。#99256 (Jimmy Aguilar Mena) 。
  • clickhouse-test で use_skip_indexes_for_top_kuse_top_k_dynamic_filteringquery_plan_max_limit_for_top_k_optimization の設定をランダム化。 #91782 (Nikita Fomichev).
  • 関数向けのストレステストを実装し、そのさまざまな特性の妥当性を検証するようにしました。 #93543 (Michael Kolupaev).
  • llvm-project について、upstream の設定を取り込む代わりに、独自の CMake 構成を提供。 #97453 (Konstantin Bogdanov).
  • クエリ最適化パスのカバレッジを高めるため、テストインフラストラクチャ内で optimize_* 設定のランダム化対象を増やしました。#97547 (Alexey Milovidov) 。
  • Rust ツールチェーン nightly-2026-03-22 を使用。#98602 (Konstantin Bogdanov).
  • wasmtime v42.0.1 を使用しました。 #98603 (Konstantin Bogdanov).
  • llvm-project 22.1.1 を使用。 #98882 (Konstantin Bogdanov).
  • nightly のテスト単位カバレッジパイプラインで、SANITIZE_COVERAGE (カスタムサニタイザーコールバック、シンボル単位の粒度) を LLVM のソースベースカバレッジ (WITH_COVERAGE, -fprofile-instr-generate -fcoverage-mapping) に置き換えました。サーバーは起動時に ELF セクションから自身のカバレッジマッピングを読み込み、新しい SYSTEM SET COVERAGE TEST 'name' コマンドを通じて、テストごとに (file, line_start, line_end) タプルを収集するようになりました。対象を絞った CIチェックでのテスト選定では、新しい CIDB テーブル checks_coverage_lines に対する行範囲クエリを使用し、変更された差分行のうちどれだけをカバーしているかに基づいて候補テストをランク付けします。#99513 (Nikita Fomichev).
  • -O0 ビルドで発生する llvm-libc のリンクエラーを修正。 #100023 (Zheguang Zhao).
  • 設定に logger.loglogger.errorlog の設定が含まれていない場合 (たとえば、すべてのログメッセージを STDOUT/STDERR に出力する想定のとき) に、コンテナ起動時に発生していた 2 件のエラーメッセージを修正しました。 #100239 (Simon).
  • macOS ビルドでは、Apple の ld (cctools-port ld64) より ld64.lld を優先するようにしました。これにより、Darwin でのリンク時間が大幅に短縮されるはずです。cctools-port の ld64 は、-ffunction-sections-dead_strip を使用すると非常に遅いためです。ld64.lld が利用できない場合は、ld にフォールバックします。 #100275 (Alexey Milovidov).
  • ディレクトリに機密情報が一切登録されないことを確認するテスト (REST + Glue) 。#100307 (Konstantin Vedernikov) 。
  • 最近変更されたテストを、異なるランダム化設定で繰り返し実行するようにしました。#100385 (Alexey Milovidov).
  • CMake で #embed ファイルの依存関係を追跡し、正しく再ビルドできるように ccache の depend mode を有効にしました。#100411 (Alexey Milovidov) 。
  • TPC-Hクエリの正しさを検証するテストを追加しました。#100580 (Raufs Dunamalijevs) 。
  • aws-sdk-cpp 1.11.771 を使用するようになりました。 #100582 (Konstantin Bogdanov).
  • 性能テスト用XMLから、file 属性を使って外部のSQLクエリファイルや設定を参照できるようになりました。#100747 (Raufs Dunamalijevs).
  • LowerUpperImpl.h に不足していた TargetSpecific.h の include を追加し、-march=x86-64-v4 でのコンパイルが通るようにしました。#100932 (Alexey Milovidov).
  • cxxflags に —no-default-config を追加し、Gentoo でのビルドを修正しました。#100973 (Isak Ellmer).
  • utils/auto-bisect/ を追加しました。これはシェルベースの二分探索フレームワークで、ローカルでビルドしなくても、事前ビルド済みの CI バイナリをダウンロードし、ユーザー指定のテストスクリプトを実行して、リグレッションを引き起こした最初のコミットを特定できます。#100989 (Nikita Fomichev) 。
  • CMake では ThinLTO をデフォルトで無効化し、ローカルの開発者向けビルドで暗黙的に有効にならないようにしました。CI のリリースビルドは -DENABLE_THINLTO=1 を明示的に指定しているため、影響を受けません。#101041 (Alexey Milovidov).
  • 性能テストにTPC-DS SF1ベンチマークを追加。#101209 (Raufs Dunamalijevs) 。
  • 以下を対象とする、MergeTree の論理削除向けステートレステストが追加されました: has_lightweight_delete フラグのライフサイクル、optimize_trivial_count_query における COUNT(*) の正確性、MATERIALIZED/DEFAULT カラムの整合性、ReplicatedMergeTree フラグの復元、削除済みの行に対する read_in_order、複数回の delete/merge サイクル、_row_exists カラムの隠蔽、さまざまな predicate、ALTER DELETE に対する RBAC の適用。#101792 (Nikita Fomichev).
  • タグ付きリリース向けに、ubuntu および alpine バリアントの Distroless Dockerイメージが公開されるようになりました。#101941 (Rahul Nair).
  • スタックトレースには、ビルドディレクトリを含む煩雑なパス (例: ./ci/tmp/fast_build/./src/Common/Exception.cpp) ではなく、クリーンな相対パス (例: src/Common/Exception.cpp) が表示されるようになりました。 #102000 (Raúl Marín).
  • リポジトリにコミットされた 5 MB 超のファイルを拒否する CI の Style check を追加し、既存の正規のテストデータについてはホワイトリストで許可するようにしました。未使用の 14 MB の zookeeper_log.parquet を削除しました。 #102080 (Raúl Marín) 。
  • コンパイル時間を短縮するため、ヘッダファイルから未使用の #include ディレクティブを約400件削除しました。#102585 (Raúl Marín) 。
  • wasmtime v43.0.1 を使用するようにしました。 #102603 (Konstantin Bogdanov).
  • openssl 3.5.6 を使用するようにしました。 #102606 (Konstantin Bogdanov).
  • xz 5.8.3 を使用。 #102607 (Konstantin Bogdanov).
  • distroless Docker image のベースを Debian 12 (glibc 2.36、OpenSSL 3.0) から Debian 13 (glibc 2.41、OpenSSL 3.5) へアップグレードし、CVE の影響範囲を縮小して、到達可能な脆弱性をゼロにしました。#101678 (Rahul Nair) 。

ClickHouse 26.3 LTS リリース、2026-03-26。 プレゼンテーション, ビデオ

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

  • アップグレード後にダウングレードすると、データが失われる可能性があります。データ型のシリアル化バージョンが、ネストされたデータ型にも伝播されるようになりました。たとえば、これまで String のシリアル化バージョン with_size_stream は、最上位レベルの String カラムと Tuple の要素にのみ適用されていました。現在は、Array/Map/Variant/JSON/etc. など、任意のネストされた型の中にあるあらゆる String 型に適用されます。この動作は、現在デフォルトで有効になっている MergeTree setting propagate_types_serialization_versions_to_nested_types によって制御されます。この変更により、新しく作成されたデータパーツは古いバージョンでは読み取れなくなりますが、古いパーツは新しいバージョンでも問題なく読み取れます。アップグレードは安全ですが、ダウングレードは安全ではありません。26.3 へのアップグレード後にロールバックが必要になった場合、ネストされた型を持つカラムに 26.3 が書き込んだデータは読み取れなくなります! 詳細については #101429 を参照してください。#94859 (Pavel Kruglov).
  • hypothesis スキップ索引タイプを削除しました。これは実用性が低く、実験的でわかりにくい機能でした。INDEX ... TYPE hypothesis を指定してテーブルを作成すると、今後はエラーになります。#96874 (Alexey Milovidov).
  • 実験的なdetectProgrammingLanguage関数を削除。#99567 (Alexey Milovidov) 。
  • SQL 標準に合わせて NOT 演算子の優先順位を修正しました。これにより、NOTIS NULLBETWEENLIKE、および算術演算子よりも低い優先順位で結合されるようになりました。たとえば、NOT (x) IS NULL は、従来の (NOT x) IS NULL ではなく、NOT (x IS NULL) として解析されるようになりました。これにより、従来の (標準に準拠していない) 動作に依存していたクエリの結果が変わる可能性があります。#97680 (Alexey Milovidov).
  • 通常のプロジェクションのメタデータを修正し、複数カラムのソートキーを持つプロジェクションが正しく認識されるようにしました。#90429 を踏まえた修正です。#91352 (Amos Bird).
  • replace_long_file_name_to_hash 設定がスキップ索引ファイルで考慮されておらず、“File name too long” エラーが発生したり、長い名前の索引で索引の読み取りができなくなったりする問題を修正しました。スキップ索引のファイル名は、カラムファイルと同様に、max_file_name_length を超える場合にハッシュ化されるようになりました。この変更には後方互換性があります (新しいサーバーは古いパーツを読み取れます) が、ダウングレード時 (またはローリングアップグレード中の古いサーバー) には、長い名前の索引が無視される可能性があります。#97128 (Raúl Marín).
  • デフォルトで非同期 INSERT が有効になりました。ClickHouse では今後、すべての小さな insert がデフォルトでバッチ処理されます。この設定は compatibility で指定します。compatibility=<version less than 26.2> を設定した場合、デフォルト値は以前と同じ false になります。非同期 INSERT は、users profiles の設定、session、query、または MergeTree table について、複数のレベルでオン/オフを切り替えられます。 #97590 (Sema Checherinda).
  • mysql_datatypes_support_level のデフォルト値が空から decimal,datetime64,date2Date32 に変更され、MySQL の DATEDate32DECIMAL/NUMERICDecimal、精度付きの DATETIME/TIMESTAMPDateTime64 に、デフォルトで適切にマッピングされるようになりました。従来、MySQL の DATE カラムは Date にマッピングされていましたが、Date は 1970-01-01 より前の日付を表現できないため、データ破損を引き起こしていました。#97716 (Alexey Milovidov).
  • mergeTreeAnalyzeIndexes{,UUID} では、低速な regexp の代わりに、part 名の配列を受け付けるようになりました (実験的機能) 。#98474 (Azat Khuzhin) 。
  • 実行可能 UDF のデフォルトの stderr_reactionthrow から log_last に変更しました。stderr に警告を出力する UDF は、終了コードが 0 の場合は失敗しなくなりました。終了コードに関する例外には、stderr の内容が含まれるようになりました。#99232 (Xu Jia) 。

新機能

  • MergeTree の Map カラム向けに、バケット化シリアライゼーションが追加されました (map_serialization_version = 'with_buckets') 。キーはハッシュベースのバケットに分割されるため、単一のキー (m['key']) を読み取る際には、カラム全体ではなく 1 つのバケットだけを読めばよくなり、Map のサイズに応じて単一キーのルックアップが 2〜49 倍高速化されます。バケット数とバケット化の戦略は、新しい MergeTree 設定 map_serialization_versionmax_buckets_in_mapmap_buckets_strategymap_buckets_coefficientmap_buckets_min_avg_size で制御できます。#99200 (Pavel Kruglov) 。
  • マテリアライズド CTE をサポートしました。クエリ実行中に CTE を一度だけ評価し、その結果を一時テーブルに格納できるようになりました。#53449 をクローズしました。 #94849 (Dmitry Novik).
  • 互換性のため、NOW などの一部の SQL 標準関数を括弧なしで使えるようにしました。#52102 をクローズしました。#95949 (Aly Kafoury).
  • 自然順ソートキー関数は naturalSortKey(s) として使えるようになりました。#90322 (Nazarii Piontko) 。
  • JSONExtract関数で、ネイティブのJSON/Object入力を使用できるようになりました。#88370 をクローズ。#96711 (Fisnik Kastrati) 。
  • クエリパラメータの型が Nullable で、かつ指定されていない場合は、その値を NULL とみなします。 #93869 (Vikash Kumar).
  • Replicated database で補助的な ZooKeeper をサポート。 #95590 (RinChanNOW).
  • Map と同様に、JSON type でパスの存在を確認する has 関数をサポートしました。#96927 (DQ).
  • mergeTreeTextIndex(database, table, index) テーブル関数が追加され、テキスト索引からデータを直接読み取れるようになりました。この関数は、内部情報の確認や、テキスト索引データに対する集計の実行に使用できます。#97003 (Anton Popov).
  • table_readonly MergeTree setting を追加し、テーブルを読み取り専用としてマークすることで、insert や変更を防止できるようにしました。#97652 (Alexey Milovidov) 。
  • 新しい設定 use_partition_pruning と、そのエイリアスである use_partition_key を追加しました。これを false に設定すると、パーティションキーに基づくパーティションプルーニングが無効になります。 #97888 (Nihal Z. Miaji).
  • IcebergテーブルでALTER TABLE ... EXECUTE expire_snapshots('<timestamp>')を実装しました。#97904 (murphy-4o) 。#99130
  • <protocols> 内の各 type=http エントリで、別個の <http_handlers_*> 設定セクションを参照するカスタム <handlers> キーを指定できるようになり、ポートごとに異なる HTTP ルーティングルールを設定できるようになりました。#98414 (Amos Bird) 。
  • EXPLAINpretty=1 オプションを追加し、ツリー形式のインデント付き出力を可能にするとともに、compact=1Expression ステップを折りたたんで、クエリプランをより読みやすくしました。#98500 (Kirill Kopnev) 。
  • restore_access_entities_with_current_grants サーバー設定を追加しました。有効にすると、バックアップから復元されたユーザー/ロールの権限は、復元を実行するユーザーが付与できる範囲に制限されるため、ACCESS_DENIED で失敗せずに済みます (GRANT CURRENT GRANTS と同じセマンティクス) 。#98795 (pufit).
  • Unicodeのケースフォールディングおよび発音区別符号の削除のためのcaseFoldUTF8関数とremoveDiacriticsUTF8関数を追加しました。#98973 (George Larionov) 。
  • NFKC 正規化とケースフォールディングを組み合わせた NFKC_Casefold Unicode 正規化用の文字列関数 normalizeUTF8NFKCCasefold を追加しました。#99276 (George Larionov) 。
  • 全文検索用索引および tokens 関数向けに、asciiCJK トークナイザーを追加しました。これは Unicode の単語境界規則に基づいてテキストを分割します。ASCII の単語は接続文字 (アンダースコア、コロン、ドット、シングルクォート) を含めて構成され、非 ASCII の Unicode 文字はそれぞれ 1 文字のトークンになります。#99357 (Amos Bird) 。
  • skip_unavailable_shards が有効な場合に、通知なしでスキップできる利用不能な分片の数を制限するため、max_skip_unavailable_shards_num および max_skip_unavailable_shards_ratio 設定が追加されました。利用不能な分片の数または比率が設定したしきい値を超えた場合、不完全な結果をそのまま返す代わりに例外が発生します。#99369 (Alexey Milovidov).
  • ユーザーはサブクエリ式で SOME キーワードを使えるようになりました。動作は ANY と同一です。#99842 (Artem Kytkin).
  • テキスト出力フォーマットで FixedString 値の末尾にあるヌルバイトを取り除くための output_format_trim_fixed_string 設定を追加しました。#97558 (NeedmeFordev).
  • FROM句で、括弧で囲まれたテーブルJOIN式 (例: SELECT * FROM (t1 CROSS JOIN t2)) をサポートしました。#97650 (Alexey Milovidov) 。
  • 関数 toDaysInMonth を実装しました。指定した日付が属する月の日数を返します。#99227 (Vitaly Baranov) 。

実験的機能

  • WebAssembly ベースのユーザー定義関数 (UDFs) の実験的サポートを追加し、カスタム関数ロジックを WebAssembly で実装して ClickHouse 内で実行できるようになりました。Wasmtime バックエンドサポートへの貢献に対し、Alexey Smirnov に特別な謝意を表します。#88747 (Vladimir Cherkasov)。あわせて、WASM UDF サポートも段階的に改善されました。#99373 (Vasily Chekalkin)。
  • polyglot ライブラリを使用した外部 SQL ダイアレクト のサポートを追加しました。#99496 (Alexey Milovidov)。
  • ALP 浮動小数点圧縮コーデックを追加しました (圧縮できない double に対する ALP_rd fallback はありません) 。#91362 (Nazarii Piontko)。
  • JSON カラム向けの実験的な lazy 型ヒントを追加しました。allow_experimental_json_lazy_type_hints で有効にすると、型ヒントの追加または変更のみを行う ALTER TABLE ... MODIFY COLUMN json JSON(path TypeName) は、過去のデータを書き換えることなく、メタデータのみの操作として即座に完了します。型ヒントは古いパーツにはクエリ時に適用され、INSERT 時およびバックグラウンドマージ中に実体化されます。#97412 (tanner-bruce)。
  • YTsaurus テーブルエンジンからの並列読み取りを有効化しました。#97343 (MikhailBurdukov)。

パフォーマンス改善

  • データレイクのパフォーマンスを改善しました。以前のバージョンでは、オブジェクトストレージからの読み取り時に、処理スレッド数に応じてパイプラインのサイズが調整されていませんでした。これにより、マルチコアマシンで大幅な性能向上 (約40倍) が得られます。#99548 (Alexey Milovidov).
  • 現在、enable_parallel_replicasautomatic_parallel_replicas_mode の関係は次のとおりです。クエリで並列レプリカを使用できるのは、enable_parallel_replicas > 0 の場合に限られます。さらに、automatic_parallel_replicas_mode=1 の場合、並列レプリカを使用するかどうかは、あらかじめ収集された統計情報に基づいてプランニング時に決定されます。automatic_parallel_replicas_mode=0 の場合は、統計情報に関係なく、サポートされているすべてのクエリで並列レプリカが使用されます。特筆すべき例外として、並列レプリカを使う分散 insert-select があります。この場合、クエリは常に automatic_parallel_replicas_mode=0 であるかのように実行されます。#97517 (Nikita Taranov).
  • 述語に任意の比較演算子 (=, <, >, !=) が含まれ、かつパーティションキーが決定論的な関数チェーンで包まれている場合に、パーティションプルーニングを行えるようにしました (たとえば、PARTITION BY xcityHash64(x) % 5 > 2toYYYYMM(x) < 2026toYYYYMM(x) = 2026toYYYYMM(x) != 2026 のような述語はいずれも、プルーニングにパーティションキーを使用します) 。#28800 をクローズしました。#98432 (Nihal Z. Miaji) 。
  • CAST の変換先の型が Nullable で、かつ変換が単調である場合に、read-in-order 最適化と主キーのプルーニングを利用できるようになりました。たとえば、PRIMARY KEY x の場合、ClickHouse は ORDER BY x::Nullable(UInt64) に対して read-in-order 最適化を使用でき、WHERE x::Nullable(UInt64) > 500000 のような条件に対して主キーのプルーニングを適用できます。#98482 (Nihal Z. Miaji).
  • 整数型カラムが浮動小数点リテラルと比較される場合に、索引のプルーニングとフィルタのプッシュダウンが可能になりました。たとえば、WHERE x < 10.5 のような条件では主キーを使ったプルーニングが可能になり、prime < 1e9number < 1e5 のようなフィルタも、無制限に実行される代わりに、primes() および numbers() テーブル関数にプッシュダウンされるようになりました。#85167 をクローズしました。 #98516 (Nihal Z. Miaji).
  • メタデータの読み取りだけのためにファイルを再ダウンロードする必要をなくし、読み取り性能を向上させるため、Parquet メタデータ用の新しい SLRU cache が追加されました。#98140 (Grant Holly).
  • オプティマイザの統計情報に基づき、ANTI、SEMI、FULL JOIN の左右を入れ替えられるようになりました。#97498 (Hechem Selmi) 。
  • 大きな Polygon に対する pointInPolygon の granule スキップを最適化し、主キーのプルーニング中に pointInPolygon の索引解析で例外が発生する問題を修正しました。#91633 (Nihal Z. Miaji) 。
  • levenshteinDistance 関数の性能を改善。 #94543 (Joanna Hulboj).
  • 要素ごとの関数呼び出しを避けることで、バッチの Decimal 型変換を最適化しました。 #95923 (Konstantin Bogdanov).
  • Icebergテーブルで、iceberg_metadata_async_prefetch_period_ms テーブル設定による非同期のメタデータプリフェッチがサポートされ、メタデータキャッシュを定期的に事前拡充できるようになりました。さらに、iceberg_metadata_staleness_ms クエリ設定により、指定した古さのしきい値より新しい場合は、SELECTクエリでキャッシュ済みのメタデータを使用できるため、リクエスト処理中に Iceberg カタログを呼び出す必要がなくなります。#96191 (Arsen Muk).
  • S3Queue の ordered mode では、プレフィックス全体の履歴を再度一覧取得するのを避けるために S3 ListObjectsV2 StartAfter を使用し、ListObjects の呼び出し回数を削減します。 #96370 (Venkata Vineel ).
  • insert の deduplication におけるメモリ使用量を削減。通常、deduplication には元の block が必要ですが、同期 insert ではこれを省略できるため、メモリを大幅に節約できます。 #96661 (Sema Checherinda).
  • ハードコードされた 64 ではなく、cache line size にはアーキテクチャ固有の値を使用するようにしました。#97357 (Nikita Taranov).
  • テキスト索引のDictionaryからの読み取りをわずかに最適化し、テキスト索引解析全体のパフォーマンスを改善しました。 #97519 (Anton Popov).
  • ARM での 16 バイトブロックの LZ4 解凍を高速化しました。#97774 (Raúl Marín) 。
  • SIMD と状態保持型トークナイザーをサポートするため、従来のイテレータースタイルの API を新しい高性能なインターフェイスに置き換え、トークン化処理をリファクタリングしました。#90268 の一部です。#97871 (Amos Bird)。
  • 索引付きカラムと非索引カラムの両方を含む複合条件を持つクエリにおける、テキスト索引の索引解析のパフォーマンスを改善しました。従来、このようなケースでは、索引解析中の早期終了最適化が誤って無効になっていました。#98096 (Anton Popov).
  • 非常に長い Array や map を生成する定数式を含むクエリのパフォーマンスを改善しました。 #98287 (Alexey Milovidov).
  • 整数定数との比較時における DateTime64 主キーのキー条件解析を修正し、これまでグラニュールのプルーニングが行われなかった問題を解消しました。#98410 (Amos Bird).
  • 設定 optimize_syntax_fuse_functions はデフォルトで有効になっています。#98424 (Alexey Milovidov) 。
  • 集約状態を介した行ごとのストアフォワーディングではなくローカルアキュムレータを使用するように avgWeighted aggregate function を最適化し、Nullable 入力で最大 27% の性能向上を実現しました。 #98793 (Antonio Andelic) 。
  • 特定の状況における並列ウィンドウ関数や、大きな配列を扱うarrayFoldワークロードで、性能を向上させ、メモリ使用量を削減します。これにより、影響を受けるクエリにおけるページフォールトの負荷が軽減され、厳しいメモリ制限下での安定性も向上する場合があります。#98892 (filimonov) 。
  • ソート済みのマージ処理のパフォーマンスを改善しました。#99013 (Artem Zuikov) 。
  • INTERSECT ALLEXCEPT ALL を最適化。#99097 (Raufs Dunamalijevs) 。
  • 逆順読み取りでの read_in_order_use_virtual_row 最適化をサポートしました。#99198 (Vladimir Cherkasov) 。
  • 書き込み前に JoinUsedFlags が設定されているかどうかを確認することで、RIGHT および FULL JOIN における cache の競合を低減しました。 #99274 (Hechem Selmi).
  • 浮動小数点演算を純粋な整数演算に置き換えることで PrefetchingHelper::calcPrefetchLookAhead を最適化し、命令 cache のレイアウトを改善するとともに、集計ループ中のサイクルオーバーヘッドを削減しました。#99327 (Riyane El Qoqui).
  • ノードの子の保存に使用する absl::flat_hash_setCompactChildrenSet に置き換えることで、Keeper のメモリ消費量を削減しました。新しいコンテナーは、ヒープ割り当てなしで 0~1 個の子をインラインに格納でき、Keeper ノードの大半をこれでカバーできます。これにより、KeeperMemNode のサイズは 144 バイトから 128 バイトに削減されます。 #99860 (Antonio Andelic).
  • 集約プロジェクションがビューでも正しくサポートされるようになりました。#32753 を修正しました。#88798 (Amos Bird) 。
  • join_use_nulls による OUTER から INNER への join 変換の最適化をサポートしました。#90978 をクローズしました。#95968 (Vladimir Cherkasov) 。
  • 読み取り前にサイズを正しく計算することで、サブカラムの読み取りを改善しました。これにより、メモリ使用量が削減され、サブカラムの読み取りが高速化されます。#96251 (Pavel Kruglov).
  • 短命な割り当て、つまりクエリやリクエスト向けの割り当てと、cache 向けのより長寿命な割り当てが混在した際のメモリ断片化を防ぐため、mark cache、非圧縮 cache、ページキャッシュがそれぞれ別個の jemalloc アリーナを使用するようにしました。#96812 (Seva Potapov). #98812. #99021
  • DELETE TTL ルールが設定されたテーブルで、Vertical merge アルゴリズムを使用できるようになりました。#97332 (murphy-4o) 。
  • 分散索引解析時にデータスキッピングインデックスを適用します。 #97767 (Azat Khuzhin).
  • セカンダリ索引のマークは、prewarm_mark_cache 設定が有効な場合にプリウォームされるようになりました (data part のフェッチ時およびテーブル起動時に、index mark cache に読み込まれます) 。#97772 (Anton Popov).
  • アクセス制御におけるロックを削減しました。 #97894 (Nikita Taranov).
  • apply_row_policy_after_final または apply_prewhere_after_final が有効な場合、行ポリシーおよび PREWHERE の複合 AND 条件が分解され、主キーの索引解析のためにソートキーの各要素を抽出できるようになりました。以前は、遅延されたフィルタにソートキーに関する条件とソートキーに関係しない条件が混在している場合 (たとえば x > 1 AND y != ‘foo’) 、式全体が索引解析の対象外となっていました。現在は、ネストした AND 式であっても、ソートキーの条件 (x > 1 など) を抽出して Granule pruning に利用できるようになりました。#98513 (Yarik Briukhovetskyi).
  • ロックを取得せずにタスクのリソースを解放できるようにし、MergeTreeBackgroundExecutor におけるロック競合を軽減しました。#93620 をクローズ。#98604 (Dmitry Novik).
  • ArrowStream リーダーが先頭のバイト列を非常に大きなメタデータ長と誤認していたことにより、Arrow 以外のデータ (例: フォーマットを明示せずに url または file から読み込む JSON) の読み込み時に、フォーマット自動検出で過剰なメモリ (約 514 MiB) を消費していた問題を修正しました。#98893 (Konstantin Bogdanov) 。

改善

  • 同じカラム内に異なるGeo型が含まれているGeoParquetファイルを解析できるようになりました。 #97851 (Mark Needham).
  • ワイルドカードの意味を考慮しつつ LIKE パターンをトークン化する tokensForLikePattern SQL 関数を導入しました。%_ はワイルドカードとして扱い、エスケープされたワイルドカード (\%\_) はリテラルとして扱い、エスケープされていないワイルドカードに隣接する token は破棄します。#97872 (Amos Bird).
  • S3 テーブルエンジンに {_schema_hash} プレースホルダーを追加し、table のカラム定義のハッシュを S3 の path に挿入できるようにしました。 #98265 (Miсhael Stetsyuk).
  • SymbolIndexaddressToSymbolsystem.symbols、および buildId は、Mach-O のシンボルテーブルをパースすることで、macOS でも利用できるようになりました。#99014 (Alexey Milovidov) 。
  • system.stack_trace テーブルが macOS でも利用可能になり、サーバーのすべてのスレッドのスタックトレースを調査できるようになりました。#98982 (Alexey Milovidov).
  • LDAP クライアントがリファラルをたどるかどうかを制御する、サーバーごとの LDAP 設定オプション <follow_referrals> (デフォルトは false) を追加しました。リファラル追跡を無効にすると、Active Directory のドメインルートのベース DN から検索する際に発生するタイムアウトやハングを回避できます。リファラル関連のログメッセージは warn から trace に変更されました。#96765 (paf91).
  • クエリ実行時に使用されたデータスキッピングインデックスを、query_log テーブルの skip_indices という新しいカラムで追跡するようになりました。#78676 を修正しました。元の著者は @pheepa です。#87862 (Grant Holly).
  • ACCESS_DENIED のヒントでは、ユーザーに必要なすべてのカラムを表示する権限がある場合を除き、カラム名は表示されなくなりました。データベース名とテーブル名は引き続きヒントに表示されます。 #91067 (filimonov).
  • マージ負荷が高い場合のクリーンアップ遅延を防ぐため、MergeTree に専用のクリーンアップスレッドを追加しました。これにより #86181 が解決されます。#91574 (Amos Bird) 。
  • いずれかのホストのIPではなく、ローカルサーバーのホスト名に対応するIPが変更された場合にクラスター設定を再読み込みするようにしました。これにより、#81215#70156、および#65268を修正します。#93726 (Zhigao Hong) 。
  • optimize_aggregators_of_group_by_keys により、GROUPING SETS クエリ内の集約関数を正しく最適化できるようになりました。#93935 (Xiaozhe Yu) 。
  • Keeper-bench: メトリクスでエラーを報告し、—input-request-log モード用の JSON メトリクスファイルを生成します。#95748 (Mohammad Lareb Zafar).
  • CREATE USER に新しい ROLE 句を追加しました。#97074 (Vitaly Baranov) 。
  • Replicated database で作成されたクラスターに対して、internal_replication 設定を行えるようになりました。#97228 (Pervakov Grigorii) 。
  • 新しい設定 allow_nullable_tuple_in_extracted_subcolumns は、TupleVariantDynamicJSON から抽出された Tuple(...) サブカラムを Nullable(Tuple(...)) (欠落した行では NULL) として返すか、Tuple(...) (欠落した行ではデフォルトのタプル値) として返すかを制御します。デフォルトでは無効で、この設定を変更するにはサーバーの再起動が必要です。 #97299 (Nihal Z. Miaji).
  • 遅延フィルターに関する情報を、EXPLAINクエリの出力に別項目として追加 (Row Policies/PREWHERE とともに FINAL を使用する場合) 。関連: #91065#97374 (Yarik Briukhovetskyi) 。
  • type_json_allow_duplicated_key_with_literal_and_nested_object をデフォルトで有効にしました。これにより、元の JSON データ {"a" : 42, "a.b" : 42} を ClickHouse が {"a" : 42, "a" : {"b" : 42}} のような JSON に整形する場合でも、その JSON のパース時に重複キーに関するエラーを回避できます。#97423 (Pavel Kruglov).
  • Keeper の改善: find_super_nodes は、Keeper でノード数が想定外に増加した際のデバッグに非常に役立つコマンドです。残念ながら、スーパーノードが複数ある場合、最初に見つかったスーパーノードの子ノードをたどるところでコマンドが無限に停止してしまうため、2 つ目以降を見つけるのはほぼ不可能でした。この PR では、スーパーノードの子ノードをたどれないようにしました。#97819 (pufit).
  • clickhouse-keeper-client の補完機能のサポートを開始。 #97828 (Konstantin Bogdanov).
  • クラッシュ時に、非同期ログバッファをフラッシュするようにしました。 #97836 (Azat Khuzhin).
  • impersonate 機能がデフォルトで有効になりました (EXECUTE AS target_userを参照) 。#97870 (Vitaly Baranov) 。
  • SQLite table engine におけるクエリのキャンセルについて、KILL QUERY および clickhouse-client でのクエリキャンセル (Ctrl+C) を改善しました。#97944 (Roman Vasin).
  • サーバー設定 jemalloc_profiler_sampling_rate を追加し、jemalloc の lg_prof_sample を制御できるようにするとともに、非同期メトリクス jemalloc.prof.lg_sample として公開しました。#97945 (Antonio Andelic).
  • 同時実行の有界キュー実装で、重みのサポートを追加しました。#97962 (Daniil Ivanik).
  • PostgreSQL の Dictionary ソースで、許可されるキーに sslmode を追加しました。これまで sslmode は PostgreSQLDictionarySource.cpp の dictionary&#95;allowed&#95;keys 許可リストに含まれていなかったため、PostgreSQL の Dictionary 接続で SSL モードを設定できませんでした。その結果、SSL を必須とする PostgreSQL サーバー (たとえば、デフォルトで SSL を強制する AWS RDS) に Dictionary から接続できず、接続時の TLS ネゴシエーションが失敗し、サーバーは暗号化されていないフォールバック接続を拒否していました。#98014 (mcalfin).
  • 紛らわしい一般的なメッセージではなく、存在しないファイルパスを clickhouse または clickhouse-local に渡したときに、明確な「そのようなファイルはありません」エラーを表示するようにしました。#98048 (Raúl Marín).
  • テキスト索引を Nullable([Fixed]String) および Array(Nullable([Fixed]String)) カラムに対して構築できるようになりました。#98118 (Jimmy Aguilar Mena).
  • Dictionary ソースの依存先である named collections が削除されないようにしました。#98127 (Pablo Marcos) 。
  • totals を伴うクエリで grace_hash join アルゴリズムを有効にしました。#98144 (János Benjamin Antal) 。
  • 通常の shared merge tree における DROP DATABASE で、バックグラウンドマージを早い段階でキャンセルするようにしました。 #98161 (Shaohua Wang).
  • MongoDB と MySQL のクエリのキャンセルが、clickhouse-client での KILL QUERY とクエリのキャンセル (Ctrl+C) によって改善されました。#98187 (Roman Vasin) 。
  • NetlinkMetricsProvider を削除し、スレッドごとの taskstats メトリクス収集には procfs のみを使用するようにしました。Netlink ベースの収集はコンテナー化環境では問題があり、競合時のテールレイテンシも悪化します。#98229 (Amos Bird).
  • マニフェストファイルのキャッシュに関する問題を修正するため、Iceberg マニフェストファイルの処理をリファクタリングしました。 #98231 (Daniil Ivanik) 。
  • これにより、テーブルのソートキーが toDate(time) のような式である場合も考慮されるようになり、そのような式がフィルタの一部であれば、評価を遅延させないように判断できるようになりました。 #98237 (Yarik Briukhovetskyi).
  • ZooKeeper の ephemeral lock znode に割り当てられた sequential 番号の最大値を示す、新しい MaxAllocatedEphemeralLockSequentialNumber メトリクスを追加しました。#98243 (Miсhael Stetsyuk).
  • ClickStackをバージョン 2.20.0 に更新。 #98252 (Aaron Knudtson).
  • マルチリクエスト内の各サブリクエストを個別にカウントする新しいプロファイルイベント KeeperRequestTotalWithSubrequests が追加され、実際の Keeper ワークロードの可視性が向上しました。既存の KeeperRequestTotal イベントは、引き続き各マルチリクエストを1件のリクエストとしてカウントします。#98348 (Antonio Andelic) 。
  • SYSTEM RELOAD DICTIONARIES は、ほかのディクショナリをソースとするディクショナリが、再読み込み後に最新のデータを参照できるよう、ディクショナリをトポロジカル順序で再読み込みするようになりました。 #98356 (Alexey Milovidov) 。
  • MergeTree setting の変更後に、統計 cache を再起動するようにしました。#98520 (Han Fei) 。
  • 接続可能な”alive”レプリカのみが分散索引解析に参加します。 #98521 (Azat Khuzhin) 。
  • SQL で定義されたユーザーに対して、config で定義された設定プロファイル (default プロファイルを除く) の使用を禁止する設定 access_control_improvements.disallow_config_defined_profiles_for_sql_defined_users を追加しました (デフォルトでは無効) 。 #98662 (Alexander Tokmakov).
  • 自動並列レプリカのヒューリスティックで使用するノード数の上限を、max_parallel_replicas 設定だけでなく、クラスター内の実際のノード数にも合わせるようにしました。 #98668 (Nikita Taranov).
  • 分散索引解析向けに、ヘッジリクエストと非同期読み取りを実装。 #98724 (Azat Khuzhin).
  • バイナリのAggregateFunction状態のデシリアライゼーションでは、入力全体を最後まで消費することが必要になりました。余分な不要バイトが末尾に存在する場合、ClickHouse は不正な状態データを受け入れるのではなく、例外をスローするようになりました。#98786 (Nihal Z. Miaji).
  • TRUNCATE DATABASE がクエリのキャンセルに対応するようになりました。#98828 (Shaohua Wang) 。
  • keeper-bench に、リクエストのパイプライン化、ウォームアップ期間、操作ごとの統計、再現性のあるシード、より適切なエラー処理を追加して改善しました。#98906 (Antonio Andelic).
  • 分散索引解析でのSAMPLE句をサポート。 #98931 (Azat Khuzhin).
  • クエリが空の結果を返した場合やエラーが発生した場合でも、ダッシュボードにチャートのタイトルを表示するようにしました。 #98975 (Yash ).
  • アナライザのエラーメッセージで、テーブルのすべてのカラムを出力しないようになりました (これにより 150KB 超の例外が発生する可能性がありました) 。カラム一覧は現在 10 エントリまでに制限されています。#99002 (Yash ).
  • JOIN を含むサブクエリからカラム統計を適切に返すようにし、親クエリがそれを JOIN の並べ替えに利用できるようにしました。 #99096 (Alexander Gololobov).
  • 終了処理の開始時に、送信スレッドの終了を待たず、ZooKeeper セッションを即座に期限切れとしてマークするようにしました。これにより、ほかのスレッドは遅滞なく新しいセッションを確立できます。 #99102 (Raúl Marín).
  • LLVM-libc の数学関数の利用範囲を拡大しました: exp, exp2, expm1, fabs, fabsl, floor, fmodl, log, log2, logf, pow, scalbn, scalbnl, copysignl, nan, nanf, nanl、および explogxf の共有定数。 #99118 (Konstantin Bogdanov).
  • system.jemalloc_profile_text の collapsed フォーマットにおけるメモリ使用量を削減し、出力が重複する可能性がある問題を修正しました。 #99121 (Antonio Andelic).
  • system.aggregated_zookeeper_logis_subrequest カラムを追加し、スタンドアロンのリクエストと Multi/MultiRead リクエスト内のサブリクエストを区別できるようにしました。これまでは、サブリクエストはスタンドアロンのリクエストと同じバケットに集計されており、各サブ操作が multi-request 全体の所要時間で記録されていたため、平均レイテンシが実態を反映しないものになっていました。現在、サブリクエストのレイテンシは 0 になります。#99169 (Miсhael Stetsyuk).
  • カラムの型を指定しなくても ALTER TABLE MODIFY COLUMN x TTL ... コマンドを実行できるようになりました。#99208 (Nikolay Degterinsky).
  • すでに切断されたセッションに対する古い Keeper リクエストをスキップし、不要な Raft のラウンドトリップを回避します。追跡する完了済みセッション数の上限は、協調設定 max_finished_sessions_cache_size で定められます。#99246 (Antonio Andelic) 。
  • IN 演算子で、mapValues(map) に基づくテキスト索引をサポート。 #99286 (Anton Popov).
  • clickhouse keeper-client でシェル風補完をサポート (引用符付き引数、つまり 'foo ba' の補完や、エスケープされた引数、つまり foo\ ba の処理に対応し、空白を含むノードは ls で引用符付きで出力するようにしました) 。 #99312 (Azat Khuzhin).
  • ロック競合により Keeper の mntr コマンドがハングするのを防ぐようにしました。#99472 (Antonio Andelic) 。
  • mutex のスコープ外でコールバックの呼び出しと読み取りリクエストのディスパッチを行うことで、Keeper ディスパッチャのロック競合を低減し、オブザーバビリティ向けにプロファイル対応のロックガードを追加しました。#99751 (Antonio Andelic).
  • Parquetファイルの最後のblockの末尾でパディングが欠けていても許容する。 #99857 (Seva Potapov).

バグ修正 (正式な安定版リリースでユーザーに影響する不具合)

  • 完全修飾されていない場合に、Alias table のターゲットが DDL 依存関係として保存される際の扱いを修正しました。これにより、session database ではなく Alias table の database に保存されるようになりました。 #95175 (Enric Calabuig).
  • ALIASカラムのサブカラムの読み取り時に発生する誤った結果や例外を修正しました。#95408 (Pavel Kruglov) 。
  • 旧アナライザで、JOIN に非標準の識別子エイリアスを使用した場合にカラムが見つからない問題を修正。 #25594#47288、および #53263 を修正。 #95679 (Zhigao Hong).
  • 空の引数が渡された際に、Kusto dialect の関数 bin(), bin_at(), extract(), indexof() で発生するクラッシュを修正しました。#95736 (NeedmeFordev) 。
  • clickhouse-client で、local filesystem 上のデータレイクや LocalDisk で使用される可能性がある local_object_storage を、user_files_path 以外の場所にマウントすることを禁止しました。 #96201 (Daniil Ivanik).
  • DeltaLake テーブルエンジンで、snapshot version の変更時に発生する論理的なレースコンディションを修正し、冗長で負荷の高い snapshot の再読み込みを削除しました。#96226 (Kseniia Sumarokova) 。
  • Detach と Attach の間に複数回のリネームが連鎖的に行われた場合に、MergeTree でパートを Attach する際に発生する論理エラーを修正しました。 #96351 (Alexey Milovidov).
  • 同一のリクエストで compatibility とともに送信された明示的な設定が、その値が server のデフォルト値と一致している場合に、黙って無視されることがあった不具合を修正しました。#97078 (Raufs Dunamalijevs).
  • 並列パースを伴う INSERT で無効なデータに遭遇した際、実際のパースエラー (正しい行番号付き) ではなく NETWORK_ERROR を報告してしまうクライアントの問題を修正しました。 #97339 (Alexey Milovidov).
  • Nullable(Tuple) の導入後、sumCount 集約関数が古いシリアライズ済み状態を読み取れなくなっていた問題を修正しました。#97370 をクローズします。#97502 (Nihal Z. Miaji).
  • Nothing 型の要素 (例: NULL のタプル要素との比較) を含むタプル比較を GROUPING SETS および ORDER BY と併用した際に発生する例外を修正しました。 #97509 (Alexey Milovidov).
  • 複数の圧縮コーデック使用時に Compact MergeTree パーツで uncompressed_hash が非決定論的に計算される問題を修正しました。これにより、重複排除が誤動作する可能性がありました。 #97522 (Alexey Milovidov).
  • shared data 内で JSON と buckets を使用した INSERT SELECT の際に stream が欠落する論理エラーを修正しました。#97331 をクローズしました。 #97523 (Pavel Kruglov).
  • SummingMergeTree および CoalescingMergeTree のマージ時に、MEMORY_LIMIT_EXCEEDED 例外が誤って CORRUPTED_DATA として報告される不具合を修正しました。#97537 (János Benjamin Antal) 。
  • url() のようなテーブル関数を含む相関サブクエリで発生する “Context has expired” 例外を修正しました。#97544 (Alexey Milovidov).
  • 集約プロジェクション、Date型、およびカラム名の保持に関する optimize_syntax_fuse_functions の例外と誤動作を修正しました。#97545 (Alexey Milovidov).
  • regexp が一致しない場合に誤った結果を返していた、replaceRegexpOne から extract への誤ったクエリの書き換えを削除しました。あわせて、replaceRegexpOneGROUP BY ... WITH CUBE および group_by_use_nulls=1 と併用した場合に発生する例外も修正しました。#97546 (Alexey Milovidov).
  • クエリが強制終了された際に、database_atomic_wait_for_drop_and_detach_synchronously を指定した DROP DATABASE が無期限にハングする問題を修正しました。#97586 (Alexey Milovidov).
  • KILL QUERY で、WITH FILL の生成処理、dictGet による Dictionary の読み込み、または ReplicatedMergeTreemutations_sync=1 を指定した ALTER DELETE で処理が止まったクエリを終了できない問題を修正しました。#97589 (Alexey Milovidov).
  • loop テーブル関数は inner_storage->read() を直接呼び出していたため、行ポリシー、カラムレベルの権限、その他のセキュリティチェックが適用されるインタープリタ層をバイパスしていました。その結果、行ポリシーで制限されているユーザーでも、直接 SELECT を実行すると 0 行しか返らない場合であっても、loop(table) 経由ですべての行を読み取ることができていました。#97682 (pufit).
  • toDate() 関数の使用時に、epoch以前の DateTime64 に対するパーティションプルーニングが正しく行われない問題を修正しました。#97746 (Yarik Briukhovetskyi) 。
  • このパッチ適用後は、data part set 内により大きいパーティション ID を持つ別のパーティションが存在する場合、hasPartitionId は false を返すようになります。#97748 (Mikhail Artemenko).
  • JSON の高度な共有データにおいて、空のグラニュールの読み取り時に発生し得るクラッシュを修正しました。#97563 をクローズします。#97778 (Pavel Kruglov).
  • DROPINSERT の競合によって、Distributed への INSERT 時に発生する Cannot schedule a file LOGICAL_ERROR を修正しました。#97822 (Azat Khuzhin).
  • tokenbf_v1 スキップ索引を使用した mapContainsKey/mapContainsKeyLike の呼び出し時に発生する ClickHouse server のクラッシュやアサートを修正しました。#97826 (Shankar Iyer) 。
  • concatWithSeparatorformatIN サブクエリ、GLOBAL IN、およびランタイムフィルタを使用する JOIN において、複合型 (VariantDynamicTuple) 内の LowCardinality が原因で発生する LOGICAL_ERROR 例外を修正。 #97831 (Raúl Marín).
  • GROUP BY と組み合わせて、複数の分散テーブルに対する merge() テーブル関数で ARRAY JOIN を使用した際に発生する LOGICAL_ERROR 例外 Chunk info was not set for chunk in MergingAggregatedTransform を修正しました。#97838 (Raúl Marín).
  • 高い並行性で接続グループのハード上限に達した際に、HTTP 接続プールのデストラクタ内で未捕捉例外が発生し、サーバーがクラッシュ (std::terminate) する問題を修正しました。接続を接続プールに戻す際に、例外 HTTP_CONNECTION_LIMIT_REACHED~PooledConnection から外に漏れ、SIGABRT を引き起こす可能性がありました。 #97850 (Antonio Andelic).
  • grace_hash アルゴリズムを非等値 JOIN で使用し、JOIN 結果のサイズ制約により左側の block を最後まで処理できない場合に、誤った結果が返される不具合を修正しました。 #97866 (János Benjamin Antal).
  • #96686 で導入された Delta Lake メタデータのスキャンにおけるパフォーマンス上の非効率を修正しました。#97880 (Kseniia Sumarokova).
  • ZooKeeperクライアントの sendThread と receiveThread 間のデータ競合を修正しました。#97887 (Pablo Marcos) 。
  • distributed insert select で CTE を使用できない不具合を修正しました。https://github.com/ClickHouse/ClickHouse/pull/87789 の続きです。#95837 をクローズしました。#97889 (Yarik Briukhovetskyi).
  • CachedOnDiskReadBufferFromFile::readBigAt で発生する例外を修正しました。#97325 をクローズしました。#97890 (Kseniia Sumarokova).
  • カラムの不一致により、Alias エンジンでマテリアライズドカラムを使用した際に発生する LOGICAL_ERROR 例外を修正しました。#97907 をクローズしました。#97921 (Kai Zhu).
  • ログストレージに s3_plain メタデータを使用して Azure Blob Storage を利用する際、再起動後に Keeper のデータが失われる問題を修正しました。#97987 (Antonio Andelic).
  • sign 関数で、Int8 よりビット幅の大きい整数型に対する JIT の誤コンパイルを修正しました。これにより、-128..127 の範囲外の値で誤った符号を返す可能性がありました。#98012 (Alexey Milovidov).
  • 列名にドットを含む struct フィールド (例: STRUCT<`a.foo`: STRING, `b.foo`: STRING>) を持つ Delta Lake テーブルを、カラムマッピング “name” モードで読み取る際に発生していた DUPLICATE_COLUMN 例外と、NULL が黙って返される問題を修正しました。 #98013 (Caio Ishizaka Costa).
  • 論理更新およびセカンダリ索引の後に実行される mutation の不具合を修正しました。 #98044 (Raúl Marín).
  • 主キーと非主キーのスキップ索引を混在させた場合に、FINALクエリで誤った結果が返される問題を修正しました。 #98097 (Raúl Marín).
  • scalar file() および DESCRIBE TABLE file() に対して、READ ON FILE チェックを適用。 #98115 (Nikolay Degterinsky).
  • glob パターンを使ってファイルをクエリした際 (例: file('dir/**', 'LineAsString')) 、ディレクトリにダングリングシンボリックリンクが含まれていると、未処理のファイルシステム例外 (STD_EXCEPTION) が発生してクラッシュしていた問題を修正しました。現在はダングリングシンボリックリンクを黙ってスキップし、有効なすべてのファイルから結果を返すようになりました。#98143 (Mark Andreev).
  • フィルタ式で arrayJoin を使用して outer join を inner join に変換する際に、クエリプランの最適化で発生するセグメンテーションフォルトを修正しました。#98147 (Alexey Milovidov) 。
  • メッセージ間で読み取り状態がリセットされないことにより、ProtobufList フォーマットが Kafka エンジンで動作しない問題を修正しました。 #98151 (Alexey Milovidov).
  • analyzer_compatibility_join_using_top_level_identifier および ARRAY JOIN に関する論理エラーを修正し、#98164 をクローズしました。#98179 (Vladimir Cherkasov) 。
  • aggregated_zookeeper_log で、空のままになっていた watch レスポンス用の Watch 部分を設定しました。#98202 (Antonio Andelic).
  • パーティションキーのキーカラムがソートキーに含まれていない場合、パーティションプルーニングによって、FINAL での重複排除時に本来”勝つ”べき行を含むパーティションが誤ってスキップされる可能性がありました。 #98242 (Yarik Briukhovetskyi).
  • 定数 Array 引数を指定して kql_array_sort_asc/kql_array_sort_desc を呼び出した際に発生していた論理エラー “Bad cast from type DB::ColumnConst to DB::ColumnArray” を修正しました。#98251 (Alexey Milovidov).
  • extremes = 1 が有効な場合にクラッシュを引き起こす可能性があった ColumnConst::getExtremes の範囲外アクセスを修正しました。 #98263 (Alexey Milovidov).
  • 同じ一対のテーブル間で逆方向に実行される 2 つの同時実行 MOVE PARTITION 操作で発生する可能性があるデッドロックを修正しました。 #98264 (Alexey Milovidov).
  • HTTPサーバーは、不正なヘッダーが原因で発生する 400 Bad Request レスポンスに対して、空のボディではなくレスポンスボディにエラーメッセージを返すようになりました。#98268 (Alexey Milovidov).
  • 分散索引解析 (実験的機能) およびクエリ条件キャッシュで誤った結果が返される問題を修正しました。#98269 (Azat Khuzhin).
  • 65535 の境界をまたぐデータを含むキーカラムに対する toDate 変換で発生していた LOGICAL_ERROR 例外 “Invalid binary search result in MergeTreeSetIndex” を修正しました。#98276 (Alexey Milovidov) 。
  • query_plan_join_swap_table 最適化により、CROSS JOIN で囲まれた RIGHT JOIN がレガシー join step のコードパスで入れ替えられた際に発生する LOGICAL_ERROR 例外を修正しました。#98279 (Alexey Milovidov)。
  • 破損したquantilesDD集約関数の状態の読み取り時に、セグメンテーション違反、例外、無限ループ、OOMを防ぐため、DDSketchのデシリアライズ時に破損データを検証するようにしました。 #98284 (Alexey Milovidov).
  • 外側のクエリの相関カラムが arrayMap などのラムダ関数内で参照された際に発生する LOGICAL_ERROR “Trying to execute PLACEHOLDER action” を修正しました。 #98285 (Alexey Milovidov).
  • CASE 式に materialize(NULL) またはその他の Nullable(Nothing) 型の引数が含まれる場合に、caseWithExpression で発生していた論理エラー例外を修正しました。#98290 (Alexey Milovidov) 。
  • merge テーブル関数で _table 仮想カラムをフィルタリングする際に発生する bad cast 例外を修正しました。#98291 (Alexey Milovidov) 。
  • blocks/deduplication_hashes/ の ZooKeeper ディレクトリ間でクリーンアップ順序に不整合があったため、再挿入が誤って重複排除されてしまう散発的な重複排除の不具合を修正しました。 #98293 (Alexey Milovidov).
  • ORDER BY ... WITH FILLLIMIT BY と併用した場合に発生する例外を修正しました。#98361 (Alexey Milovidov) 。
  • Parquet/Arrow の Date カラムを Enum カラムに挿入した際に発生していた、検知しにくいデータ破損を修正しました。これにより、不正な enum 値を保存する代わりに、互換性のない型変換を適切に拒否するようになりました。#98364 (Alexey Milovidov).
  • Array カラムを含む Arrow ファイルを、Nested カラムを持つテーブルに読み込む際に発生する例外を修正しました。#98365 (Alexey Milovidov).
  • 索引またはプロジェクションがミューテーションの完了前に削除された場合に、MATERIALIZE INDEX および MATERIALIZE PROJECTION のミューテーションが停止したままになる問題を修正しました。#98369 (Alexey Milovidov).
  • Tuple 要素名が Nullable の null サブカラムと衝突する場合に、Nullable(Tuple(...)) の読み取り時に発生する例外を修正しました。#98372 (Alexey Milovidov).
  • Merge テーブル (Distributed テーブルをラップしたもの) を別のテーブルと結合する際に発生する例外 “Column … query tree node does not have valid source node” を修正しました。#98376 (Alexey Milovidov) 。
  • 文字列表現ではなく生のバイト列を生成していた、native V3 リーダーでの Parquet Bool から FixedString への誤った変換を修正しました。#98378 (Alexey Milovidov) 。
  • tryGetColumnDescription を修正し、他のカラムのルックアップメソッドとの整合性が取れるよう、親カラムの種類に基づいてサブカラムを絞り込むようにしました。#98391 (Alexey Milovidov).
  • HTTP Basic認証で、パディングなしのBase64認証情報を受け入れるようにしました。一部のHTTPクライアントは Authorization: Basic ヘッダーの末尾の = パディングを省略するため、これまでは認証に失敗していました。#98392 (Amos Bird).
  • 誤った min-max 索引の境界値が原因で、Nullable なパーティションキーカラムを含むパーツのマージ後にパーティションプルーニング結果が誤る問題を修正しました。#98405 (Amos Bird).
  • パイプラインエグゼキュータでまれに発生する例外を修正しました。この例外は、パイプラインの拡張とクエリのキャンセルが競合した際に、Received signal 6 として現れることがありました (デバッグビルド時のみ) 。#98428 (Alexey Milovidov) 。
  • count_distinct_optimizationQUALIFY 句とともに使用した際に発生する例外 “Column identifier is already registered” を修正しました。 #98433 (Alexey Milovidov).
  • IN/NOT INLowCardinality カラム引数を使用した際に発生する例外 “cannot be inside Nullable type” を修正しました (例: aLowCardinality(String) の場合の a NOT IN (b)) 。#98443 (Alexey Milovidov).
  • FilterBySetOnTheFly 最適化によって MergeJoinTransform との循環依存が生じた際、PingPongProcessor でデッドロックが発生し、full_sorting_merge JOIN で “Pipeline stuck” 例外が発生する不具合を修正しました。 #98454 (Alexey Milovidov).
  • 有効期限 (TTL) によってすべての行が削除されるパーツのマージ時に、定数の GROUP BY キーを持つ集計プロジェクションで発生する LOGICAL_ERROR 例外 “Projection cannot increase the number of rows in a block” を修正しました。#98458 (Alexey Milovidov).
  • CROSS JOININNER JOIN USING と併用した際に発生する logical error 例外を修正しました。#98459 (Alexey Milovidov).
  • キー引数が Nullable の場合に dictGetOrDefault で発生するヌルポインタ逆参照を修正しました。 #98460 (Alexey Milovidov).
  • 集約プロジェクション使用時に、materialize によりクエリとプロジェクションで LowCardinality 型の違いが生じる場合に発生していた DISTINCT クエリの例外を修正しました。#98462 (Alexey Milovidov) 。
  • OUTER JOIN と join_use_nulls が有効な場合に、arrayJoin をフィルタ式内で使用すると発生する LOGICAL_ERROR 例外を修正しました。#98464 (Alexey Milovidov) 。
  • optimize_aggregation_in_order と並列レプリカを併用した際に発生する論理エラー例外 “Replica decided to read in WithOrder mode, not in ReverseOrder” を修正しました。#98467 (Alexey Milovidov) 。
  • addWatch リクエスト後に ClickHouse Keeper が Java ZooKeeper クライアントを切断してしまう問題を修正しました。Java クライアントは addWatch レスポンスに 4 バイトの ErrorResponse ボディが含まれることを想定していますが、Keeper は空のボディを返していたため、EOFException とセッション切断が発生していました。これにより、Apache Curator の CuratorCache や永続ウォッチを使用するあらゆる Java アプリケーションが正常に動作しなくなっていました。#98079 を修正しました。 #98499 (Antonio Andelic).
  • フォロワーがダウンした際に、zk_followers および zk_synced_followers の Keeper メトリクスが減少しない問題を修正しました。mntr four-letter-word コマンドに、新たに zk_learners および zk_synced_non_voting_followers メトリクスを追加しました。#54173 を修正。#98504 (Antonio Andelic) 。
  • MergeTreeトランザクション利用時に、TRUNCATE TABLEOPTIMIZE TABLE が同時実行された際に発生する可能性があった renameAndCommitEmptyParts の LOGICAL_ERROR 例外を修正しました。 #98508 (Alexey Milovidov).
  • Keeper のセキュアな raft ポートが openSSL 設定の cipherListdhParamsFile を無視し、ユーザー指定の値ではなく常にデフォルト値を使用していた問題を修正しました。#51188 をクローズしました。#98509 (Antonio Andelic).
  • 「Receiving request for session X took 9963 ms」のような誤解を招く Keeper のログメッセージを修正しました。ここで報告されていた時間は、実際に処理にかかった時間ではなく、ハートビートの合間に poll() 内で idle のまま待機していた時間でした。#79026 を修正しました。#98510 (Antonio Andelic).
  • read_in_order_use_virtual_row と単調関数で予期しない結果を返す問題を修正し、#97837 をクローズしました。#98514 (Vladimir Cherkasov).
  • MergeTree テーブルで IN サブクエリとともに PREWHERE を使用した際に発生していた LOGICAL_ERROR: Not-ready Set is passed as the second argument for function 'in' を修正しました。#98522 (Alexey Milovidov).
  • シャットダウンシグナルに応答せず、サーバーの正常なシャットダウンを妨げていた Keeper の TCP 接続を修正しました。 #98525 (Alexey Milovidov).
  • query_plan_merge_expressions = 0query_plan_convert_join_to_in が有効な場合に発生する例外 “Sorting column wasn’t found in the ActionsDAG’s outputs” を修正しました。#98526 (Alexey Milovidov) 。
  • named collections 使用時に失敗する MongoDB Dictionary ソースを修正しました。#97840 をクローズしました。#98528 (Pablo Marcos) 。
  • パラメータ置換後に Identifier が空になった場合に発生していた LOGICAL_ERROR を修正しました。#98530 (Pervakov Grigorii).
  • ウィンドウ関数と組み合わせて sort_overflow_mode = 'break' を使用した際に発生するパイプラインのデッドロックを修正しました。#98543 (Alexey Milovidov) 。
  • 新しいブロックの追加中に例外が発生した際の、Bufferエンジンにおけるカラムのロールバック処理を修正しました。従来のロジックでは、カラムのインメモリ状態が破損するおそれがありました。#98551 (Pavel Kruglov).
  • const の Dynamic または Variant カラムと NULL を用いた null-safe 比較 (<=> / IS NOT DISTINCT FROM) で発生していた例外 Bad cast from type ColumnConst to ColumnDynamic を修正しました。あわせて、Dynamic/VariantNULL の比較で IS DISTINCT FROM が常に誤って 0 を返していた問題も修正しました。#98553 (Alexey Milovidov).
  • テキスト索引を他のスキップ索引と併用した場合の不具合を修正しました。以前は、クエリのフィルターでテキスト索引と通常のスキップ索引を同時に使用すると、“Trying to get non-existing mark” のような論理エラーが発生することがありました。#98555 (Anton Popov).
  • 同じクエリスコープ内でエイリアス付きの table function が複数回出現する場合 (たとえば PREWHERE 句と QUALIFY 句の両方) に発生する論理エラー “TABLE_FUNCTION is not allowed in expression context” を修正しました。 #98557 (Alexey Milovidov).
  • PK 内の式 (カラムだけでなく) に対する分散索引解析を修正 (これにより、リモートレプリカ上の冗長なグラニュールがまったくフィルタリングされない状態になっていた) 。 #98561 (Azat Khuzhin).
  • サブカラムが他のカラムの default/alias 式で使用されている場合、そのカラムの削除を禁止し、ALTER DROP COLUMN のデフォルト式でアナライザを使用するようにしました。#98569 (Nikita Mikhaylov).
  • HTTP クライアントで、再試行できないエラー (HTTP_CONNECTION_LIMIT_REACHED を含む) でも S3 リクエストが誤って再試行されていた問題を修正しました。#98598 (Sema Checherinda) 。
  • DateTime64 でパーティションプルーニングを行う際に発生する decimal のオーバーフローを修正しました。#98628 (Yarik Briukhovetskyi).
  • JIT 式コンパイルにおける 2 件の不具合を修正しました。1 件目は、nativeCast の型チェックにあったコピー&ペーストミスにより、整数から整数、および浮動小数点数から浮動小数点数への cast の分岐が到達不能になっていた問題です。2 件目は、LLVM PassBuilder に誤って nullptr の TargetMachine が渡されていたため、ターゲット固有の最適化パスが登録されなかった問題です。#98660 (Alexey Milovidov).
  • SHOW_COLUMNS 権限がなくても、localhost を指す remote()remoteSecure()cluster()、または clusterAllReplicas() を介して任意のテーブルに対して DESCRIBE を実行できてしまう RBAC バイパスを修正しました。#98669 (pufit).
  • フィルタープッシュダウン最適化によって共有 DAG ノードが破損し、非ブール式 (例: sin(col)) を JOIN を伴う WHERE と SELECT の両方で使用した際に BAD_GET 例外や誤ったクエリ結果が発生する問題を修正しました。#98681 (Alexey Milovidov) 。
  • 並列レプリカ使用時に read_in_order_through_join を使うと発生する LOGICAL_ERROR “Replica decided to read in Default mode, not in WithOrder” を修正しました。#98685 (Alexey Milovidov) 。
  • remote の引数として input テーブル関数を使用したときに発生する例外 “Bad cast from type DB::TableFunctionNode to DB::QueryNode” を修正しました。#98694 (Alexey Milovidov) 。
  • 空の covering parts を誤ってクリーンアップしたことが原因で発生していた、古い data parts の復活を修正しました。 #98698 (Shaohua Wang).
  • equals 比較でブール関数が Variant 型を返す場合に、LogicalExpressionOptimizerPass で例外が発生する不具合を修正しました。#98712 (Alexey Milovidov).
  • parseDateTimeBestEffort が、月名/曜日のプレフィックスで始まる単語を誤ってパースする不具合を修正しました。#97965 をクローズします。#98742 (Pavel Kruglov).
  • 新しいアナライザを有効にした状態で、異なるパラメータ (例: 異なる SKIP フィールド) を持ち、JSON のサブパスを参照する ALIAS カラムを含む JSON カラムを持つテーブルに対して、merge() テーブル関数または Merge エンジンでクエリを実行した際に発生する UNKNOWN_IDENTIFIER 例外を修正しました。#97812 をクローズします。#98753 (Pavel Kruglov).
  • View 内で Distributed ストレージが使用されている場合の、アナライザでの optimize_skip_unused_shards 最適化を修正しました。#98754 (Nikolai Kochetov) 。
  • clickhouse-client--external で渡される外部テーブルについて、名前指定によるタプルのサブカラムアクセス (例: Tuple(a UUID, b Int32) に対する SELECT x.a) を修正しました。#96925 をクローズしました。#98755 (Pavel Kruglov) 。
  • 不正な (途中で切れた) UTF-8入力に対して reverseUTF8 が例外を発生させる問題を修正しました。 #98770 (Alexey Milovidov).
  • 偽値との OR (すなわち or(x, 0)) 述語がある場合に、set スキップ索引の有用性を正しく検出できない問題を修正しました。#98776 (Azat Khuzhin) 。
  • FINAL + PREWHERE + 定数の WHERE 式 + count() のようなカラムに依存しない集約関数の組み合わせで発生しうる LOGICAL_ERROR 例外 (removeUnusedColumns での Block structure mismatch) を修正しました。#98778 (Alexey Milovidov) 。
  • ClickHouse辞書の自動再読み込みに関する system.trace_log エントリで、クエリIDが空にならないようにしました。#98784 (Miсhael Stetsyuk).
  • IDatabaseTablesIterator::table() 呼び出しでテーブルのスナップショットを取得してから、その後の反復処理中に別スレッドでテーブルが変更されるまでの間に作成されたシステムテーブルで、null ポインタを逆参照してクラッシュする問題を修正しました。#98792 (Grant Holly).
  • SYSTEM START REPLICATED VIEW でリフレッシュタスクが起動しない問題を修正しました。#98797 (Pablo Marcos) 。
  • 別の JOIN 内で JOIN を含む view() テーブル関数を使用した際に発生する例外 “Inconsistent table names” を修正 (旧アナライザ使用時のみ) 。 #98809 (Alexey Milovidov).
  • pending_signals 経由での RLIMIT_SIGPENDING の調整に関する不具合を修正しました。 #98829 (Azat Khuzhin).
  • loop をクラスターテーブル関数と組み合わせた際に発生する例外を修正しました。#98860 (Konstantin Bogdanov) 。
  • 複数の結合キーカラムを使用する LEFT ANTI JOIN で、enable_join_runtime_filters=1 (デフォルト) の場合に誤った結果が返されていました。#98871 (Alexander Gololobov).
  • データが複数のchunkに分けて読み込まれる場合 (たとえば index_granularity が小さい場合) に、WITH FILL STALENESS が余分な補完行を生成する不具合を修正しました。#98895 (Alexey Milovidov).
  • “RPNBuilderFunctionTreeNode has A arguments, attempted to get argument at index B” という LOGICAL_ERROR を修正しました。#98900 (Azat Khuzhin) 。
  • 失敗した割り当てがロールバックされないこと、nallocx(0) の未定義動作、ならびにグローバルピーク追跡におけるオフバイワンによって生じるメモリ追跡のずれを修正。追跡対象を io_uring のリングバッファにも拡張。 #98915 (Antonio Andelic).
  • ユーザーパス外にあるローカルのデータレイクテーブルについて、作成だけでなくアタッチも禁止しました。#98936 (Daniil Ivanik) 。
  • urlCluster または同様のクラスターテーブル関数を使用するクエリで、“ReadBuffer is canceled” 例外を引き起こす可能性があったレースコンディションを修正しました。 #98955 (Alexey Milovidov).
  • BFloat16 型の引数を渡した際に金融関数 (financialNetPresentValuefinancialInternalRateOfReturn など) で発生していた LOGICAL_ERROR 例外を修正しました。#98958 (Alexey Milovidov) 。
  • クエリプランの式マージが無効な場合 (query_plan_merge_expressions = 0 または query_plan_enable_optimizations = 0) に、ALIAS カラムに対してスキップ索引 (および主キー条件) が適用されない問題を修正しました。#98960 (Peng).
  • 非同期 INSERT で InsertQuery ProfileEvent が増加するようにしました。#98626 をクローズしました。#98962 (Narasimha Pakeer)。
  • 主キーに NaN の浮動小数点値が含まれる場合にデバッグビルドで発生する例外 “Inconsistent KeyCondition behavior” を、accurateLessaccurateEquals が ClickHouse のソート順に従って NaN を一貫して処理するようにすることで修正しました。#98075 をクローズします。#98964 (Alexey Milovidov).
  • SummingMergeTree では、Bool (およびその他の domain 型) のカラムは合計されなくなりました。Bool の値は算術的に合計されず、そのまま保持されます。#98976 (Yash ).
  • optimize_const_name_size が有効で、enable_scalar_subquery_optimization = 0 の状態でリモート分片にクエリを実行した際に発生していた Scalar doesn&#39;t exist 例外を修正しました。リモートクエリ内で大きな定数が __getScalar 参照に置き換えられていたにもかかわらず、それらが分片に送信されていなかったため、クエリが失敗していました。#98979 (andriibeee).
  • GROUP BY と、Dictionary の逆引きルックアップ、Date/DateTime 変換の比較、タプル比較を含む式を使用する一部のクエリで発生していた NOT_FOUND_COLUMN_IN_BLOCK を修正しました。#98888 をクローズします。#98980 (Nihal Z. Miaji).
  • MergeTreeエンジンで、version/sign/is_deletedカラムをEPHEMERALまたはALIASに変更した際に発生する未定義動作 (nullポインタの逆参照) を修正しました。こうした変更は、現在は適切に拒否されるようになりました。#98985 (Alexey Milovidov).
  • system.grantsaccess_object カラムで、URL および S3 の権限に対する正規表現パラメータが省略されていた問題を修正しました。 #98987 (DQ).
  • Iceberg BigLake の読み取りを修正しました。ADC 認証情報が GCS S3 クライアントに転送されるようになり (403 エラーを解消) 、OAuth2 認証情報は送信前に URL エンコードされるようになったため (特殊文字を含むトークンでの認証失敗を解消) 、ネームスペースの走査処理も BigLake の HTTP 400 レスポンスで中断しなくなりました。#98998 (Nikita Fomichev) 。
  • TZ 環境変数で POSIX のファイルパス構文 (例: TZ=:/etc/localtime) を使用している場合に、clickhouse-client がタイムゾーンを切り替えられない問題を修正しました。#99000 (Yash ).
  • startsWithLIKENOT LIKEFixedString カラムに対して使用した際に、プルーニングが誤って行われる、または十分に行われない問題を修正しました。さらに、キー・カラムを FixedString から String にキャストした場合に、グラニュールのプルーニングができるようになりました。#98940#99001 (Nihal Z. Miaji).
  • 重複イベントが検出された際に strict_deduplication で誤ったレベルが返されることがあった windowFunnel を修正しました。#99003 (Yash ).
  • サブクエリ内の LIMIT 句と OFFSET 句が EXISTS によって無視され、オフセットまたは LIMIT が 0 のためにサブクエリが行を返さない場合に誤った結果となっていた不具合を修正しました。#88722 をクローズします。#99005 (andriibeee).
  • GROUPING SETS 使用時に、フィルターのプッシュダウン最適化で、定数に短絡評価される AND 式に遭遇した際に発生する “Block structure mismatch” 例外を修正しました。#99010 (Alexey Milovidov) 。
  • クエリプランに_part_offsetカラムがない場合に、パッチパート (論理更新) の読み取り時に発生する例外を修正しました。 #99023 (Alexey Milovidov).
  • pk_id が主キーで String 型の場合、SELECT * FROM table WHERE pk_id = '' のようなクエリでも、グラニュールの絞り込みに主キー索引が正しく使われるようになりました。#99027 (Shankar Iyer).
  • バックグラウンドスレッドがデータをストリーミング中に materialized view がデタッチされた場合に発生する、KafkaエンジンのDEPENDENCIES_NOT_FOUND例外を修正しました。#99028 (Alexey Milovidov).
  • 仮想カラム (例: _part_offset) と同じ名前のEPHEMERALカラムを持つテーブルの作成時に発生する例外を修正しました。#99031 (Alexey Milovidov).
  • 存在しない圧縮ファイルを glob パターン付きの url() テーブル関数で読み込む際に、誤解を招く “inflate failed: buffer error” が表示される問題を修正しました。http_skip_not_found_url_for_globs が有効な場合は、想定どおり空の結果を返すようになりました。#99034 (Alexey Milovidov).
  • スキーマ変更 (例: ADD COLUMN) 後、パッチパートに対して ALTER TABLE ... DROP PART を実行するとサーバーがクラッシュ (std::terminate) する問題を修正しました。原因は、空のカバレッジパートのメタデータにシステムカラム (_part) が欠けていたことで、NOEXCEPT_SCOPE 内で例外が捕捉されずに発生していたことです。#99036 (Peng).
  • ClickHouse server process は、cached disk read 中にメモリ制限超過例外が発生した場合、クラッシュする可能性がありました。これは修正されました。#99042 (Shankar Iyer) 。
  • dictGet を使用して ROW POLICY と ALIAS カラムの両方を持つテーブルにクエリを実行した際に発生する LOGICAL_ERROR を修正しました。この問題は、新しいアナライザで ALIAS カラムを解決する際、テーブル式に早い段階でアクセスしていたことが原因でした。#99065 (Peng).
  • データ形式に Avro フォーマットを使用する Iceberg テーブルで、仮想カラムのみをクエリしようとした際に発生する範囲外エラーを修正しました。非常にまれなケースのため、クリティカルとはしていません。#88238 を修正しました。 #99080 (alesapin).
  • remote() + view() を使用する再帰CTEで発生するセグメンテーションフォルトを修正しました。#99081 (Konstantin Bogdanov) 。
  • read-in-order 最適化が適用されている場合、不要な追加の索引解析をスキップします。#99084 (Vladimir Cherkasov) 。
  • パッチパートの適用中にメモリ制限例外が発生した際に引き起こされるクラッシュを修正しました。 #99086 (Anton Popov).
  • 再初期化リカバリ中に ZooKeeper のエントリが削除された際、古くなった first_failed_task_name が残ることで発生していた DDLWorker のデバッグアサーションを修正しました。#99099 (Antonio Andelic) 。
  • 有効期限 (TTL) を伴うマージ時のテキスト索引の再構築を修正しました。#99107 (Anton Popov).
  • Iceberg テーブルエンジンの ALTER TABLE ... REMOVE SETTINGS クエリで発生するクラッシュを修正しました。#86330 を修正しました。#99108 (alesapin).
  • query_plan_convert_any_join_to_semi_or_anti_join 最適化のバグを修正し、一致しない行に対して誤った結果が返される問題を解消しました。関連: https://github.com/ClickHouse/ClickHouse/pull/95995. #99112 (Yarik Briukhovetskyi).
  • ASTColumnsExceptTransformer::transform で発生する LOGICAL_ERROR 例外を修正しました。#99119 (Pablo Marcos) 。
  • 必要なソースアクセス権限がないユーザーでも、テーブル関数 (mysql(), postgresql(), sqlite(), arrowFlight(), jdbc(), odbc(), など) に対して DESCRIBE TABLE または CREATE TABLE AS を実行することでテーブル構造を取得できてしまう RBAC のバイパスを修正しました。リモートサーバーからスキーマを推論する関数では、これにより認可なしで外向き接続 (SSRF) をトリガーできる状態にもなっていました。#99122 (pufit).
  • 動的再構成およびリーダー移譲中に発生する Keeper のクラッシュ (NuRaft でのセグメンテーションフォルト) を修正。 #99133 (JIaQi Tang).
  • 宛先が SAMPLE に対応していない場合に Buffer table を使用するとクラッシュする問題を修正しました。 #99141 (Kseniia Sumarokova).
  • パッチパートのカラム順の不一致による LOGICAL_ERROR を修正。 #99164 (Pablo Marcos).
  • Icebergテーブルに異なるフォーマット (ORC と Parquet) のファイルが混在している場合に、ごくまれに発生するクラッシュを修正しました。#88126#99168 (alesapin).
  • backup/restore で max_execution_time が適用されない問題を修正しました。 #99205 (Kseniia Sumarokova).
  • ORDER BY ALL のない INSERT SELECT クエリで、insert_deduplication_token が黙って無視される問題を修正しました。従来は、明示的にユーザーのトークンを指定していても、ソートされていない INSERT SELECT では重複排除が完全に無効になっていました。現在は、insert_deduplication_token を指定するだけで、ORDER BY ALL の有無にかかわらず重複排除が有効になります。#99206 (Desel72).
  • InverseDictionaryLookupPass の最適化中に発生していた過剰なアクセスチェックを修正しました。各訪問ノードごとではなく、パスの実行前に CREATE_TEMPORARY_TABLE 権限を一度だけチェックするようにしました。#99210 (Mikhail Artemenko).
  • clickhouse format --obfuscate が、スキップ索引の型、圧縮コーデック名、データベースエンジン名、Dictionary のレイアウト/ソース定義を難読化することで無効な SQL を生成していた問題を修正しました。 #99260 (Raúl Marín).
  • 一部のケースで Time[64] 型と DateTime[64] 型の比較がわかりにくくなっていた不具合を修正しました。現在は、このような場合、日付部分として 1970-01-01 を追加して Time[64] の値を DateTime[64] に昇格させます。 #99267 (Yarik Briukhovetskyi).
  • distributed DDLクエリに対して、DDL workerで設定の制約内に収めるようにしました。 #99317 (Pablo Marcos).
  • TOTP認証に関する軽微な問題を修正: パスワードが空の場合の --one-time-password CLIオプション、および <digits><period> の設定値の検証。 #99322 (Vladimir Cherkasov).
  • Avroの出力フォーマットで、enumの定義に含まれない値を持つEnum8/Enum16カラムのシリアライズ時に発生するロジックエラーunordered_map::at: key not foundを修正しました。#99332 (Desel72).
  • Dynamic を含む Tuple 内でスパース シリアライゼーションを使用した CHECK TABLE の不具合を修正しました。#96588 をクローズしました。#99351 (Pavel Kruglov).
  • テキスト索引のプリプロセッサに対する厳しすぎるバリデーションを修正した。#99359 (Anton Popov).
  • 25.10 からそれ以降のバージョンへ、暗黙的な minmax インデックスを持つレプリケートテーブルをアップグレードする際の互換性を修正しました。#99392 (Raúl Marín) 。
  • テキスト索引解析における否定形の関数 (notEqualsnotLikenotIn) のサポートを削除しました。これらの関数ではグラニュールをまったくスキップできなかったため、それらに対して索引解析を行っても、利点はなくオーバーヘッドが増えるだけでした。#99393 (Anton Popov) 。
  • INサブクエリ内でDistributedテーブルが使用された場合に、新しいアナライザでoptimize_skip_unused_shardsを修正しました。#99436 (Nikolai Kochetov) 。
  • クエリの結果でカラム名が重複した場合にINTERSECT/EXCEPTで発生する heap-use-after-free を修正しました。#99471 (Alexey Milovidov).
  • part名に型付きのクエリパラメータを使用した場合に発生する ALTER TABLE ... DROP PART の論理エラーを修正しました。#99489 (Alexey Milovidov) 。
  • テキスト索引の述語 (例: hasAllTokens) がエイリアス経由で SELECT 句と WHERE 句の両方から参照されている場合に発生していた NOT_FOUND_COLUMN_IN_BLOCK 例外を修正しました。#99504 (Anton Popov) 。
  • 個別のテキスト索引を持つ複数のカラムにまたがって OR 条件で hasAllTokens を使用した際に、誤った結果が返される問題を修正しました。#99505 (Anton Popov).
  • clickhouse-local でページキャッシュを初期化し、page_cache_max_size 設定が反映されるようにしました。#99510 (Alexey Milovidov) 。
  • まれに、DETACH/ATTACH TABLEクエリの後に data part が誤って破損扱いとされ、デタッチされる不具合を修正しました。#99529 (Anton Popov).
  • HTTPインターフェイス経由でPrettyフォーマットを使って空のシステムテーブルにクエリを実行した際の std::length_error 例外を修正しました。#99541 (Alexey Milovidov) 。
  • ALTER TABLE ADD COLUMN を使用して、仮想カラムと同名の EPHEMERAL カラム (例: _part_offset) を作成する際に発生していた LOGICAL_ERROR を修正しました。#99549 (Alexey Milovidov) 。
  • キャッシュキーの不一致が原因で、part の削除後も VectorSimilarityIndexCache のエントリが追い出されない問題を修正しました。 #99575 (Seva Potapov).
  • ローカルファイルから Google の認証情報を読み取ることを禁止しました。ファイルパスが判明しているとほかの認証情報まで読み取れてしまうため、この設定は安全ではありません。 #99584 (Konstantin Vedernikov).
  • アナライザで発生していた性能低下を修正しました。ARRAY JOINから未使用のカラムを除外するようにしました。#99587 (Dmitry Novik) 。
  • 既存の論理削除と行ポリシーが設定されたテーブルにおける、テキスト索引の読み取りを修正しました。 #99661 (Anton Popov).
  • filter-in-decoder パスでフィルタリング除外されたページに遭遇した際に、Parquet リーダーで発生する nullptr のデリファレンスを修正。 #99676 をクローズ。 #99677 (Alexey Milovidov).
  • O_DIRECT 使用時の AsynchronousReadBufferFromFileDescriptor における誤ったシークを修正しました。#99358 をクローズします。#99678 (Pavel Kruglov) 。
  • 不正な圧縮データの展開時に CompressionCodecT64 で発生するヒープバッファオーバーフローと、CompressionCodecMultiple で発生するプロセスの異常終了を修正しました。いずれの問題も、新しい libFuzzer ターゲットによって発見されました。これらのコーデックは、クラッシュする代わりに例外を送出するようになりました。#99680 (Rahul).
  • サーバーがすべてのテーブルの読み込みを完了するまで、処理を遅らせる。#99700 (Seva Potapov) 。
  • インライン DDL パラメータで RemoteHostFilter をバイパスしていた MySQL Dictionary ソースの問題を修正しました。#99720 (Shaohua Wang) 。
  • system.tables 内のデータレイクテーブルの反復処理時に発生する論理エラーを修正しました。#99739 (Konstantin Vedernikov) 。
  • プリプロセッサ付きのテキスト索引における、IN関数を含む述語の解析を修正しました。あわせて、テキスト索引で検索対象のトークンが衝突し、不正確な結果を招く可能性がある問題を修正しました。 #99755 (Anton Popov).
  • 負の次元を持つ Npy フォーマットのファイルを読み込む際に発生する無限ループを修正しました。#99812 (Desel72).
  • クエリプランのヘッダー計算時に、FixedString 引数に対する CRC32 関数を行数ゼロで評価すると発生する global-buffer-overflow を修正しました。#99835 (Alexey Milovidov).
  • Iceberg テーブルに対して ALTER TABLE ... MODIFY COLUMN ... COMMENT を実行した際に発生するクラッシュ (ヌルポインタ逆参照) を修正しました。#99838 (Desel72) 。
  • aggregate_functions_null_for_empty 設定を修正し、ArrayMap などの非Nullable型を返す集約関数 (例: groupArraysumMap) でも正しく動作するようにしました。#99839 (Alexey Milovidov) 。
  • 符号付き/符号なし整数型が混在する引数で呼び出した際に midpoint 関数で発生する LOGICAL_ERROR 例外を修正しました。#99867 (Alexey Milovidov).
  • フィルタ式に、NULL を生成する関数でラップされた集計と materialize(0) の両方が含まれる HAVING 句を持つクエリで発生していた「Block structure mismatch」例外を修正しました。#99915 (Alexey Milovidov).
  • データ引数が、キーが配列である Map やその他のネストされた配列型である場合に、sipHash128Keyed (および同様のキー付きハッシュ関数) で発生するアサーション失敗を修正しました。#99921 (Alexey Milovidov) 。
  • convertAnyJoinToSemiOrAntiJoin によるクエリプラン最適化中に IN 関数で発生する LOGICAL_ERROR 例外 “Not-ready Set” を修正しました。 #99939 (Alexey Milovidov).

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

  • 重いヘッダーのインクルードを削減し、高コストなテンプレートのインスタンス化をヘッダーから切り出すことで、コンパイル時間を短縮しました。 #97893 (Raúl Marín).
  • テンプレートのディスパッチマトリクスを縮小し、重いインクルードを削減することで、算術関数と関連ヘッダーのコンパイル時間を短縮しました。 #98204 (Raúl Marín).
  • mongo-c-driver 2.2.2 を採用しました。 #98304 (Konstantin Bogdanov).
  • postgres REL_18_3 を採用しました。 #98306 (Konstantin Bogdanov).
  • glibc malloc のメモリ回収効率の低さによる RSS の蓄積を避けるため、UBSan ビルドで jemalloc アロケータを有効化しました。 #98444 (Alexey Milovidov).
  • パーサーコンビネータライブラリによるシンボル名の肥大化を抑えるため、Rust v0 のシンボルマングリングを採用し、PRQL ライブラリから内部シンボルを削除しました。 #98446 (Alexey Milovidov).
  • tests/benchmarks に TPC-H ベンチマークスイートと TPC-DS README を追加しました。 #98495 (Raufs Dunamalijevs).
  • TPC-DS の 99 個すべてのクエリに対する正当性テストを追加しました。 #99204 (Raufs Dunamalijevs).
  • オフラインレプリカで発生する DDL CREATE TABLE + ALTER のバグ (#44070) を再現するインテグレーションテストを追加し、想定される失敗としてマークしました。 #99259 (Raufs Dunamalijevs).
  • jemalloc を je_ プレフィックス付きで統合し、リンカーの —wrap の使用を廃止しました。 #99342 (Azat Khuzhin).

ClickHouse リリース 26.2、2026-02-26。 プレゼンテーション, ビデオ

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

  • デフォルトで、すべての insert に対して重複排除が ON になりました。以前は、非同期 INSERT と MV では OFF でしたが、同期 insert では ON でした。これは、どちらの insert 方法でもデフォルト設定を統一するためです。クラスターで重複排除を明示的に無効化している場合、従来の動作を維持するには deduplicate_insert='backward_compatible_choice' を明示的に設定する必要があります。deduplicate_blocks_in_dependent_materialized_views についても同様です。#95970 (Sema Checherinda).
  • 統計情報の保存フォーマットが改善され、すべての統計情報が1つのファイルに保存されるようになりました。#93414 (Anton Popov)。table statistics を明示的に有効にしていない場合は、この項目は無視して構いません。
  • S3(Azure)Queue のインメモリメタデータに制限を導入。システムテーブルの名称が azure_queue から azure_queue_metadata_cache に、system.s3queue から s3queue_metadata_cache に変更されました。#95809 (Kseniia Sumarokova) 。
  • 以前は、Variant カラムに関数を適用した際、バリアントのサブタイプがその関数に適合しない場合でも暗黙的に NULL が返されていましたが、現在は例外がスローされるようになったため、この暗黙的な NULL の挙動に依存していたクエリが動作しなくなる可能性があります。 #95811 (Bharat Nallan).
  • PostgreSQL の DATE カラムは、ClickHouse で Date32 と推論されるようになりました (以前のバージョンでは Date と推論されていましたが、その結果、狭い範囲を超える値でオーバーフローが発生していました) 。Date32 の値を PostgreSQL に再度挿入できるようになりました。#73084 をクローズしました。#95999 (Alexey Milovidov).
  • do_not_merge_across_partitions_select_final 設定の意味が、より明確になりました。以前は、構成ファイルでこの設定を明示的に指定していない場合でも、この機能が自動的に有効になることがありました。そのためたびたび混乱を招き、残念ながら本番環境でいくつかの問題も引き起こしていました。現在はルールがよりシンプルになっています。do_not_merge_across_partitions_select_final=1 を指定すると、この機能は無条件で有効になります。do_not_merge_across_partitions_select_final=0 の場合、自動判定が使われるのは、新しい設定 enable_automatic_decision_for_merging_across_partitions_for_final=1 のときだけで、それ以外では使われません。従来の動作をできるだけ維持するため、デフォルト値は do_not_merge_across_partitions_select_final=0 および enable_automatic_decision_for_merging_across_partitions_for_final=1 に設定されました。#96110 (Nikita Taranov).
  • 明示的にカラムを指定して S3テーブルを作成する際、ClickHouse はそれらのカラム名が実際にリモートファイルのスキーマに存在するかを検証するようになりました。以前はカラム名が一致していなくても動作していたクエリは、今後はテーブル作成時に失敗します。これにより #96089 が修正されます。 #96194 (Konstantin Vedernikov).
  • ORDER BY およびその他のテーブルのキー式でサブクエリを使用することを禁止しました。#96847 (Alexey Milovidov) 。
  • デフォルトで apply_row_policy_after_final を有効化しました。もともと optimize_move_to_prewhere_if_final=0 の場合、ROW POLICY と PREWHERE はどちらも FINAL を考慮し、FINAL の後に適用されていました。#87303 によりこの挙動が壊れ、ROW POLICY フィルターでは optimize_move_to_prewhere_if_final が無視されるようになっていました。これを修正するため、この PR では #91065 で導入された設定 apply_row_policy_after_final を有効にしています。apply_row_policy_after_final を有効にすると、従来どおり、ROW POLICY はデフォルトで引き続き FINAL を考慮します。この PR は optimize_move_to_prewhere_if_final=1 の場合の挙動を変更するため、後方互換性のない変更です。今後、ROW POLICY を FINAL の前に適用するには、optimize_move_to_prewhere_if_final ではなく apply_row_policy_after_final を使用する必要があります。#97279 (Nikolai Kochetov).
  • Date 型は、Arrow/ArrowStream フォーマットで uint16 ではなく、Arrow ネイティブの date32 型としてシリアライズされるようになりました。これにより、PyArrow などのツールでこのカラムが日付型として正しく認識されるようになります。従来の動作は、output_format_arrow_date_as_uint16 設定で復元できます。Date カラムに uint16 を使用していた古い Arrow ファイルの読み取りも引き続きサポートされます。#96860 (Alexey Milovidov).

新機能

  • ユーザーは ClickHouse から直接 ClickStack (オブザーバビリティ UI) を使えるようになり、デバッグやローカル開発に便利になりました。#96597 (Aaron Knudtson).
  • 認証方式として、時間ベースのワンタイムパスワード (TOTP) をサポート。 #71273 (Vladimir Cherkasov).
  • lazy_load_tables データベース設定を追加しました。有効にすると、データベースの起動時にテーブルは読み込まれず、代わりに軽量な StorageTableProxy が作成され、実際のテーブルエンジンは初回アクセス時に実体化されます。#96283 (xiaohuanlin).
  • input_format_max_block_wait_ms 設定を追加し、タイムアウト時にデータブロックを出力できるようにするとともに、HTTP connection が予期せず閉じられた場合でも残りのデータを処理できるようにしました。#94509 (Mostafa Mohamed Salah).
  • Google BigLake カタログのインテグレーション。#95339 をクローズします。#97104 (Konstantin Vedernikov)。
  • 利用可能なすべてのトークナイザーを表示する system table system.tokenizers を追加しました。 #96753 (Robert Schulze) 。
  • UDF のロード状況と設定を監視できるように、新しいシステムテーブル system.user_defined_functions を追加しました。#90340 (Xu Jia).
  • jemalloc でビルドされたサーバーのメモリ使用量を診断するため、jemalloc メモリアロケータの統計情報 (malloc_stats_print 経由) を公開する system.jemalloc_stats テーブルを追加しました。あわせて、これらの統計情報をインタラクティブに可視化するための /jemalloc.html HTTP エンドポイントを ClickHouse HTTP インターフェイスに追加しました。#97077 (Antonio Andelic).
  • jemalloc のヒーププロファイルを読み取って分析するための system.jemalloc_profile_text テーブルを追加しました。出力フォーマットは jemalloc_profile_text_output_format 設定で制御されます (raw、symbolized、collapsed。デフォルトは collapsed) 。インラインフレームの解決は jemalloc_profile_text_symbolize_with_inline で制御されます (有効な場合、シンボル化は遅くなりますがインラインフレームが含まれます。無効な場合、より高速に出力するためインラインフレームはスキップされます) 。collapsed フォーマットでは、jemalloc_profile_text_collapsed_use_count によって、スタックの重み付けに live allocation count (true) を使うか、live bytes (false、デフォルト) を使うかを制御します。これにより、jemalloc ヒーププロファイルのメモリプロファイリングや flame graph による可視化が容易になります。#93248 を修正しました。#97218 (Antonio Andelic).
  • default_dictionary_database 設定を追加しました。これにより、ClickHouse は、database 修飾子を付けずに参照された external dictionaries を、指定したデフォルトの database 内で解決できるようになります。これにより、XML で定義されたグローバル Dictionary から、SQL で定義された database 単位の Dictionary への移行が容易になり、既存の dictionary クエリ (例: dictGet(‘name’, …)) も変更せずにそのまま動作させることができます。#91412 (Dmitrii Plotnikov).
  • DatabaseReplicated で補助 ZooKeeper のサポートを追加しました。#91683 (RinChanNOW).
  • 昇順の素数を提供する新しいテーブル関数 primes と、新しいシステムテーブル system.primes を実装しました。#90839 をクローズしました。#92776 (Nihal Z. Miaji).
  • 非同期 INSERT は並列クォーラムに対応しました。挿入されたデータはクォーラムまでレプリケートされます。重複が見つかった場合、クエリは先に挿入されたデータのレプリケーションも完了するまで待機します。#93356 (Sema Checherinda).
  • 色の値を sRGB から OKLAB へ、またその逆方向に変換する関数 colorOKLABToSRGBcolorSRGBToOKLAB を追加しました。#93361 (Pranav Tiwari) 。
  • 新たに、insert_deduplicate および async_insert_deduplicate をオーバーライドする deduplicate_insert 設定を追加しました。 #94413 (Sema Checherinda).
  • サーバー設定 insert_deduplication_version により、共通の重複排除ハッシュへの移行が可能になりました。 #95409 (Sema Checherinda).
  • xxh3_128 ハッシュ関数が追加されました。#96055 (Raúl Marín) 。
  • 結果パーツをコミットせずにマージをシミュレートできるOPTIMIZE <table> DRY RUN PARTS <part names>クエリを追加しました。これはテスト用途、つまり新しいバージョンでマージの正しさを検証したり、マージ関連の不具合を決定論的に再現したり、マージ性能を確実にベンチマークしたりするのに役立ちます。#96122 (Anton Popov).
  • テーブルで使用されている named collections が削除されるのを防ぐため、設定 check_named_collection_dependencies によってデフォルトで有効になる新しいチェックを追加しました。#96181 (Pablo Marcos).
  • サーバー内の既存のフェイルポイントと、それらが有効かどうかを確認するための system.fail_points が追加されました。これにより、テストの自動化がしやすくなります。#96762 (Pedro Ferreira).
  • Glue カタログへのロールベースアクセスを追加。設定 aws_role_arn と、必要に応じて aws_role_session_name を使用します。#90825 (Antonio Andelic).
  • 有効にすると、すべての DateDate32TimeTime64DateTimeDateTime64 カラムに対して minmax 索引を自動的に作成する設定 add_minmax_index_for_temporal_columns が追加されました。#93355 (Michael Jarrett) 。
  • JOINでの拡張テーブル別名をサポートしました (SELECT * FROM (SELECT 1) AS t(a) JOIN (SELECT 1) AS u(b) ON a = b のようなクエリ) 。#95131 をクローズしました。#95331 (Yarik Briukhovetskyi) 。
  • Icebergテーブルで ALTER TABLE RENAME COLUMN がサポートされました。これまでは ADD COLUMN, DROP COLUMN, and MODIFY COLUMN のみがサポートされていました。#97455 (murphy-4o).

実験的機能

  • テキスト索引が GA になりました。 #96794 (Robert Schulze).
  • 量子化されたビットパック形式のベクトル格納 (近似最近傍探索で使用) 向けの QBit データ型が一般提供となり、実験的な設定を有効にする必要がなくなりました。 #95358 (Raufs Dunamalijevs).
  • ClickHouse のベクトル検索で、クラスター内のレプリカを使ってベクトル索引パーツの検索負荷を_分散_できるようになりました。これにより、ClickHouse は単一の VM のメモリ容量を超える大規模なベクトル索引をサポートできます。 #95876 (Shankar Iyer).
  • ast_fuzzer_runs および ast_fuzzer_any_query 設定で制御されるサーバー側 AST fuzzer を追加しました。有効にすると、サーバーは各クエリの通常実行後に、そのランダム化した改変版を実行し、結果は破棄します。 #97568 (Alexey Milovidov).
  • 実験的な KQL ダイアレクトに iif 関数を追加しました。 #94790 (happyso).
  • スキーマ推論で allow_experimental_nullable_tuple_type が考慮されるようになりました。有効にすると、推論された Tuple 型で Nullable(Tuple(...)) を使えるようになるため、欠落したネストされたオブジェクトを NULL 要素の Tuple ではなく NULL として扱えます。 #95525 (Nihal Z. Miaji).
  • use_statistics_cache 設定がデフォルトで有効になり、カラム STATISTICS がメモリに cache されるようになりました。これにより、各パーツから毎回再読み込みしなくてもクエリ最適化を高速化できます。 #95950 (Han Fei).

パフォーマンス改善

  • 主キー内の任意の決定論的な式をデータスキップに使用できるようになりました (例: ORDER BY cityHash64(user_id)/ ORDER BY length(user_id)) 。決定論的な式については、ClickHouse はその式をクエリ定数に適用し、その結果を主キー索引で =, IN, has などの述語に利用できます。さらに、その式が単射でもある場合 (例: ORDER BY hex(p) または ORDER BY reverse(tuple(reverse(p), hex(p)))) 、否定形である !=, NOT IN, NOT has でも索引を効果的に利用できます。#10685 を解決。#82161 を解決。#92952 (Nihal Z. Miaji).
  • 統計情報の保存フォーマットが改善され、すべての統計情報が単一のファイルに保存されるようになりました。#93414 (Anton Popov).
  • ファイルシステムキャッシュで、リモートテーブルエンジン/関数の並列読み込みに対応しました。#71781 (Kseniia Sumarokova).
  • ローカルファイルおよびオブジェクトストレージのテーブル関数で、ユーザー空間ページキャッシュを使用できるようになりました。#77874 (Michael Kolupaev).
  • ユーザー空間のページキャッシュで不要な memcpy を回避。#77884 (Michael Kolupaev).
  • concurrent_threads_scheduler のデフォルトが、fair_round_robin から max_min_fair に変更されました。これにより、高負荷時には割り当てスロット数の少ないクエリが優先されるようになり、公平性が向上します。その結果、短時間で終わるクエリが長時間実行されるクエリのせいで不利になることがなくなります。#95300 (Sergei Trifonov).
  • FINAL クエリで、フィルタリングに主キーの条件を使用し、ほかの条件にはスキップ索引を使用した場合、PrimaryKeyExpand の処理ステップでは、最初に絞り込まれた主キー範囲についてのみ交差を確認するようになりました。#94903 (Shankar Iyer).
  • s3(...) のようなテーブル関数で並列レプリカを使用する場合、テーブル関数を単一のサブクエリでラップしたクエリも、以前はテーブル関数への直接参照のみが並列化の対象だったのに対し、現在ではレプリカ間で自動的に並列化されるようになりました。#92264 をクローズしました。#96332 (phulv94)。
  • cache内のデータファイルとシステムファイルを、それぞれ別のセグメントに分割できるようにしました。 #87834 (MikhailBurdukov).
  • ColumnVector::replicate の動的ディスパッチを実装し、一部のハッシュ結合処理を高速化しました。#79573 (Raúl Marín) 。
  • 複雑な述語条件がある場合の並列ハッシュ結合の性能を改善しました。従来は結合されなかった行を1つのスレッドで処理していましたが、これは最適ではなかったため、この最適化ではそれらの行の処理を複数のスレッドに並列化します。parallel_non_joined_rows_processing 設定で切り替えできます。デフォルトで有効です。#92068 (Yarik Briukhovetskyi).
  • JSON型のパースを若干最適化しました。#93614 (Pavel Kruglov).
  • AST のメモリ使用量を削減。ハイライト表示が使われず、VALUES のパースも行われない場合はフィールドが使用されないため、この最適化は有効です。#93974 (Ilya Yatsishin).
  • named Tuple ASTオブジェクトのメモリ消費を最適化しました。カラム名を汎用的なASTリテラルノードに保持するのではなく、tupleオブジェクト内に文字列として格納するようにしました。#94704 (Ilya Yatsishin).
  • 追加のリンカオプションにより、デバーチャライゼーションが向上しました。 #94737 (Nikita Taranov).
  • ZooKeeper リクエストをバッチ化することで、多数のパーツを持つ ReplicatedMergeTree テーブルのレプリカのクローン作成時の性能を改善。 #94847 (c-end).
  • read step にすでに PREWHERE フィルタがある場合、新しいフィルタは追加できませんでした。この変更により、PREWHERE の最適化は JOIN ランタイムフィルタ最適化の後まで延期され、ランタイムフィルタも PREWHERE にプッシュできるようになりました。 #95838 (Alexander Gololobov).
  • x86で動的ディスパッチを用いることで、T64 codecの圧縮を高速化。#95881 (Raúl Marín).
  • 可能な場合 (NULL不可、-If ではない、GROUP BY なし、IPv6 または String ではない) に、insert のバッチ化によって数値型に対する uniq を高速化しました。#95904 (Raúl Marín) 。
  • Keeper 向けの低レベル最適化: ZooKeeper::observeOperations が、ZooKeeper の受信スレッドにおける CPU 使用量の 20% 超を占めていることが判明しました。この変更では、次の点に対応しています。1. AggregatedZooKeeperLog::stats では、SipHash の代わりに 10 倍以上高速な CityHash64 を使用します。2. Coordination::ErrorCounter では、std::unordered_mapstd::mutex の代わりに std::array<std::atomic<UInt32>, N> を使用します。#95962 (Miсhael Stetsyuk) 。
  • メモリを節約するため、ProfileEvents::Counter の 64 バイト境界へのアラインメントを廃止しました。#96097 (Azat Khuzhin) 。
  • メモリ最適化: CachedOnDiskReadBufferFromFile 構造体のサイズを50分の1に削減しました。#96098 (Azat Khuzhin).
  • 空のハッシュテーブルをリサイズする際に、古いデータをコピーしないようにしました。#96180 (Raúl Marín) 。
  • RIGHT OUTER JOIN での JOIN ランタイムフィルタをサポート。 #96183 (Hechem Selmi).
  • 最適化設定 enable_join_runtime_filters がデフォルトで有効になりました。#89314 (Alexey Milovidov) 。
  • 従来、テキスト索引の direct read 最適化は、すべてのパーツにマテリアライズ済みのテキスト索引がある場合にのみ適用されていました。この PR では部分的なサポートが追加され、一部のパーツにマテリアライズ済みのテキスト索引がある場合はそれらのパーツでそれが使用され、マテリアライズ済みのテキスト索引がないパーツでは元のフィルタ式を実行する形にフォールバックします。#96411 (Anton Popov).
  • フィルタリングを高速化するため、systemログテーブルの時間カラムに minmax セカンダリ索引を、query_id/initial_query_id カラムに bloom_filter 索引を追加しました。 #96712 (Alexey Milovidov).
  • 遅延マテリアライゼーションの最適化が、UNION ALL クエリの最初の分岐だけでなく、すべての分岐に適用されるようになりました。これにより、異なる MergeTree テーブルからの複数のソート済み・件数制限付きの読み取りを UNION ALL で組み合わせるクエリでは、すべての分岐で必要になるまでカラムの読み取りが遅延され、I/O が削減されます。#96832 (Federico Ginosa).
  • 不要なデータコピーをなくし、数値カラムでベクトル化された最小値/最大値計算を有効にすることで、INSERT 時の minmax スキップ索引の計算を最適化しました。 #97392 (Raúl Marín).
  • ストレージ DeltaLake は、Delta Lake のメタデータから count() の結果を取得するようになり、system.tables に正しいテーブル統計情報 (合計バイト数/行数) が表示されるようになりました。 #96190 (Kseniia Sumarokova).
  • 未使用のカラムは、MergeTree から読み取る場合、読み取りステップからも除外されます。特に、フィルタが PREWHERE にプッシュダウンされる場合に有効です。#89982 (János Benjamin Antal).
  • テーブル名のみを取得することでSHOW TABLESクエリの処理を改善し、getLightweightTablesIteratorがテーブル名のみを含む構造を返すようにしました。#93835 を解決しました。#94467 (Smita Kulkarni).
  • キーカラムがこれらの関数でラップされている場合でも、範囲述語に対して主キーおよびスキップ索引のプルーニングを有効にできるよう、assumeNotNullcoalesceifNull を改善しました。#94689 をクローズしました。#94754 (Nihal Z. Miaji).
  • getChildren Keeper リクエストに with_data と with_stat を追加しました。これにより、子の一覧だけでなく、その statdata も 1 回の操作でまとめて取得できるようになります。#94826 (Nikolay Degterinsky) 。
  • 最終的にローカルプランを実行する場合でも、並列レプリカを使用するプランを実行する場合でも、索引解析は (ほとんどの場合) 一度しか行われません。 #94854 (Nikita Taranov).
  • パーツ数 (distributed_index_analysis_min_parts_to_activate) と索引のサイズ (distributed_index_analysis_min_indexes_size_to_activate) に応じて、分散索引解析を有効化できるようにしました。#95216 (Azat Khuzhin) 。
  • IcebergテーブルでのPREWHERE最適化を有効化。 #95476 (Konstantin Vedernikov).
  • 一部のASTクラスのメモリ消費量を削減しました。#95514 (Raúl Marín) 。
  • split_intersecting_parts_ranges_into_layers を有効にした際に生成されるパイプラインストリームの数を制限します。これにより、メモリの過剰な消費を防ぐことができます。#96478 (Nikita Taranov).
  • 複数の JOIN に対する等価集合最適化を実装しました。複数の INNER JOIN を連続して含むクエリで、filter pushdown 最適化が強化されました。テーブルが等価なカラム同士で結合されている場合 (例: t1 JOIN t2 ON t1.id = t2.id JOIN t3 ON t2.id = t3.id WHERE t1.id > 10) 、この chain 内のいずれかのテーブルに適用されたフィルタは、自動的にすべてのテーブルにプッシュダウンされます。#96550 をクローズしました。#96596 (Vladimir Cherkasov) 。
  • Delta Lake のメタデータスキャンを最適化しました。delta-kernel の PR https://github.com/delta-io/delta-kernel-rs/pull/1827 の変更を利用しています。 #96686 (Kseniia Sumarokova).
  • Replicated database では、ダミークエリのたびにキャッシュされたクラスターを更新しないようにしました。#96897 (Tuan Pham Anh) 。
  • プレフィックスが ASCII 文字のみで構成されている場合、startsWithUTF8 によるフィルタリングで主キー索引を使用します。#97055 (vkcku).

改善

  • Keeper へのリクエストに対する OpenTelemetry トレーシングを追加しました。 #91332 (Miсhael Stetsyuk).
  • 新しい設定オプション: logger.startup_console_levellogger.shutdown_console_level が追加され、それぞれ ClickHouse の起動時および停止時のコンソールログレベルを上書きできるようになりました。#95919 (Garrett Thomas).
  • 設定の再読み込み時に、コマンドラインで指定したオーバーライドを尊重するようにしました。#80294 をクローズ。#80295 (Alexey Milovidov) 。
  • mongodb テーブル関数で、名前付きコレクションのパラメーターに対するキー・バリューによる上書きを許可しました。#89616 (vanchaklar).
  • Iceberg テーブル向けの read-in-order 最適化で、単純なカラム参照だけでなく、icebergBucketicebergTruncate のような複雑なソート関数も利用できるようになりました。#90256 (Konstantin Vedernikov) 。
  • 診断機能を向上させるため、system.mutations に parts_postpone_reasons という新しいカラムを追加しました。これにより、パーツが延期された理由を確認できます。#92206 (Shaohua Wang).
  • DataflowStatisticsCache で、読み取る行数の変化 (insert/delete や query condition cache の使用によるもの) を追跡できるようになりました。 #93636 (Nikita Taranov).
  • SYSTEM RESET DDL WORKER [ON CLUSTER] クエリに対応しました。このクエリは、メインスレッド内の DDLWorker の状態をリセットします。ホスト ID が更新された際に、レプリカの active 状態を更新するのに役立ちます。#93780 (Tuan Pham Anh) 。
  • イベントタイプ MUTATE_PART および MUTATE_PART_START について、system.part_logmutation_ids をサポートしました。#93811 (Shaohua Wang).
  • バックグラウンド操作 (Mutate、Merge) を ‘background’ プロファイルで個別に設定できるようになりました。従来、これらの操作は ‘default’ プロファイルを介して通常のクエリと同じ設定を共有していました。#93905 (Arsen Muk).
  • system.crash_log に、さらに多くの情報を追加しました。#94112 #95857 (Miсhael Stetsyuk) 。
  • 実行中の非内部クエリ数を追跡するため、新しいQueryNonInternalメトリクスを追加しました。このメトリクスはClickHouseMetrics_QueryNonInternalとして公開され、非内部クエリにのみ適用されるmax_concurrent_queries制限に対して、運用担当者がクエリの同時実行数を監視するのに役立ちます。#94284 (Ashwath Singh).
  • RuntimeDataflowStatisticsCacheUpdater で、compact パーツ内のカラムに対する入力バイトの統計情報収集をサポートしました。#94626 (Nikita Taranov).
  • Keeper の設定不備によってクラスターの構築に失敗するケースを検出するチェックを追加しました。#60932 をクローズします。#94682 (Konstantin Bogdanov)。
  • partの読み込み時におけるJSONプレフィックスのデシリアライゼーションを改善しました。#94848 (Pavel Kruglov) 。
  • 書き込み処理を完全なINSERTパイプラインを使用するようにリファクタリングし、ターゲットテーブル上のmaterialized viewがトリガーされるようにしました。 #94890 (Kai Zhu) 。
  • 検索対象のカラムに索引がある場合にのみ、ベクトル類似度検索のプラン最適化を適用するようにしました。 #94998 (Eduard Karacharov).
  • ユーザー認証の前に合計メモリ制限を確認し、合計制限が許容値を超えている場合は (total) memory limit exceeded をスローします。#95003 (Nikolai Kochetov).
  • throw_on_unmatched_row_policies 設定オプションが追加されました。このオプションを有効にすると、ユーザーが行ポリシーの設定されたテーブルにクエリを実行した際、そのユーザーに適用される行ポリシーが1つもない場合に例外がスローされます。これにより、アクセス制御の設定ミスによって全行が返されるという曖昧な挙動を防げます。#95014 (Vitaly Baranov).
  • Unity Catalog を使用する長時間実行されるクエリで、S3 アクセストークンを動的に更新できるようになりました。これにより #93981 がクローズされました。#95069 (Konstantin Vedernikov).
  • ClickHouse が memory_worker_decay_adjustment_period_ms ミリ秒の間、継続的にメモリ逼迫状態にある場合、jemalloc のダーティページ減衰を無効にします。ClickHouse が同じ時間だけ通常状態で動作している場合は、jemalloc のダーティページ減衰を再度有効にします。#95145 (Antonio Andelic).
  • S3Queue で、s3Queue の keeper_path 設定を使用する補助的な Zookeeper サポートを追加。#95203 (Diego Nieto) 。
  • TTL の drop パーツマージで max_parts_to_merge_at_once を適用するようにしました。 #95315 (Kseniia Sumarokova)。
  • 物理的な接続を反映するため、query_log に connection_addressconnection_port を追加しました (proxy 経由で接続され、auth_use_forwarded_address=1 の場合、addressport は置き換えられます) 。#95471 (Yakov Olkhovskiy) 。
  • クエリ条件cacheにおける誤ったメモリ使用量の計上を修正しました。主な問題は、複数の文字列 (part_name、テーブルID、SQL条件全体など) で構成されるcacheキーが考慮されていなかったことです。 #95478 (Nikita Mikhaylov).
  • 埋め込み configuration で起動したサーバーでは、通常の設定と同様に、Users と grants を操作し、それらを access directory に保存できるようになりました。これにより、テストがしやすくなります。さらに、埋め込み configuration と clickhouse-local で access_control_improvements がすべて有効になりました。 #95481 (Alexey Milovidov).
  • S3 認証のエラーメッセージを改善し、アクセス拒否時に credentials を確認するよう促すヒントを含めました。#95648 (Gerald Latkovic).
  • 統計キャッシュを有効にし、キャッシュの更新間隔を300秒に設定しました。#95841 (Han Fei) 。
  • system.aggregated_zookeeper_log にコンポーネント名を追加しました。#95882 (Antonio Andelic) 。
  • system.tables から DeltaLake テーブルをクエリする際、オブジェクトストレージの読み取りをスキップするようにしました。 #95899 (Antonio Andelic).
  • compatibility 設定が 26.2 以上の場合、デフォルトで enable_max_bytes_limit_for_min_age_to_force_merge を有効化しました。#95917 (Christoph Wurm).
  • Delta Lake が macOS で利用可能になりました。#95979 を解決しました。#95985 (Alexey Milovidov) 。
  • 以前のバージョンでは、UPDATE および RENAME COLUMN を含む競合する ALTER 式を組み合わせると、適切な例外ではなく論理エラーがスローされていました。#70678 を修正しました。#96022 (Alexey Milovidov).
  • すべての ClickHouse アプリケーションのヘルプ出力を改善し、いくつかの修正を加えるとともに --no-sudo オプションを追加しました。これは、Ilya Yatsishin による #58244 の続きです。#96025 (Alexey Milovidov) 。
  • 他のすべての距離関数にはすでにこの形式のエイリアスがあるため、cosineDistance のエイリアスとして distanceCosine を追加しました。#96065 (Raufs Dunamalijevs) 。
  • with_data Keeper 拡張機能のサポートを追加し、Database Replicated におけるテーブルのフェッチを改善しました。#96090 (Nikolay Degterinsky) 。
  • chdig を v26.2.1 に更新 (新機能の追加および MacOS 対応) 。#96113 (Azat Khuzhin) 。
  • numbersprimes の filter pushdown を改善しました。ClickHouse は、正確な境界を導き出せない場合でも WHERE 条件から保守的な値の範囲を導き出し、それに応じてシーケンス生成を制限できるようになりました (たとえば WHERE number % 5 < 2 AND number > 100 AND number < 300 の場合、ClickHouse は 100 から 300 までの数値だけを生成してから predicate を適用します) 。これにより、範囲が限定されないスキャンを回避できます。#84853 をクローズ。#93913 をクローズ。#96115 (Nihal Z. Miaji) 。
  • 以前は、パース時の曖昧さを避けるため、COMMENT 句がある場合、フォーマッタは SELECT を括弧で囲んでいました。代わりに、COMMENTAS SELECT の前に出力することで、括弧を使わずに曖昧さを解消するようになりました。 #96293 (Alexey Milovidov).
  • allow_impersonate_user 設定は、単独のサーバー設定ではなく、access_control_improvements セクション内に配置されるようになりました。#96451 (Vitaly Baranov) 。
  • core_dump.size_limit 設定をホットリロード可能にし、設定変更を反映するためにサーバーを再起動しなくても済むようにしました。#96524 (Miсhael Stetsyuk) 。
  • ソケットタイムアウト時の CPU およびリアルタイムプロファイラの相互運用性を改善しました。#96601 (Sergei Trifonov).
  • DROP COLUMN mutation の直後に ADD COLUMN を短時間で実行した場合に、削除済みデータが復活するのを防ぎます。 #96713 (Alexey Milovidov).
  • system.instrumentationfunction_id の型を LowCardinality(Int32) から Int32 に変更。#96726 (Copilot)。
  • ミューテーションの同期的な待機で、クエリのキャンセルや時間制限が反映されるようになりました。#96756 (Alexey Milovidov).
  • delta-kernel のログを変更できるようにするシステムコマンド SYSTEM RELOAD DELTA KERNEL TRACING <level> を追加しました。これはデバッグ時に役立つ場合があります。#96763 (Kseniia Sumarokova).
  • IP アドレスファミリーに基づくフィルタリング、つまり dns_allow_resolve_names_to_ipv4/ipv6 設定は、DNS cache が無効になっている場合でも適用されます。 #96810 (c-end).
  • jemalloc のイントロスペクションを改善。 #96840 (Azat Khuzhin).
  • システムテーブルにクエリを実行した際に、/play Web UI で QUERY_CACHE_USED_WITH_SYSTEM_TABLE がスローされる問題を修正しました。#96869 (Alexey Milovidov).
  • Web UI を改善: 実行中のクエリであることがわかるように favicon を変更し、補助クエリ (database と table の読み込み) で発生した error を黙って無視せず表示するようにしました。Closes #85055. #96883 (Alexey Milovidov).
  • /play UI の左パネルをクリックして、データベース一覧の表示/非表示を切り替えられるようにしました。#96884 (Alexey Milovidov) 。
  • DROP DATABASE は、データベースにロード時の依存関係を持つテーブル (例: joinGet を使用する Distributed テーブル) が含まれている場合に、依存関係の逆順でテーブルを削除するようになり、クラッシュ安全性が向上しました。#97057 (Alexey Milovidov).
  • 無効な YAML がスキップされないよう、yaml-cpp を更新しました。#97333 (Azat Khuzhin) 。
  • play.html のサイドバーでテーブルの取得中に読み込みインジケーターを表示するようにしました。#97531 (Alexey Milovidov) 。
  • 組み込みの Web UI (play.html) に、生のクエリ結果をクリップボードにコピーするボタンを追加しました。 #97532 (Alexey Milovidov).
  • クエリ難読化ツール (clickhouse-format --obfuscate) を修正し、より多くのケースで解析可能な SQL を生成できるようにしました。#97584 (Alexey Milovidov) 。

バグ修正 (正式な安定版リリースでユーザーに影響する不具合)

  • Enum の要素を拡張するなどのメタデータのみの ALTER の後、プロジェクションを用いた集約の最適化で例外が発生する場合があります。#84143 (Alexey Milovidov) 。
  • materialized view は、作成されたデータベースを実行コンテキストとして使用するようになりました。これは次のことを意味します。 - view の SELECT クエリで参照される名前については、明示的なデータベース修飾を省略できます - 明示的なデータベース修飾が指定されていない場合は、materialized view が作成されたのと同じデータベースが使用されます。 #88193 (Dmitry Kovalev).
  • ON CLUSTER 使用時の CREATE USER の認証方法におけるクエリパラメータの置換を修正しました。認証方法内のクエリパラメータ (例: password) が置換されず、リモートノードで UNKNOWN_QUERY_PARAMETER エラーが発生していました。#92777 (xiaohuanlin).
  • hasmapContainsKeymapContainsValue 関数におけるテキスト索引解析の不整合を修正しました。これまでは、これらの関数を使用するクエリで、式がテキスト索引を使って評価されるかどうかによって、結果が異なることがありました。 #93578 (Anton Popov).
  • スタックのアンワインド中に dropReplicationSlot が例外を送出した場合、MaterializedPostgreSQL データベースにテーブルをアタッチするとクラッシュする問題を修正しました。#96871 (Alexey Milovidov).
  • 同じファイルを巡って競合するバックアップを多数同時実行すると、サーバーがクラッシュする可能性がありました。#93659 (Alexey Milovidov).
  • 並列レプリカを使用するクエリおよび non-MT テーブルとの JOIN に関する問題を修正しました。#92056 をクローズします。#93902 (Igor Nikonov).
  • 名前にドットを含む Iceberg のカラムで、値が NULL として返される問題を修正しました。#94335 (Mikhail Koviazin) 。
  • stringJaccardIndexUTF8 における UTF8 文字列の処理を修正し、パフォーマンスを改善しました。#94613 (Joanna Hulboj) 。
  • WITH FILL STALENESS で発生しうるオーバーフロー (UB や無限ループの原因となるもの) を修正しました。大きな値の飛びによって発生しうる無限ループを修正しました。旧アナライザのサポートを追加しました (主にストレステスト向け) 。#94663 (Azat Khuzhin).
  • ホスト名が複数のアドレスに解決され、リモートのレプリカがフリーズした際に、分散クエリがハングする可能性がある問題を修正しました。 #94726 (c-end).
  • 複数のテーブル式を結合する際に、左端のテーブル式が-Clusterテーブル関数である場合に不正な結果が返される問題を修正しました。#89996 を解決しました。#94748 (Konstantin Bogdanov) 。
  • toWeektoYearWeektoStartOfWeektoLastDayOfWeektoDayOfWeek を含む述語における主キーおよびスキップ索引のプルーニングの不具合を修正し、LowCardinality(String) を使用した有効なクエリでこれらの関数の一部が例外を発生させる問題も修正しました。#94816 (Nihal Z. Miaji).
  • SQL Security を持つビューに対する ATTACH クエリで、不要に権限チェックをスキップしていた処理を削除しました。これにより、必要なアクセス権を検証せずに definer 付きのビューをアタッチした場合に起こり得る権限昇格を防止します。#94865 (pufit).
  • ReplicatedMergeTree の起動時に、delete_tmp_* ディレクトリが並行して削除されることで発生していたクラッシュを修正しました。#94892 (myeongjun).
  • materialized view を持つ Iceberg table への INSERT で deduplication 情報が失われて例外が発生していた問題を修正しました。#94938 (Daniil Ivanik) 。
  • SYSTEM DROP QUERY CACHE TAG 'TAGNAME' ON CLUSTER <CLUSTERNAME> を実行すると、クラスター上のcache全体が削除されてしまう不具合を修正しました。#94978 (Rory Crispin).
  • Vertical merges 後も一定の索引粒度 (use_const_adaptive_granularity) を維持するようにしました (Nested の修正を含む v2 および一般的なケース) 。 #95013 (Azat Khuzhin).
  • [ClickHouse/ClickHouse#82764](https://github.com/ClickHouse/ClickHouse/pull/82764) の後、バージョン26.1におけるファイルシステムキャッシュの競合状態を修正しました。#95042 (Kseniia Sumarokova).
  • clickhouse-client での KILL QUERY およびクエリのキャンセル (Ctrl+C) による postgresql() テーブル関数のキャンセル処理を修正しました。 #95136 (Roman Vasin).
  • 複数の JOIN で USING 句を使用した場合の、ソーステーブル由来の修飾付きカラムに対する型推論を修正しました。以前は、そのカラムが後続の JOIN に関与していない場合でも、基になるソースカラムの型が誤って共通スーパータイプに更新されていました (たとえば SELECT t2.a FROM t1 LEFT JOIN t2 USING (a) LEFT JOIN t3 USING (a) では、t2.a カラムが使われるのは最初の JOIN のみなので、その型は t1.at2.a のスーパータイプであるべきであり、t3.a は含まれません) 。この問題により、関数が実際の実行プランに現れるカラム型とは異なる型を想定した場合、論理エラーやクラッシュが発生する可能性がありました。#95157 (Vladimir Cherkasov).
  • manifest の .avro リストおよびファイルの内容を取得する際、カラム変換が 1 回だけ行われるようにしました。#95164 (Daniil Ivanik).
  • 過剰なメモリ使用量や誤ったカラム STATISTICS を招く可能性があった、JSONカラムサイズの誤計算を修正しました。 #95207 (Azat Khuzhin).
  • 論理更新後に大きなパッチパートを適用する際、メモリ使用量の計上が不正確になる問題を修正しました。従来は、大きなパッチパートを適用するとメモリ使用量が過大になり、OOMキラーによってサーバープロセスが強制終了されることがありました。 #95231 (Anton Popov).
  • max_parallel_replicas を使用する分散クエリが、索引解析中にローカルレプリカへフォールバックした際に、誤った結果を返したり例外が発生したりする可能性のある未定義動作を修正しました。#95263 (Azat Khuzhin).
  • group_by_overflow_modeany に設定されている場合の、sum および時系列におけるスパースなカラムの集約を修正しました。 #95301 (Mikhail Koviazin).
  • plain_rewritable ディスクポリシーで、メタデータファイルの unlink の途中にネットワークエラーが発生するとストレージが不整合な状態に陥る可能性があった、信頼性の問題を修正しました。#95302 (Mikhail Artemenko).
  • Iceberg では Date を Date32 に置き換えました。 #95322 (Konstantin Vedernikov).
  • redis テーブル関数の password 引数は、今後、logs およびシステムテーブル (例: query_log) でマスクされるようになりました。#95325 (János Benjamin Antal) 。
  • テーブルに対する分散クエリの実行中に、そのテーブルが削除または変更され、例外や誤った結果を引き起こす可能性があった不具合を修正しました。 #95356 (Azat Khuzhin) 。
  • 分散クエリで負の LIMIT/OFFSET を使用した一部のケースで発生していた論理エラーを修正しました。#95357 (Nihal Z. Miaji) 。
  • ssh を使用して接続する際に、clickhouse-client がパスワードを 2 回求める不具合を修正しました。#95372 (Isak Ellmer) 。
  • ストレージ S3(Azure)Queue におけるデータ競合を修正。#95385 (Kseniia Sumarokova).
  • prewhere 内のラムダ式が原因で発生していた prewhere フィルタのエラーを修正しました。#95395 (Xiaozhe Yu) 。
  • optimize_syntax_fuse_functions を修正し、集約引数が Nullable の場合は sum/count/avgsumCount() に書き換えないようにしました。#95390 を修正。#95441 (Nihal Z. Miaji).
  • キャンセル時に分散クエリでクラッシュする可能性を回避しました。#95466 (Aleksandr Musorin) 。
  • S3(Azure)Queue engine からのストリーミングにおける重複排除の問題を修正しました。#95467 (Kseniia Sumarokova).
  • 分散クエリにおいて、初期ユーザーに割り当てられた行ポリシーの更新に関する不具合を修正しました。#95469 (Vitaly Baranov) 。
  • plain_rewritable 上の暗号化ディスクに対する判定を修正 (It is not possible to register multiple plain-rewritable disks with the same object storage prefix が発生する可能性がある問題を修正) 。 #95470 (Azat Khuzhin).
  • mergeTreeProjection テーブル関数ではアクセスチェックが抜けていたため、テーブルに対する SELECT 権限を持たないユーザーでも (テーブル関数に対する権限があれば) 、そのプロジェクションからデータを読み取れていました。この修正では、mergeTreeIndexmergeTreeAnalyzeIndexes にすでに実装されているものと同じアクセスチェックが追加されます。#95480 (Alexey Milovidov) 。
  • Dynamic/JSON 型の動的サブカラムから size サブカラムを読み取る際に発生する可能性のある論理エラーを修正しました。 #95573 (Pavel Kruglov) 。
  • #94262で導入された (実験的な) ゼロコピー・レプリケーションの回帰不具合を修正しました。この不具合では、他のレプリカが共有パーツの取得を完了する前に、そのパーツが削除される可能性がありました。#95597 (filimonov) 。
  • JSON 配列に tupleElement を適用した際に発生するクラッシュを修正しました。#95581 をクローズ。#95647 (Pavel Kruglov).
  • USING を伴う JOIN の VALUES 句内で、ラムダ関数の中でマッチャー (*) を使用した際に発生する論理エラー例外を修正しました。#93675 をクローズしました。#95661 (Vladimir Cherkasov) 。
  • 分散 DDL の完了待機中に Replicated database を同時に削除した場合に発生していた、There was an error: Cannot obtain error message という論理エラーを修正しました。#95539#95664 (Alexander Tokmakov).
  • transform_null_in が有効な場合に、IN 関数が NULL 値に対して誤った結果を返す不具合を修正しました。#65776 をクローズしました。#95674 (Nihal Z. Miaji).
  • 設定 cast_keep_nullable が有効な場合、CAST で LowCardinality Nullable 型が正しく処理されるようにしました。#95670 を修正しました。#95747 (Alexey Milovidov).
  • パーティション化された Delta Lake データのまとめ処理を修正。 #95773 (Kseniia Sumarokova).
  • ランタイムフィルタにおけるNullableなJOINカラムのレースコンディションを修正しました。 #95775 (Hechem Selmi).
  • USING カラムの型がテーブルと SELECT リストで異なる場合に、matcher (*table.*) および analyzer_compatibility_join_using_top_level_identifier を含むクエリで発生する可能性のある論理エラーを修正しました。#90477 をクローズしました。#95808 (Vladimir Cherkasov).
  • タスクのスケジューリング中にエラーが発生した際に例外を引き起こす可能性があった、並列スレッドプール処理 (バックアップ、集約、分散クエリ) におけるメモリ安全性の不具合を修正しました。 #95818 (Raúl Marín).
  • 削除対象のワークロードを使用するクエリと同時実行中に DROP WORKLOAD を実行した際に発生するクラッシュを修正しました。#95856 (Alexey Milovidov) 。
  • 多数のデータベースに対して限られた権限しか持たないユーザーがシステムテーブルにクエリを実行した際の性能低下を修正しました。#89371 をクローズしました。#95874 (pufit).
  • ネストしたパスを持つ JSON に対する tupleElement の実行を修正しました。これまでは誤ったクエリ結果につながる可能性がありました。 #95907 (Pavel Kruglov).
  • 空のMergeTreeテーブルに対してdirect JOINアルゴリズムを使用した際に発生する可能性のあったNOT_SUPPORTEDエラーを修正しました。 #95935 (Vladimir Cherkasov).
  • クライアントが設定の別名を候補表示したり自動補完したりしない問題を修正し、#92190 をクローズしました。#95945 (phulv94).
  • system.asynchronous_metric_log の event_date を修正。#95947 (Raúl Marín) 。
  • JSON data type における skipping path を修正しました。従来は JSON(SKIP path) を使用すると、path をプレフィックスに持つすべての JSON キーがスキップされ、"pathpath" のようなキーまで対象になっていたため、insert 時にそれらのパスでデータが失われる可能性がありました。現在は修正され、"path" キーのみがスキップされます。 #95948 (Pavel Kruglov).
  • 不明なプロジェクションを含むパートは、永久に失われたものとしてマークされるべきではありません。 #95952 (Mikhail Artemenko).
  • Nullable(String) キーを持つ Join table で、空文字列が NULL になってしまう問題を修正。#71414 をクローズ。#96002 (Alexey Milovidov).
  • これで、PostgreSQLエンジンが BOOLEAN[] を正しく読み取れるようになりました。#72754 を修正しました。#96006 (Alexey Milovidov) 。
  • 空のファイルを読み取る際のProtobufListフォーマットを修正しました。#70059 をクローズしました。#96007 (Alexey Milovidov).
  • 空のテーブルで ProtobufList フォーマットがゴーストレコードを生成してしまう問題を修正。#72596 をクローズ。#96010 (Alexey Milovidov).
  • 型推論を伴う、分散クエリおよび PREWHERE の特殊なケースで発生する、UInt64Int32 間の if 関数の型不一致を修正しました。#70017 をクローズします。#96012 (Alexey Milovidov).
  • Bool 型を含む JIT コンパイル済みクエリを修正しました。 #96013 (Alexey Milovidov).
  • SQLite の TEXT カラムから UUID カラムを読み取る際の論理エラーを修正しました。#71263 をクローズしました。#96016 (Alexey Milovidov).
  • SQLite engineにおける DateTimeDateUUID、およびその他の型の変換を修正しました。#73481 をクローズします。#96017 (Alexey Milovidov).
  • 外部データベース (SQLite および PostgreSQL) へのクエリで、FixedString の値が誤ってエスケープされていました。#73519 をクローズします。@jh0x と共同で作成。#96019 (Alexey Milovidov).
  • PRECEDING オフセットが大きい場合に WindowTransform で発生するアサーション失敗を修正しました。#75852 をクローズしました。#96026 (Alexey Milovidov).
  • 同じパラメータ名を使用していても異なる値を含む同時実行の非同期 INSERT で、データ破損が発生する可能性がある不具合を修正しました。 #96035 (Seva Potapov) 。
  • global profiler の周期 (global_profiler_real_time_period_ns および global_profiler_cpu_time_period_ns で制御) を修正しました。設定した値ではなく切り捨てられた値が使用されていたため、profiler が意図した以上に頻繁に起動していました。#96048 (Antonio Andelic) 。
  • 以前は、position delete 用の Iceberg マニフェストファイル内で、reference data file がエントリとして存在していても NULL の場合、対応する data files の正しい境界値を取得できませんでした。この PR でこのバグを修正しました。#96061 (Daniil Ivanik) 。
  • デフォルトロールの取り消しに関する不具合を修正しました。#96103 (Vitaly Baranov) 。
  • use_primary_key が無効で、かつ索引を利用する条件の論理和が非常に多いというまれな条件の組み合わせで発生する、索引解析における use-after-free を修正しました。#96112 (Alexey Milovidov) 。
  • Gorilla コーデックで、明示的に指定されたサイズがデータ型のサイズと一致せず、かつバッファサイズが小さすぎる場合に発生するリグレッションを修正しました。以前のバージョンでは、伸長時に例外が発生していました。#78253 をクローズします。#96118 (Alexey Milovidov).
  • あるDictionaryが、それを再帰的に参照するMergeテーブルを参照している場合に、そのDictionaryの読み込み時に発生するデッドロックを回避しました。Closes #78360. #96120 (Alexey Milovidov).
  • MySQL や JODA スタイルなどの非固定幅フォーマッタを使用した formatDateTime での未初期化の値の使用を修正しました。#96133 (Alexey Milovidov) 。
  • use_const_adaptive_granularityindex_granularity_bytes の設定の組み合わせ (つまり「非適応粒度」) により、読み取る行数の計算が誤り、例外が発生していました。#96143 (Alexey Milovidov) 。
  • S3 や Azure などのオブジェクトストレージ上のファイルライクなテーブルに対して無効な ALTER UPDATE mutation を実行すると、nullptr のデリファレンスが発生する可能性がありました。#92994 をクローズしました。#96162 (Alexey Milovidov).
  • 部分的な権限取り消し時に AccessRights::contains が誤った結果を返す問題を修正しました。 #96170 (pufit).
  • 誤ったクエリ結果を引き起こす可能性があった、CTE の folded constants におけるクエリ条件 cache のハッシュ衝突を修正しました。#96060 をクローズしました。#96172 (Alexey Milovidov).
  • ProcessList で発生する可能性のあるデッドロックを修正しました。これは、キャンセルチェッカーにタスクを追加しているタイミングでメモリオーバーコミットトラッカーが作動すると、ロック順序の逆転が起こり得るためです。 #96182 (Antonio Andelic) 。
  • 複数の INNER JOIN と組み合わせた外部結合 (LEFT、RIGHT、または FULL) を含むクエリで、無効な JOIN の並べ替えにより誤った結果が返される不具合を修正しました。外部結合の ON 条件が、先に結合された複数のテーブルのカラムを参照している場合、オプティマイザがすべてのテーブル依存関係を考慮できず、JOIN を誤った順序に並べ替えてしまい、その結果、一部の行が欠落することがありました。Close #95972. #96193 (Vladimir Cherkasov).
  • テーブルに統計情報が定義されていない場合、ClickHouse はそれらを読み込もうとしないようにしました。これにより、統計情報ファイルが存在するかどうかを確認するためのオーバーヘッド (100ms 超) を回避できます。 (issue #96068) 。#96233 (Han Fei) 。
  • optimize_syntax_fuse_functions を修正し、集約引数が LowCardinality(Nullable) の場合は sum/count/avgsumCount() に書き換えないようにしました。#95390 をクローズ。#96239 (Nihal Z. Miaji) 。
  • 一部のケースで、not IN および not has 関数で発生していた誤ったパーティションプルーニングを修正しました。#96241 (Nihal Z. Miaji) 。
  • ベクトル類似度索引での stack-use-after-scope を修正しました。 #96259 (Alexey Milovidov).
  • クエリの前にSQLコメントがある場合に、テストランナーが error hint comments を認識しない問題を修正しました。#96336 (Yakov Olkhovskiy).
  • テーブルの主キーが Nullable で、クエリで第1引数が定数の coalesce 関数を使用している場合に発生する KeyCondition の論理エラーを修正しました。 #96340 (Alexey Milovidov).
  • GROUPING SETSgroup_by_use_nulls、および内部に LowCardinality を含む Tuple データ型の組み合わせにより、クエリパイプライン内で予期しないブロック構造が生じ、論理エラーにつながる可能性がありました。これは Nullable Tuple の導入後に発生したものです。#96358 (Alexey Milovidov).
  • 空の式 () を索引とするテーブルを作成できてしまい、無効なメモリアクセスが発生していました。#96363 (Alexey Milovidov).
  • 古いアナライザで、JOIN と重複する別名がある場合に発生していたクラッシュを修正しました。 #96405 (Ilya Golshtein) 。
  • Variant カラムに対する誤ったインプレースフィルタリング最適化により発生していたNested columns sizes are inconsistent with local_discriminatorsエラーを修正。 #96410 (Alexey Milovidov).
  • CREATE TABLE ... CLONE AS ... がソーステーブルの完全修飾名を無視する問題を修正しました。#96415 (Hasyimi Bahrudin).
  • mysql テーブル関数が、KILL QUERY や clickhouse-client でのクエリキャンセル (Ctrl+C) で正しくキャンセルされない問題を修正しました。#96437 (Roman Vasin).
  • max_execution_time の値が大きいクエリで発生する、キャンセル確認スレッドのライブロックを修正しました。#96450 (Sergei Trifonov).
  • 分散クエリで小数の LIMIT/OFFSET を使用した際に、一部のケースで発生していた論理エラーを修正しました。#96475 (Nihal Z. Miaji).
  • ラムダ関数を含む特定の式におけるヌルポインタの逆参照を修正しました。 #96479 (Alexey Milovidov).
  • LowCardinality カラムが Nullable に変換された際に、誤った結果が返される不具合を修正しました。#96483 (Nihal Z. Miaji).
  • 存在しないカラムを参照する、または位置引数を使用する ORDER BY 句を含む Iceberg テーブルの作成時に発生するクラッシュを修正しました。#93280 をクローズします。#96484 (Konstantin Vedernikov).
  • Nullable のサブフィールドを持つ Tuple カラムで発生するランタイムフィルタの例外を修正しました。 #96509 (Alexey Milovidov).
  • PREWHERE フィルターカラムにブール値ではない UInt8 値が含まれている場合に、Parquet V3 ネイティブリーダーで発生する LOGICAL_ERROR 例外を修正しました。#96594 (Alexey Milovidov) 。
  • メタデータの変更時にレプリケートテーブルで暗黙的に索引が再生成される問題を修正。 #96600 (Raúl Marín).
  • DROP WORKLOAD のデータレースを修正しました。#96614 (Sergei Trifonov).
  • パーティション化された insert により、パーティションファイル間でデータが不正に分散されることがある Iceberg table への書き込みのバグを修正しました。 #96620 (Konstantin Vedernikov) 。
  • 制約付きのCREATE TABLEにおけるheap-use-after-freeを修正しました。#96669 (Nikita Taranov).
  • バッファオーバーフローを防ぐため、bech32 の witness バージョンを検証するようにしました。 #96671 (Raúl Marín).
  • 無効な auth_header 設定でデータレイク REST カタログを作成した場合に、system.tables がエラーを返す問題を修正しました。#96680 (Han Fei) 。
  • TTL マージ後、ブロック内のすべての行がフィルタで除外されると、_minmax_count_projection 経由で min(timestamp) が epoch (1970-01-01) を返してしまう問題を修正しました。 #96703 (Raquel Barbadillo).
  • パストラバーサルを防ぎ、指定されたメタデータファイルがテーブルディレクトリ内にあることを確実にするため、iceberg_metadata_file_path 設定の検証を改善しました。#96754 (Daniil Ivanik) 。
  • GROUP BY で使われる Variant 引数を取る ifNull のクラッシュを修正しました。#96790 (Alexey Milovidov) 。
  • table_disk=1 設定が有効なテーブル間で発生していたキャッシュキーの衝突を修正しました。#96818 (Raufs Dunamalijevs) 。
  • 競合状態により MemoryWorker のパージ用スレッドが停止したままになる不具合を修正しました。#96819 (Antonio Andelic) 。
  • Iceberg カタログで認証情報を含むデータをログ出力しないようにしました。 #96831 (Konstantin Vedernikov).
  • サーバーエラー発生後の clickhouse-client の終了ステータスを修正しました。#96841 (Vitaly Baranov) 。
  • CROSS JOIN を含み、並列レプリカが有効なクエリで、誤った結果が返される可能性がありました。#74337 を修正しました。#96848 (Igor Nikonov).
  • 以前に同じカラムに対して論理更新が行われていた場合、ALTER TABLE DROP COLUMN クエリが失敗する問題を修正しました。#96861 (Anton Popov).
  • plain_rewritable オブジェクトストレージディスクへのアーカイブベースのバックアップ (.zip.tzst) 作成時に発生するスタックオーバーフロー (クラッシュ) を修正しました。 #96872 (Alexey Milovidov).
  • 宛先のファイルシステムでディスクフルやその他のI/Oエラーが原因でバックアップに失敗した際に、サーバーがクラッシュする問題を修正しました。 #96873 (Alexey Milovidov).
  • EXCEPT ALLINTERSECT ALL が行の重複回数を無視し、それぞれの DISTINCT 版と同様に動作してしまう問題を修正しました。#96876 (Alexey Milovidov).
  • 互換性のない型で indexOfAssumeSorted を呼び出したときに発生する std::terminate 例外を修正しました (例: IPv4 配列に対して整数の検索値を指定した場合) 。#96877 (Alexey Milovidov).
  • group_by_use_nulls = 1 と CUBE/ROLLUP/GROUPING SETS を使用したウィンドウ関数で発生する例外 Bad cast from type DB::ColumnNullable to DB::ColumnString を修正しました。#96878 (Alexey Milovidov) 。
  • JIT コンパイルされた式で DateTime から DateTime64 への変換時に誤った結果になる問題を修正しました (たとえば、CASE/if/multiIfDateTime 型が混在する場合) 。値が適切にスケーリングされずに再解釈されていたため、式のコンパイルが有効になると誤ったタイムスタンプが生成されていました。#96879 (Alexey Milovidov).
  • CoalescingMergeTree で、スキップ索引の式が定数カラムを生成する場合 (例: 整数カラムに対する ifNotFinite(1, c0)bloom_filter) に発生する論理エラー例外を修正しました。 #96880 (Alexey Milovidov).
  • 誤って HTTP で TLS 対応のネイティブプロトコルポートに接続した場合に表示されるエラーメッセージ内の誤ったポート番号を修正しました。#96881 (Alexey Milovidov).
  • CTEやサブクエリで、サブクエリごとのSETTINGSfileのようなテーブル関数に適用されない不具合を修正しました。#96882 (Alexey Milovidov).
  • X509 証明書の読み取り時に発生する BIO オブジェクトのメモリリークを修正しました。 #96885 (Alexey Milovidov).
  • 具体的な値が必要な箇所 (たとえば arrayFold のアキュムレータ引数) にラムダ式が渡された場合に、クエリアナライザで LOGICAL_ERROR 例外が発生する問題を修正しました。 #96892 (Alexey Milovidov).
  • 複雑にネストされた型 (Nullable Enum 値を持つ Map を含む Nullable Tuple の Array) をキャストする際に発生する ColumnNullable is not compatible with original 例外を修正しました。#96924 (Alexey Milovidov).
  • 分片化された HASHED Dictionary の並列ロードにおける race condition を修正し、まれに一部の行が読み込まれないことがある問題を解消しました。 #96953 (Alexey Milovidov).
  • REPLACE PARTITION とバックグラウンドミューテーションの間で発生する競合状態を修正し、置換後に古いデータと新しいデータの両方が見えてしまうことがある問題を解消しました。 #96955 (Alexey Milovidov).
  • INNER JOIN および WHERE 句と組み合わせて使用した際に arrayJoin 関数が重複した行を生成する問題を修正しました。これは、部分的な述語プッシュダウン最適化によって、arrayJoin を含むフィルタが誤って JOIN の下にプッシュダウンされていたことが原因です。#96989 (Alexey Milovidov).
  • BlockIO::operator=query_metadata_cache を move しないことが原因で発生していた clearCaches のクラッシュ (SEGFAULT) を修正しました。これにより、cache されたストレージスナップショットが早期に破棄され、MergeTreeData ストレージで use-after-free が発生していました。#96995 (Alexey Milovidov).
  • if または transform 関数が Nullable(String) を返す場合 (例: GROUP BY ... WITH CUBEgroup_by_use_nulls = true のとき) に、IfTransformStringsToEnumPass で発生するアサーション失敗を修正しました。#97002 (Alexey Milovidov).
  • INSERT ... SELECTUNION ALL および JOIN を使用した際に、block をまとめる処理の後で定数文字列カラムに誤った値が入ることがあり、その結果不正なデータが書き込まれる問題を修正しました。#97019 (Hasyimi Bahrudin) 。
  • ALTER TABLE MODIFY COLUMN によってカラムの型が変更された後、カラム STATISTICS の構築時に発生する assert_cast 例外 (またはリリースビルドでのサイレントなデータ破損) を修正しました。 #97027 (Alexey Milovidov).
  • Azure Blob Storage、SSHプロトコル、およびArrow Flightインターフェイスでの未初期化メモリの読み取りを修正しました。 #97053 (Alexey Milovidov).
  • 索引が、ROW POLICY/PREWHERE および FINAL を含むクエリの結果に影響していたケースを修正しました。#97076 (Yarik Briukhovetskyi).
  • MergeTree テーブルにおける REPLACE PARTITION とバックグラウンドミューテーションの間に残っていた race condition を修正し、古いデータが再び現れる可能性を解消しました。#97105 (Alexey Milovidov).
  • エイリアスカラムを含む暗黙的インデックスを修正し、作成前に完全な検証を行うようにしました。 #97115 (Raúl Marín).
  • arrayROCAUC のように const 引数が必要な関数における FunctionVariantAdaptor の論理エラーを修正しました。#97116 (Bharat Nallan).
  • PartCheckThread が、すでにミューテーション適用済みのパーツに対する GET_PART を再度キューに追加し、parts_to_do に実体のないエントリが残ることでミューテーションが停滞する問題を修正しました。#97162 (Alexey Milovidov).
  • ORDER BY ... LIMIT を含むサブクエリのクエリプランにおける行数推定を修正しました。これにより、オプティマイザが最適でない JOIN 順序を選択する可能性がありました。 #97193 (Alexander Gololobov).
  • Variant カラムを扱う関数が Nothing 型を返した際に FunctionVariantAdaptor で発生する LOGICAL_ERROR 例外を修正しました。これは、UNION ALL クエリ内の空の配列で発生することがあります。#97213 (Alexey Milovidov).
  • 同時アクセス時に例外を引き起こす可能性があった、S3 のマルチパートコピー処理 (例: S3 への BACKUP/RESTORE) 中のデータ競合を修正しました。#97227 (Azat Khuzhin).
  • WHERE 句内の arrayJoinJOIN の両側のカラムを参照している場合に発生する LOGICAL_ERROR 例外を修正しました。#97239 (Alexey Milovidov).
  • PREWHERE を伴う Tuple 内のスパースな Nullable(String) で、.size サブカラムの読み取り時に発生する LOGICAL_ERROR 例外を修正しました。 #97264 (Alexey Milovidov).
  • LazyMaterializingTransform で、非アダプティブインデックス粒度 (index_granularity_bytes = 0) のテーブルを ORDER BY ... LIMIT で読み取る際に発生する例外 “lazy chunk の行数が offsets の数と一致しない” を修正しました。#97270 (Alexey Milovidov) 。
  • SYSTEM RESTART REPLICA で、テーブルの再作成が ZooKeeper 以外の例外 (たとえばメモリ制限) で失敗した場合に、データベースからテーブルが消失し、DatabaseReplicated でメタデータダイジェストの不一致が発生する問題を修正しました。 #97276 (Alexey Milovidov).
  • system.merge_tree_settings のフィールド readonly が、特定の MergeTree 設定 (例: index_granularity) が無条件で readonly であることを正しく反映するようになりました。 #97277 (Robert Schulze).
  • データなしでストレージのスナップショットが作成された場合に、MergeTree テーブルでの count() 最適化中にクラッシュする問題を修正しました。#97281 (Pablo Marcos).
  • スタックトレースのデバッグ情報から関数名を解決する際に発生する可能性のあるクラッシュを修正しました。 #97294 (Azat Khuzhin).
  • analyzer_compatibility_join_using_top_level_identifier と ALIAS カラムに関する論理エラーを修正しました。#96228 をクローズしました。#97297 (Vladimir Cherkasov).
  • QUALIFY 句でテキスト索引付きのカラムを使用した際に applyOrder で発生する LOGICAL_ERROR 例外を修正しました。#97313 (Alexey Milovidov).
  • システムテーブル system.functions で、内部関数の categories'' ではなく 'Internal' と表示されるようになりました。#97315 (Robert Schulze).
  • RIGHT JOIN の連鎖と有効化された並列レプリカを使用するクエリで、誤った結果が返される可能性がありました。この問題を修正しました。#74341#97316 (Igor Nikonov).
  • テーブル名が変更された場合に、リフレッシャブルmaterialized viewやその他のシナリオで発生することがあった、誤った TABLE_UUID_MISMATCH エラーを修正しました。 #97323 (Azat Khuzhin).
  • 遅延バックアップのバッチ処理で、ダングリングしたストレージポインタに対するuse-after-freeが原因で発生していたStorageKeeperMapバックアップのセグメンテーションフォルトを修正しました。 #97336 (Alexey Milovidov).
  • mutations_execute_subqueries_on_initiator が有効な場合の、ALTER UPDATE/DELETE 内でスカラー サブクエリを含む exists 関数を修正しました。スカラー サブクエリが誤って評価されていたため、エラーが発生したり、次回のサーバー再起動時にテーブルを読み込めなくなる破損した mutation コマンドが生成されたりする可能性がありました。#97347 (Kirill Kopnev) 。
  • LowCardinality 型を含む Variant カラムと NULL を比較した際に発生する論理例外 Unexpected return type from equals. Expected Nullable(UInt8). Got Const(LowCardinality(Nullable(UInt8))) を修正しました。#97379 (Alexey Milovidov).
  • 分片クエリキャッシュが有効な状態で EXCHANGE TABLES を並行実行した際に発生し得る競合状態を修正しました。 #97411 (Konstantin Vedernikov).
  • 外側のTupleラッパーのnullable_sourceによって、変換後の配列カラムが不一致なカラム型に置き換えられた場合に発生する、ArrayからQBitへの変換時のLOGICAL_ERROR例外を修正しました。#97389 をクローズします。#97413 (Alexey Milovidov).
  • 括弧内のエイリアス付きタプルリテラルにおける AST フォーマットのラウンドトリップの不整合を修正しました。たとえば、(('a', 'b') AS x) が誤って tuple(('a', 'b') AS x) に再フォーマットされていました。#97418 (Alexey Milovidov).
  • パースの失敗により 0 行の空ブロックが生成された場合に、重複排除を伴う非同期挿入中に発生していた例外を修正しました。#97460 (Sema Checherinda) 。
  • 非アダプティブインデックス粒度 (index_granularity_bytes = 0) のテーブルを ORDER BY ... LIMIT で読み取る際に、LazyMaterializingTransform で発生する例外 “lazy chunk の行数が offsets の数と一致しない” を修正しました。#97482 (Alexey Milovidov) 。
  • Iceberg への insert に関する設定を修正。allow_experimental_insert_into_iceberg 設定の別名を追加。#97483 (Konstantin Vedernikov).
  • optimize_inverse_dictionary_lookup 最適化が dictGet(...) の述語を書き換える際、CREATE TEMPORARY TABLE 権限を持たないユーザーで ACCESS_DENIED が発生する問題を修正しました。ClickHouse はこの書き換えをスキップし、元の式を実行するようになりました。#97269 をクローズしました。#97484 (Nihal Z. Miaji).
  • 内部にスパースなサブカラムを持つカラム (例: スパースなシリアライゼーションプロファイルが異なる MergeTree パーツの Tuple カラム) の処理時に、SetMergeTreeIndexSet で発生するアサーション失敗 (デバッグ/サニタイザービルドでは例外) を修正しました。 #97493 (Alexey Milovidov).
  • StorageKafka2 における、use-after-free が発生する可能性のある不具合を修正しました。 #97520 (Bharat Nallan).
  • 出力パスにディレクトリが含まれる場合の、TRUNCATE および into_outfile_create_parent_directories 設定を使用した INTO OUTFILE の不具合を修正しました。#97549 (Alexey Milovidov) 。
  • アナライザが有効な状態で、merge() テーブル関数を介して ALIAS カラム内にラムダ式を含むテーブルをクエリした際に発生する BAD_ARGUMENTS エラーを修正しました。#97551 (Alexey Milovidov).
  • Keeper の zxid が 0 のときに system.zookeeper_info で発生する例外を修正しました。#97553 (Alexey Milovidov) 。
  • キーの型が String でない場合に ip_trie Dictionary で発生する可能性がある論理エラーを修正しました。 #97555 (Bharat Nallan).
  • ベースの RestCatalog で REST カタログの OAuth 認証が機能しない問題を修正しました (それまでは OneLakeCatalog のような派生カタログでしか機能していませんでした) 。この不具合により、BigLake カタログの導入後、デフォルトの REST カタログが使えない状態になっていました。#97561 (Konstantin Vedernikov).
  • Geometry 関数 (perimeterSphericalareaSpherical など) は、Geometry Variant 型に加えて、個別のジオメトリサブタイプ (PolygonRingPoint など) も受け付けるようになりました。#97571 (Alexey Milovidov).
  • Nullable(Tuple(... Nullable(T) ...)) 型のサブカラムに対して isNull/isNotNull を使用した際に発生する LOGICAL_ERROR 例外を修正しました。#97224 をクローズしました。#97582 (Alexey Milovidov).
  • 論理更新時にパッチパートを適用する際のヌルポインタの逆参照を修正しました。 #97583 (Alexey Milovidov).
  • BaseSettings::readBinary は、accessor.find が返したインデックスを、未検出を示す番兵値 (つまり -1) かどうか確認せずに field_infos[] に渡しており、その結果 std::vector の範囲外アクセスを引き起こす可能性があります。この問題は libcxx hardening によって発見されました。これはおそらく、新しいサーバーが古いサーバーに未知の設定を送信した際のクエリプランのデシリアライズ中に発生していました。文字列ベースの読み取りメソッドではすでにこれを正しく処理していましたが、readBinary には同じチェックが欠けていました。#97585 (Miсhael Stetsyuk) 。
  • 一方のブランチに常に偽となる条件がある UNION ALL クエリで、本来は何も返さないはずのブランチが誤ってデータを読み込んでしまい、不正なクエリ結果を返していた問題を修正しました。 #97620 (Bharat Nallan).
  • 単一カラム参照を含むIN (col)UNSUPPORTED_METHODエラーで失敗する不具合を修正しました。#97646 (Alexey Milovidov) 。
  • GROUP BY ... WITH ROLLUP/CUBE 実行時に、キーに Nullable(Tuple(...)) 内の LowCardinality(Nullable(...)) が含まれる場合に発生していた logical error 例外を修正しました。#97647 (Alexey Milovidov) 。
  • NOT (1, 1, 1) に対する AST のフォーマットの不整合を修正し、デバッグビルドで LOGICAL_ERROR が発生する可能性がある問題を解消しました。 #97653 (Alexey Milovidov).
  • 空の ZooKeeper トランザクションログファイルを検出した際に発生する keeper-converter の例外を修正しました。 #97673 (Alexey Milovidov) 。

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

  • ClickHouse を clang-23 (master) でビルドできるようになりました。#95578 (Alexey Milovidov) 。
  • 修正: bind_host が設定されている場合は is_local を強制的に false にし、これをインテグレーションテストに置き換えました。#74741 のフォローアップです。#93109 #96018 (Zhigao Hong).
  • ストレステスト: CI におけるストレステストとアップグレードテストを修正し、no-{build} タグを無視するようにしました。互換性のランダム化を追加しました。#94693 (Nikita Fomichev).
  • ビルドから parser_memory_profiler バイナリを公開しました。AST のメモリ使用量を分析するために利用できるツールです。#95826 (Ilya Yatsishin).
  • 結果内のシンボルを解決した .heap.sym ファイルを生成する parser_memory_profiler ツールに、--symbolize フラグを追加しました。#96477 (Ilya Yatsishin).
  • 結合テストでサードパーティ製のDockerイメージを特定のバージョンに固定。 #96500 (Alexey Milovidov).
  • OpenSSL を動的にリンクできるようにするオプションを復活させました。これは推奨されておらず、どの本番ビルドでも使われていませんが、インターネット上の愛好家向けにこの選択肢は引き続き残されています。#96506 (Govind R Nair).
  • Coordination::OpNum 向けの型別特殊化を用いることで、magic_enum の範囲を [-100, 1000] からデフォルトの [-128, 127] に縮小し、ビルド時間を短縮しました。#96632 (Alexey Milovidov) 。
  • ビルド時間を削減するため、Function クラスから不要な C++ テンプレートを削除しました。#96646 (Alexey Milovidov) 。
  • ビルドの並列性を向上させるため、StorageSystemLicenses の生成を configure 時ではなく構成時に行うようにしました。#96697 (Alexey Milovidov).
  • ライセンススキャンの並列化。 #96727 (Raúl Marín).
  • SSH プロトコル対応のためのステートレスな機能テストを追加しました。 #96996 (Alexey Milovidov).
  • Kafka 3.9.0 をステートレス機能テスト用のインフラストラクチャに追加し、ClickHouse Keeper を ZooKeeper として使って Kafka および Kafka2 テーブルエンジンを直接テストできるようにしました。新たに追加された 6 件のステートレステストでは、基本的な produce/consume、仮想カラム、INSERT、複数のフォーマット、破損メッセージの処理、Keeper ベースのオフセット保存をカバーしています。#96997 (Alexey Milovidov).
  • PGO+BOLT で最適化した clang ツールチェーンをビルドする CI ワークフローを追加しました。 #96991 (Alexey Milovidov).
  • CI では PGO 最適化済みの LLVM/Clang ビルドを使用し、ビルド速度が 20..30% 向上する見込みです。#97031 (Alexey Milovidov) 。
  • glibc の数学関数を llvm-libc の実装へ置き換えました。#90151 (Konstantin Bogdanov) 。
  • Boostを1.83から1.90に更新し、デバッグビルドで発生していたdevectorのアサーション失敗を修正しました。#97037 (Alexey Milovidov) 。
  • postgres を REL_18_1 に更新しました。#95189 (Konstantin Bogdanov) 。
  • libexpat 2.7.3 を使用するようになりました。 #95218 (Konstantin Bogdanov).
  • OpenSSL 3.5.5 を使用します。 #95345 (Konstantin Bogdanov).
  • simdjson v4.2.4 を使用する。 #97129 (Konstantin Bogdanov).
  • libarchive 3.8.5 を使用。 #97131 (Konstantin Bogdanov).
  • fast_float v8.2.3 を採用。#97133 (Konstantin Bogdanov) 。
  • abseil-cpp 20260107.1 と s2geometry v0.13.1 を使用。#97134 (Konstantin Bogdanov) 。
  • libxml2 を 2.15.1 にアップデート。 #95574 (Robert Schulze).
  • EOL に達した、または削除されたベースイメージを使用していた 7 個の Tier-3 統合テスト用 Docker イメージを、現在サポートされているバージョンに更新しました。#97314 (Rahul).
  • TPC-DSベンチマーククエリを追加しました。#97349 (Raufs Dunamalijevs) 。
  • 個別の x86 命令セット向けの cmake オプション (ENABLE_SSSE3ENABLE_AVX2NO_SSE3_OR_HIGHERARCH_NATIVE など) を、実行時ディスパッチシステムですでに使用されている標準的な x86-64 マイクロアーキテクチャレベルに合わせて、単一の数値オプション X86_ARCH_LEVEL (1/2/3/4) に置き換えました。#97354 (Raúl Marín) 。
  • FunctionBinaryArithmetic で、除算以外の演算については division_by_nullable=true のテンプレートバリアントをインスタンス化しないようにし、コンパイル時間とバイナリサイズを削減しました。#97496 (Raúl Marín).
  • typeid_cast.hassert_cast.hContext_fwd.hIDataType.h、および各種 Column ヘッダーなどの広く参照されるヘッダーから Exception.h を हटし、include の影響範囲を縮小しました。#97497 (Raúl Marín) 。
  • ホストコンパイラのヘッダーではなく、常にバンドル版のcompiler-rtヘッダー (sanitizer および XRay インターフェイス) を使用し、デフォルトでcompiler-rtライブラリをソースコードからビルドするようにしました。#97499 (Raúl Marín) 。
  • long double を十分に利用できるプラットフォームでは、wide_integer_impl.hboost/multiprecision のヘッダーを含めないようにし、ビルド時間を短縮しました。#96633 (Alexey Milovidov).
  • LLVM コードカバレッジジョブを実装し、まずは master ブランチでのみ有効化しました。#90952 (Alexey Bakharew) 。
  • リリースビルドで libcxx の高速ハードニングを有効にしました。これは主に範囲外アクセスのチェックに必要です。Performance tests の結果から、性能への目立った影響はないと見込まれます。#94757 (Miсhael Stetsyuk).

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

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

  • フォーマッタ内での別名の誤った置換によって生じていたフォーマットの不整合を修正しました。これにより #82833 をクローズします。これにより #82832 をクローズします。これにより #68296 をクローズします。この変更は後方互換性に影響する可能性があります: アナライザが無効な場合、別名を参照する IN を含む一部の CREATE VIEW クエリは処理できません。この非互換性を回避するには、アナライザを有効にしてください (24.3 以降はデフォルトで有効です) 。#82838 (Alexey Milovidov).
  • コーデック DEFLATE_QPL および ZSTD_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 まで完全に蓄積されるようになったため、完全な Python トレースバックとエラーメッセージが system.query_log.exception に記録され、より効果的にトラブルシューティングできるようになりました。#92209 (Xu Jia).
  • JOIN USING () 句の空のカラムリストは、現在では構文エラーと見なされます。以前は、クエリ実行時に INVALID_JOIN_ON_EXPRESSION として扱われる想定でした。Join ストレージとの結合など一部のケースでは、LOGICAL_ERROR を引き起こしていました。これにより #82502 をクローズします。#92371 (Vladimir Cherkasov).
  • JSON型では、デフォルトで SKIP REGEXP に部分一致を使用するようになりました。#79250 をクローズ。#92847 (Pavel Kruglov).
  • “Allow INSERT into simple ALIAS columns” を元に戻しました (ClickHouse/ClickHouse#84154 を差し戻し) 。カスタムフォーマットでは動作せず、設定でも制御されていません。#92849 (Azat Khuzhin).
  • データレイクのカタログがオブジェクトストレージにアクセスできない場合に、エラーを発生させる設定。 #93606 (Konstantin Vedernikov).
  • Lazy データベースエンジンは削除され、現在は利用できません。#91231 をクローズ。#93627 (Alexey Milovidov).
  • metric_logtransposed_with_wide_view モードは、バグのため使用できないことから削除されました。今後、このモードで system.metric_log を定義することはできなくなります。これは #78412 を部分的に差し戻すものです。#93867 (Alexey Milovidov) 。
  • ワークロード向けのCPUスケジューリングは、デフォルトでプリエンプティブ方式になりました。cpu_slot_preemption サーバー設定を参照してください。#94060 (Sergei Trifonov) 。
  • 破損したパーツを防ぐため、索引ファイル名をエスケープするようにしました。この変更により、以前のバージョンで作成され、名前に非 ASCII 文字を含む索引は ClickHouse で読み込めなくなります。これに対処するには、MergeTree の設定 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_dotalldictionary_use_async_executor は、通常の (フォーマット設定ではない) 設定に変更されました。これは完全に内部的な変更であり、Iceberg、Delta Lake、Kafka、S3、S3Queue、Azure、Hive、RabbitMQ、Set、FileLog、または NATS のテーブルエンジン定義でこれらの設定のいずれかを指定していた (可能性は低い) 場合を除き、ユーザーに見える副作用はありません。こうした場合、これらの設定は以前は無視されていましたが、現在はそのような定義でエラーになります。#94106 (Robert Schulze).
  • joinGet/joinGetOrNull 関数では、基になる Join table に対して SELECT 権限が必要になりました。この変更により、joinGet('db.table', 'column', key) を実行するには、ユーザーに Join table で定義されたキーカラムと、取得する attribute カラムの両方に対する SELECT 権限が必要です。これらの権限がない queries は、ACCESS_DENIED で失敗します。移行するには、テーブル全体へのアクセスには GRANT SELECT ON db.join_table TO user を、カラム単位のアクセスには GRANT SELECT(key_col, attr_col) ON db.join_table TO user を使用して、必要な permissions を付与してください。この変更は、これまで明示的な SELECT grants を設定していなかった、joinGet/joinGetOrNull に依存するすべての users および applications に影響します。#94307 (Vladimir Cherkasov).
  • CREATE TABLE ... AS ... クエリでは SHOW COLUMNS をチェックするようになりました。以前は SHOW TABLES をチェックしていましたが、この種の権限チェックに必要な権限としては不適切でした。#94556 (pufit).
  • Hash 出力フォーマットがブロックサイズに依存しないようになりました。#94503 (Alexey Milovidov) 。この変更により、従来のバージョンと比べて出力されるハッシュ値が変わる点に注意してください。

新機能

  • ClickHouse Keeper 向けの HTTP API と内蔵 Web UI。#78181 (pufitspeeedmaster) 。
  • 非同期 INSERT の重複排除が、依存する materialized view でも機能するようになりました。block_id の衝突が発生すると、元の block は block_id に関連付けられた行を除外するようにフィルタリングされ、残りの行には関連するすべての materialized view の SELECT クエリが適用されて変換されます。これにより、競合する行を含まない元の block が再構築されます。#89140 (Sema Checherinda)。materialized view が関係する場合でも、非同期 INSERT で重複排除を使用できるようになりました。#93957 (Sema Checherinda)。
  • projection索引機能を簡素化し、拡張するための新しい構文とフレームワークが導入されました。これは https://github.com/ClickHouse/ClickHouse/pull/81021 のフォローアップです。#91844 (Amos Bird).
  • Array カラムでのテキスト索引のサポートを追加しました。#89895 (Jimmy Aguilar Mena).
  • デフォルトで use_variant_as_common_type が有効になり、Array 内、UNION クエリ内、および if/multiIf/case の分岐で互換性のない型を使用できるようになりました。#90677 (Alexey Milovidov).
  • 新しいシステムテーブル zookeeper_info#88014 を実装しました。 #90809 (Smita Kulkarni) 。
  • すべての関数が Variant 型をサポート。 #90900 (Bharat Nallan).
  • Prometheus の /metrics エンドポイントに、主にバージョン情報を含む ClickHouse_Info メトリクスを追加し、詳細なバージョン情報を時系列で追跡するチャートを作成できるようにしました。 #91125 (Christoph 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}]}]}#91354 (alesapin).
  • 指定した区切り文字で区切られた文字列内の部分文字列の順序を反転する関数 reverseBySeparator を追加しました。#91463 をクローズしました。#91780 (Xuewei Wang).
  • 挿入時のブロック生成をより細かく制御できる新しい設定 max_insert_block_size_bytes を追加しました。 #92833 (Kirill Kopnev).
  • ignore_on_cluster_for_replicated_database 設定が有効な場合、Replicatedデータベースに対して ON CLUSTER 句を付けた DDLクエリを実行できます。この場合、クラスター名は無視されます。#92872 (Kirill).
  • 関数 mergeTreeAnalyzeIndexes を実装。 #92954 (Azat Khuzhin).
  • 新しい設定 use_primary_key を追加しました。false に設定すると、主キーに基づくグラニュールのプルーニングを無効にできます。#93319 (Nihal Z. Miaji).
  • icebergLocalCluster テーブル関数が追加されました。#93323 (Anton Ivashkin) 。
  • 2点間の余弦距離を近似的に計算するcosineDistanceTransposed関数が追加されました。#93621 (Raufs Dunamalijevs) 。
  • 各データパートに含まれるファイル数を表示する files カラムを system.parts テーブルに追加しました。#94337 (Match) 。
  • 同時実行制御向けに、max-min fair スケジューラが追加されました。これは、多数のクエリが限られた CPU スロットをめぐって競合する高オーバーサブスクリプション環境で、より高い公平性を実現します。長時間実行クエリが時間の経過とともにより多くのスロットを蓄積していても、短時間実行クエリが不利になることはありません。concurrent_threads_scheduler サーバー設定を max_min_fair に設定することで有効になります。#94732 (Sergei Trifonov) 。
  • ClickHouse client で、サーバーへの接続時に TLS SNI を上書きできるようになりました。#89761 (Matt Klein) 。
  • joinGet 関数の呼び出しで一時テーブルをサポート。 #92973 (Eduard Karacharov).
  • DeltaLake table engine で削除ベクターをサポートするようになりました。 #93852 (Kseniia Sumarokova).
  • deltaLakeCluster が deletion vectors に対応しました。#94365 (Kseniia Sumarokova) 。
  • データレイク向けの Google Cloud Storage のサポート。#93866 (Konstantin Vedernikov) 。

実験的機能

パフォーマンス改善

  • 設定 use_skip_indexes_on_data_read は、デフォルトで有効になりました。この設定により、読み込みと同時にストリーミング方式でフィルタリングできるようになり、クエリのパフォーマンスと起動時間が向上します。#93407 (Shankar Iyer).
  • LowCardinality カラムに対する DISTINCT のパフォーマンスを改善しました。#5917 をクローズしました。#91639 (Nihal Z. Miaji) 。
  • distinctJSONPaths 集約関数を最適化し、JSONカラム全体ではなく、データパーツから JSON パスのみを読み取るようにしました。#92196 (Pavel Kruglov) 。
  • JOIN へのプッシュダウンに対応するフィルタが増えました。#85556 (Nikita Taranov).
  • filter が片側の入力のみを使う場合に、join の ON 条件からの push down に対応するケースをさらに拡大しました。ANYSEMIANTI join のサポートを追加しました。#92584 (Dmitry Novik).
  • SEMI JOIN のフィルタをプッシュダウンするために、同等の集合を使用できるようにしました。#85239 をクローズしました。#92837 (Dmitry Novik) 。
  • 右側が空の場合、ハッシュ結合の左側の読み取りをスキップするようになりました。以前は、最初の空でないブロックに到達するまで左側を読み取っていたため、フィルタリングや集約の負荷が高い場合には多くの処理が発生する可能性がありました。#94062 (Alexander Gololobov).
  • クエリパイプライン内でデータをパーティション化するために、“fastrange” (Daniel Lemire) 方式を採用しました。これにより、並列ソートやJOINが改善される可能性があります。#93080 (Alexey Milovidov).
  • PARTITION BY がソートキーと一致する場合、またはそのプレフィックスである場合のウィンドウ関数の性能を向上させました。 #87299 (Nikita Taranov).
  • 外側のフィルタがビューにプッシュダウンされるようになり、ローカルノードとリモートノードの両方でPREWHEREを適用できるようになりました。#88189 を解決しました。#88316 (Igor Nikonov) 。
  • より多くの関数でJITコンパイルを実装しました。#73509 をクローズしました。#88770 (Alexey MilovidovTaiyang Li と共同) 。
  • FINAL クエリで使用されるスキップ索引が主キーの一部であるカラム上にある場合、他のパーツで主キーの積集合を確認する追加ステップは不要となり、現在は実行されなくなりました。#85897 を解消しました。#93899 (Shankar Iyer) 。
  • 小数値の LIMIT および OFFSET に対するパフォーマンスとメモリ使用量を最適化しました。#91167 (Ahmed Gouda) 。
  • Parquet リーダー V3 のプリフェッチャーで、より高速なランダム読み取りロジックを使用するように修正しました。#90890 をクローズしました。#91435 (Arsen Muk) 。
  • icebergCluster のパフォーマンスを改善。#91462 をクローズ。#91537 (Yang Jiang).
  • 定数フィルターでは仮想カラムで絞り込まない。#91588 (c-end).
  • adaptive write buffers を有効にすることで、非常に列数の多いテーブルにおける wide パーツでの INSERT/merges のメモリ使用量を削減します。暗号化ディスクに対する adaptive write buffers のサポートを追加しました。 #92250 (Azat Khuzhin).
  • 索引内で検索するトークン数を削減し、テキスト索引とsparseGramsトークナイザーを用いた全文検索の性能を向上させました。#93078 (Anton Popov).
  • Function isValidASCII は、すべてASCIIの入力値で有効になるケース向けに最適化されました。#93347 (Robert Schulze) 。
  • read-in-order 最適化は、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ランタイムフィルタを無効化してオーバーヘッドを削減: - bloom filter でセットされるビットが多すぎる場合 - 実行時に除外される行が少なすぎる場合。 #91578 (Alexander Gololobov).
  • 相関サブクエリの入力にインメモリバッファを使用し、複数回評価するのを防ぎます。#79890 の一部。#91205 (Dmitry Novik).
  • すべてのレプリカが、並列レプリカ読み取り時に孤立した範囲を並行して引き取れるようになりました。これにより、負荷分散が改善され、ロングテールレイテンシが低減されます。#91374 (zoomxi).
  • 外部集約/ソート/結合で、あらゆるコンテキストでクエリ設定 temporary_files_codec が適用されるようになりました。Grace Hash Join のプロファイルイベントが欠落していた問題を修正しました。#92388 (Vladimir Cherkasov).
  • 集約/ソート時にディスクへスピルする際のクエリのメモリ使用量検出を、より堅牢にしました。#92500 (Azat Khuzhin) 。
  • 集約キーカラムについて、総行数と NDV (異なる値の数) の統計を推定します。 #92812 (Alexander Gololobov) 。
  • simdcomp によりポスティングリストの圧縮を最適化しました。#92871 (Peng Jian) 。
  • バケットを用いて S3Queue Ordered モードの処理をリファクタリングしました。これにより、Keeper へのリクエスト数が減り、パフォーマンスの向上も見込まれます。#92889 (Kseniia Sumarokova) 。
  • 関数 mapContainsKeyLikemapContainsValueLike は、それぞれ 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).
  • Keeper 拡張機能 CHECK_STAT および TRY_REMOVE をデフォルトで有効にしました。#93886 (Mikhail Artemenko).
  • 対応するデータファイルをより適切に選択できるよう、Iceberg マニフェストファイルのエントリから position delete に対応するファイル名の下限・上限を解析するようにしました。 #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カラムをまとめる処理をわずかに最適化しました。#94247 (Pavel Kruglov) 。
  • 本番運用の経験に基づき、スレッドプールのキューサイズを引き下げました。MergeTreeからデータを読み込む前に、明示的なメモリ使用量チェックを追加しました。#94692 (Nikita Mikhaylov).
  • CPU 枯渇時にスケジューラが MemoryWorker スレッドを優先するようにし、ClickHouse プロセスを致命的な脅威から保護します。 #94864 (Nikita Mikhaylov).
  • jemalloc の dirty page のパージを、MemoryWorker のメインスレッドとは別のスレッドで実行するようにしました。パージに時間がかかると RSS 使用量の更新が遅れ、その結果、プロセスが OOM キルされる可能性があります。総メモリ使用量の割合に基づいて dirty page のパージを開始するための新しい設定 memory_worker_purge_total_memory_threshold_ratio を導入しました。 #94902 (Antonio Andelic).

改善

  • Azure Blob Storage で system.blob_storage_log を利用できるようになりました。#93105 (Alexey Milovidov) 。
  • Local と HDFS 向けに blob_storage_log を実装しました。S3Queueblob_storage_log へのログ出力でディスク名以外を使用していた場合に発生するエラーを修正しました。blob_storage_logerror_code カラムを追加しました。ローカルでのテストを簡単にするため、テスト用の設定ファイルを分割しました。 #93106 (Alexey Milovidov) 。
  • clickhouse-clientclickhouse-local で、入力中の数値リテラル内の桁区切り (千、百万など) が強調表示されるようになりました。これにより #93100 が解決されました。#93108 (Alexey Milovidov).
  • clickhouse-client で、等号の前後にスペースを含むコマンドライン引数をサポートしました。#93077 をクローズしました。#93174 (Cole Smith) 。
  • <interactive_history_legacy_keymap>true</interactive_history_legacy_keymap> を使用すると、CLI クライアントで従来どおり Ctrl-R による通常検索に戻せるようになり、Ctrl-T ではあいまい検索を行えます。#87785 (Larry Snizek) 。
  • cache をクリアするためのステートメント SYSTEM DROP [...] CACHE は、そのステートメントが cache を無効にするかのような誤解を招いていました。ClickHouse は現在、より意味が明確なステートメント SYSTEM CLEAR [...] CACHE をサポートしています。古い構文も引き続き利用できます。#93727 (Pranav Tiwari).
  • EmbeddedRocksDB で、複数カラムの主キーをサポートしました。#32819 をクローズ。#33917 (usurai).
  • スカラー値に対して非定数の IN を使用できるようになりました (val1 NOT IN if(cond, val2, val3) のようなクエリ) 。#93495 (Yarik Briukhovetskyi) 。
  • 未サポートのため、x-amz-server-side-encryption ヘッダーが HeadObjectUploadPartCompleteMultipartUpload の S3 リクエストに伝播されないようにしました。#64577 (Francisco J. Jurado Moreno) 。
  • S3Queue の ordered モードで Hive パーティション化の追跡に対応しました。#71161 を解決しました。#81040 (Anton Ivashkin).
  • ファイルシステムキャッシュの領域予約を最適化しました。FileCache::collectCandidatesForEviction は、unique lock を使用せずに実行されるようになりました。#82764 (Kseniia Sumarokova).
  • サーバーログで複合ローテーション戦略 (サイズ + 時間) をサポートしました。 #87620 (Jianmei Zhang).
  • CLI クライアントで、コマンドラインの --no-warnings の代わりに <warnings>false</warnings> を指定できるようになりました。#87783 (Larry Snizek) 。
  • avg 集約関数で、DateDateTimeTime 型の値を引数としてサポートしました。#82267 をクローズしました。#87845 (Yarik Briukhovetskyi).
  • 最適化 use_join_disjunctions_push_down は、デフォルトで有効になっています。#89313 (Alexey Milovidov) 。
  • 相関サブクエリで、より多くのテーブルエンジンとデータソースの種類をサポートしました。#80775 をクローズしました。#90175 (Dmitry Novik).
  • パラメーター化ビューのスキーマが明示的に指定されている場合は、それが表示されます。#88875#81385 をクローズしました。#90220 (Grigorii Sokolik) 。
  • ログが最後にコミットされた索引より前にある場合に、Keeper のログエントリの欠落を正しく処理します。 #90403 (Antonio Andelic).
  • JBODボリュームでも正しく動作するよう、min_free_disk_bytes_to_perform_insert 設定を改善しました。#90878 (Aleksandr Musorin) 。
  • S3 table engine と s3 table function の named collections で storage_class_name 設定を指定できるようになりました。#91926 (János Benjamin Antal) 。
  • system.zookeeper 経由で補助 ZooKeeper への insert をサポートしました。#92092 (RinChanNOW).
  • Keeper向けに、新たに KeeperChangelogWrittenBytesKeeperChangelogFileSyncMicrosecondsKeeperSnapshotWrittenBytesKeeperSnapshotFileSyncMicroseconds のプロファイルイベントと、KeeperBatchSizeElements および KeeperBatchSizeBytes のヒストグラムメトリクスを追加しました。 #92149 (Miсhael Stetsyuk).
  • 新しい設定 trace_profile_events_list を追加し、trace_profile_event によるトレースを指定したイベント名のリストに限定できるようにしました。これにより、大規模なワークロードでも、より精密なデータ収集が可能になります。#92298 (Alexey Milovidov).
  • 一時停止可能な failpoint に対する SYSTEM NOTIFY FAILPOINT のサポートを追加しました。 - SYSTEM WAIT FAILPOINT fp PAUSE/RESUME のサポートを追加しました。 #92368 (Shaohua Wang).
  • system.data_skipping_indicescreation (暗黙/明示) カラムを追加しました。#92378 (Raúl Marín) 。
  • YTsaurus dyn tables のカラムの説明を Dictionary ソースに渡せるようになりました。#92391 (MikhailBurdukov).
  • #63985 では、TLS 設定に必要なすべてのパラメータをポート単位で指定できるようにし (コンポーザブルプロトコル を参照) 、グローバルな TLS 設定に依存しなくて済むようにしました。ところが、この実装では依然としてグローバルな openSSL.server 設定セクションが存在することを暗黙的に前提としており、ポートごとに異なる TLS 設定が必要な構成とは相性がよくありません。たとえば keeper-in-server デプロイメントでは、keeper 間の通信と clickhouse client 接続向けに、それぞれ別個の TLS 設定が必要です。 #92457 (Miс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 indices = 1EXPLAIN indexes = 1 の alias としてサポートしました。#92483 をクローズしました。#92774 (Pranav Tiwari).
  • Parquet リーダーで、Tuple または Map カラムを JSON として読み取れるようになりました。select x from file(f.parquet, auto, 'x JSON') は、f.parquet 内のカラム x の型が tuple または map であっても動作します。#92864 (Michael Kolupaev)。
  • Parquet リーダーで空のタプルをサポートしました。 #92868 (Michael Kolupaev).
  • Azure Blob Storage で native copy が BadRequest (例:無効な block list) で失敗した場合、read-write copy にフォールバックするようにしました。これまでは、異なるストレージアカウント間でブロブをコピーする際に発生していた Unauthorized エラーに対してのみ、この処理を行っていました。しかし、“The specified block list is invalid” エラーが発生することもあります。そのため、すべての native copy の失敗で read & write にフォールバックするよう、条件を更新しました。#92888 (Smita Kulkarni).
  • EC2 インスタンスプロファイルの認証情報を使用して多数の同時実行 S3 クエリを実行する際に発生する、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).
  • リフレッシャブルmaterialized view のバックアップをスキップするためのバックアップ設定 backup_data_from_refreshable_materialized_view_targets が導入されました。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 プロファイルを出力できるようになり、heap profile の生成時にバイナリが不要になりました。#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).
  • 一定の確率で cache の正確性チェックをランダムに行うようにしました。#93439 (Kseniia Sumarokova) 。
  • JSON において、一方がリテラルでもう一方がネストされたオブジェクトである場合に、重複したパスを許可する設定 type_json_allow_duplicated_key_with_literal_and_nested_object を追加しました。例: {"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).
  • join の並べ替えで実行時のハッシュテーブルサイズの統計を使用するかどうかを制御するため、use_hash_table_stats_for_join_reordering 設定が追加されました。この設定はデフォルトで有効になっており、collect_hash_table_stats_during_joins の既存の動作は維持されます。#93912 (Vladimir Cherkasov).
  • ユーザーは、system.server_settings テーブルでネストされたグローバルなサーバー設定 (例: logger.level) を部分的に確認できるようになりました。これは、固定された構造を持つ設定 (リスト、列挙、繰り返しなどがないもの) のみを対象としています。#94001 (Hechem Selmi).
  • QBit が等価比較できるようになりました。#94078 (Raufs Dunamalijevs) 。
  • Keeper が破損したスナップショットや不整合な変更ログを検出した場合は、手動で中断したりファイルを自動的にクリーンアップしたりする代わりに、例外をスローするようになりました。これにより、手動での介入を前提とした、より安全な Keeper の動作が実現されます。#94168 (Antonio Andelic).
  • CREATE TABLE の失敗時に不要な残骸が残る可能性がある問題を修正しました。 #94174 (Azat Khuzhin).
  • パスワードで保護された TLS 秘密鍵の使用時に発生する、未初期化メモリへのアクセス (OpenSSL のバグ) を修正しました。#94182 (Konstantin Bogdanov).
  • chdig を v26.1.1 に更新しました。#94290 (Azat Khuzhin) 。
  • S3Queue ordered mode で、より汎用的なパーティション化をサポートしました。 #94321 (Bharat Nallan).
  • 設定 allow_statistics_optimize のエイリアスとして use_statistics を追加しました。これにより、既存の設定 use_primary_key および use_skip_indexes との整合性が高まります。#94366 (Robert Schulze).
  • Numbers から Enums への変換時に要素が存在するかどうかを確認するための設定 input_format_numbers_enum_on_conversion_error を有効にしました。#94384 (Elmi Ahmadov) 。
  • S3(Azure)Queue の ordered mode で、追跡制限に基づいて失敗したノードをクリーンアップするようになりました (以前は、失敗済みノードと処理済みノードの両方について Unordered mode でのみ行われていましたが、今後は Ordered mode でも失敗したノードに限って行われます) 。 #94412 (Kseniia Sumarokova).
  • clickhouse-local の default ユーザーでアクセス管理を有効にしました。clickhouse-local のデフォルトユーザーには access_management 権限がなかったため、本来は無制限であるべきにもかかわらず、DROP ROW POLICY IF EXISTS のような操作が ACCESS_DENIED エラーで失敗していました。#94501 (Alexey Milovidov).
  • YTsaurus の辞書およびテーブルで named collection を有効にしました。#94582 (MikhailBurdukov).
  • S3 および Azure Blob Storage 向けの BACKUP/RESTORE で、SQL で定義した named collection をサポートしました。#94604 をクローズします。#94605 (Pablo Marcos) 。
  • ordered モードの S3Queue で、パーティションキーに基づくバケット分けをサポートしました。#94698 (Bharat Nallan) 。
  • 最も長時間実行されているマージの経過時間を示す非同期メトリクスが追加されました。#94825 (Raúl Marín) 。
  • IcebergBitmapPositionDeleteTransform を使用して位置削除を適用する前に、対象ファイルの確認を追加しました。 #94897 (Yang Jiang).
  • これで view_duration_ms は、グループ内の各スレッドの継続時間の合計ではなく、グループがアクティブだった時間を示すようになりました。 #94966 (Sema Checherinda).
  • 64 個に制限されていた hasAnyTokens および hasAllTokens 関数の検索トークン数上限を削除しました。例: 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 を追加しました。Closes: #56144#56240 (Nikolay Degterinsky) 。
  • Icebergテーブルでデータファイルと position delete file を読み込む際にフォーマットパーサーのリソースを共有することで、メモリ割り当てを削減しました。 #94701 (Yang Jiang).

バグ修正 (正式な安定版リリースでユーザーに影響する不具合)

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

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

  • jemalloc のヒーププロファイリング機能を利用して、ClickHouse SQL パーサーにおけるメモリ割り当てをプロファイリングするためのツール群を追加しました。#94072 (Ilya Yatsishin).
  • パーサーでのメモリ割り当てのデバッグを簡単にするツールを追加しました。このツールは、クエリを AST 表現にパースする前後で jemalloc の stats.allocated メトリックを使い、何が割り当てられたかを表示します。さらに、前後でプロファイルをダンプして、どこで割り当てが発生したかを示すレポートを作成できるメモリプロファイリングモードにも対応しています。#93523 (Ilya Yatsishin).
  • 推移的な libc++ インクルードを削除しました。#92523 (Raúl Marín).
  • 一部の sequential テストを並列化しました: https://github.com/ClickHouse/ClickHouse/pull/93030/changes#diff-c3a73510dae653c9bbfa24300b32f5d6ec663fd4e72cc4a3d5daa6e4342915df. #93030 (Nikita Fomichev).
  • 一部のビルドフラグを整理しました。#93679 (Raúl Marín).
  • c-ares を v1.34.5 から v1.34.6 に更新しました。これにより、ClickHouse には影響しない c-ares の CVE-2025-62408 に対応しています。#94129 (Govind R Nair).
  • curl 8.18.0 を使用するようにしました。#94742 (Konstantin Bogdanov).
最終更新日 2026年6月25日