ClickHouse リリース 26.3 LTS、2026-03-26。プレゼンテーション 、ビデオ
後方互換性を持たない変更
アップグレード後にダウングレードすると、データ損失が発生する可能性があります。ネストされたデータ型にも、データ型のシリアル化バージョンが伝播されるようになりました。たとえば、これまで String のシリアル化バージョン with_size_stream は、最上位レベルの String カラムと Tuple 要素にのみ適用されていました。今後は、Array/Map/Variant/JSON/etc. など、任意のネスト型内のあらゆる String 型にも適用されます。この動作は、デフォルトで有効になった MergeTree 設定 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 オペレーターの優先順位を修正しました。NOT は IS NULL、BETWEEN、LIKE、および算術オペレーターよりも優先順位が低くなります。たとえば、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 ).
デフォルトで async insert を有効化しました。これにより、ClickHouse は今後、すべての小さな insert をデフォルトでバッチ処理します。この設定は compatibility で制御されます。compatibility=<version less than 26.2> を設定すると、デフォルト値は従来どおり false になります。async insert は、users profiles の設定、セッション、クエリ、または MergeTree テーブルなど、複数のレベルで無効化または有効化できます。#97590 (Sema Checherinda ).
mysql_datatypes_support_level のデフォルト値を空から decimal,datetime64,date2Date32 に変更し、MySQL の DATE を Date32 に、DECIMAL/NUMERIC を Decimal に、また精度付きの DATETIME/TIMESTAMP をデフォルトで DateTime64 に正しく対応付けられるようにしました。以前は、MySQL の DATE カラムは 1970-01-01 より前の日付を表現できない Date に対応付けられていたため、データ破損の原因となっていました。#97716 (Alexey Milovidov ).
Accept array of part names instead of regexp for mergeTreeAnalyzeIndexes{,UUID} since regexp is slow (Experimental feature ). #98474 (Azat Khuzhin ).
実行可能な UDF について、デフォルトの stderr_reaction を throw から 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_version、max_buckets_in_map、map_buckets_strategy、map_buckets_coefficient、map_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 データベースで補助的な ZooKeeper をサポート。 #95590 (RinChanNOW ).
JSON型でパスの存在を確認するためのhas関数を、Mapと同様にサポートしました。 #96927 (DQ ).
mergeTreeTextIndex(database, table, index) テーブル関数を追加しました。これにより、テキスト索引からデータを直接読み込めるようになりました。この関数は、イントロスペクションや、テキスト索引データに対する集計の実行に使用できます。#97003 (Anton Popov ).
テーブルを読み取り専用としてマークし、挿入や変更を防止するための MergeTree の table_readonly 設定を追加しました。#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 ) 。
EXPLAIN に pretty=1 設定を追加し、ツリー形式のインデント付き出力を可能にするとともに、compact=1 で Expression ステップを折りたたんで、クエリ計画の可読性を向上させました。#98500 (Kirill Kopnev ).
restore_access_entities_with_current_grants サーバー設定を追加しました。有効にすると、バックアップから復元されたユーザー/ロールへの権限付与は、復元を実行するユーザーが付与できる範囲に制限され (GRANT CURRENT GRANTS と同じ動作) 、ACCESS_DENIED で失敗しなくなります。#98795 (pufit ).
Unicode の大文字・小文字の正規化とダイアクリティカルマークの削除のための caseFoldUTF8 関数と removeDiacriticsUTF8 関数を追加しました。#98973 (George Larionov )。
NFKC 正規化とケースフォールディングを組み合わせた、NFKC_Casefold Unicode 正規化用の文字列関数 normalizeUTF8NFKCCasefold を追加しました。#99276 (George Larionov ) 。
Add asciiCJK tokenizer for full-text indexes and the tokens function. It splits text using Unicode word boundary rules: ASCII words are formed with connector characters (underscore, colon, dot, single quote), while non-ASCII Unicode characters become single-character tokens. #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句で、かっこで囲んだテーブル結合式をサポートしました。例: SELECT * FROM (t1 CROSS JOIN t2)。#97650 (Alexey Milovidov ) 。
関数 toDaysInMonth を実装しました。指定した日付が属する月の日数を返します。#99227 (Vitaly Baranov ) 。
実験的機能
WebAssembly ベースのユーザー定義関数 (UDF) の実験的サポートを追加し、カスタム関数ロジックを WebAssembly で実装して ClickHouse 内で実行できるようになりました。Wasmtime バックエンドのサポートに貢献した Alexey Smirnov に特別な謝意を表します。#88747 (Vladimir Cherkasov ) 。WASM UDF サポートも段階的に改善されました。#99373 (Vasily Chekalkin ) 。
polyglot ライブラリを使用した外部 SQL ダイアレクトのサポートを追加。#99496 (Alexey Milovidov ) 。
ALP 浮動小数点圧縮 codec を追加 (圧縮不能な倍精度浮動小数点値に対する ALP_rd フォールバックなし) 。#91362 (Nazarii Piontko ) 。
JSON カラム向けの実験的な Lazy Type Hints を追加。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_replicas と automatic_parallel_replicas_mode の関係は次のとおりです。クエリが並列レプリカを使用できるのは、enable_parallel_replicas > 0 の場合のみです。さらに、automatic_parallel_replicas_mode=1 の場合、並列レプリカを使用するかどうかは、事前に収集された統計に基づいて計画時に判断されます。automatic_parallel_replicas_mode=0 の場合は、統計に関係なく、サポートされているすべてのクエリで並列レプリカが使用されます。特筆すべき例外の 1 つが、並列レプリカを使用する distributed insert-select です。この場合、クエリは常に automatic_parallel_replicas_mode=0 であるかのように実行されます。#97517 (Nikita Taranov ) 。
프レディケ이트に任意の比較演算子 (=, <, >, !=) が含まれ、かつパーティションキーが決定論的な関数チェーンでラップされている場合でも、パーティション剪枝を行えるようにしました (たとえば PARTITION BY x の場合、cityHash64(x) % 5 > 2、toYYYYMM(x) < 2026、toYYYYMM(x) = 2026、toYYYYMM(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 < 1e9 や number < 1e5 のようなフィルタも、無制限に実行される代わりに、primes() および numbers() テーブル関数にプッシュダウンされるようになりました。#85167 をクローズしました。#98516 (Nihal Z. Miaji ).
Parquet メタデータ用の新しい SLRU キャッシュを追加し、メタデータを読み取るだけのためにファイルを再ダウンロードする必要をなくすことで、読み取り性能を向上させました。#98140 (Grant Holly ) 。
オプティマイザ統計に基づいて、ANTI、SEMI、FULL join の左右を入れ替えられるようにしました。 #97498 (Hechem Selmi ).
大きなポリゴンに対する pointInPolygon のグラニュールスキップを最適化し、主キー剪枝中に 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 catalogへの呼び出しを不要にできます。 #96191 (Arsen Muk ).
S3Queue の ordered mode では、S3 ListObjectsV2 StartAfter を使用してプレフィックス履歴全体の再列挙を回避し、ListObjects の呼び出し回数を削減します。#96370 (Venkata Vineel ).
挿入時の重複排除におけるメモリ使用量を削減しました。一般に、重複排除には元のブロックが必要ですが、同期挿入ではこれを省略できるため、メモリを大きく節約できます。#96661 (Sema Checherinda ).
64 というハードコードされた値ではなく、キャッシュラインサイズにアーキテクチャ固有の値を使用するようにしました。 #97357 (Nikita Taranov ).
テキスト索引Dictionaryからの読み込みをわずかに最適化し、テキスト索引分析全体のパフォーマンスを向上しました。 #97519 (Anton Popov ).
ARM における16バイトブロックのLZ4伸長を高速化しました。#97774 (Raúl Marín ).
SIMD とステートフルなトークナイザーをサポートするため、従来のイテレータ型 API を置き換え、トークン化処理を新しい高性能インターフェイスへリファクタリングしました。#90268 の一部です。#97871 (Amos Bird ) 。
索引付きカラムと非索引カラムの両方を含む複合条件を持つクエリにおける、テキスト索引解析の性能を改善しました。従来、このようなケースでは、索引解析中の早期終了最適化が誤って無効になっていました。 #98096 (Anton Popov ).
非常に長い配列またはマップを生成する定数式を含むクエリのパフォーマンスを向上させました。 #98287 (Alexey Milovidov ).
整数定数と比較した際、従来は 그래뉼 の剪枝が行われなかった DateTime64 主キーのキー条件解析を修正しました。#98410 (Amos Bird ).
設定 optimize_syntax_fuse_functions がデフォルトで有効になりました。#98424 (Alexey Milovidov ) 。
ローカルアキュムレータを使用し、集約状態を介した行ごとの store-forwarding ではなくローカルで累積するようにすることで、avgWeighted агрегатная функцияを最適化し、Nullable 入力で最大 27% の性能向上を実現しました。 #98793 (Antonio Andelic ).
特定の状況における並列ウィンドウ関数や、大きな配列を扱う arrayFold ワークロードのパフォーマンスを改善し、メモリ使用量を削減します。これにより、該当するクエリでメモリ制限が厳しい場合のページフォールト負荷も軽減され、安定性が向上することがあります。 #98892 (filimonov ).
ソート済みマージのパフォーマンスを改善。 #99013 (Artem Zuikov ).
INTERSECT ALL と EXCEPT ALL を最適化。#99097 (Raufs Dunamalijevs ) 。
逆順読み取りで read_in_order_use_virtual_row 最適化をサポートしました。 #99198 (Vladimir Cherkasov ).
書き込み前に JoinUsedFlags が設定済みかどうかを確認することで、RIGHT および FULL JOIN におけるキャッシュ競合を低減しました。 #99274 (Hechem Selmi ).
浮動小数点演算を整数演算のみに置き換えることで PrefetchingHelper::calcPrefetchLookAhead を最適化し、命令キャッシュのレイアウトを改善するとともに、集約ループ中のサイクルオーバーヘッドを削減しました。#99327 (Riyane El Qoqui ) 。
ノードの子を保存するための absl::flat_hash_set を CompactChildrenSet に置き換え、Keeper のメモリ消費を削減しました。新しいコンテナは、ヒープ割り当てなしで 0~1 個の子をインラインで格納でき、Keeper ノードの大半をこれでカバーできます。これにより、KeeperMemNode のサイズは 144 バイトから 128 バイトに縮小されます。#99860 (Antonio Andelic ).
集約プロジェクションがビューで正しくサポートされるようになりました。#32753 を修正しました。#88798 (Amos Bird ) 。
join_use_nulls を用いた、OUTER JOIN から INNER JOIN への変換最適化をサポートしました。#90978 をクローズしました。#95968 (Vladimir Cherkasov ).
読み込み前にサイズを正しく計算することで、サブカラムの読み込みを改善しました。これにより、メモリ使用量が削減され、サブカラムをより高速に読み込めるようになります。 #96251 (Pavel Kruglov ) 。
短命な割り当て、すなわちクエリやリクエスト向けの割り当てが、キャッシュ向けのより長寿命な割り当てと混在した際のメモリ断片化を回避するため、마크キャッシュ、非圧縮キャッシュ、およびページキャッシュがそれぞれ別個の jemalloc アリーナを使用するようにしました。 #96812 (Seva Potapov ). #98812 . #99021
DELETE TTL ルールが設定されたテーブルで、垂直マージアルゴリズムを使用できるようになりました。#97332 (murphy-4o ).
分散索引分析時にデータスキッピングインデックスを適用するようになりました。#97767 (Azat Khuzhin ) 。
二次索引のマークは、prewarm_mark_cache 設定が有効な場合、事前にウォームアップされるようになりました (data part のフェッチ時およびテーブル起動時に索引マークキャッシュに読み込まれます) 。 #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 など) が抽出され、그래뉼 の剪枝に利用されます。#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 関数を導入しました。% と _ はワイルドカードとして扱われ、エスケープされたワイルドカード (\%、\_) はリテラルとして扱われます。また、エスケープされていないワイルドカードに隣接するトークンは破棄されます。#97872 (Amos Bird ).
S3テーブルエンジン向けに、テーブルのカラム定義のハッシュをS3パスに挿入する {_schema_hash} プレースホルダーを追加しました。#98265 (Miсhael Stetsyuk ) 。
SymbolIndex、addressToSymbol、system.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 ).
GROUPING SETS クエリ内の集約関数を正しく最適化できるよう、optimize_aggregators_of_group_by_keys を改善しました。#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 は、Tuple、Variant、Dynamic、JSON から抽出された Tuple(...) subcolumns を、Nullable(Tuple(...)) (存在しない行では NULL) として返すか、Tuple(...) (存在しない行ではデフォルトのタプル値) として返すかを制御します。デフォルトでは無効で、この設定はサーバーの再起動時にのみ変更できます。#97299 (Nihal Z. Miaji ).
EXPLAINクエリの出力に、遅延フィルターに関する情報を別項目として追加しました (FINAL とともに Row Policies/PREWHERE を使用する場合) 。関連: #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 テーブルエンジンで、KILL QUERY と clickhouse-client でのクエリキャンセル (Ctrl+C) への対応を改善しました。#97944 (Roman Vasin ) 。
jemalloc の lg_prof_sample を制御するサーバー設定 jemalloc_profiler_sampling_rate が追加され、非同期メトリクス jemalloc.prof.lg_sample として公開されました。 #97945 (Antonio Andelic ).
並行有界キューの実装で重み付けをサポートしました。 #97962 (Daniil Ivanik ).
PostgreSQL の辞書ソースで許可されるキーに sslmode を追加しました。これまで、sslmode は PostgreSQLDictionarySource.cpp の dictionary_allowed_keys の許可リストに含まれていなかったため、PostgreSQL の辞書接続で SSL モードを設定できませんでした。その結果、SSL を必須とする PostgreSQL サーバー (例: デフォルトで SSL を強制する AWS RDS) に辞書が接続できず、TLS ネゴシエーションが失敗し、サーバーは暗号化されていないフォールバック接続を拒否していました。#98014 (mcalfin ).
存在しないファイルパスを clickhouse または clickhouse-local に渡した際、紛らわしい汎用メッセージではなく、明確な "no such file" エラーを表示するようにしました。#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 ジョインアルゴリズムを有効化しました。 #98144 (János Benjamin Antal ).
ordinary shared merge tree での DROP DATABASE 時に、バックグラウンドマージを早期にキャンセルする。 #98161 (Shaohua Wang ).
clickhouse-client での KILL QUERY およびクエリのキャンセル (Ctrl+C) により、MongoDB と MySQL のクエリキャンセルを改善。 #98187 (Roman Vasin ).
NetlinkMetricsProvider を削除し、スレッドごとの taskstats メトリクス収集には procfs のみを使用するようにしました。Netlink ベースの収集はコンテナ環境では問題があり、競合時の尾延遅延も大きくなります。#98229 (Amos Bird ).
manifest ファイルのキャッシュに関する問題を修正するため、Iceberg のマニフェストファイル処理をリファクタリングしました。 #98231 (Daniil Ivanik ).
これにより、テーブルのソートキーが toDate(time) のような式になり得るケースも考慮されるようになり、そのような式がフィルタの一部である場合には、遅延させないという判断を行えるようになりました。 #98237 (Yarik Briukhovetskyi ).
ZooKeeper 内のエフェメラルロック znode に割り当てられる連番の最大値を表す、新しい 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 の設定を変更した後に、統計キャッシュを再起動するようにしました。#98520 (Han Fei ).
接続可能な「稼働中」のレプリカのみが分散索引分析に参加します。 #98521 (Azat Khuzhin ).
設定 access_control_improvements.disallow_config_defined_profiles_for_sql_defined_users を追加しました (既定では無効/許可) 。この設定により、SQL で定義されたユーザーは、設定ファイルで定義された設定プロファイル (default プロファイルを除く) を使用できなくなります。#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 ).
Analyzer のエラーメッセージでは、テーブル内のすべてのカラムをダンプしなくなりました (これにより 150KB 超の例外が発生する可能性がありました) 。カラム一覧は現在 10 件までに制限されています。#99002 (Yash ).
親クエリで結合順序の並べ替えに利用できるよう、結合を含むサブクエリからカラム統計を適切に返すようにしました。#99096 (Alexander Gololobov ).
終了処理の開始時に、send thread の終了を待たず、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_log に is_subrequest カラムを追加し、独立実行型リクエストと Multi/MultiRead リクエスト内のサブリクエストを区別できるようにしました。従来は、サブリクエストは独立実行型リクエストと同じバケットに集計されており、各サブ操作がマルチリクエスト全体の所要時間で記録されていたため、平均レイテンシが実態とかけ離れたものになっていました。サブリクエストのレイテンシは現在 0 になります。#99169 (Miсhael Stetsyuk ).
ALTER TABLE MODIFY COLUMN x TTL ... コマンドで、カラム型を指定しなくてもよくなりました。 #99208 (Nikolay Degterinsky ).
すでに切断されたセッションに対する古い Keeper リクエストをスキップすることで、不要な Raft の往復を回避します。追跡対象となる終了済みセッション数の上限は、調整設定 max_finished_sessions_cache_size で指定されます。#99246 (Antonio Andelic ).
mapValues(map) 上に構築されたテキスト索引での IN 演算子をサポート。 #99286 (Anton Popov ).
clickhouse keeper-client で、シェル風の補完をサポートしました (引用符で囲まれた引数 ('foo ba' など) の補完や、エスケープされた引数 (foo\ ba など) に対応し、空白を含むノードがある場合は ls がそれらを引用符付きで出力するようにしました) 。#99312 (Azat Khuzhin ).
ロック競合によって Keeper の mntr コマンドがハングする問題を防止しました。#99472 (Antonio Andelic ).
コールバックの呼び出しと読み取りリクエストのディスパッチをミューテックスのスコープ外で行うことで、Keeperディスパッチャーのロック競合を減らし、オブザーバビリティ向けにプロファイル付きロックガードを追加しました。 #99751 (Antonio Andelic ).
Parquet ファイルの最後のブロック末尾でパディングが欠けていても許容する。#99857 (Seva Potapov ) 。
バグ修正(公式安定版リリースにおけるユーザー可視の不具合)
完全修飾されていない場合、別名表のターゲットが DDL 依存関係として保存される際に、セッションデータベースではなく別名表のデータベースに保存されるよう修正しました。#95175 (Enric Calabuig ).
ALIAS カラムのサブカラムの読み込み時に、誤った結果が返されたり例外が発生したりする問題を修正しました。 #95408 (Pavel Kruglov ).
旧analyzer を使用した JOIN で、非標準の識別子エイリアスを用いた場合にカラムが欠落する不具合を修正しました。#25594 、#47288 、および #53263 を修正しました。#95679 (Zhigao Hong ).
空の引数が指定された場合に、Kusto ダイアレクトの関数 bin(), bin_at(), extract(), indexof() がクラッシュする不具合を修正しました。#95736 (NeedmeFordev ).
clickhouse-client では、local filesystem 上のデータレイクで使用され、場合によっては LocalDisk でも使用される local_object_storage を、user_files_path 以外にマウントすることを禁止します。 #96201 (Daniil Ivanik ).
DeltaLake テーブルエンジンで、スナップショットのバージョン変更時に発生する論理的な競合状態を修正し、不要かつ高負荷なスナップショット再読み込みを削除しました。#96226 (Kseniia Sumarokova ).
MergeTree で、detach から attach までの間に rename が複数回連続して行われた場合に、パートの attach 時に発生する論理エラーを修正しました。 #96351 (Alexey Milovidov ).
同じリクエスト内で compatibility とともに送信された明示的な設定について、その値がサーバーのデフォルトと一致している場合、暗黙のうちに無視されることがあった不具合を修正しました。#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 ).
JSON と shared data 内のバケットを使用した INSERT SELECT で、流が欠落する論理エラーを修正しました。#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 ).
正規表現が一致しない場合に誤った結果を返していた、replaceRegexpOne から extract への不正なクエリの書き換えを削除し、replaceRegexpOne を GROUP BY ... WITH CUBE および group_by_use_nulls=1 と併用した場合に発生する例外も修正しました。 #97546 (Alexey Milovidov ).
クエリが強制終了された際に、database_atomic_wait_for_drop_and_detach_synchronously を指定した DROP DATABASE が無期限にハングする問題を修正しました。#97586 (Alexey Milovidov ) 。
WITH FILL の生成処理中、dictGet による Dictionary の読み込み中、または ReplicatedMergeTree に対して mutations_sync=1 を指定した ALTER DELETE の実行中に停止したクエリを KILL QUERY で終了できない問題を修正しました。 #97589 (Alexey Milovidov ).
loop テーブル関数は inner_storage->read() を直接呼び出しており、本来は行ポリシー、カラムレベルの権限、その他のセキュリティチェックが適用されるインタープリタ層をバイパスしていました。その結果、行ポリシーで制限されているユーザーでも、直接 SELECT を実行すると 0 行しか返らない場合に、loop(table) を介してすべての行を読み取ることが可能でした。#97682 (pufit ).
toDate() 関数とともにエポック以前の DateTime64 を使用した場合に、パーティション剪枝が誤って行われる問題を修正しました。#97746 (Yarik Briukhovetskyi ).
このパッチ以降、データパートセット内に、より大きいパーティションIDを持つ別のパーティションが存在する場合、hasPartitionId は false を返すようになります。#97748 (Mikhail Artemenko ) 。
JSON の高度な共有データで、空のグラニュールの読み込み時に発生する可能性があるクラッシュを修正しました。#97563 をクローズします。#97778 (Pavel Kruglov ).
DROP と INSERT の競合によって Distributed への INSERT 時に発生していた Cannot schedule a file LOGICAL_ERROR を修正しました。#97822 (Azat Khuzhin ).
tokenbf_v1 スキップ索引を使用した mapContainsKey/mapContainsKeyLike の呼び出しで発生する ClickHouse サーバーのクラッシュ/アサートを修正しました。 #97826 (Shankar Iyer ) 。
concatWithSeparator、format、IN サブクエリ、GLOBAL IN、およびランタイムフィルターを伴う結合で、複合型 (Variant、Dynamic、Tuple) 内の LowCardinality が原因で発生する LOGICAL_ERROR 例外を修正しました。 #97831 (Raúl Marín ).
複数の Distributed テーブルに対する merge() テーブル関数を GROUP BY と組み合わせて 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 アルゴリズムを非等値結合で使用し、かつ結合結果のサイズ制約により左側の block を最後まで処理できない場合に、誤った結果が返される問題を修正しました。#97866 (János Benjamin Antal ).
#96686 で導入された DeltaLake メタデータスキャンのパフォーマンス非効率を修正しました。#97880 (Kseniia Sumarokova ).
ZooKeeperクライアントのsendThreadとreceiveThreadの間で発生していたデータ競合を修正しました。 #97887 (Pablo Marcos ).
分散 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 ).
Int8 より大きい整数型に対する sign 関数の JIT 誤コンパイルを修正しました。-128..127 の範囲外の値で、誤った符号を返す可能性がありました。#98012 (Alexey Milovidov ).
名前にドットを含む struct フィールド (例: STRUCT<`a.foo`: STRING, `b.foo`: STRING>) を持つ、カラム対応の "name" モードを使用する Delta Lake テーブルの読み込み時に発生していた DUPLICATE_COLUMN 例外と、NULL が何の警告もなく返される問題を修正しました。 #98013 (Caio Ishizaka Costa ).
論理更新およびセカンダリインデックス後のmutationを修正しました。 #98044 (Raúl Marín ).
主キーと非主キーのスキップ索引を混在させた場合に FINAL クエリの結果が誤る問題を修正しました。 #98097 (Raúl Marín ).
スカラー file() および DESCRIBE TABLE file() に対して READ ON FILE チェックを適用する。 #98115 (Nikolay Degterinsky ).
glob パターン (例: file('dir/**', 'LineAsString')) を使ってファイルにクエリを実行した際、ディレクトリにリンク切れのシンボリックリンクが含まれていると、未処理のファイルシステム例外 (STD_EXCEPTION) が発生してクラッシュしていた不具合を修正しました。現在はリンク切れのシンボリックリンクは自動的にスキップされ、クエリは有効なすべてのファイルから結果を返します。#98143 (Mark Andreev ).
フィルター条件式で arrayJoin を使用して外部結合を内部結合に変換する際に、クエリ計画の最適化で発生するセグメンテーションフォールトを修正しました。#98147 (Alexey Milovidov ).
メッセージ間で読み取り状態がリセットされないため、Kafkaエンジンで ProtobufList フォーマットが動作しない不具合を修正しました。 #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 ).
定数配列引数で kql_array_sort_asc/kql_array_sort_desc を呼び出した際に発生する論理エラー "Bad cast from type DB::ColumnConst to DB::ColumnArray" を修正しました。 #98251 (Alexey Milovidov ).
ColumnConst::getExtremes における範囲外アクセスを修正しました。これは、extremes = 1 が有効な場合にクラッシュを引き起こす可能性がありました。 #98263 (Alexey Milovidov ).
同じテーブルの組に対して逆方向に実行される 2 つの並行 MOVE PARTITION 操作で発生する可能性があるデッドロックを修正しました。 #98264 (Alexey Milovidov ).
HTTPサーバーは、不正なヘッダーが原因の 400 Bad Request レスポンスについて、空のボディではなくレスポンスボディにエラーメッセージを返すようになりました。 #98268 (Alexey Milovidov ).
分散索引分析 (Experimental 機能) およびクエリ条件キャッシュで誤った結果が返される不具合を修正しました。#98269 (Azat Khuzhin ).
65535 の境界をまたぐデータを含むキーカラムに対する toDate 変換によって発生していた、LOGICAL_ERROR 例外 "MergeTreeSetIndex で無効な二分探索結果" を修正しました。 #98276 (Alexey Milovidov ).
レガシー join ステップのコードパスで、query_plan_join_swap_table 最適化によって CROSS JOIN でラップされた RIGHT JOIN が入れ替えられる際に発生する 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 をフィルタリングする際に発生する不正な CAST 例外を修正しました。#98291 (Alexey Milovidov ) 。
ZooKeeper の blocks/ ディレクトリと deduplication_hashes/ ディレクトリのクリーンアップ順序の不整合により、再挿入が誤って重複排除されていた問題を原因とする、散発的な deduplication の不具合を修正しました。#98293 (Alexey Milovidov ).
ORDER BY ... WITH FILL を LIMIT BY と併用した際に発生する例外を修正しました。#98361 (Alexey Milovidov ).
Parquet/Arrow の Date カラムを Enum カラムに挿入する際に発生するサイレントデータ破損を修正しました。これにより、無効な Enum 値を格納する代わりに、互換性のない型変換は適切に拒否されるようになりました。 #98364 (Alexey Milovidov ).
Array カラムを持つ Arrow ファイルを、Nested カラムを持つテーブルに読み込む際に発生していた例外を修正しました。#98365 (Alexey Milovidov ).
索引またはプロジェクションの mutation が完了する前にそれらが削除された場合に、MATERIALIZE INDEX および MATERIALIZE PROJECTION の mutation が停止したままになる問題を修正しました。#98369 (Alexey Milovidov ).
Nullable(Tuple(...)) の読み込み時に、Tuple 要素名が Nullable の null サブカラムと衝突した場合に発生する例外を修正しました。#98372 (Alexey Milovidov ).
別のテーブルと Merge テーブル (Distributed テーブルをラップしたもの) を結合した際に発生する例外 "Column ... query tree node does not have valid source node" を修正しました。 #98376 (Alexey Milovidov ).
native V3 reader において、生のバイト列ではなく文字列表現を生成すべき Parquet Bool から FixedString への誤った変換を修正しました。 #98378 (Alexey Milovidov ).
tryGetColumnDescription を修正し、他のカラム検索メソッドとの整合性を保つため、親カラムの種類に基づいてサブカラムをフィルタリングするようにしました。#98391 (Alexey Milovidov ).
HTTP Basic Authで、パディングのないbase64認証情報を受け入れられるようになりました。一部のHTTPクライアントは Authorization: Basic ヘッダー末尾の = パディングを省略するため、これまでは認証に失敗していました。#98392 (Amos Bird ).
誤った min-max 索引の境界値が原因で、Nullable パーティションキー・カラムを持つパーツのマージ後にパーティション剪枝の結果が誤る問題を修正しました。#98405 (Amos Bird ).
パイプライン実行器でまれに発生する例外を修正しました。この例外は、パイプラインの拡張とクエリのキャンセルが競合した際に Received signal 6 として現れることがありました (デバッグビルドでのみ発生) 。#98428 (Alexey Milovidov ).
count_distinct_optimization を QUALIFY 句と併用した際に発生する例外 "Column identifier is already registered" を修正しました。#98433 (Alexey Milovidov ) 。
IN/NOT IN の引数に LowCardinality カラムを使用した際に発生する例外 "cannot be inside Nullable type" を修正しました (例: a が LowCardinality(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 例外 "プロジェクションでブロック内の行数を増やすことはできません" を修正しました。#98458 (Alexey Milovidov ) 。
CROSS JOIN と INNER JOIN USING を併用した際に発生する論理エラー例外を修正しました。#98459 (Alexey Milovidov ) 。
キー引数が Nullable の場合に dictGetOrDefault で発生する null ポインタの逆参照を修正しました。#98460 (Alexey Milovidov ) 。
集約プロジェクションの使用時に、materialize によってクエリとプロジェクションの間で LowCardinality 型の違いが生じる場合に発生していた DISTINCT クエリの例外を修正しました。 #98462 (Alexey Milovidov ).
OUTER JOIN と join_use_nulls が有効な状態で、フィルター式に arrayJoin を使用した場合に発生する LOGICAL_ERROR 例外を修正しました。 #98464 (Alexey Milovidov ).
optimize_aggregation_in_order を並列レプリカと併用した際に発生する、「レプリカは ReverseOrder ではなく WithOrder モードで読み取ると判断しました」という論理エラー例外 を修正しました。#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 TABLE と OPTIMIZE TABLE が同時に実行されると発生する可能性があった renameAndCommitEmptyParts の LOGICAL_ERROR 例外を修正しました。#98508 (Alexey Milovidov ).
Keeper のセキュアな raft ポートが openSSL 設定の cipherList と dhParamsFile を無視し、ユーザー指定の値ではなく常にデフォルト値を使用していた問題を修正しました。#51188 をクローズしました。#98509 (Antonio Andelic ).
「Receiving request for session X took 9963 ms」のような誤解を招く Keeper のログメッセージを修正しました。報告されていた時間は、実際には処理そのものに要した時間ではなく、ハートビート間で poll() 内においてアイドル状態で待機していた時間でした。#79026 を修正しました。#98510 (Antonio Andelic ).
read_in_order_use_virtual_row と単調関数に関連する予期しない結果を修正し、#97837 をクローズしました。#98514 (Vladimir Cherkasov ) 。
PREWHERE と IN サブクエリを MergeTree テーブルで使用した際に発生する 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 = 0 で query_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/Variant と NULL の比較で IS DISTINCT FROM が常に誤って 0 を返していた問題も修正しました。#98553 (Alexey Milovidov ).
テキスト索引を他のスキップ索引と併用した場合の動作を修正しました。以前は、クエリフィルターでテキスト索引と他の通常のスキップ索引を同時に使用すると、"存在しないマークを取得しようとしています" のような論理エラーが発生することがありました。#98555 (Anton Popov ).
同じクエリスコープ内でエイリアス付きのテーブル関数が複数回現れた場合 (たとえば PREWHERE 句と QUALIFY 句の両方) に、論理エラー "TABLE_FUNCTION is not allowed in expression context" が発生する問題を修正しました。 #98557 (Alexey Milovidov ).
PK 内で式 (カラムだけでなく) を使用する場合の分散索引分析を修正し (その結果、リモートレプリカ上の冗長なグラニュールがまったくフィルタリングされなくなる問題を解消しました) 。 #98561 (Azat Khuzhin ).
サブカラムが他のカラムのデフォルト式/エイリアス式で使用されている場合はカラムの削除を禁止し、alter drop column におけるデフォルト式では analyzer を使用するようにしました。#98569 (Nikita Mikhaylov ).
HTTPクライアントにおいて、再試行不可能なエラー (HTTP_CONNECTION_LIMIT_REACHED を含む) で S3 リクエストが誤って再試行される問題を修正しました。#98598 (Sema Checherinda ).
DateTime64 でパーティション剪枝を行う際に発生する Decimal のオーバーフローを修正しました。#98628 (Yarik Briukhovetskyi ).
JIT式コンパイルに関する2件のバグを修正しました。1件は、nativeCast の型チェックにおけるコピー&ペーストミスにより、整数から整数、および浮動小数点から浮動小数点へのCAST分岐に到達できなくなっていた問題です。もう1件は、LLVM PassBuilder に誤って nullptr の TargetMachine を渡していたため、ターゲット固有の最適化パスが登録されなかった問題です。#98660 (Alexey Milovidov ).
localhost を指す remote(), remoteSecure(), cluster(), または clusterAllReplicas() 経由で、SHOW_COLUMNS 特権がなくても任意のテーブルを DESCRIBE できてしまう RBAC のバイパスを修正しました。 #98669 (pufit ).
JOIN を含む WHERE と SELECT の両方で非ブール式 (例: sin(col)) が使われた場合に、filter push-down 最適化によって共有 DAG ノードが破損し、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 ).
input テーブル関数を remote の引数として使用した際に発生する例外 "Bad cast from type DB::TableFunctionNode to DB::QueryNode" を修正しました。 #98694 (Alexey Milovidov ).
空のカバリングパーツを誤ってクリーンアップしたことによって発生していた、古いデータパーツの復活を修正しました。 #98698 (Shaohua Wang ).
equals 比較でブール関数が Variant 型を返す場合に LogicalExpressionOptimizerPass で発生する例外を修正しました。#98712 (Alexey Milovidov ).
月名/曜日名のプレフィックスで始まる単語を parseDateTimeBestEffort が誤って解析してしまう問題を修正しました。#97965 をクローズします。#98742 (Pavel Kruglov ).
新しい analyzer を有効にした状態で、パラメータが異なる (例: SKIP フィールドが異なる) JSON カラムと、JSON のサブパスを参照する ALIAS カラムを持つテーブルに対して 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 ) 。
false を含む 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() の呼び出しでテーブルのスナップショットを取得してから、その後の反復処理中に別スレッドでテーブルが変更されるまでの間に作成された system テーブルで、null ポインタをデリファレンスしてクラッシュする問題を修正しました。#98792 (Grant Holly ) 。
SYSTEM START REPLICATED VIEW でリフレッシュタスクが起動しない問題を修正しました。#98797 (Pablo Marcos ) 。
view() テーブル関数内に JOIN を含み、それをさらに別の JOIN の中で使用した際に発生する例外 "Inconsistent table names" を修正しました (旧 analyzer の場合のみ) 。#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) の未定義動作、およびグローバルピーク追跡における off-by-one エラーを修正しました。追跡対象を拡張し、io_uring のリングバッファも含めました。#98915 (Antonio Andelic ).
ユーザーパス外にあるローカルのデータレイクテーブルへのアタッチを、作成だけでなく禁止しました。 #98936 (Daniil Ivanik ).
urlCluster または同様のクラスター テーブル関数を使用するクエリで、"ReadBuffer is canceled" 例外を引き起こす可能性のある競合状態を修正しました。#98955 (Alexey Milovidov ) 。
BFloat16 型の引数が渡された際に金融関数 (financialNetPresentValue、financialInternalRateOfReturn など) で発生していた LOGICAL_ERROR 例外を修正しました。#98958 (Alexey Milovidov ).
クエリ計画の式のマージが無効な場合 (query_plan_merge_expressions = 0 または query_plan_enable_optimizations = 0) に、ALIASカラムでスキップ索引 (および主キー条件) が適用されない問題を修正しました。 #98960 (Peng ).
非同期挿入時に InsertQuery ProfileEvent をインクリメントするようにしました。#98626 をクローズしました。#98962 (Narasimha Pakeer ).
主キーに NaN の浮動小数点値が含まれる場合に、accurateLess と accurateEquals が NaN を ClickHouse のソート順と整合する形で扱うようにし、デバッグビルドで発生する例外 "Inconsistent KeyCondition behavior" を修正しました。#98075 をクローズします。#98964 (Alexey Milovidov ).
SummingMergeTree は、Bool (およびその他のドメイン型) のカラムを合計しなくなりました。Bool の値は算術的に合算されず、そのまま保持されます。#98976 (Yash ).
optimize_const_name_size が設定され、enable_scalar_subquery_optimization = 0 の状態でリモート分片に対してクエリを実行した際に発生していた、Scalar doesn'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.grants の access_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 ).
startsWith、LIKE、NOT LIKE を FixedString カラムに対して使用した際に、剪枝が不正確になったり、十分に行われなかったりする問題を修正しました。さらに、FixedString から String へのキャスト関数でも、キーカラムに適用した場合に 그래뉼 を剪枝できるようになりました。#98940 をクローズします。#99001 (Nihal Z. Miaji ).
重複イベントが発生した際に、windowFunnel の strict_deduplication が誤ったレベルを返す不具合を修正しました。#99003 (Yash ).
サブクエリ内で EXISTS が LIMIT 句および OFFSET 句を無視していた不具合を修正しました。この不具合により、オフセットまたは LIMIT 0 のためにサブクエリが行を返さない場合、誤った結果が返されていました。#88722 をクローズしました。#99005 (andriibeee ).
GROUPING SETS 使用時に、filter push-down 最適化が短絡評価で定数に畳み込まれる AND 式に遭遇した際に発生する "Block structure mismatch" 例外を修正しました。#99010 (Alexey Milovidov ).
クエリ計画に_part_offsetカラムがない場合に、patch parts (論理更新) を読み込むと発生する例外を修正しました。#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 ) 。
グロブパターンを使用して url() テーブル関数経由で存在しない圧縮ファイルを読み込む際に、誤解を招く "inflate failed: buffer error" が表示される問題を修正しました。http_skip_not_found_url_for_globs が有効な場合、想定どおり空の結果を返すようになりました。#99034 (Alexey Milovidov ).
schema の変更 (例: ADD COLUMN) 後、パッチ part に対して ALTER TABLE ... DROP PART を実行した際にサーバーがクラッシュ (std::terminate) する不具合を修正しました。このクラッシュは、空の coverage part メタデータにシステムカラム (_part) が含まれていなかったため、NOEXCEPT_SCOPE 内で未捕捉の例外が発生していたことが原因でした。 #99036 (Peng ).
キャッシュされたディスク読み取り中にメモリ制限超過の例外が発生した場合、ClickHouse サーバーのプロセスがクラッシュすることがありました。この問題は修正されました。 #99042 (Shankar Iyer ).
dictGet を使用して、ROW POLICY と ALIAS カラムの両方を持つテーブルをクエリした際に発生する LOGICAL_ERROR を修正しました。この問題は、新しい analyzer における ALIAS カラムの解決中に、テーブル式へ早期にアクセスしていたことが原因でした。#99065 (Peng ).
データ形式に Avro フォーマットを使用する Iceberg テーブルで、ユーザーが仮想カラムのみをクエリしようとした際に発生する範囲外エラーを修正しました。非常にまれなケースのため、重大には分類していません。#88238 を修正しました。#99080 (alesapin ).
remote() + view() を使用した再帰CTEで発生するセグメンテーション違反を修正しました。#99081 (Konstantin Bogdanov ) 。
read-in-order 最適化が適用されている場合、不要な追加の索引解析をスキップします。#99084 (Vladimir Cherkasov ).
patch part の適用時に発生する、メモリ制限例外が原因のクラッシュを修正しました。 #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 バイパスを修正しました。リモートサーバーから schema を推論する関数では、これにより認可なしで外向き接続 (SSRF) を発生させることも可能になっていました。#99122 (pufit ).
動的な再設定とリーダー移譲の実行中に発生する Keeper のクラッシュ (NuRaft でのセグメンテーション違反) を修正しました。#99133 (JIaQi Tang ).
宛先側が SAMPLE をサポートしていない場合に、Buffer テーブルで SAMPLE を使用するとクラッシュする問題を修正しました。#99141 (Kseniia Sumarokova ) 。
patch parts のカラム順の不一致により発生する LOGICAL_ERROR を修正しました。 #99164 (Pablo Marcos ).
Iceberg テーブルに ORC と Parquet の混在したフォーマットのファイルが含まれている場合に、ごくまれに発生するクラッシュを修正しました。#88126 。#99168 (alesapin ) 。
バックアップ/復元で 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 がスキップ索引の型、圧縮codec名、データベースエンジン名、および Dictionary のレイアウト/ソース定義まで難読化してしまい、無効な SQL が生成される問題を修正しました。#99260 (Raúl Marín ).
一部のケースで Time[64] 型と DateTime[64] 型の比較が分かりにくくなっていた不具合を修正しました。現在は、このような場合、Time[64] の値は日付部分として 1970-01-01 を加えることで DateTime[64] に変換されます。#99267 (Yarik Briukhovetskyi ).
distributed DDL クエリの DDL worker で、設定の制約が範囲内に収まるようにしました。#99317 (Pablo Marcos ).
TOTP認証に関する軽微な問題を修正: パスワードが空の場合の --one-time-password CLI オプション、および <digits> と <period> の設定値の検証。#99322 (Vladimir Cherkasov ).
列挙型定義に存在しない値を持つ Enum8/Enum16 カラムのシリアライズ時に、Avro出力フォーマットで発生していた論理エラー unordered_map::at: key not found を修正しました。 #99332 (Desel72 ).
Dynamic を含む Tuple 内のスパースなシリアライゼーションにおける CHECK TABLE の問題を修正しました。#96588 をクローズしました。#99351 (Pavel Kruglov ).
テキスト索引プリプロセッサに対する厳しすぎる検証を修正しました。 #99359 (Anton Popov ).
暗黙的な minmax インデックスを持つレプリケートテーブルを 25.10 からそれ以降のバージョンにアップグレードする際の互換性の問題を修正しました。#99392 (Raúl Marín ).
テキスト索引の解析で、否定関数 (notEquals, notLike, notIn) のサポートを削除しました。これらの関数ではグラニュールをまったくスキップできなかったため、それらに対して索引を解析しても、利点がないままオーバーヘッドが増えるだけでした。#99393 (Anton Popov ) 。
Distributed テーブルが IN サブクエリ内で使用されるケースにおいて、新しいアナライザーで optimize_skip_unused_shards を修正しました。 #99436 (Nikolai Kochetov ).
INTERSECT/EXCEPT でクエリによって重複したカラム名が生成される場合に発生する heap-use-after-free を修正しました。 #99471 (Alexey Milovidov ).
パート名に型付きクエリパラメータを使用した場合の 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 クエリの後にデータパートが誤って破損扱いとされ、デタッチされてしまう問題を修正しました。#99529 (Anton Popov ).
HTTP インターフェイス経由で Pretty フォーマットを使用して空の system テーブルに対してクエリを実行したときに発生する std::length_error 例外を修正しました。 #99541 (Alexey Milovidov ).
仮想カラム (例: _part_offset) と同名のEPHEMERALカラムをALTER TABLE ADD COLUMNで作成した際に発生する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 ).
AsynchronousReadBufferFromFileDescriptor における O_DIRECT 使用時の seek の誤りを修正。#99358 をクローズ。#99678 (Pavel Kruglov ).
不正な圧縮データの展開時に CompressionCodecT64 で発生する heap-buffer-overflow と、CompressionCodecMultiple で発生するプロセスの異常終了を修正しました。いずれの問題も、新しい libFuzzer ターゲットによって発見されました。これらの codec は、クラッシュする代わりに例外を送出するようになりました。 #99680 (Rahul ).
サーバーがすべてのテーブルの読み込みを完了するまで、処理を遅延させます。#99700 (Seva Potapov ) 。
インライン DDL パラメータで、MySQL Dictionary ソースが RemoteHostFilter を迂回してしまう問題を修正しました。#99720 (Shaohua Wang ).
system.tables でデータレイクのテーブルを走査する際の論理エラーを修正しました。 #99739 (Konstantin Vedernikov ).
プリプロセッサを使用するテキスト索引におけるIN関数の述語解析を修正しました。テキスト索引内で検索対象トークンが衝突し、不正確な結果につながる可能性があった問題を修正しました。#99755 (Anton Popov ).
負の shape 次元を持つ Npy フォーマットのファイルを読み込む際に発生する無限ループを修正しました。 #99812 (Desel72 ).
クエリ計画のヘッダー計算時に 0 行で評価される FixedString 引数に対する CRC32 関数の global-buffer-overflow を修正しました。 #99835 (Alexey Milovidov ).
Iceberg テーブルで ALTER TABLE ... MODIFY COLUMN ... COMMENT を実行した際に発生するクラッシュ (null ポインタのデリファレンス) を修正しました。#99838 (Desel72 ).
aggregate_functions_null_for_empty 設定を修正し、Array や Map などの Nullable ではない型を返す集約関数 (例: groupArray, sumMap) でも動作するようにしました。 #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 ).
ビルド/テスト/パッケージングの改善
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 )。
ビルド/テスト/パッケージングの改善