ClickHouse リリース 26.2、2026-02-26。プレゼンテーション 、ビデオ
後方互換性を持たない変更
デフォルトでは、すべての insert で重複排除が有効になります。以前は、非同期 insert と MV では無効でしたが、同期 insert では有効でした。目的は、どちらの insert 方法でも同じデフォルト設定にすることです。クラスタで重複排除を明示的に無効にしている場合は、従来の動作を維持するために deduplicate_insert='backward_compatible_choice' を明示的に設定する必要があります。deduplicate_blocks_in_dependent_materialized_views についても同様です。#95970 (Sema Checherinda ).
統計値の保存形式が改善され、すべての統計値が1つのファイルに保存されるようになりました。#93414 (Anton Popov )。テーブル統計値を明示的に有効化していない場合は、この項目は無視してかまいません。
S3(Azure)Queue のインメモリメタデータに制限を設けました。システムテーブル名は azure_queue から azure_queue_metadata_cache に、system.s3queue から s3queue_metadata_cache に変更されました。#95809 (Kseniia Sumarokova ).
以前は、Variant カラムに関数を適用すると、variant のサブタイプがその関数と互換性がない場合でも黙って NULL が返されていましたが、現在は例外を送出するようになったため、その NULL を返す挙動に依存していたクエリが動作しなくなる可能性があります。#95811 (Bharat Nallan ).
PostgreSQL の DATE カラムは、ClickHouse で Date32 として推論されるようになりました (以前のバージョンでは Date として推論されていましたが、その結果、狭い範囲を超える値でオーバーフローが発生していました) 。Date32 の値を PostgreSQL に書き戻して insert できるようになりました。#73084 をクローズします。#95999 (Alexey Milovidov ) 。
do_not_merge_across_partitions_select_final 設定の意味が、より明確になりました。以前は、config でこの設定が明示的に指定されていない場合、この機能が自動的に有効になることがありました。この挙動は繰り返し混乱を招き、残念ながら production でいくつかの問題も引き起こしました。現在はルールがよりシンプルになっています。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 ).
新機能
ユーザーは、デバッグやローカル開発に役立つ ClickStack (オブザーバビリティ UI) を ClickHouse から直接利用できるようになりました。 #96597 (Aaron Knudtson ).
認証方式として、時間ベースのワンタイムパスワード (TOTP) に対応しました。 #71273 (Vladimir Cherkasov ) 。
lazy_load_tables データベース設定を追加しました。有効にすると、データベースの起動時にテーブルは読み込まれず、代わりに軽量な StorageTableProxy が作成され、実際のテーブルエンジンは最初のアクセス時に実体化されます。#96283 (xiaohuanlin ).
input_format_max_block_wait_ms 設定を追加し、タイムアウト時にデータ block を出力できるようにするとともに、HTTP接続が予期せず閉じられた場合でも残りのデータを処理できるようにしました。 #94509 (Mostafa Mohamed Salah ) 。
Google BigLake catalog との連携。これにより #95339 がクローズされます。 #97104 (Konstantin Vedernikov ).
利用可能なすべてのトークナイザーを表示する system.tokenizers システムテーブルを追加しました。 #96753 (Robert Schulze ).
UDF の読み込み状態と設定を監視するための新しいシステムテーブル system.user_defined_functions を追加しました。 #90340 (Xu Jia ).
jemalloc でビルドされたサーバーのメモリー使用量を診断するために、jemalloc メモリーアロケーターの統計値 (malloc_stats_print 経由) を公開する system.jemalloc_stats テーブルを追加しました。あわせて、これらの統計値を対話的にビジュアライゼーションできる /jemalloc.html HTTP endpoint を ClickHouse の HTTP interface に追加しました。#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 によって、スタックの重み付けにライブなアロケーション数 (true) を使うか、ライブバイト数 (false、デフォルト) を使うかを制御します。これにより、jemalloc ヒーププロファイルのメモリプロファイリングやフレームグラフのビジュアライゼーションが容易になります。#93248 を修正しました。#97218 (Antonio Andelic ) 。
default_dictionary_database 設定を追加しました。これにより、ClickHouse は、データベース修飾子なしで参照された external dictionaries を、指定したデフォルトデータベース内で解決できるようになります。これにより、XML で定義されたグローバル dictionaries から、SQL で定義されたデータベース単位の dictionaries への移行が容易になり、既存の dictionary クエリ (例: dictGet('name', …)) を変更せずに引き続き利用できます。#91412 (Dmitrii Plotnikov ).
DatabaseReplicated が補助 ZooKeeper に対応。 #91683 (RinChanNOW ).
素数が昇順で格納された新しいテーブル関数 primes と新しいシステムテーブル system.primes を実装しました。#90839 をクローズします。#92776 (Nihal Z. Miaji ).
非同期insertで並列クォーラムがサポートされました。insertされたデータはクォーラムにレプリケートされます。重複が見つかった場合、クエリは以前にinsertされたデータもレプリケートされるまで待機します。 #93356 (Sema Checherinda ).
値を sRGB から OKLAB に、またその逆に変換する関数 colorOKLABToSRGB, colorSRGBToOKLAB を追加しました。#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 ) 。
サーバー内の既存の failpoint と、それらが有効かどうかを確認するための system.fail_points を追加しました。これにより、テストの自動化が容易になります。#96762 (Pedro Ferreira ).
Glue catalog へのロールベースアクセスを追加。設定 aws_role_arn と、必要に応じて aws_role_session_name を使用します。#90825 (Antonio Andelic ).
設定 add_minmax_index_for_temporal_columns が追加されました。有効にすると、すべての Date、Date32、Time、Time64、DateTime、DateTime64 型のカラムに対して minmax 索引が自動的に作成されます。#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、MODIFY COLUMN のみがサポートされていました。#97455 (murphy-4o ).
実験的機能
テキスト索引が一般提供になりました。#96794 (Robert Schulze ).
量子化ビット packed ベクトルストレージ用の 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 に従うようになりました。有効にすると、推論されたタプル型を Nullable(Tuple(...)) にできるため、欠落したネストオブジェクトが NULL 要素のタプルではなく NULL になります。#95525 (Nihal Z. Miaji ).
use_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 ) 。
統計値の保存形式が改善され、すべての統計値が1つのファイルに保存されるようになりました。 #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(...) のようなテーブル関数で並列レプリカを使用する場合、テーブル関数を 1 つのサブクエリでラップしたクエリも、以前はテーブル関数への直接参照のみが並列化の対象でしたが、現在はレプリカ間で自動的に並列化されるようになりました。#92264 をクローズします。#96332 (phulv94 ).
キャッシュ内のデータファイルとシステムファイルを別々のセグメントに分割できるようにしました。 #87834 (MikhailBurdukov ).
ColumnVector::replicate に動的ディスパッチを実装し、一部の hash join 操作を高速化しました。#79573 (Raúl Marín ).
複雑な述語を含むケースにおける並列 hash join のパフォーマンスを改善しました。以前は、join されなかった行を 1 つのスレッドで処理していましたが、これは最適ではありませんでした。この最適化では、join されなかった行の処理を複数スレッドに分散して並列化します。parallel_non_joined_rows_processing 設定で切り替えできます。デフォルトで有効です。 #92068 (Yarik Briukhovetskyi ).
JSON型のパースをわずかに最適化しました。#93614 (Pavel Kruglov ) 。
AST のメモリ使用量を改善しました。ハイライトが使用されず、VALUES の解析も行われない場合はフィールドが使われないため、この最適化は有効です。#93974 (Ilya Yatsishin ) 。
名前付き Tuple AST オブジェクトのメモリ消費を最適化しました。カラム名を汎用的な AST リテラルノードに保持する代わりに、tuple object 内に文字列として格納します。 #94704 (Ilya Yatsishin ).
追加のリンカーオプションにより、脱仮想化が改善されました。#94737 (Nikita Taranov ).
ZooKeeperリクエストをバッチ処理することで、多数のパーツを持つReplicatedMergeTreeテーブルにおけるレプリカのクローン性能を改善。 #94847 (c-end ).
read step にすでに PREWHERE フィルタリングがある場合、新しいフィルタリングを追加できませんでした。この変更では、ランタイムフィルターも PREWHERE にプッシュダウンできるように、PREWHERE の最適化を JOIN ランタイムフィルターの最適化後まで遅らせます。#95838 (Alexander Gololobov ).
x86 で動的ディスパッチを利用し、T64 codec の圧縮を高速化しました。#95881 (Raúl Marín ) 。
可能な場合 (NOT 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_map と std::mutex の代わりに std::array<std::atomic<UInt32>, N> を使用します。#95962 (Miсhael Stetsyuk ) 。
メモリを節約するため、ProfileEvents::Counter の 64 バイトアラインメントを削除しました。 #96097 (Azat Khuzhin ).
メモリ最適化: CachedOnDiskReadBufferFromFile 構造体のサイズを50分の1に削減。 #96098 (Azat Khuzhin ).
空の場合、hash table のリサイズ時に古いデータをコピーしないようにしました。 #96180 (Raúl Marín ).
RIGHT OUTER JOINでのJOINランタイムフィルターをサポートしました。#96183 (Hechem Selmi ) 。
最適化 enable_join_runtime_filters がデフォルトで有効になりました。#89314 (Alexey Milovidov ) 。
従来、テキスト索引の直接読み取り最適化は、すべてのパーツにマテリアライズ済みのテキスト索引がある場合にのみ適用されていました。このPRでは部分的なサポートが追加され、一部のパーツにマテリアライズ済みのテキスト索引がある場合はそれらのパーツでそれを使用し、マテリアライズ済みのテキスト索引がないパーツでは元のフィルタ式を実行する方式にフォールバックします。 #96411 (Anton Popov ).
時間カラムに minmax 二次索引を、query_id/initial_query_id カラムに bloom_filter 索引を system logテーブルに追加し、フィルタリングを高速化しました。 #96712 (Alexey Milovidov ) 。
遅延マテリアライゼーションの最適化が、UNION ALL クエリの先頭の分岐だけでなく、すべての分岐に適用されるようになりました。異なる MergeTree テーブルからの、ソート済みで件数制限のある複数の読み取りを UNION ALL で組み合わせるクエリでは、すべての分岐でカラムの読み取りを遅延できるようになり、I/O を削減できます。#96832 (Federico Ginosa ).
不要なデータコピーをなくし、数値カラムの最小値/最大値計算をベクトル化することで、INSERT時の minmax スキップ索引の計算を最適化しました。#97392 (Raúl Marín ).
Storage DeltaLake は、Delta Lake のメタデータから count() の結果を取得し、system.tables に正しいテーブル統計情報 (合計バイト数/行数) を表示するようになりました。 #96190 (Kseniia Sumarokova ).
MergeTree の読み取り時には、未使用のカラムは読み取りステップからも除外されます。これは、フィルタリングが PREWHERE にプッシュダウンされる場合に特に有用です。#89982 (János Benjamin Antal ).
SHOW TABLES クエリの処理を、テーブル名のみを取得するようにして改善し、getLightweightTablesIterator がテーブル名のみを含む構造を返すようにしました。#93835 を解決しました。#94467 (Smita Kulkarni ).
assumeNotNull、coalesce、ifNull を改良し、キーカラムがこれらの関数でラップされている場合でも、範囲述語に対して主キーおよびスキップ索引のプルーニングを有効化しました。#94689 をクローズしました。#94754 (Nihal Z. Miaji ).
getChildren Keeper リクエストに with_data および with_stat 拡張を追加しました。これにより、子要素の一覧だけでなく、それらの stat および/または data も 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 が有効な場合に生成される pipeline ストリームの数を制限します。過剰なメモリ消費を防ぐのに役立ちます。 #96478 (Nikita Taranov ).
複数の join に対する等価 Set 最適化を実装しました。複数の連続する INNER JOIN 操作を含むクエリで、フィルタリングのプッシュダウン最適化が強化されました。テーブルが等価なカラムで join されている場合 (例: t1 JOIN t2 ON t1.id = t2.id JOIN t3 ON t2.id = t3.id WHERE t1.id > 10) 、この連鎖内の任意のテーブルに適用されたフィルタは、すべてのテーブルに自動的にプッシュダウンされます。#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_level と logger.shutdown_console_level により、ClickHouse の起動時および終了時のコンソールログレベルをそれぞれ上書きできるようになりました。#95919 (Garrett Thomas ) 。
config の再読み込み時に、コマンドラインによるオーバーライドを尊重する。#80294 をクローズ。#80295 (Alexey Milovidov ) 。
mongodb テーブル関数で、名前付きコレクションのパラメーターに対するキー・バリュー形式のオーバーライドを許可しました。#89616 (vanchaklar ) 。
Iceberg テーブルの read-in-order 最適化が、単純なカラム参照だけでなく、icebergBucket や icebergTruncate のような複雑なソート関数でも利用できるようになりました。#90256 (Konstantin Vedernikov ).
診断機能を改善するため、system.mutations に parts_postpone_reasons という名前の新しいカラムを追加し、パーツの延期理由を表示できるようにしました。 #92206 (Shaohua Wang ).
DataflowStatisticsCache で、読み取る行数の変化 (挿入/削除やクエリ条件キャッシュの使用によるもの) を追跡します。#93636 (Nikita Taranov ) 。
SYSTEM RESET DDL WORKER [ON CLUSTER] クエリをサポートしました。これにより、DDLWorker のメインスレッドの状態をリセットできます。ホスト ID が更新された際に、レプリカのアクティブ状態を更新するのに役立ちます。#93780 (Tuan Pham Anh ).
MUTATE_PART および MUTATE_PART_START のイベントタイプについて、system.part_log で mutation_ids をサポートしました。#93811 (Shaohua Wang ) 。
バックグラウンド操作 (Mutate、Merge) は、'background' profile を通じて個別に設定できるようになりました。以前は、この種の操作は 'default' profile を通じて通常のクエリと同じ設定を共有していました。#93905 (Arsen Muk ).
system.crash_log に追加する情報を増やしました。#94112 #95857 (Miсhael Stetsyuk ) 。
実行中の非内部クエリ数を追跡するため、新しい QueryNonInternal メトリクスを追加しました。このメトリクスは ClickHouseMetrics_QueryNonInternal として公開され、非内部クエリにのみ適用される max_concurrent_queries 制限に対するクエリの同時実行数を Operator が監視するのに役立ちます。#94284 (Ashwath Singh ).
RuntimeDataflowStatisticsCacheUpdater が、コンパクトパーツ内のカラムに対する入力バイトの統計値収集に対応しました。#94626 (Nikita Taranov ).
Keeper の設定ミスによりクラスタの構築が失敗する問題を検出するチェックを追加しました。 #60932 をクローズします。 #94682 (Konstantin Bogdanov ).
パートの読み込み時における JSON プレフィックスのデシリアライズを改善しました。#94848 (Pavel Kruglov ) 。
ターゲットテーブル上のmaterialized viewsをトリガーする完全なINSERT pipelineを使用するよう、writeをリファクタリングしました。 #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 の dirty page decay を無効にします。同じ時間だけ ClickHouse が通常状態で動作している場合は、jemalloc の dirty page decay を再度有効にします。#95145 (Antonio Andelic ).
s3Queue の keeper_path 設定を使用した、S3Queue 向けの補助的な ZooKeeper サポート。#95203 (Diego Nieto ) 。
有効期限 (TTL) のパーツ削除マージで max_parts_to_merge_at_once に従うようにしました。#95315 (Kseniia Sumarokova ).
物理的な接続元を反映するため、query_log に connection_address と connection_port を追加しました (プロキシ経由で接続し、auth_use_forwarded_address=1 の場合、address と port は置き換えられるため) 。#95471 (Yakov Olkhovskiy ) 。
クエリ条件キャッシュの不正確なメモリ使用量の計上を修正しました。主な問題は、複数の文字列 (part_name、テーブル ID、SQL 条件全体など) で構成されるキャッシュキーが考慮されていなかったことです。#95478 (Nikita Mikhaylov ).
埋め込み設定で起動したサーバーでは、通常の設定と同様に、ユーザーと権限を操作し、それらを access ディレクトリに保存できるようになりました。これにより、テストが容易になります。また、埋め込み設定および clickhouse-local で、すべての access_control_improvements を有効化しました。 #95481 (Alexey Milovidov ).
アクセスが拒否された場合に認証情報をチェックするよう促すヒントを含めるよう、S3 認証エラーメッセージを改善しました。 #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 ).
Database Replicated でのテーブル取得を改善するため、with_data Keeper 拡張のサポートを追加しました。#96090 (Nikolay Degterinsky ) 。
chdig を v26.2.1 に更新 (新機能の追加と macOS のサポート) 。#96113 (Azat Khuzhin ) 。
numbers と primes のフィルタリングのプッシュダウンを改善しました。ClickHouse は、正確な境界を導出できない場合でも、WHERE 条件から保守的な値の範囲を導出し、それに応じてシーケンス生成を制限できるようになりました (たとえば、WHERE number % 5 < 2 AND number > 100 AND number < 300 の場合、ClickHouse は 100 から 300 までの数値のみを生成し、その後で述語を適用します) 。これにより、無制限スキャンを回避できます。#84853 をクローズしました。#93913 をクローズしました。#96115 (Nihal Z. Miaji ).
フォーマッタはこれまで、解析上の曖昧さを避けるため、COMMENT 句がある場合に SELECT を括弧で囲んでいました。代わりに AS SELECT の前に COMMENT を出力するようにし、括弧を使わずに曖昧さを解消しました。#96293 (Alexey Milovidov ).
allow_impersonate_user config setting は、単独のサーバー設定ではなく、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.instrumentation の function_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 キャッシュが無効な場合でも適用されます。 #96810 (c-end ).
jemalloc のイントロスペクションを強化しました。#96840 (Azat Khuzhin ) 。
/play Web UI でシステムテーブルをクエリした際に QUERY_CACHE_USED_WITH_SYSTEM_TABLE が発生する問題を修正しました。#96869 (Alexey Milovidov ) 。
Web UI を改善: 実行中のクエリであることがわかるように favicon を変更し、補助クエリ (データベースとテーブルの読み込み) で発生したエラーを黙って無視せず表示するようにしました。#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 ).
より多くのケースでパース可能なSQLを生成できるよう、クエリ難読化ツール (clickhouse-format --obfuscate) を修正しました。#97584 (Alexey Milovidov ) 。
バグ修正(公式安定版リリースにおけるユーザー可視の不具合)
Enum の要素の拡張など、メタデータのみの ALTER の後に、プロジェクションを用いた集計の最適化で例外が発生することがあります。#84143 (Alexey Milovidov ) 。
materialized view は、作成されたデータベースを実行コンテキストとして使用するようになりました。これは次を意味します: - view の SELECT クエリで参照される名前では、明示的なデータベース修飾を省略できます - 明示的なデータベース修飾が指定されていない場合は、materialized view が作成されたデータベースと同じものと見なされます。 #88193 (Dmitry Kovalev ).
ON CLUSTER 使用時の CREATE USER の認証メソッドにおけるクエリパラメータの置換を修正しました。認証メソッド内のクエリパラメータ (例: パスワード) が置換されていなかったため、リモートノードで UNKNOWN_QUERY_PARAMETER エラーが発生していました。#92777 (xiaohuanlin ) 。
has、mapContainsKey、mapContainsValue 関数におけるテキスト索引解析の不整合を修正しました。以前は、これらの関数を使用するクエリで、式がテキスト索引を使用して評価されるかどうかによって、返される結果が異なる可能性がありました。#93578 (Anton Popov ).
スタックアンワインド中に dropReplicationSlot が例外を送出した場合、テーブルを MaterializedPostgreSQL データベースにアタッチするとクラッシュする問題を修正しました。 #96871 (Alexey Milovidov ).
同じファイルをめぐって競合するバックアップを多数同時に実行すると、サーバーがクラッシュすることがありました。#93659 (Alexey Milovidov ).
並列レプリカおよび非MTテーブルを使用するJOINを含むクエリを修正しました。#92056 をクローズしました。#93902 (Igor Nikonov ).
名前にドットを含む Iceberg のカラムで、値として NULL が返される問題を修正しました。 #94335 (Mikhail Koviazin ) 。
stringJaccardIndexUTF8 における UTF-8 文字列の処理を修正し、パフォーマンスを向上させました。#94613 (Joanna Hulboj ) 。
WITH FILL STALENESS におけるオーバーフローの可能性 (未定義動作や無限ループの原因となるもの) を修正しました。大きなジャンプによって発生する可能性がある無限ループを修正しました。旧アナライザーのサポート (主にストレステスト向け) を追加しました。 #94663 (Azat Khuzhin ).
ホスト名が複数のアドレスに解決され、リモートレプリカがフリーズした際に分散クエリがハングすることがある問題を修正しました。 #94726 (c-end ).
左端のテーブル式が -Cluster テーブル関数である場合に、複数のテーブル式を join した際に不正な結果になる問題を修正しました。#89996 を解決しました。#94748 (Konstantin Bogdanov ).
toWeek、toYearWeek、toStartOfWeek、toLastDayOfWeek、toDayOfWeek を含む述語に対する主キーおよびスキップ索引の不正なプルーニングを修正し、LowCardinality(String) を使用する有効なクエリで、これらの関数の一部で発生していた例外も修正しました。#94816 (Nihal Z. Miaji ) 。
SQL Security を持つビューに対する ATTACH クエリで、不要な権限チェックのスキップを除去しました。これにより、ユーザーが必要なアクセス権を検証せずに definer 付きのビューをアタッチした場合に起こり得る権限昇格を防止します。#94865 (pufit ).
ReplicatedMergeTree の起動時に、delete_tmp_* ディレクトリが並行して削除されることで発生していたクラッシュを修正しました。#94892 (myeongjun ).
materialized view を持つ Iceberg テーブルへの INSERT で重複排除に関する情報が失われ、例外が発生していた問題を修正しました。#94938 (Daniil Ivanik ).
SYSTEM DROP QUERY CACHE TAG 'TAGNAME' ON CLUSTER <CLUSTERNAME> により、クラスタ全体のキャッシュが削除されてしまう不具合を修正しました。#94978 (Rory Crispin ) 。
Vertical merge後も一定の索引粒度 (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 ) 。
USING clause を伴う複数の joins が使用される場合について、ソーステーブル由来の修飾カラムの型推論を修正しました。従来は、後続の joins でそのカラムが使われていない場合でも、基になるソースカラムの型が共通スーパータイプに誤って更新されていました (たとえば SELECT t2.a FROM t1 LEFT JOIN t2 USING (a) LEFT JOIN t3 USING (a) では、t2.a カラムは最初の join でのみ使用されるため、その型は t1.a と t2.a のスーパータイプであるべきであり、t3.a は含まれるべきではありません) 。この問題により、関数が実際の実行計画に現れる型とは異なるカラム型を想定した場合、論理エラーやクラッシュが発生する可能性がありました。 #95157 (Vladimir Cherkasov ).
manifest の .avro リストおよびファイルの内容を取得する際のカラム変換を、一度だけ行うようにしました。 #95164 (Daniil Ivanik ).
過剰なメモリ使用や誤ったカラム統計につながる可能性があった、JSONカラムサイズの誤った計算を修正しました。 #95207 (Azat Khuzhin ).
論理更新後に大きなパッチパーツを適用する際の不正確なメモリ使用量の計上を修正しました。以前は、大きなパッチパーツを適用するとメモリ使用量が過大になり、サーバープロセスが OOM killer によって強制終了される可能性がありました。#95231 (Anton Popov ).
索引解析中に、max_parallel_replicas を使用する分散クエリがローカルレプリカにフォールバックした場合、未定義動作によって誤った結果または例外が発生する可能性があった問題を修正しました。#95263 (Azat Khuzhin ).
group_by_overflow_mode が any に設定されている場合の、sum および時系列におけるスパースカラムの集計を修正しました。#95301 (Mikhail Koviazin ).
plain_rewritable ディスクポリシーにおいて、メタデータファイルの unlink の途中でネットワークエラーが発生すると、ストレージが不整合な状態のまま残る可能性があるという信頼性の問題を修正しました。#95302 (Mikhail Artemenko ).
Iceberg で Date を Date32 に置き換えました。#95322 (Konstantin Vedernikov ) 。
redis テーブル関数の password 引数は、ログおよびシステムテーブル (例: query_log) でマスクされるようになりました。#95325 (János Benjamin Antal ) 。
テーブルに対する分散クエリの実行中に、そのテーブルが削除または変更され、例外や誤った結果を引き起こす可能性があった不具合を修正しました。#95356 (Azat Khuzhin ).
分散クエリで負の LIMIT/OFFSET を使用した場合に、一部のケースで発生していた論理エラーを修正しました。#95357 (Nihal Z. Miaji ).
SSH を使用して接続する際に clickhouse-client がパスワードを2回要求するバグを修正しました。#95372 (Isak Ellmer ) 。
storage S3(Azure)Queue のデータレースを修正しました。#95385 (Kseniia Sumarokova ).
prewhere 内のラムダ式が原因で発生する prewhere のフィルタリングエラーを修正しました。#95395 (Xiaozhe Yu ) 。
集約関数の引数が Nullable の場合に sum/count/avg を sumCount() に書き換えないよう、optimize_syntax_fuse_functions を修正しました。#95390 をクローズします。#95441 (Nihal Z. Miaji ).
キャンセル時に分散クエリで発生する可能性があるクラッシュを防止しました。#95466 (Aleksandr Musorin ) 。
S3(Azure)Queueエンジンからのストリーミングにおける重複排除を修正しました。#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 権限を持たないユーザー (ただしテーブル関数に対する権限は持つユーザー) が、そのプロジェクションからデータを読み取れる状態になっていました。この修正により、mergeTreeIndex と mergeTreeAnalyzeIndexes にすでにあるものと同じアクセスチェックが追加されます。#95480 (Alexey Milovidov ).
Dynamic/JSON 型の動的サブカラムの size サブカラムを読み取る際に発生する可能性がある論理エラーを修正しました。#95573 (Pavel Kruglov ) 。
#94262 で導入された (experimental) ゼロコピーレプリケーションの回帰を修正しました。この不具合により、他のレプリカで共有パーツの取得が完了する前に、それらが削除される可能性がありました。#95597 (filimonov ) 。
JSON 配列に tupleElement を適用した際のクラッシュを修正しました。#95581 をクローズしました。#95647 (Pavel Kruglov ).
USING を伴う JOIN の VALUES 句内のラムダ関数で matcher (*) を使用した際に発生する logical error 例外を修正しました。#93675 をクローズしました。#95661 (Vladimir Cherkasov ).
There was an error: Cannot obtain error message という論理エラーを修正しました。このエラーは、distributed DDL の完了を待機している間に Replicated database を並行して削除した場合に発生していました。修正: #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データのSquashの不具合を修正。 #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 データ型でのパスのスキップ処理を修正しました。以前は JSON(SKIP path) を使用すると、プレフィックス path を持つすべての JSON キーがスキップされ、"pathpath" のようなキーまで対象になっていたため、挿入時にこれらのパスでデータが失われる可能性がありました。現在は修正され、キー "path" のみがスキップされます。#95948 (Pavel Kruglov ).
不明な projections を含むパートは、永久に失われたものと見なされるべきではありません。 #95952 (Mikhail Artemenko ).
Nullable(String) キーを持つ Join テーブルで、空文字列が NULL になってしまう問題を修正しました。#71414 をクローズしました。#96002 (Alexey Milovidov ).
これで、PostgreSQL エンジンで BOOLEAN[] を正しく読み取れるようになりました。#72754 を修正しました。#96006 (Alexey Milovidov ) 。
空のファイルを読み取る場合の ProtobufList 形式を修正しました。#70059 をクローズしました。#96007 (Alexey Milovidov )。
空のテーブルで ProtobufList 形式がゴーストレコードを生成する不具合を修正しました。#72596 をクローズしました。#96010 (Alexey Milovidov ).
型推論時の、分散クエリとPREWHEREの特殊なケースで発生する UInt64 と Int32 間の if 関数の型不一致を修正しました。#70017 をクローズしました。#96012 (Alexey Milovidov ).
Bool 型を使用する JIT コンパイル済みクエリを修正しました。#96013 (Alexey Milovidov ).
SQLite の TEXTカラムから UUIDカラムを読み取る際の論理エラーを修正しました。#71263 をクローズしました。#96016 (Alexey Milovidov ).
SQLiteエンジンにおけるDateTime、Date、UUID、およびその他の型の変換を修正しました。#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 manifest ファイルで、エントリ内に参照データファイルが存在していても値が null の場合、対応するデータファイルの正しい範囲情報を取得できませんでした。この PR でこのバグを修正しました。#96061 (Daniil Ivanik ) 。
デフォルトロールの取り消しに関する不具合を修正しました。#96103 (Vitaly Baranov ) 。
use_primary_key が無効で、索引を使用する条件の論理和の数が非常に多いというまれな組み合わせで発生する、索引の解析における use-after-free を修正しました。 #96112 (Alexey Milovidov ).
明示的に指定されたサイズがデータ型のサイズと一致せず、かつバッファサイズが小さすぎる場合に Gorilla codec で発生するリグレッションを修正しました。以前のバージョンでは、展開時に例外がスローされていました。#78253 をクローズします。#96118 (Alexey Milovidov ).
1 つの dictionary が、その dictionary を再帰的に参照する Merge テーブルを参照している場合に、読み込まれた dictionaries でデッドロックが発生する問題を防止しました。#78360 をクローズします。#96120 (Alexey Milovidov ).
MySQL や JODA スタイルなどの固定幅でないフォーマッタで formatDateTime を使用した際に、未初期化値が使われる問題を修正しました。#96133 (Alexey Milovidov ).
設定 use_const_adaptive_granularity と index_granularity_bytes の組み合わせ (つまり「non-adaptive granularity」) により、読み取る行数が誤って計算され、例外が発生していました。 #96143 (Alexey Milovidov ).
S3 や Azure などのオブジェクトストレージ上のファイルライクなテーブルに対して無効な ALTER UPDATE mutation を実行すると、nullptr のデリファレンスが発生する可能性がありました。#92994 をクローズしました。#96162 (Alexey Milovidov ).
一部の権限取り消しがある場合に AccessRights::contains が誤った結果を返す問題を修正しました。#96170 (pufit ).
CTE で畳み込まれた定数に対するクエリ条件キャッシュのハッシュ衝突を修正しました。これにより、誤ったクエリ結果を招く可能性がありました。#96060 をクローズしました。#96172 (Alexey Milovidov ).
ProcessList におけるデッドロックの可能性を修正しました。これは、cancellation checker へのタスク追加中に memory overcommit tracker がトリガーされると、ロック順序の逆転が発生する可能性があるためです。 #96182 (Antonio Andelic ).
不正な JOIN の並べ替えにより、複数の INNER JOIN と組み合わせた外部 JOIN (LEFT、RIGHT、または FULL) を含むクエリが誤った結果を返すことがある不具合を修正しました。外部 JOIN の ON 条件が、先に JOIN された複数のテーブルのカラムを参照している場合、オプティマイザがすべてのテーブル依存関係を正しく考慮できず、JOIN を誤って並べ替えた結果、行が欠落することがありました。#95972 をクローズしました。#96193 (Vladimir Cherkasov ) 。
テーブルに統計値が定義されていない場合、ClickHouse はそれらを読み込もうとしません。これにより、統計値ファイルの有無をチェックするためのオーバーヘッド (100ms超) を回避できます。 (issue #96068 ) 。#96233 (Han Fei ) 。
optimize_syntax_fuse_functions を修正し、集約の引数が LowCardinality(Nullable) の場合は sum/count/avg を sumCount() に書き換えないようにしました。#95390 をクローズしました。#96239 (Nihal Z. Miaji ).
一部のケースで、not IN および not has 関数において誤ったパーティションプルーニングが行われる問題を修正しました。#96241 (Nihal Z. Miaji ) 。
ベクトル類似度索引でのstack-use-after-scopeを修正しました。#96259 (Alexey Milovidov ) 。
クエリの前にSQLコメントがあると、テストランナーがエラーヒントコメントを認識しない問題を修正しました。 #96336 (Yakov Olkhovskiy ).
テーブルの主キーが Nullable で、クエリで第1引数が定数の coalesce 関数を使用する場合に発生する KeyCondition の論理エラーを修正しました。 #96340 (Alexey Milovidov ).
GROUPING SETS、group_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 table function に対する 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 ).
Parquet V3ネイティブリーダーで、PREWHERE フィルタリングのカラムにブール値ではない UInt8 値が含まれている場合に発生する LOGICAL_ERROR 例外を修正しました。#96594 (Alexey Milovidov ) 。
メタデータの変更時に、レプリケーションされたテーブルで暗黙的に索引が再生成される問題を修正しました。 #96600 (Raúl Marín ).
DROP WORKLOADで発生するデータレースを修正しました。 #96614 (Sergei Trifonov ).
Iceberg テーブルへの書き込みで、パーティション化された insert によってパーティションファイル間のデータ分布が不正になる可能性があるバグを修正しました。 #96620 (Konstantin Vedernikov ).
制約付きの CREATE TABLE における heap-use-after-free を修正しました。#96669 (Nikita Taranov ) 。
バッファオーバーフローを防ぐため、bech32 の witness バージョンを検証するようにしました。#96671 (Raúl Marín ) 。
無効な auth_header 設定で Data Lake REST catalog が作成された場合に、system.tables でエラーが返される問題を修正しました。#96680 (Han Fei ).
ブロック内のすべての行がフィルタリングによって除外された場合に、TTL マージ後に _minmax_count_projection 経由で min(timestamp) がエポック (1970-01-01) を返してしまう問題を修正しました。#96703 (Raquel Barbadillo ).
iceberg_metadata_file_path 設定の検証を改善し、パストラバーサルを防止するとともに、指定されたメタデータファイルがテーブルディレクトリ内にあることを確認するようにしました。#96754 (Daniil Ivanik ).
GROUP BY で使用される Variant 引数付きの ifNull で発生するクラッシュを修正しました。#96790 (Alexey Milovidov ) 。
table_disk=1 設定があるテーブル間で発生していた cache キーの衝突を修正しました。 #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 ALL と INTERSECT 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に変換する際に、誤った結果になる問題を修正しました (例: DateTime型が混在するCASE/if/multiIf) 。値が適切にスケーリングされず、単に再解釈されていたため、式のコンパイルが有効になると誤ったタイムスタンプが生成されていました。#96879 (Alexey Milovidov ).
CoalescingMergeTree で、スキップ索引式が定数カラムを生成する場合 (例: 整数カラムに対する ifNotFinite(1, c0) の bloom_filter) に発生する論理エラー例外を修正しました。#96880 (Alexey Milovidov ) 。
HTTP で TLS が有効なネイティブプロトコルのポートに誤って接続した際に表示されるエラーメッセージ内の誤ったポート番号を修正しました。 #96881 (Alexey Milovidov ).
CTE およびサブクエリ内で、サブクエリごとの SETTINGS が file のようなテーブル関数に適用されない不具合を修正しました。#96882 (Alexey Milovidov ) 。
X509証明書の読み込み時に発生するBIOオブジェクトのメモリリークを修正しました。#96885 (Alexey Milovidov ) 。
具体的な値が必要な箇所にラムダ式が渡された場合 (たとえば arrayFold の accumulator 引数として) に、クエリアナライザーで LOGICAL_ERROR 例外が発生する問題を修正しました。 #96892 (Alexey Milovidov ).
複雑にネストされた型 (Nullable Enum 値を持つマップを含む Nullable Tuple の Array) をキャストする際に発生する ColumnNullable is not compatible with original 例外を修正しました。 #96924 (Alexey Milovidov ).
分片されたHASHED Dictionaryの並列読み込みにおいて、まれに一部の行が読み込まれないことがある競合状態を修正しました。 #96953 (Alexey Milovidov ).
REPLACE PARTITION とバックグラウンドmutationの間で発生する競合状態を修正し、置換後に古いデータと新しいデータの両方が見えてしまう可能性を解消しました。 #96955 (Alexey Milovidov ).
INNER JOIN と WHERE句で使用した際に arrayJoin 関数が重複した行を生成する不具合を修正しました。原因は、部分的な述語プッシュダウン最適化によって、arrayJoin を含むフィルタが JOIN より下に誤ってプッシュダウンされていたことです。#96989 (Alexey Milovidov ).
clearCaches で発生するクラッシュ (SEGFAULT) を修正しました。これは BlockIO::operator= が query_metadata_cache をムーブしないために、キャッシュされたストレージスナップショットが早期に破棄され、MergeTreeData ストレージに対する use-after-free が発生していた問題です。#96995 (Alexey Milovidov ).
if または transform 関数が Nullable(String) を返す場合 (例: GROUP BY ... WITH CUBE と group_by_use_nulls = true を使用した場合) に IfTransformStringsToEnumPass で発生するアサーション失敗を修正しました。#97002 (Alexey Milovidov ).
INSERT ... SELECT で UNION ALL と JOIN を使用した際、ブロックの squashing 後に定数文字列カラムに誤った値が書き込まれることがある不具合を修正しました。 #97019 (Hasyimi Bahrudin ).
ALTER TABLE MODIFY COLUMN でカラム型を変更した後にカラム統計を構築すると、assert_cast 例外 (またはリリースビルドでのサイレントデータ破損) が発生する問題を修正しました。#97027 (Alexey Milovidov ) 。
Azure Blob Storage、SSHプロトコル、およびArrow Flightインターフェースにおける未初期化メモリの読み取り問題を修正しました。#97053 (Alexey Milovidov ).
索引が、ROW POLICY/PREWHERE および FINAL を使用するクエリの結果に影響していたケースを修正しました。#97076 (Yarik Briukhovetskyi ) 。
古いデータが再び現れる原因となる可能性があった、MergeTree テーブルにおける REPLACE PARTITION とバックグラウンドミューテーションの間の残存する競合状態を修正しました。#97105 (Alexey Milovidov ).
エイリアスカラムを含む暗黙的なインデックスを修正し、作成前に完全に検証するようにしました。 #97115 (Raúl Marín ).
FunctionVariantAdaptor で、arrayROCAUC のように定数引数を必要とする関数における論理エラーを修正しました。#97116 (Bharat Nallan ) 。
PartCheckThread が、すでに mutation 済みのパーツに対して GET_PART を再度キューに入れ、parts_to_do に実体のないエントリが残ってしまうことで発生していた、停止した mutation を修正しました。 #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 ).
JOIN の両側のカラムを参照する WHERE 句内の arrayJoin で 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 の行数がオフセット数と一致しない" を修正しました。#97270 (Alexey Milovidov ).
SYSTEM RESTART REPLICA で、テーブルの再作成が ZooKeeper 以外の例外 (例: メモリ制限) で失敗した場合に、データベースからテーブルが失われ、DatabaseReplicated でメタデータダイジェストの不一致が発生する問題を修正しました。#97276 (Alexey Milovidov ).
system.merge_tree_settings の readonly フィールドが、一部の MergeTree 設定 (たとえば index_granularity) は無条件で読み取り専用であることを正しく反映するようになりました。 #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 = '' ではなく categories = 'Internal' が表示されるようになりました。#97315 (Robert Schulze ).
RIGHT JOIN の連鎖を含み、並列レプリカが有効なクエリで誤った結果が生成されることがあります。 #74341 を修正しました。 #97316 (Igor Nikonov ).
リフレッシャブルmaterialized viewや、テーブル名が変更されるその他のケースで発生することがあった、誤った TABLE_UUID_MISMATCH エラーを修正しました。#97323 (Azat Khuzhin ).
StorageKeeperMap のバックアップで、lazy backup バッチ内のダングリングしたストレージポインタに対する解放後使用が原因で発生していたセグメンテーションフォルトを修正しました。#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 ).
LazyMaterializingTransform で、非adaptiveな索引グラニュラリティ (index_granularity_bytes = 0) を持つテーブルから ORDER BY ... LIMIT を使用して読み取る際に発生する、例外 "lazy chunk 内の行数がオフセット数と一致しない" 問題を修正しました。#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 ).
内部にスパースなサブカラムを持つカラムを処理する際に Set および MergeTreeIndexSet で発生するアサーション失敗 (debug/sanitizer ビルドでは例外) を修正しました (例: スパースシリアライズプロファイルが異なる MergeTree パーツ由来の Tuple カラム) 。#97493 (Alexey Milovidov ).
StorageKafka2 における解放済みメモリ使用の可能性を修正しました。#97520 (Bharat Nallan ) 。
出力パスにディレクトリが含まれる場合の、TRUNCATE および into_outfile_create_parent_directories 設定使用時の INTO OUTFILE を修正しました。#97549 (Alexey Milovidov ) 。
analyzer を有効にした状態で、ALIAS カラム内にラムダ式を含むテーブルに対して merge() テーブル関数経由でクエリを実行した際に発生する 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 ).
ジオメトリ関数 (perimeterSpherical、areaSpherical など) が、Geometry バリアント型に加えて、個別のジオメトリサブタイプ (Polygon、Ring、Point など) も受け付けるようになりました。#97571 (Alexey Milovidov ) 。
Nullable(Tuple(... Nullable(T) ...)) 型のサブカラムに対して isNull/isNotNull を使用した際に発生する LOGICAL_ERROR 例外を修正しました。#97224 をクローズします。#97582 (Alexey Milovidov ).
論理更新時に patch parts を適用する際のヌルポインタの逆参照を修正しました。#97583 (Alexey Milovidov ).
BaseSettings::readBinary は、未検出を示す番兵値 (つまり -1) をチェックせずに accessor.find の索引を field_infos[] に渡しており、その結果、std::vector の範囲外アクセスが発生する可能性があります。この問題は libcxx のハードニングによって検出されました。おそらくこれは、新しいサーバーが古いサーバーに未知の設定を送信した際の、クエリ plan のデシリアライズ中に発生していました。文字列ベースの読み取りメソッドはすでにこれを正しく処理していましたが、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 リリース 26.1、2026-01-29。プレゼンテーション 、ビデオ
後方互換性を持たない変更
フォーマッタにおけるエイリアスの誤った置換によって発生していた一貫性のないフォーマットを修正します。これにより #82833 がクローズされます。これにより #82832 がクローズされます。これにより #68296 がクローズされます。この変更は後方互換性に影響する可能性があります。analyzer が無効化されている場合、IN でエイリアスを参照している特定の CREATE VIEW クエリを処理できません。非互換性を避けるには、analyzer を有効化してください(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 まで蓄積されます。その結果、system.query_log.exception に完全な Python のトレースバックとエラーメッセージが表示され、効果的なトラブルシューティングが可能になります。#92209 (Xu Jia )。
JOIN USING () 句における空のカラムリストは、現在は構文エラーと見なされるようになりました。以前はクエリ実行中に INVALID_JOIN_ON_EXPRESSION になるはずでしたが、Join ストレージとの結合など一部のケースでは LOGICAL_ERROR が発生していました。#82502 をクローズ。#92371 (Vladimir Cherkasov )。
JSON 型に対する SKIP REGEXP では、デフォルトで部分一致を使用するようにしました。#79250 をクローズしました。#92847 (Pavel Kruglov )。
「simple な ALIAS カラムへの INSERT を許可する変更」をリバート(ClickHouse/ClickHouse#84154 をリバート)。カスタムフォーマットでは動作せず、設定でも制御されていません。#92849 (Azat Khuzhin )。
データレイクカタログがオブジェクトストレージにアクセスできない場合にエラーを発生させる設定。 #93606 (Konstantin Vedernikov ).
Lazy データベースエンジンは削除され、利用できなくなりました。#91231 をクローズしました。#93627 (Alexey Milovidov )。
metric_log の transposed_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_limit、rows_before_aggregation、cross_to_inner_join_rewrite、regexp_dict_allow_hyperscan、regexp_dict_flag_case_insensitive、regexp_dict_flag_dotall および dictionary_use_async_executor は、通常の(非フォーマット)設定に変更されました。これは純粋に内部的な変更であり、(可能性は低いですが)Iceberg、DeltaLake、Kafka、S3、S3Queue、Azure、Hive、RabbitMQ、Set、FileLog、または NATS のテーブルエンジン定義でこれらの設定のいずれかを指定している場合を除き、ユーザーから見える副作用はありません。これらのケースでは、以前はこれらの設定は無視されていましたが、現在はそのような定義はエラーとなります。 #94106 (Robert Schulze )。
joinGet/joinGetOrNull 関数は、背後で使用される Join テーブルに対して SELECT 権限を必須とするようになりました。この変更以降、joinGet('db.table', 'column', key) を実行するには、Join テーブルで定義されているキー カラムと、取得対象の属性カラムの両方に対して SELECT 権限が必要です。これらの権限を持たないクエリは ACCESS_DENIED により失敗します。移行にあたっては、テーブル全体へのアクセスには GRANT SELECT ON db.join_table TO user を、カラム単位のアクセスには GRANT SELECT(key_col, attr_col) ON db.join_table TO user を使用して、必要な権限を付与してください。この変更は、明示的な SELECT 権限が事前に設定されていなかった joinGet / joinGetOrNull に依存するすべてのユーザーおよびアプリケーションに影響します。 #94307 (Vladimir Cherkasov )。
CREATE TABLE ... AS ... クエリについては、SHOW COLUMNS をチェックするようにしました。以前は SHOW TABLES をチェックしていましたが、この種の権限チェックとしては誤りでした。#94556 (pufit )。
Hash 出力フォーマットをブロックサイズに依存しないようにしました。#94503 (Alexey Milovidov )。これにより、以前のバージョンと比べて出力されるハッシュ値が変わることに注意してください。
新機能
ClickHouse Keeper 用の HTTP API と組み込み Web UI。 #78181 (pufit および speeedmaster ).
非同期挿入の重複排除が、依存する materialized view でも動作するようになりました。block_id による衝突が発生した場合、元のブロックからその block_id に関連付けられた行がフィルタリングで取り除かれ、残りの行に対して、関連するすべての materialized view の SELECT クエリが適用されます。これにより、競合する行を含まない元のブロックが再構築されます。 #89140 (Sema Checherinda )。materialized view が関与している場合でも、非同期挿入で重複排除を使用できるようになりました。 #93957 (Sema Checherinda )。
projection 索引機能を簡素化し拡張するための新しい構文とフレームワークを導入しました。これは https://github.com/ClickHouse/ClickHouse/pull/81021 のフォローアップです。 #91844 (Amos Bird )。
Array カラム向けのテキスト索引サポートを追加。#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 ).
主にバージョン情報を含む ClickHouse_Info メトリクスを Prometheus の /metrics エンドポイントに追加し、詳細なバージョン情報を時間の経過とともに追跡するチャートを作成できるようにしました。#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 を追加しました。プライマリキーに基づく granule pruning を無効化するには、false に設定してください。 #93319 (Nihal Z. Miaji ).
icebergLocalCluster テーブル関数を追加しました。 #93323 (Anton Ivashkin ).
2 点間の cosine distance を近似計算する cosineDistanceTransposed 関数を追加しました。 #93621 (Raufs Dunamalijevs )。
各データパーツのファイル数を示す files カラムを system.parts テーブルに追加しました。 #94337 (Match ).
同時実行制御のために max-min 公平スケジューラを追加しました。多くのクエリが限られた CPU スロットを奪い合うような、高いオーバーサブスクリプション状態でも、より良い公平性を提供します。時間の経過とともに多くのスロットを蓄積した長時間実行クエリによって、短時間実行クエリが不利にならないようにします。concurrent_threads_scheduler サーバー設定の max_min_fair 値を指定することで有効になります。#94732 (Sergei Trifonov )。
ClickHouse クライアントがサーバーに接続する際に、TLS SNI を上書きできる機能を追加しました。 #89761 (Matt Klein ).
joinGet 関数呼び出しで一時テーブルをサポートしました。 #92973 (Eduard Karacharov )。
DeltaLake テーブルエンジンで deletion vectors をサポートしました。 #93852 (Kseniia Sumarokova ).
deltaLakeCluster で削除ベクターをサポートするようになりました。 #94365 (Kseniia Sumarokova ).
データレイク向けの Google Cloud Storage サポート。 #93866 (Konstantin Vedernikov ).
実験的機能
設定 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 ).
フィルターが一方の入力のみを使用する場合の JOIN ON 条件からのプッシュダウンを、より多くのケースでサポートします。ANY、SEMI、ANTI JOIN をサポートします。 #92584 (Dmitry Novik ).
SEMI JOIN のフィルターのプッシュダウンに同値な集合を使用できるようにします。 #85239 を解決します。 #92837 (Dmitry Novik ).
右側が空の場合、ハッシュ JOIN の左側読み取りをスキップします。以前は最初の非空ブロックまで左側を読み取っていましたが、重いフィルタリングや集計がある場合に多くの処理が発生する可能性がありました。 #94062 (Alexander Gololobov ).
クエリーパイプライン内のデータパーティショニングに "fastrange" (Daniel Lemire) 手法を使用します。これにより、並列ソートと JOIN のパフォーマンスが向上する可能性があります。 #93080 (Alexey Milovidov ).
PARTITION BY がソートキーまたはそのプレフィックスと一致する場合のウィンドウ関数のパフォーマンスを向上させます。 #87299 (Nikita Taranov ).
外部フィルターをビューにプッシュダウンし、ローカルおよびリモートノードで PREWHERE を適用できるようにします。 #88189 を解決します。 #88316 (Igor Nikonov ).
より多くの関数に対して JIT コンパイルを実装します。 #73509 を解決します。 #88770 (Alexey Milovidov with Taiyang Li ).
FINAL クエリで使用されるスキップインデックスがプライマリキーの一部を構成するカラムにある場合、他のパーツでのプライマリキー交差チェックの追加ステップは不要となり、これを実行しなくなりました。 #85897 を解決します。 #93899 (Shankar Iyer ).
小数の LIMIT および OFFSET におけるパフォーマンスとメモリ使用量を最適化します。 #91167 (Ahmed Gouda ).
Parquet Reader V3 プレフェッチャーでの高速ランダム読み取りロジックの利用を修正します。 #90890 を解決します。 #91435 (Arsen Muk ).
icebergCluster のパフォーマンスを向上させます。 #91462 を解決します。 #91537 (Yang Jiang ).
定数フィルターに対して仮想カラムでフィルタリングしないようにします。 #91588 (c-end ).
非常に広いテーブルに対する wide パーツを使用した INSERT/マージのメモリ使用量を、適応型書き込みバッファーを有効化することで削減します。暗号化ディスクに対する適応型書き込みバッファーのサポートを追加します。 #92250 (Azat Khuzhin ).
インデックス内の検索トークン数を削減することで、テキストインデックスと sparseGrams トークナイザーによる全文検索のパフォーマンスを向上させました。 #93078 (Anton Popov ).
関数 isValidASCII を、true を返すケース(すなわち入力がすべて ASCII の場合)に対して最適化しました。 #93347 (Robert Schulze ).
読み取り順最適化機能は、WHERE 条件により ORDER BY カラムが定数になる場合を認識し、効率的な逆順読み取りを可能にします。これにより、WHERE tenant='42' ORDER BY tenant, event_time DESC のようなマルチテナントクエリで、完全なソートを必要とする代わりに InReverseOrder を使用できるようになります。 #94103 (matanper ).
メモリ消費を最適化するため、ASTLiteral の子要素の代わりに (string, integer) ペアで値パラメータを格納する Enum AST の専用クラスを導入します。 #94178 (Ilya Yatsishin ).
複数のレプリカに対する分散インデックス分析を実装します。共有ストレージやクラスタ内の大量データに有効です。これは SharedMergeTree (ClickHouse Cloud) に適用可能であり、共有ストレージ上の他の MergeTree テーブル種別にも適用可能になる可能性があります。 #86786 (Azat Khuzhin ).
JOIN ランタイムフィルターによるオーバーヘッドを、次のような場合にはそれらを無効化することで削減します: - ブルームフィルターでセットされているビット数が多すぎる場合 - 実行時にフィルタリングされる行が少なすぎる場合。 #91578 (Alexander Gololobov ).
相関サブクエリの入力を複数回評価するのを避けるため、メモリ内バッファーを使用します。 #79890 の一部です。 #91205 (Dmitry Novik ).
並列レプリカ読み取りで、全レプリカが孤立範囲を奪い合うことを許可します。これにより、負荷分散が向上し、ロングテール遅延が低減されます。 #91374 (zoomxi ).
外部集計/ソート/JOIN では、すべてのコンテキストでクエリ設定 temporary_files_codec が適用されるようになりました。grace hash JOIN で記録されていなかったプロファイルイベントも修正しました。 #92388 (Vladimir Cherkasov ).
集計やソート中にディスクへスピルする際のクエリのメモリ使用量検出を、より堅牢にします。 #92500 (Azat Khuzhin ).
集計キー カラムの総行数および NDV(distinct 値の数)統計を推定します。 #92812 (Alexander Gololobov ).
simdcomp を用いたポスティングリスト圧縮を最適化します。 #92871 (Peng Jian ).
バケットを使用した S3Queue の Ordered モード処理をリファクタリングします。これにより、パフォーマンスが向上し、keeper リクエスト数が減少するはずです。 #92889 (Kseniia Sumarokova ).
関数 mapContainsKeyLike および mapContainsValueLike が、それぞれ mapKeys() または mapValues() に対するテキストインデックスを活用できるようになりました。 #93049 (Michael Jarrett ).
非 Linux システムでのメモリ使用量を削減します(jemalloc のダーティページの即時パージを有効化)。 #93360 (Eduard Karacharov ).
ダーティページサイズが max_server_memory_usage に占める割合が memory_worker_purge_dirty_pages_threshold_ratio を超えた場合に、jemalloc アリーナのパージを強制します。 #93500 (Eduard Karacharov ).
AST のメモリ使用量を削減します。 #93601 (Nikolai Kochetov ).
テーブルから読み取る際に ClickHouse がメモリ制限を守らないケースがありました。この問題を修正しました。 #93715 (Nikita Mikhaylov ).
CHECK_STAT および TRY_REMOVE Keeper 拡張機能をデフォルトで有効化します。 #93886 (Mikhail Artemenko ).
Iceberg マニフェストファイルエントリから位置削除に対応するファイル名の上下限を解析し、対応するデータファイルの選択を改善します。 #93980 (Daniil Ivanik ).
JSON カラム内の動的サブカラムの最大数を制御するための設定をさらに 2 つ追加します。1 つ目は MergeTree 設定 merge_max_dynamic_subcolumns_in_compact_part(すでに追加された merge_max_dynamic_subcolumns_in_wide_part に類似)で、Compact パーツへのマージ中に作成される動的サブカラムの数を制限します。2 つ目はクエリレベルの設定 max_dynamic_subcolumns_in_json_type_parsing で、JSON データの解析中に作成される動的サブカラムの数を制限し、INSERT 時に制限を指定できるようにします。 #94184 (Pavel Kruglov ).
一部のケースで JSON カラムの圧縮をわずかに最適化します。 #94247 (Pavel Kruglov ).
本番環境の経験に基づき、スレッドプールキューサイズを低減します。また、MergeTree からデータを読み取る前に明示的なメモリ消費チェックを追加します。 #94692 (Nikita Mikhaylov ).
CPU 飢餓状態ではスケジューラーが MemoryWorker スレッドを優先的に選択するようにします。これにより、ClickHouse プロセスをその存在自体を脅かすレベルの脅威から保護します。 #94864 (Nikita Mikhaylov ).
MemoryWorker のメンスレッドとは別のスレッドで jemalloc ダーティページのパージを実行します。パージが遅い場合、RSS 使用量の更新が遅延し、プロセスの OOM キルにつながる可能性があります。また、総メモリ使用量の比率に基づいてダーティページのパージを開始する新しい設定 memory_worker_purge_total_memory_threshold_ratio を導入します。 #94902 (Antonio Andelic ).
system.blob_storage_log が Azure Blob Storage でも利用可能になりました。 #93105 (Alexey Milovidov ).
blob_storage_log を Local および HDFS 向けに実装しました。S3Queue が blob_storage_log でログ出力にディスク名以外の識別子を使用していた場合に発生していたエラーを修正しました。blob_storage_log に error_code カラムを追加しました。ローカルテストを容易にするためにテスト用設定ファイルを分割しました。 #93106 (Alexey Milovidov ).
clickhouse-client と clickhouse-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 ).
キャッシュをクリアするためのステートメント SYSTEM DROP [...] CACHE は、そのステートメントがキャッシュを無効化するものだという誤った印象を与えていました。ClickHouse では、より明確な SYSTEM CLEAR [...] CACHE ステートメントがサポートされるようになりました。古い構文も引き続き利用可能です。#93727 (Pranav Tiwari )。
EmbeddedRocksDB で複数のカラムをプライマリキーとしてサポートします。 #32819 をクローズします。 #33917 (usurai ).
スカラ値に対して非定数の IN を使用できるようになりました(val1 NOT IN if(cond, val2, val3) のようなクエリ)。#93495 (Yarik Briukhovetskyi )。
サポートされていないため、HeadObject、UploadPart および CompleteMultipartUpload の各 S3 リクエストへ x-amz-server-side-encryption ヘッダーが伝播されないように防ぎます。 #64577 (Francisco J. Jurado Moreno ).
S3Queue の ordered モードにおいて Hive パーティショニングを追跡できるようにした。#71161 を解決。#81040 (Anton Ivashkin )。
ファイルシステムキャッシュにおける領域予約を最適化しました。FileCache::collectCandidatesForEviction はユニークロックを取得せずに実行されるようになりました。 #82764 (Kseniia Sumarokova ).
サーバーログのサイズおよび時間に基づく複合ローテーション戦略をサポートしました。 #87620 (Jianmei Zhang ).
CLI クライアントで、コマンドラインオプション --no-warnings の代わりに <warnings>false</warnings> を指定できるようになりました。 #87783 (Larry Snizek )。
avg 集約関数で Date、DateTime、Time 型の値を引数として扱えるようにしました。#82267 をクローズ。#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 テーブルエンジンおよび s3 テーブル関数向けの名前付きコレクションで、storage_class_name 設定を指定できるようにしました。 #91926 (János Benjamin Antal ).
system.zookeeper 経由で補助的な ZooKeeper を挿入できるようになりました。 #92092 (RinChanNOW ).
Keeper 向けに新しいメトリクスを追加:KeeperChangelogWrittenBytes、KeeperChangelogFileSyncMicroseconds、KeeperSnapshotWrittenBytes および KeeperSnapshotFileSyncMicroseconds の profile events に加えて、KeeperBatchSizeElements と KeeperBatchSizeBytes の histogram metrics を追加しました。 #92149 (Miсhael Stetsyuk )。
新しい設定 trace_profile_events_list を追加し、trace_profile_event によるトレース対象を指定されたイベント名のリストに制限できるようにしました。これにより、大規模なワークロードに対して、より精度の高いデータ収集が可能になります。 #92298 (Alexey Milovidov ).
一時停止可能なフェイルポイント向けに SYSTEM NOTIFY FAILPOINT をサポートし、SYSTEM WAIT FAILPOINT fp の PAUSE/RESUME もサポートしました。#92368 (Shaohua Wang ).
system.data_skipping_indices に creation(暗黙的/明示的)カラムを追加。#92378 (Raúl Marín )。
YTsaurus の dyn テーブルに対するカラム定義を Dictionary のソースに渡せるようにしました。 #92391 (MikhailBurdukov ).
#63985 で、ポートごとに TLS 構成に必要なすべてのパラメータを指定できるようになりました(composable protocols を参照)。これにより、グローバルな TLS 設定に依存する必要がなくなりました。しかし、この実装では依然として暗黙的にグローバルな openSSL.server 設定セクションの存在を前提としており、ポートごとに異なる TLS 構成が必要なセットアップとは競合してしまいます。たとえば keeper-in-server デプロイメントでは、keeper 間通信と ClickHouse クライアント接続それぞれに対して、別々の 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 indexes = 1 のエイリアスとして EXPLAIN indices = 1 をサポートします。 #92483 をクローズします。 #92774 (Pranav Tiwari )。
Parquet リーダーでは、Tuple 型または Map 型のカラムを JSON として読み取れるようになりました。f.parquet 内のカラム x の型が Tuple または Map であっても、select x from file(f.parquet, auto, 'x JSON') が動作します。 #92864 (Michael Kolupaev ).
Support empty tuples in parquet reader. #92868 (Michael Kolupaev ).
Azure Blob Storage でネイティブコピーが BadRequest(例: 不正なブロックリスト)で失敗した場合に、読み取り・書き込みコピーへのフォールバックを行うようにしました。これまでは、異なるストレージアカウント間で BLOB をコピーする際に発生していた Unauthorized エラーに対してのみフォールバックしていました。しかし、「The specified block list is invalid」エラーが発生することもあります。そのため、すべてのネイティブコピー失敗時に読み取り・書き込みにフォールバックするよう条件を更新しました。 #92888 (Smita Kulkarni ).
多数の S3 クエリを EC2 インスタンスプロファイル認証情報で同時に実行する際に発生していた、EC2 メタデータエンドポイントのスロットリングの問題を修正しました。以前は、各クエリが独自の AWSInstanceProfileCredentialsProvider を作成していたため、EC2 メタデータサービスへの同時リクエストが発生し、その結果、タイムアウトや HTTP response code: 403 エラーが発生する可能性がありました。現在は、認証情報プロバイダーがキャッシュされ、すべてのクエリ間で共有されます。 #92891 (Sav )。
insert_select_deduplicate 設定を再設計し、後方互換性を維持するための機能を追加しました。 #92951 (Sema Checherinda ).
バックグラウンドタスクのうち平均より遅いものをログに記録するようにして(background_schedule_pool_log.duration_threshold_milliseconds=30)、タスクのログ出力が過剰にならないようにしました。#92965 (Azat Khuzhin ).
以前のバージョンでは、一部の C++ 関数名が system.trace_log および system.symbols 内で正しく表示されず(「mangled」された形で表示され)、demangle 関数もそれらを適切に処理できていませんでした。これにより #93074 がクローズされました。 #93075 (Alexey Milovidov ).
backup_data_from_refreshable_materialized_view_targets というバックアップ設定を導入し、リフレッシャブルmaterialized view をバックアップ対象からスキップできるようにしました。APPEND リフレッシュ戦略を持つ RMV は常にバックアップされます。 #93076 (Julia Kartseva ). #93658 (Julia Kartseva )
関数などの重い翻訳単位については、デバッグ情報を一切生成しないのではなく、最小限のデバッグ情報を生成するようにしました。 #93079 (Alexey Milovidov ).
MinIO 固有のエラーに対するエラーコードのマッピングを実装することで、AWS S3 C++ SDK に MinIO 互換サポートを追加しました。この変更により、AWS S3 の代わりに MinIO デプロイメントを使用している場合でも、ClickHouse が MinIO サーバーのエラーを適切に処理して再試行できるようになり、セルフホストされた MinIO クラスター上でオブジェクトストレージを運用する環境の信頼性が向上します。 #93082 (XiaoBinMu ).
シンボル化された jemalloc プロファイルを書き出し、ヒーププロファイル生成時にバイナリが不要になるようにしました。 #93099 (Azat Khuzhin ).
clickhouse git-import ツールを復活させました。大きなコミットや不正なコミットを処理する際に動作しなくなっていました。https://presentations.clickhouse.com/2020-matemarketing/ を参照してください。 #93202 (Alexey Milovidov ).
URL ストレージに保存されたパスワードをクエリログに表示しないようにしました。 #93245 (Konstantin Vedernikov ).
flipCoordinates が Geometry 型をサポートするようになりました。 #93303 (Bharat Nallan ).
SYSTEM INSTRUMENT の ADD/REMOVE の UX を改善しました: 関数名に String リテラルを使用し、一致するすべての関数をパッチし、REMOVE で function_name を使用できるようにしました。 #93345 (Pablo Marcos ).
マージ処理中に統計をマテリアライズするかどうかを有効/無効に切り替える新しい設定 materialize_statistics_on_merge を追加しました。デフォルト値は 1 です。 #93379 (Han Fei )。
ClickHouse では、DESCRIBE SELECT クエリにおける SELECT を、かっこで囲まずにパースできるようになりました。 #58382 をクローズしました。 #93429 (Yarik Briukhovetskyi ).
キャッシュの正しさ検証を確率的にランダム実行する仕組みを追加しました。 #93439 (Kseniia Sumarokova ).
設定 type_json_allow_duplicated_key_with_literal_and_nested_object を追加し、リテラルとネストされたオブジェクトが混在する JSON 内で重複したパスを許可できるようにしました。例: {"a" : 42, "a" : {"b" : 42}}。一部のデータは、重複パスに対するこの制約が https://github.com/ClickHouse/ClickHouse/pull/79317 で導入される前に作成されたものであり、そのようなデータを後から操作すると、現在ではエラーになる可能性があります。この設定を使用すると、そのような古いデータもエラーなしで引き続き利用できます。 #93604 (Pavel Kruglov ).
Pretty JSON でプリミティブ型の値を別々の行に出力しないようにしました。 #93836 (Pavel Kruglov ).
多くの alter table ... modify setting ... 文がある場合、5秒以内にロックを取得できないことがあります。その場合は logical error よりも timeout を返す方が望ましいです。 #93856 (Han Fei ).
構文エラー発生時の出力が過剰にならないようにしました。この変更以前は、多数のクエリを含む可能性のある SQL スクリプト全体を出力していました。 #93876 (Alexey Milovidov ).
Keeper で stats を含む check リクエストのバイトサイズを正しく計算するようにしました。 #93907 (Mikhail Artemenko ).
実行時のハッシュテーブルサイズに関する統計情報を結合の再順序付けに利用するかどうかを制御するための 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 モードで、より汎用的なパーティショニングをサポートするようにしました。 #94321 (Bharat Nallan ).
設定 allow_statistics_optimize にエイリアス use_statistics を追加しました。これにより、既存の設定 use_primary_key および use_skip_indexes との一貫性が高まりました。 #94366 (Robert Schulze ).
Numbers から Enum への変換時に要素が存在するかどうかを確認するため、input_format_numbers_enum_on_conversion_error 設定を有効にしました。 #94384 (Elmi Ahmadov ).
S3(Azure)Queue の ordered モードにおいて、制限を追跡して失敗したノードのクリーンアップを行うようにしました(これまでは unordered モードで、失敗ノードおよび処理済みノードの両方に対してのみ行われていたため、今後は ordered モードでも失敗ノードに対してのみ実行されます)。 #94412 (Kseniia Sumarokova ).
clickhouse-local で default ユーザーに対してアクセス管理を有効化しました。clickhouse-local の default ユーザーには access_management 権限が付与されておらず、そのため本来制限を受けないはずのユーザーであるにもかかわらず、DROP ROW POLICY IF EXISTS のような操作が ACCESS_DENIED エラーで失敗していました。 #94501 (Alexey Milovidov ).
YTsaurus の辞書およびテーブルで named collection を有効化しました。 #94582 (MikhailBurdukov ).
S3 および Azure Blob Storage 向けの SQL で定義された名前付きコレクションを BACKUP/RESTORE でサポートしました。#94604 をクローズ。#94605 (Pablo Marcos )。
S3Queue の ordered モードで、パーティションキーに基づくバケット分割をサポートしました。 #94698 (Bharat Nallan ).
最も長時間実行されているマージ処理の経過時間を表す非同期メトリクスを追加しました。 #94825 (Raúl Marín ).
IcebergBitmapPositionDeleteTransform を使用してポジション削除を適用する前に、対応するファイルのチェックを追加しました。 #94897 (Yang Jiang ).
view_duration_ms は、グループ内のスレッドの実行時間の合計ではなく、グループがアクティブだった時間を示すようになりました。 #94966 (Sema Checherinda ).
hasAnyTokens と hasAllTokens 関数における検索トークン数の最大数(64 個に制限されていた)の制限を削除しました。例: SELECT count() FROM table WHERE hasAllTokens(text, ['token_1', 'token_2', [...], 'token_65']]); このクエリは検索トークンが 65 個あるため、BAD_ARGUMENTS エラーになっていました。この PR により、この制限は完全に撤廃され、同じクエリはエラーなく実行されます。 #95152 (Elmi Ahmadov ).
Numbers から Enums 型への変換時に値が存在するかどうかをチェックするための input_format_numbers_enum_on_conversion_error SETTING を追加しました。関連 Issue: #56144 。#56240 (Nikolay Degterinsky )。
Iceberg テーブルにおいて、データファイルと position delete ファイルの読み取り間でフォーマットパーサーのリソースを共有し、メモリ割り当てを削減しました。 #94701 (Yang Jiang ).
バグ修正(公式安定版リリースにおけるユーザー可視の不具合)
事前定義済みのクエリハンドラーで、挿入時に末尾の空白がデータとして解釈されてしまう不具合を修正。 #83604 (Fabian Ponce )。
Join ストレージに対して outer から 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 内部の基礎となるクエリに対して、CREATE 段階で完全な権限チェックを行うようにしました。 #89180 (pufit ).
定数引数でクラッシュしていた icebergHash 関数を修正しました。 #90335 (Michael Kolupaev ).
トランザクションを伴わない mutation が、最終的にロールバックされるアクティブなトランザクション内のパーツを変更してしまうという論理エラーを修正しました。 #90469 (Shaohua Wang ).
Ordinary データベースを Atomic データベースに変換した後に、system.warnings が正しく更新されるようになりました。 #90473 (sdk2 ).
Parquet ファイルの読み取り時に、クエリ内の別の場所で prewhere 式の一部が使用されている場合に発生するアサーション失敗を修正します。 #90635 (Max Kainov ).
Iceberg をバケット分割モードで読み込む際に、単一ノードクラスタで発生していたクラッシュを修正しました。これにより #90913 がクローズされます。#91553 (Konstantin Vedernikov )。
サブカラム読み取り時の Log エンジンにおける発生しうる論理エラーを修正。#91710 をクローズ。#91711 (Pavel Kruglov )。
ATTACH AS REPLICATED 実行時に発生する「Storage does not support transaction」という論理エラーを修正。 #91772 (Shaohua Wang )。
LEFT ANTI JOIN に追加の post-condition がある場合に runtime フィルタが正しく動作しない問題を修正しました。 #91824 (Alexander Gololobov ).
Nothing 型を含む null セーフな比較で発生していたエラーを修正します。#91834 をクローズ。#84870 をクローズ。#91821 をクローズ。#91884 (Yarik Briukhovetskyi )。
非常に繰り返しの多い文字列データに影響する、ネイティブ Parquet リーダーの DELTA_BYTE_ARRAY デコード処理のバグを修正しました。 #91929 (Daniel Muino ).
スキーマ推論時に、グロブでマッチしたすべてのファイルではなく、推論元となったファイルのみのスキーマをキャッシュするようにしました。 #91745 をクローズ。 #92006 (Pavel Kruglov )。
誤ったアーカイブエントリのサイズヘッダーが原因で発生する Couldn't pack tar archive: Failed to write all bytes エラーを修正。 #89075 を解決。#92122 (Julia Kartseva )。
INSERT SELECT においてリクエストストリームを解放し、HTTP 接続が閉じられてしまうのを防ぎます。 #92175 (Sema Checherinda ).
USING 句と join_use_nulls を使用する複数の JOIN を含むクエリで発生していた論理エラーを修正しました。 #92251 (Vladimir Cherkasov )。
join_use_nulls 使用時の結合再順序付けにおける論理エラーを修正し、https://github.com/clickhouse/clickhouse/issues/90795 をクローズ。 #92289 (Vladimir Cherkasov ).
negate リテラルを含む arrayElement の AST フォーマットの不整合を修正。#92288 、#92212 、#91832 、#91789 、#91735 、#88495 、#92386 をクローズ。#92293 (Pavel Kruglov )。
join_on_disk_max_files_to_merge SETTING で発生し得るクラッシュを修正。 #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 ).
同じ名前を持つカラムとサブカラムの競合により、誤ったシリアライゼーションが使用されてクエリが失敗する可能性があった問題を修正しました。#90219 をクローズ。#85161 をクローズ。#92453 (Pavel Kruglov )。
外部結合を内部結合に変換する際に、意図しないクエリプランの変更によって発生していた LOGICAL_ERROR を修正しました。また、結合時に集約キーへ単射関数が適用されているケースでもこの最適化を適用できるよう、要件を緩和しました。 #92503 (János Benjamin Antal ).
空のタプルカラムのソート中に発生しうるエラー SIZES_OF_COLUMNS_DOESNT_MATCH を修正しました。 #92422 をクローズしました。 #92520 (Pavel Kruglov )。
JSON 型の互換性のない型付きパスをチェックするようにしました。#91577 をクローズ。#92539 (Pavel Kruglov )。
Backup データベースに対する SHOW CREATE DATABASE で発生するデッドロックを修正。 #92541 (Azat Khuzhin ).
hypothesis 索引の検証時に、適切なエラーコードが使用されるようにしました。 #92559 (Raúl Marín ).
analyzer におけるカラムエイリアス内の動的サブカラムの解決処理を修正しました。以前は、カラムエイリアス内の動的サブカラムは getSubcolumn でラップされており、場合によってはまったく解決されないことがありました。#91434 をクローズします。#92583 (Pavel Kruglov )。
第二引数が null の場合に tokens() がクラッシュする問題を修正しました。 #92586 (Raúl Marín ).
基になる const PREWHERE カラムをインプレースで変更することにより発生し得るクラッシュを修正しました。これは、カラムの縮小(IColumn::shrinkToFit)やフィルタリング(IColumn::filter)が複数スレッドから同時にトリガーされた場合に発生する可能性がありました。 #92588 (Arsen Muk ).
巨大なパーツ(4,294,967,295 行を超える)を含むテーブル上でのテキストインデックスの作成およびマテリアライズは、一時的に無効化されています。この制限は、現在のインデックス実装がそのような大きなパーツをまだサポートしておらず、不正確なクエリ結果が返されるのを防ぐためのものです。 #92644 (Anton Popov ).
JOIN の実行中に発生していた論理エラー Too large size (A) passed to allocator を修正します。#92043 をクローズします。#92667 (Yarik Briukhovetskyi )。
ngrambf_v1 索引で ngram 長さ(第 1 パラメータ)が 8 を超える場合に例外がスローされる不具合を修正しました。 #92672 (Robert Schulze ).
ZooKeeper ストレージが使用されている場合に、バックグラウンドでの名前付きコレクション再読み込み中に発生する未処理例外を修正します。https://github.com/ClickHouse/clickhouse-private/issues/44180 をクローズします。#92717 (Kseniia Sumarokova )。
ワイルドカードによるアクセス権付与チェックにおけるロジックの誤りを修正します。以前の試みである https://github.com/ClickHouse/ClickHouse/pull/90928 は重大な脆弱性に対処しましたが、結果として制約が厳しすぎるものとなり、無関係な REVOKE によって一部のワイルドカード付き GRANT 文が失敗する状況を招いていました。#92725 (pufit )。
WHERE で not match(...) が使用された場合に誤った結果が返されていた data skipping ロジックのバグを修正します。#92492 をクローズ。#92726 (Nihal Z. Miaji )。
読み取り専用ディスク上に MergeTree テーブルが CREATE されている場合、起動時に一時ディレクトリを削除しようと試みないようにしました。 #92748 (Alexey Milovidov ).
ALTER TABLE REWRITE PARTS (v2) での「Cannot add action to empty ExpressionActionsChain」を修正しました。 #92754 (Azat Khuzhin ).
切断された Connection から読み取った際にクラッシュしないようにしました。 #92807 (Raufs Dunamalijevs )。
Ordered モードのストレージ S3Queue で発生していた論理エラー Failed to set file processing within 100 retries を修正しました。現在はこのメッセージはエラーではなく警告として出力されます。このエラーは 25.10 より前のバージョンでは Keeper セッションの期限切れが発生した場合に起こる可能性がありましたが、Ordered モードで処理の並行実行度が高い場合には理論的には依然としてこのエラーが発生し得るため、25.10 以降のバージョンでも常に警告として扱われます。 #92814 (Kseniia Sumarokova ).
以前は、PK sharding を常に偽となる条件付きで使用していた一部のクエリが失敗していましたが、現在は失敗しなくなりました。https://github.com/ClickHouse/ClickHouse/pull/89313 のために必要な変更です。 #92815 (Yarik Briukhovetskyi ).
system.parts テーブルにおけるテキスト索引の非圧縮サイズの計算を修正しました。 #92832 (Anton Popov ).
WHERE 句の述語内でサブクエリを含む IN 句を伴う論理更新におけるプライマリ索引の利用方法を修正しました。 #92838 (Anton Popov ).
JSON 内のパス 'skip' に対する型ヒントの生成を修正。 #92731 をクローズ。 #92842 (Pavel Kruglov ).
S3 テーブルエンジンでは、非決定的関数が含まれている場合は、パーティションキーをキャッシュしないようにする必要があります。 #92844 (Miсhael Stetsyuk ).
ratio_of_defaults_for_sparse_serialization=0.0 を使用してスパースなカラムに対するミューテーション実行後に発生する可能性のあるエラー FILE_DOESNT_EXIST を修正しました。#92633 をクローズしました。#92860 (Pavel Kruglov )。
JSON カラムが Tuple カラムの後に現れる場合に、旧 parquet リーダー(デフォルトでは使用されない)における parquet スキーマ推論を修正しました。空のタプルを含む場合に失敗していた旧 parquet リーダー(デフォルトでは使用されない)を修正しました。 #92867 (Michael Kolupaev ).
定数条件で複数の JOIN を行い join_use_nulls を使用した場合に発生する論理エラーを修正し、#92640 をクローズ。#92892 (Vladimir Cherkasov )。
パーティション式にサブカラムを含むテーブルへの挿入時に発生する可能性のあるエラー 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 ).
スパースなカラムの mutation の後、ALTER で SETTING ratio_of_defaults_for_sparse_serialization を 1.0 に変更した際に発生しうるエラー FILE_DOESNT_EXIST を修正しました。 #93016 (Pavel Kruglov ).
WHERE 句で not materialize(...) または not CAST(...) が使用された場合に誤った結果の原因となっていた data skipping ロジックのバグを修正しました。 #88536 をクローズ。 #93017 (Nihal Z. Miaji )。
共有パーツに対する TOCTOU レースコンディションにより古いパーツが使用される可能性がある問題を修正。 #93022 (Azat Khuzhin ).
範囲外のオフセットを含む不正な形式の groupConcat 集約状態をデシリアライズした際に発生するクラッシュを修正しました。 #93028 (Raufs Dunamalijevs ).
事前キャンセルされた分散クエリの実行後に、接続が不正な状態のまま残る問題を修正。 #93029 (Azat Khuzhin ).
右側の結合キーがスパースなカラムである場合の結合結果を修正します。これにより #92920 がクローズされます。set compatibility='23.3' を設定した場合にのみこのバグを再現できました。バックポートすべきかどうかは不明です。#93038 (Amos Bird )。
estimateCompressionRatio() で発生する可能性がある Cannot finalize buffer after cancellation を修正。次を修正: #87380 。#93068 (Azat Khuzhin ).
concat(col1, col2) のような複雑な式に基づいて構築されたテキスト索引のマージ処理を修正しました。 #93073 (Anton Popov ).
フィルターにサブカラムが含まれている場合の PROJECTION の適用を修正。#92882 をクローズ。#93141 (Pavel Kruglov )。
クエリプランに join のランタイムフィルタが追加された一部のケースで発生する論理エラーを修正しました。原因は、join の一方の入力から重複した const カラムを誤って返していたことです。 #93144 (Alexander Gololobov ).
結合ランタイムフィルタで使用される特殊な関数 __applyFilter が、一部の妥当なケースにおいて ILLEGAL_TYPE_OF_ARGUMENT エラーを返していました。 #93187 (Alexander Gololobov ).
実質的に同一カラムのエイリアスとなっている補間カラムについて、ブロック内で別々の補間カラムが同じカラムに折り畳まれてしまわないようにしました。 #93197 (Yakov Olkhovskiy ).
事前にデータが入っている右側のテーブルとの結合時には runtime filter を追加しないようにしました。 #93211 (Alexander Gololobov )。
セッションが切断された後の keeper における persistent watches のクリーンアップ処理を修正しました。これにより #92480 がクローズされます。#93213 (Konstantin Vedernikov )。
Iceberg における ORDER BY タプルを修正。これにより #92977 がクローズされます。#93225 (Konstantin Vedernikov )。
S3Queue の SETTING s3queue_migrate_old_metadata_to_buckets に関するバグを修正しました。 #93392 、#93196 、#81739 をクローズしました。 #93232 (Kseniia Sumarokova )。
マージ時にPROJECTIONを再構築する際、未使用のカラムを削除するようにしました。これによりメモリ使用量が削減され、一時パーツの作成数も減少します。 #93233 (Nikolai Kochetov ).
スカラーな相関サブクエリが存在する場合に、サブクエリから未使用カラムを削除する処理を修正しました。修正前は、相関サブクエリ内でのみ使用されているカラムが削除されてしまい、その結果クエリが NOT_FOUND_COLUMN_IN_BLOCK エラーで失敗していました。 #93273 (Dmitry Novik ).
元のテーブルに対する ALTER 中に、マテリアライズドビューでサブカラムが欠落する可能性のあった問題を修正しました。#93231 をクローズ。#93276 (Pavel Kruglov )。
ローカルおよびリモート/Distributed テーブルをマージする際に hostName() に対して ILLEGAL_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 を含むクエリで runtime フィルタが使用されている場合に発生する論理エラーを修正。 #93330 (Alexander Gololobov ).
tokens 関数を非 const な tokenizer パラメータ(第 2、3、4 引数)で呼び出しても、サーバーがクラッシュしなくなりました。例: 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 )。
analyzer を使用する GLOBAL IN のサポートを修正(以前は Set がリモートノード上で再作成されていた)。 #93507 (Azat Khuzhin ).
デシリアライズ中にサブカラムを直接スパースカラムに抽出する処理を修正。 #93512 (Pavel Kruglov ).
重複した検索クエリがある場合のテキスト索引からの直接読み取りを修正しました。 #93516 (Anton Popov ).
runtime filter が有効で、結合したテーブルから同じカラムが複数回返される場合(例: SELECT a, a, a FROM t)に発生する NOT_FOUND_COLUMN_IN_BLOCK エラーの修正。 #93526 (Alexander Gololobov )。
ssh を使用して接続する際に clickhouse-client がパスワードを 2 回要求するバグを修正。 #93547 (Isak Ellmer ).
zookeeper がシャットダウン時に確実に finalize されるようにし(きわめてまれなケースで発生しうるシャットダウン時のハングの可能性があった問題を修正)、ます。 #93602 (Azat Khuzhin ).
ReplicatedMergeTree を復元する際の重複排除のレースコンディションにより発生していた LOGICAL_ERROR を修正しました。 #93612 (Pablo Marcos ).
いくつかの入力フォーマットで Sparse カラムへ直接デシリアライズする際に、有効期限 (TTL) の更新に Sparse カラムを使用する処理を修正しました。これにより、論理エラー Unexpected type of result TTL column が発生する可能性を解消しました。 #93619 (Pavel Kruglov ).
無効な入力に対して呼び出された場合に h3 索引関数がクラッシュしたりハングしたりすることがある問題を修正しました。 #93657 (Michael Kolupaev )。
非 UTF-8 データに対して ngram_bf 索引を使用すると、未初期化メモリを読み取ってしまい、その値が結果として生成される索引構造内に含まれ得る問題がありました。これにより #92576 がクローズされました。 #93663 (Alexey Milovidov )。
解凍後のバッファサイズが想定どおりであることを検証します。 #93690 (Raúl Marín ).
ユーザーが merge テーブルエンジンを使用して、SHOW COLUMNS 権限のチェックなしにテーブルからカラムの一覧を取得できないようにしました。 #93695 (János Benjamin Antal ).
サブカラムに作成されたスキップ索引のマテリアライズ処理を修正しました。 #93708 (Anton Popov ).
PipelineExecutor が存続している間に IStorage オブジェクトが破棄されないようにするため、ストレージの shared_ptr を QueryPipeline::resources::storage_holders に保存します。 #93746 (Miсhael Stetsyuk )。
再起動後にインターサーバーホストが変更された場合に Replicated DB のアタッチに失敗する問題を修正。 #93779 (Tuan Pham Anh ).
キャッシュが有効な場合に発生することがあった ReadBufferFromS3 内のアサーション !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 )。
システムインストルメントのディスパッチに関するバグを修正。 #93937 (Pablo Marcos ).
https://github.com/ClickHouse/ClickHouse/pull/89173 において、内部パイプを通じて TraceSender が送信する構造体にフィールドを 1 つ追加しました。しかし、バッファサイズは更新されていませんでした(こちら )。その結果、buffer_size を超えるデータを書き込んでしまい、flush が複数回発生します。また TraceSender::send は複数のスレッドから呼び出されるため、異なるスレッドによる flush が入り交じり、受信側(TraceCollector)が前提としている不変条件が破られてしまいます。#93966 (Miсhael Stetsyuk )。
ストレージ Join の USING 句を用いた結合操作におけるスーパータイプへの型変換を修正しました。#91672 を修正。#78572 を修正。#94000 (Dmitry Novik )。
Join runtime filter が 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 を含む場合のフィルタ解析中に発生するクラッシュを修正。#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 )。
ページ境界をまたぐ配列を誤って処理していた parquet reader v3 を修正しました。これは、たとえば Arrow が page statistics や page index を有効化せずに書き出したファイルで発生します。Array データ型のカラムにのみ影響します。代表的な症状として、約 1 MB ごとに 1 つの配列が切り捨てられることがあります。この修正以前の回避策としては、次の設定を使用してください: input_format_parquet_use_native_reader_v3 = 0。 #94125 (Michael Kolupaev ).
ログエントリの待機中に ReplicatedMergeTree で過剰な watch が発生する問題を修正。 #94133 (Azat Khuzhin ).
関数 arrayShuffle、arrayPartialShuffle、arrayRandomSample を使用して const カラムをマテリアライズし、行ごとに異なる結果が得られるようにしました。 #94134 (Joanna Hulboj )。
materialized view 内でテーブル関数を評価する際のデータレースを修正。 #94171 (Alexey Milovidov ).
PostgreSQL データベースエンジンにおける、クエリが不正な場合の nullptr デリファレンスを修正しました。#92887 をクローズしました。#94180 (Alexey Milovidov )。
複数のサブクエリを含む SELECT クエリを使用したリフレッシャブルmaterialized view におけるメモリリークを修正しました。 #94200 (Antonio Andelic ).
DataPartStorageOnDiskBase::remove と system.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 ).
サブカラムに適用されていなかった関数からサブカラムへの最適化を修正。 #94323 (Pavel Kruglov ).
enable_lazy_columns_replication が有効な場合のネストした RIGHT JOIN において、誤った結果が返される可能性がある問題を修正しました。このバグにより、本来はそれぞれ異なる値を持つはずのレプリケートされたカラム内のすべての行が、誤って同一の値を返していました。 #93891 をクローズしました。 #94339 (Vladimir Cherkasov )。
同値集合を使用した SEMI JOIN のフィルタのプッシュダウンを修正。引数の型が変更されている場合はフィルタをプッシュダウンしないようにする。#93264 を修正。#94340 (Dmitry Novik )。
DeltaLake CDF を DataLake データベースエンジン(Delta Lake カタログ統合)と組み合わせて使用する際の挙動を修正しました。#94122 をクローズ。#94342 (Kseniia Sumarokova ).
SLRU キャッシュポリシーが使用されている場合に、現在のメトリック FilesystemCacheSizeLimit の値が誤っていた問題を修正。 #94363 (Kseniia Sumarokova )。
2 つ未満の引数で Backup データベースエンジンを作成すると、より説明的なエラーメッセージ Wrong number of arguments(従来の std::out_of_range: InlinedVector::at(size_type) const failed bounds check. の代わり)を返すようになりました。 #94374 (Robert Schulze ).
データベースレベルのグローバル権限のうち GRANT OPTION 付きのものに対する、実行不可能な REVOKE を無視するようにしました。 #94386 (pufit ).
コンパクトなパーツからスパースオフセットを読み取る処理を修正しました。#94385 をクローズしました。#94399 (Pavel Kruglov )。
alter_column_secondary_index_mode の throw モードが使用されている場合でも、暗黙的な索引を使用しているカラムに対する ALTER を禁止しないように変更しました。 #94425 (Raúl Marín ).
複数回の receivePacketsExpectQuery 呼び出しで Protocol::Client::IgnoredPartUUIDs が読み込まれた際に発生する TCPHandler のクラッシュを修正しました。 #94434 (Miсhael Stetsyuk ).
system.functions 内の機密データのマスキングを修正しました。 #94436 (Vitaly Baranov ).
send_profile_events が無効化されている場合に発生する nullptr 参照の問題を修正しました。この機能は ClickHouse Python ドライバー向けに最近導入されたものです。#92488 をクローズしました。#94466 (Alexey Milovidov )。
マージ処理中の text 索引 .mrk の非互換性を修正。 #94494 (Peng Jian ).
read_in_order_use_virtual_row が有効になっている場合、コードは索引が切り詰められているかどうかを確認せずに、完全なプライマリキーのサイズに基づいて索引のカラムにアクセスしていたため、use-after-free/未初期化メモリの問題が発生していました。#85596 を修正。#94500 (Alexey Milovidov )。
GLOBAL IN を伴うサブクエリに外部テーブルを送信する際、型が Nullable の場合に発生していた型不一致エラーを修正しました。#94097 をクローズします。#94511 (Alexey Milovidov )。
以前のバージョンでは、同じ式に対して複数の索引条件を含むクエリが、誤って Not found column という例外をスローすることがありました。#60660 をクローズ。#94515 (Alexey Milovidov )。
ランタイムフィルターにおける Nullable 結合カラムの誤った処理を修正しました。 #94555 (Alexander Gololobov ).
現在使用中の別のワークロード内にワークロードを作成しても、クラッシュすることがなくなりました。 #94599 (Sergei Trifonov ).
欠落しているカラムに対して isNotNull が評価される場合に、ANY LEFT JOIN の最適化中に発生するクラッシュを修正しました。 #94600 (Molly )。
計算済みデフォルト値を持つ他のカラムを参照するデフォルト式の評価を修正しました。 #94615 (Alexey Milovidov )。
BACKUP/RESTORE 操作における権限の問題を修正しました。 #94617 (Pablo Marcos ).
データ型が Nullable(DateTime64) の場合の誤った型キャストにより発生するクラッシュを修正しました。 #94627 (Miсhael Stetsyuk ).
ORDER BY を含む特定の分散クエリにおいて、ALIAS カラムの値が入れ替わって返されることがあるバグを修正しました(例: カラム a にカラム b のデータが表示され、その逆も同様)。 #94644 (filimonov ).
keeper-bench の結果をファイルに保存する処理を修正。 #94654 (Antonio Andelic ).
カラムに負の浮動小数点値が含まれている場合の MinMax 型統計による誤った推定を修正しました。#94665 (zoomxi ).
map のキーが struct の場合の Parquet ファイルの読み取りを修正。 #94670 (Konstantin Vedernikov )。
複雑な ON 条件を使用した場合に、RIGHT JOIN の結果が誤ったものになる可能性がある問題を修正しました。#92913 をクローズしました。#94680 (Vladimir Cherkasov )。
Vertical マージ後も一定の索引粒度 (use_const_adaptive_granularity) が保持されるようにしました。 #94725 (Azat Khuzhin ).
スカラーサブクエリとテーブルの依存関係に関連するミューテーションのバグを修正。テーブルがあるカラムに対する依存関係(索引や PROJECTION)を持つ場合、スカラーサブクエリがデータなしで評価・キャッシュされ、不正な変更につながる可能性がありました。 #94731 (Raúl Marín ).
エラー時に AsynchronousMetrics の cpu_pressure フォールバックを修正。 #94827 (Raúl Marín ).
getURLHostRFC 関数では、ポインタをデリファレンスする前の境界チェックが欠けていました。空文字列が domainRFC に渡されると、未初期化メモリを読み込んでしまい、MSan エラーを引き起こしていました。 #94851 (Alexey Milovidov )。
暗号化ディスクが読み取り専用になってしまう問題を修正しました。 #94852 (Azat Khuzhin ).
旧アナライザーで分散テーブルを使用している場合に、小数を指定した LIMIT/OFFSET で発生していた論理エラーを修正しました。#94712 をクローズ。#94999 (Ahmed Gouda )。
デフォルトで join ランタイムフィルタが有効になっている場合に、一部の条件下で発生していたクラッシュを修正しました。 #95000 (Alexander Gololobov ).
テーブルエンジン URL() およびテーブル関数 url() で使用される URL におけるパスワードのマスキング処理を改善しました。 #95006 (Vitaly Baranov ).
enable_extended_results_for_datetime_functions が有効になっている場合、toStartOfInterval 関数は toStartOfX と同じように動作するようになりました。ここで X は Day, Week, Month, Quarter, Year です。 #95011 (Kirill Kopnev )。
定数文字列の比較が cast_string_to_date_time_mode、bool_true_representation、bool_false_representation、input_format_null_as_default の各 SETTING を正しく考慮していなかった問題を修正しました。 #91681 をクローズ。 #95040 (Nihal Z. Miaji )。
ファイルシステムキャッシュのデータレースを修正しました。 #95064 (Alexey Milovidov ).
Parquet リーダーで発生しうるまれな競合状態を修正。 #95068 (Alexey Milovidov ).
LIMIT がゼロのときに top K 最適化でクラッシュする問題を修正しました。 #93893 をクローズ。 #95072 (Alexey Milovidov )。
DateTime/整数から Time64 への変換では、toTime を使用して一日の時刻コンポーネントを抽出しますが、これは単調な関数ではありません。ToDateTimeMonotonicity テンプレートはこの変換が単調であると誤ってみなしており、デバッグビルドにおいて "Invalid binary search result in MergeTreeSetIndex" という例外を引き起こしていました。 #95125 (Alexey Milovidov )。
マニフェストファイルのエントリ一覧は、必要な場合にのみ再作成されるようにしました(以前は各イテレーションごとに再作成していました)。 #95162 (Daniil Ivanik )。
ビルド/テスト/パッケージングの改善