後方互換性を損なう変更
デフォルトの schema_inference_make_columns_nullable 設定を変更し、すべてを Nullable にするのではなく、Parquet/ORC/Arrow のメタデータから取得したカラムが Nullable かどうかの情報を尊重するようにしました。テキスト形式については変更ありません。#71499 (Michael Kolupaev ).
クエリおよび関数の変更
クエリ結果キャッシュは log_comment 設定を無視するようになりました。これにより、クエリの log_comment だけを変更しても、キャッシュミスが発生しなくなります。log_comment を変化させることで意図的にキャッシュをセグメント化していたユーザーがいる可能性があります。この変更によりその挙動は変わるため、後方互換性がありません。この目的には query_cache_tag 設定を使用してください。#79878 (filimonov ).
以前のバージョンでは、テーブル関数の名前が演算子の実装関数と同じ場合、そのクエリのフォーマットが一貫していませんでした。これにより #81601 、#81977 、#82834 、#82835 がクローズされます。EXPLAIN SYNTAX クエリでは演算子をフォーマットしなくなります。この新しい挙動の方が、構文を説明するという目的をより正確に反映しています。clickhouse-format、formatQuery なども、クエリ内で関数形式で記述されている場合には、関数を演算子としてフォーマットしなくなります。#82825 (Alexey Milovidov ).
IPv4/IPv6 に対する意味のない二項演算を無効化しました。IPv4/IPv6 と非整数型との加算/減算は無効になりました。以前は浮動小数点型との演算を許可し、一部の他の型(たとえば DateTime)では論理エラーをスローしていました。#86336 (Raúl Marín ).
既存の関数 hasToken との一貫性を高めるため、関数 searchAny および searchAll は、それぞれ hasAnyTokens および hasAllTokens に名前変更されました。#88109 (Robert Schulze ).
データ型の変更
JOIN キーとして Dynamic 型を使用することを禁止しました。Dynamic 型を非 Dynamic 型と比較すると、予期しない結果を招く可能性があります。Dynamic カラムは、必要な型にキャストすることを推奨します。#86358 (Pavel Kruglov ).
ストレージおよび索引の変更
allow_dynamic_metadata_for_data_lakes セtting を非推奨としました。これにより、すべての iceberg テーブルは、各クエリの実行前にストレージから最新のテーブルスキーマを取得しようとします。 #86366 (Daniil Ivanik ).
反転テキスト索引をゼロから再設計し、RAM に収まりきらないデータセットにもスケールするようにしました。 #86485 (Anton Popov ).
サーバーセtting storage_metadata_write_full_object_key がデフォルトで有効になり、無効化できなくなりました。 #87335 (Sema Checherinda ).
ファイルシステムキャッシュから cache_hits_threshold を削除しました。cache_hits_threshold は SLRU キャッシュポリシーが追加される前に導入されたものであり、両方をサポートする必要はありません。 #88344 (Kseniia Sumarokova ).
設定および構成の変更
挿入レートが低い場合に ZooKeeper 上に保存される znode を減らすため、replicated_deduplication_window_seconds を 1 週間から 1 時間に縮小しました。 #87414 (Sema Checherinda ).
設定 query_plan_use_new_logical_join_step を query_plan_use_logical_join_step に名称変更しました。 #87679 (Vladimir Cherkasov ).
新しい構文により、tokenizer パラメータをより柔軟かつ表現力豊かに指定できるようになりました。 #87997 (Elmi Ahmadov ).
min_free_disk_ratio_to_perform_insert と min_free_disk_bytes_to_perform_insert 設定の動作を、次の 2 点でわずかに変更しました。1 つ目は、INSERT を拒否すべきかどうかの判定において、利用可能バイト数ではなく、予約されていないバイト数を使用するようにしたことです。バックグラウンドマージやミューテーション用の予約が、設定されたしきい値と比べて小さい場合にはおそらく重要ではありませんが、この方がより正確と考えられます。2 つ目は、これらの設定をシステムテーブルには適用しないようにしたことです。query_log のようなテーブルは引き続き更新されることが望ましく、これはデバッグに大いに役立ちます。システムテーブルに書き込まれるデータ量は通常、実際のデータと比べて小さいため、妥当な min_free_disk_ratio_to_perform_insert のしきい値であれば、より長期間にわたって書き込みを継続できるはずです。 #88468 (c-end ).
Keeper の変更
Keeper の内部レプリケーションで非同期モードを有効にしました。Keeper は、以前と同じ動作を維持しつつ、パフォーマンスが向上する可能性があります。23.9 より古いバージョンからアップデートする場合は、まず 23.9 以降にアップデートし、その後 25.10 以降にアップデートする必要があります。もしくは、アップデートの前に keeper_server.coordination_settings.async_replication を 0 に設定し、アップデート完了後に有効化することもできます。#88515 (Antonio Andelic ).
新機能
n-gram に基づく Naive Bayes を使用してテキストを分類するための naiveBayesClassifier 関数を追加しました。#78700 (Nihal Z. Miaji )。
一方の配列から、もう一方の配列に含まれる要素を集合として差し引く arrayExcept 関数を追加しました。#82368 (Joanna Hulboj )。
異なる基数間で数値を変換する新しい conv 関数を追加しました。現在は基数 2-36 をサポートします。#83058 (hp )。
studentTTestOneSample 集約関数を追加しました。#85436 (Dylan )。
文字列が ASCII 文字のみで構成されているかを確認する isValidASCII 関数を追加しました。#85377 をクローズしました。#85786 (rajat mohan )。
集約関数 timeSeriesChangesToGrid と timeSeriesResetsToGrid を追加しました。timeSeriesRateToGrid と同様に動作し、開始タイムスタンプ、終了タイムスタンプ、ステップ、ルックバックウィンドウのパラメータに加えて、タイムスタンプと値の 2 つの引数を受け取りますが、各ウィンドウにつき 2 サンプルではなく少なくとも 1 サンプルを要求します。PromQL の changes / resets を計算し、パラメータで定義されたタイムグリッド内の各タイムスタンプについて、指定されたウィンドウ内でサンプル値が変化または減少した回数をカウントします。戻り値の型は Array(Nullable(Float64)) です。#86010 (Stephen Chi )。
集約関数 quantilePrometheusHistogram を追加しました。この関数は、ヒストグラムバケットの上限値と累積値を引数として受け取り、分位点の位置が属するバケットの上下限の間で線形補間を行います。従来のヒストグラムに対する PromQL の histogram_quantile() 関数と同様に振る舞います。#86294 (Stephen Chi )。
startsWith および endsWith 関数の、大文字小文字を区別しない最適化されたバリアントを追加しました:startsWithCaseInsensitive、endsWithCaseInsensitive、startsWithCaseInsensitiveUTF8、endsWithCaseInsensitiveUTF8。#87374 (Guang Zhao )。
システムテーブル
テーブルエンジンとストレージ
テーブルエンジン Alias をサポートしました。#76569 (RinChanNOW ).
ユーザーは、NATS エンジン向けの新しい設定 nats_stream と nats_consumer を指定することで、NATS JetStream を使用してメッセージを購読できるようになりました。#84799 (Dmitry Novikov ).
ディスク構成を持つ Iceberg および Delta Lake テーブルをサポートしました。これにより、既存のディスクを使用してユーザーテーブルを指定できます。Iceberg で使用するディスクを指定できるように、設定 allowed_disks_for_table_engines を追加しました。例: CREATE TABLE test ENGINE = Iceberg('path/inside/disk') SETTING datalake_disk_name = '<some_user_disk>'; ユーザー向け変更のドキュメントエントリを追加しました。#86778 (scanhex12 ).
新しいテーブル設定 min_level_for_wide_part を追加しました。これにより、パーツが wide part として作成されるための最小レベルを指定できます。#88179 (Christoph Wurm ).
Iceberg とデータレイク
ClickHouse で Apache Paimon をクエリするためのサポートを追加しました。これにより、ClickHouse ユーザーは Paimon のデータレイクストレージに直接アクセスできるようになります。 #84423 (JIaQi ).
Iceberg テーブルエンジンでの ALTER UPDATE をサポートしました。 #86059 (scanhex12 ).
索引と統計
長い部分文字列の検索に有用な、新しい sparse_gram Bloom filter 索引を追加しました。 #79985 (scanhex12 ).
MergeTree テーブル内の、統計作成の対象となるすべてのカラムに対して統計を自動作成できる機能を追加しました。作成する統計の種類をカンマ区切りで指定するテーブルレベルの設定 auto_statistics_types を追加しました(例: auto_statistics_types = 'minmax, uniq, countmin')。 #87241 (Anton Popov ).
SQL およびクエリ関連の機能
LIMIT BY ALL 構文のサポートを追加しました。GROUP BY ALL や ORDER BY ALL と同様に、LIMIT BY ALL は SELECT 句に含まれるすべての非集約式を自動的に展開して LIMIT BY のキーとして使用します。たとえば、SELECT id, name, count(*) FROM table GROUP BY id LIMIT 1 BY ALL は SELECT id, name, count(*) FROM table GROUP BY id LIMIT 1 BY id, name と等価です。この機能により、選択したすべての非集約カラムで制限をかけたい場合に、それらを明示的に列挙することなくクエリを簡潔に記述できます。#59152 をクローズしました。#84079 (Surya Kant Ranjan )。
クエリ設定において、値を指定しない設定名を 1 と等価として扱うようにしました(例: SELECT ... SETTINGS use_query_cache は use_query_cache = 1 と等価)。#85800 (thraeka )。
一時テーブルと同じ構文で一時 VIEW を作成できるようにしました。#86432 (Aly Kafoury )。
負の LIMIT および負の OFFSET のサポートを追加しました。#28913 をクローズしました。#88411 (Nihal Z. Miaji )。
クライアントおよび CLI の機能
--login を使用して、Cloud の認証情報で ClickHouse Cloud インスタンスにアクセスできるようになりました。 #82753 (Krishna Mannem ).
セミコロンを新しい行ではなく最後の行に配置するようにクエリを整形する --semicolons_inline オプションを追加しました。 #88018 (Jan Rada ).
サーバー設定とワークロード管理
新しい設定オプション logger.startupLevel および logger.shutdownLevel により、それぞれ ClickHouse の起動時およびシャットダウン時のログレベルを上書きできるようになりました。#85967 (Lennard Eijsackers ).
サーバー設定の "resources_and_workloads" セクションを使用して、SQL 内で WORKLOAD および RESOURCE を定義できるようになりました。#87430 (Sergei Trifonov ).
システムコマンド
Keeper
実験的機能
関数 searchAll と searchAny が、テキストカラムを含まないカラムでも動作するようになりました。この場合、デフォルトのトークナイザーが使用されます。 #87722 (Jimmy Aguilar Mena ).
ベクトルをビットスライス形式で格納するデータ型 QBit と、パラメータによって精度と速度のトレードオフを制御しつつ近似ベクトル検索を可能にする関数 L2DistanceTransposed を実装しました。 #87922 (Raufs Dunamalijevs ).
クエリの実行と最適化
Query Condition Cache (QCC) と索引解析の順序と統合方法をリファクタリングすることで、クエリパフォーマンスを改善しました。QCC フィルタリングは、プライマリキーおよびスキップ索引の解析より前に適用されるようになり、不必要な索引計算が削減されます。索引解析は複数のレンジフィルターをサポートするよう拡張され、そのフィルタリング結果は QCC に再び格納されるようになりました。これにより、索引解析が実行時間の支配的要因となるクエリ、特にスキップ索引(例: ベクター索引や反転索引)に依存するクエリの速度が大幅に向上します。#82380 (Amos Bird ).
小規模なクエリを高速化するための複数のマイクロ最適化を行いました。#83096 (Raúl Marín ).
ネイティブプロトコルにおいて、ログおよびプロファイルイベントを圧縮するようにしました。100 以上のレプリカを持つクラスタでは、非圧縮のプロファイルイベントが 1〜10 MB/秒に達し、インターネット接続が遅い場合にプログレスバーの動きが鈍くなります。これにより #82533 が解決されます。#83586 (Alexey Milovidov ).
func(primary_column) = 'xx' や column in (xxx) のような条件に対する prewhere 最適化を改善しました。#85529 (李扬 ).
uuid でフィルタする system.tables に対してフルスキャンを回避するようにしました(ログや ZooKeeper のパスから UUID しか得られない場合に有用です)。#88379 (Azat Khuzhin ).
JOIN の最適化
論理和を含む JOIN 述語のプッシュダウンに関するロジックを追加。例: TPC-H Q7 で、2 つのテーブル n1 と n2 に対する条件 (n1.n_name = 'FRANCE' AND n2.n_name = 'GERMANY') OR (n1.n_name = 'GERMANY' AND n2.n_name = 'FRANCE') がある場合、各テーブルに対して個別の部分フィルタを抽出し、n1 に対しては n1.n_name = 'FRANCE' OR n1.n_name = 'GERMANY'、n2 に対しては n2.n_name = 'GERMANY' OR n2.n_name = 'FRANCE' とする。#84735 (Yarik Briukhovetskyi )。
JOIN の書き換えを実装: 1. マッチした行またはマッチしなかった行に対するフィルタ条件が常に偽である場合、LEFT ANY JOIN および RIGHT ANY JOIN を SEMI/ANTI JOIN に変換。この最適化は、新しい設定 query_plan_convert_any_join_to_semi_or_anti_join によって制御される。2. 一方の側からのマッチしない行に対するフィルタ条件が常に偽である場合、FULL ALL JOIN を LEFT ALL または RIGHT ALL JOIN に変換。#86028 (Dmitry Novik )。
多数の非マッチ行を含む LEFT/RIGHT JOIN の場合に、HashJoin のパフォーマンスをわずかに最適化。#86312 (Nikita Taranov )。
JOIN の順序最適化で統計情報を使用するようになった。この機能は allow_statistics_optimize = 1 および query_plan_optimize_join_order_limit = 10 を設定することで有効化できる。#86822 (Han Fei )。
JOIN 最適化中のランタイムハッシュテーブルの統計情報の再計算をスキップ。新しいプロファイルイベント JoinOptimizeMicroseconds と QueryPlanOptimizeMicroseconds を追加。#87683 (Vladimir Cherkasov )。
一部のケースでの JOIN パフォーマンスをわずかに向上させるため、AddedColumns::appendFromBlock をインライン化。#88455 (Nikita Taranov )。
文字列と関数の最適化
StringZilla ライブラリを使用し、利用可能な場合は SIMD CPU 命令を用いることで、大文字小文字を区別する文字列検索(WHERE URL LIKE '%google%' のようなフィルタリング操作)のパフォーマンスを向上。#84161 (Raúl Marín )。
新しいデフォルト設定 optimize_rewrite_like_perfect_affix を使用することで、接頭辞または接尾辞を伴う LIKE のパフォーマンスを向上。#85920 (Guang Zhao )。
関数 tokens、hasAllTokens、hasAnyTokens のパフォーマンスを向上。#88416 (Anton Popov )。
MergeTree とストレージの最適化
MergeTree テーブルのトップレベル String カラム向けにオプションの .size サブカラムシリアライゼーションを追加し、圧縮率を改善しつつ効率的なサブカラムアクセスを可能にしました。シリアライゼーションのバージョン管理および空文字列に対する式の最適化のための新しい MergeTree 設定を導入しました。 #82850 (Amos Bird ).
テーブルに型 SimpleAggregateFunction(anyLast) のカラムがある場合に、FINAL 付きで AggregatingMergeTree テーブルから SELECT する際のメモリアロケーションおよびメモリコピーを削減しました。 #84428 (Duc Canh Le ).
論理削除の実行後に行われる縦型マージのパフォーマンスを改善しました。 #86169 (Anton Popov ).
多数のパーツを持つテーブルに対する高速なクエリのパフォーマンスを改善しました(deque の代わりに devector を使用して MarkRanges を最適化)。 #86933 (Azat Khuzhin ).
join モードにおけるパッチパーツ適用のパフォーマンスを改善しました。 #87094 (Anton Popov ).
マークをキャッシュに保存できるようにし、MergeTreeLazy リーダーでの直接 I/O を回避しました。 #87989 (Nikita Taranov ).
is_deleted カラムを持つ ReplacingMergeTree テーブルに対する FINAL 句付きの SELECT クエリが、2 つの既存の最適化からの並列化の改善により、より高速に実行されるようになりました。1) テーブルのうち単一の part しか持たないパーティションに対する do_not_merge_across_partitions_select_final 最適化 2) テーブル内のそれ以外の選択レンジを intersecting / non-intersecting に分割し、FINAL のマージ変換を通過する必要があるのは intersecting なレンジのみとしました。 #88090 (Shankar Iyer ).
集約と GROUP BY の最適化
索引とテキスト検索の最適化
データレイクの最適化
内部最適化
クエリの最適化と実行
mannWhitneyUTest は、両方のサンプルが同一の値のみを含む場合でも例外をスローしなくなりました。これにより SciPy と整合する有効な結果を返すようになりました。これにより次の Issue がクローズされました: #79814 。#80009 (DeanNeaht )。
実験的な JOIN 順序最適化が追加されました。この機能は query_plan_optimize_join_order_limit 設定で制御され、パフォーマンス向上のために JOIN を自動的に並べ替えることができます。なお、この JOIN 順序最適化は現時点では統計情報のサポートが限定的であり、主にストレージエンジンからの行数推定に依存しています。より高度な統計情報の収集およびカーディナリティ推定は、今後のリリースで追加される予定です。アップグレード後に JOIN クエリで問題が発生した場合 、一時的な回避策として SET query_plan_use_new_logical_join_step = 0 を設定して新しい実装を無効化し、調査のために問題を報告してください。USING 句からの識別子解決に関する注意 : OUTER JOIN ... USING 句における coalesced カラムの解決方法を、より一貫性のあるものに変更しました。以前は、OUTER JOIN で USING カラムと修飾付きカラム(a, t1.a, t2.a)の両方を SELECT した場合、USING カラムが誤って t1.a として解決され、左側にマッチしない右テーブルの行に対して 0/NULL が表示されていました。現在は、USING 句由来の識別子は常に coalesced カラムとして解決され、修飾付き識別子は、クエリ内にどの識別子が含まれているかに関わらず、非 coalesced カラムとして解決されます。例えば:
SELECT a, t1.a, t2.a
FROM (SELECT 1 as a WHERE 0) t1
FULL JOIN (SELECT 2 as a) t2 USING (a)
-- Before: a=0, t1.a=0, t2.a=2 (誤り - 'a' が t1.a に解決されている)
-- After: a=2, t1.a=0, t2.a=2 (正しい - 'a' は coalesced カラム)
#80848 (Vladimir Cherkasov ).
読み取り時にスキップ索引を使用してデータパーツをフィルタリングし、不要な索引の読み取りを削減できるようにしました。この挙動は新しい設定 use_skip_indexes_on_data_read(デフォルトでは無効)で制御されます。これは #75774 に対応するものです。また、#81021 と共通の基盤となる変更も一部含みます。 #81526 (Amos Bird )。
Rewrite disk object storage のトランザクションでは、メタデータトランザクションがコミットされた場合に、以前のリモート BLOB を削除するようになりました。#81787 (Sema Checherinda ).
S3 の再試行戦略を設定可能にし、設定 XML ファイルの変更時に S3 ディスクの設定をホットリロードできるようにしました。 #82642 (RinChanNOW ).
結果型の LowCardinality が最適化前後で異なる場合に、冗長な等価比較式に対する最適化パスを修正しました。 #82651 (Yakov Olkhovskiy ).
oneof の一部が存在することを示すために、特別なカラムを使用できるようになりました。 #82885 (Ilya Golshtein ).
新しい Kafka テーブルエンジンに対して誤った設定が指定された場合に、ユーザー向けの案内をより明確にしました。 #83701 (János Benjamin Antal ).
HTTP クライアントが Expect: 100-continue に加えてヘッダー X-ClickHouse-100-Continue: defer を設定すると、ClickHouse は QUOTA 検証に合格するまでクライアントに 100 Continue レスポンスを送信しないため、最終的に破棄されるリクエストボディを送信してしまうことによるネットワーク帯域の無駄を防げます。これは、URL のクエリ文字列でクエリを送信し、データをリクエストボディで送信する INSERT クエリで特に有効です。リクエストボディ全体を送信せずにリクエストを中止すると、HTTP/1.1 ではコネクションを再利用できなくなりますが、新しいコネクションを確立することで発生する追加レイテンシは、大量のデータを扱う場合の INSERT 全体の実行時間と比べれば通常は無視できる程度です。 #84304 (c-end )。
Time 型に対してタイムゾーンを指定することはできなくなりました。 #84689 (Yarik Briukhovetskyi ).
クライアントのオートコンプリートは、複数の system テーブルクエリを発行するのではなく system.completions を使用することで、より高速かつ一貫性が向上します。 #84694 (|2ustam ).
best_effort 形式での Time[64] のパース処理に関するロジックを簡素化し、いくつかのバグを修正しました。 #84730 (Yarik Briukhovetskyi )。
右側のサブツリーから実行時に Bloom フィルターを構築し、このフィルターを左側のサブツリーでのスキャンに渡すことで、一部の JOIN クエリを高速化できます。これは、SELECT avg(o_totalprice) FROM orders, customer, nation WHERE c_custkey = o_custkey AND c_nationkey=n_nationkey AND n_name = 'FRANCE' のようなクエリで有効です。#84772 (Alexander Gololobov )。
materialized view を作成する際に、TO の後にクエリパラメーターを使用できます。例えば、次のように指定できます: CREATE MATERIALIZED VIEW mv TO {to_table:Identifier} AS SELECT * FROM src_table。 #84899 (Diskein ).
S3 ストレージを使用する DATABASE ENGINE = Backup で、ログ内の S3 認証情報をマスクするようにしました。 #85336 (Kenny Sun ).
jemalloc を新しいバージョンに更新しました。jemalloc の内部ツールに基づき、アロケーションプロファイリングを改善しました。グローバル jemalloc プロファイラは、設定 jemalloc_enable_global_profiler により有効化できるようになりました。サンプリングされたグローバルアロケーションおよびデアロケーションは、設定 jemalloc_collect_global_profile_samples_in_trace_log を有効にすることで、system.trace_log の JemallocSample タイプとして保存できるようになりました。jemalloc プロファイリングは、設定 jemalloc_enable_profiler を使用してクエリごとに個別に有効化できるようになりました。system.trace_log へのサンプルの保存は、設定 jemalloc_collect_profile_samples_in_trace_log を使用してクエリ単位で制御できます。#85438 (Antonio Andelic )。
deltaLakeAzureCluster 関数(クラスタ版 deltaLakeAzure と同等)および deltaLakeS3Cluster(deltaLakeCluster のエイリアス)関数を追加し、#85358 を解決しました。 #85547 (Smita Kulkarni ).
InterpreterSystemQuery::dropReplicaImpl を InterpreterSystemQuery::dropStorageReplica にリネームしました。- InterpreterSystemQuery::dropDatabaseReplica では: - データベースと一緒に、またはレプリカ全体を DROP する場合: データベース内の各テーブルのレプリカも DROP されます - 'WITH TABLES' が指定されている場合、各ストレージのレプリカを DROP します - それ以外の場合、ロジックは変更されず、データベースに対して DatabaseReplicated::dropReplica を呼び出すだけです - Keeper のパス付きでデータベース レプリカを DROP する場合: - 'WITH TABLES' が指定されている場合: - データベースを Atomic として復元します - Keeper 内のステートメントから RMT テーブルを復元します - データベースを DROP します (復元されたテーブルも同時に DROP されます) - それ以外の場合、指定された Keeper パスに対して DatabaseReplicated::dropReplica を呼び出すだけです。 #85637 (Tuan Pham Anh ).
有効期限 (TTL) に materialize 関数が含まれる場合のフォーマットの不整合を修正しました。#82828 をクローズします。#85749 (Alexey Milovidov )。
通常のコピー操作にも、バックアップ時と同様に azure_max_single_part_copy_size 設定を適用するようにしました。 #85767 (Ilya Golshtein ).
S3 オブジェクトストレージでリトライ可能なエラーが発生した場合、S3 クライアントスレッドを減速させます。この変更により、従来の設定 backup_slow_all_threads_after_retryable_s3_error は S3 ディスクにも適用されるようになり、より汎用的な s3_slow_all_threads_after_retryable_error に名称が変更されました。 #85918 (Julia Kartseva )。
設定 allow_experimental_variant/dynamic/json および enable_variant/dynamic/json を非推奨としました。現在は、これら 3 つの型はすべて無条件で有効になっています。 #85934 (Pavel Kruglov ).
S3(Azure)Queue テーブルエンジンを改善し、ZooKeeper への接続が失われた場合でも重複を発生させることなく処理を継続できるようにしました。S3Queue の設定 use_persistent_processing_nodes を有効にする必要があります(ALTER TABLE MODIFY SETTING で変更可能)。#85995 (Kseniia Sumarokova )。
Iceberg テーブルの状態は、もはやストレージオブジェクトには保存されなくなりました。これにより、ClickHouse における Iceberg は同時実行クエリでも利用可能になりました。 #86062 (Daniil Ivanik ).
query_condition_cache_selectivity_threshold という設定(デフォルト値: 1.0)が追加されました。この設定により、選択性が低い述語のスキャン結果は query condition cache へ挿入されなくなります。これにより、キャッシュのヒット率が低下する代わりに、query condition cache のメモリ消費量を削減できます。 #86076 (zhongyuankai ).
http_handlers で、スキーマおよびホスト:ポートを含む完全な URL 文字列(full_url ディレクティブ)によるフィルタリングをサポートしました。#86155 (Azat Khuzhin )。
Delta Lake 書き込み機能向けの実験的な設定 allow_experimental_delta_lake_writes を追加し、デフォルトでは無効としました。 #86180 (Kseniia Sumarokova ).
init.d スクリプトでの systemd の検出を修正(「Install packages」チェックを修正)。 #86187 (Azat Khuzhin ).
新しいディメンションメトリクス startup_scripts_failure_reason を追加しました。このメトリクスは、スタートアップスクリプトの失敗につながるさまざまなエラー種別を区別するために必要です。特にアラート目的で、一時的なエラー(例: MEMORY_LIMIT_EXCEEDED や KEEPER_EXCEPTION)と、それ以外のエラーを区別する必要があります。#86202 (Miсhael Stetsyuk )。
Iceberg への書き込みで複数のデータファイルを扱えるようにしました。 #86275 (scanhex12 ).
iceberg 書き込みにおけるパーティション型の対応を拡張しました。これにより #86206 がクローズされました。 #86298 (scanhex12 ).
Iceberg テーブルのパーティション指定で identity() 関数を省略できるようになりました。 #86314 (scanhex12 ).
特定のチャネルに対してのみ JSON 形式のログ出力を有効化できるようになりました。そのためには、logger.formatting.channel を syslog / console / errorlog / log のいずれかに設定してください。 #86331 (Azat Khuzhin ).
Delta Lake で挿入されるデータファイルに対して、行数/バイト数の上限を追加しました。delta_lake_insert_max_rows_in_data_file および delta_lake_insert_max_bytes_in_data_file の設定によって制御されます。 #86357 (Kseniia Sumarokova ).
WHERE 句でネイティブの数値を使用できるようにしました。これらはすでに論理関数の引数としては許可されています。これにより、filter-push-down および move-to-prewhere の最適化が容易になります。 #86390 (Nikolai Kochetov )。
メタデータが破損している Catalog に対して SYSTEM DROP REPLICA を実行した場合に発生するエラーを修正しました。#86391 (Nikita Mikhaylov ).
Azure ではアクセスのプロビジョニングに非常に長い時間がかかる場合があるため、ディスクアクセスチェック(skip_access_check=0)に対して追加のリトライを行うようにしました。 #86419 (Alexander Tokmakov )。
evaluation_time 設定を promql_evaluation_time にリネームしました。 #86459 (Vitaly Baranov ).
iceberg の DROP 時にファイルを削除するための Setting を追加。これにより #86211 がクローズされました。#86501 (scanhex12 ).
Iceberg への書き込み時のメモリ使用量を削減。 #86544 (scanhex12 )。
today() 関数を大文字・小文字を区別しないようにし、NOW() などの他の日時関連関数と一貫性を持たせました。 #86561 (Kaviraj Kanagaraj ).
timeSeries*() 関数におけるステイルネスウィンドウを左開・右閉の区間としました。 #86588 (Vitaly Baranov )。
FailedInternal*Query プロファイルイベントを追加。 #86627 (Shane Andrade ).
S3Queue の ordered モードにおけるバケットロックを、use_persistent_processing_nodes = 1 の場合の processing ノードと同様に永続的なモードにします。テストに keeper のフォールトインジェクションを追加します。 #86628 (Kseniia Sumarokova ).
設定ファイル経由で追加された、名前にドット (.) を含むユーザーの処理を修正しました。 #86633 (Mikhail Koviazin ).
クエリのメモリ使用量に関する非同期メトリクス(QueriesMemoryUsage と QueriesPeakMemoryUsage)を追加。 #86669 (Azat Khuzhin ).
clickhouse-benchmark --precise フラグを使用すると、QPS やその他のインターバルごとのメトリクスをより正確に報告できます。クエリの実行時間がレポート間隔 --delay D と同程度の場合でも、一貫した QPS を得るのに役立ちます。 #86684 (Sergei Trifonov )。
Linux スレッドの nice 値を設定できるようにし、特定のスレッド(merge/mutate、クエリ、materialized view、ZooKeeper クライアント)により高いまたはより低い優先度を割り当てられるようにしました。 #86703 (Miсhael Stetsyuk ).
競合状態によりマルチパートアップロード中に元の例外が失われた場合に発生していた、「specified upload does not exist」という誤解を招くエラーを修正しました。 #86725 (Julia Kartseva ).
EXPLAIN クエリにおけるクエリプランの説明を制限しました。EXPLAIN 以外のクエリについては説明を生成しないようにしました。query_plan_max_step_description_length という SETTING を追加しました。 #86741 (Nikolai Kochetov ).
保留中のシグナル数を調整できるようにし、query_profiler_real_time_period_ns / query_profiler_cpu_time_period_ns といったクエリプロファイラでの CANNOT_CREATE_TIMER を回避しやすくしました。また、自己診断のために /proc/self/status から SigQ を収集するようにしました(ProcessSignalQueueSize が ProcessSignalQueueLimit に近い場合、CANNOT_CREATE_TIMER エラーが発生する可能性が高くなります)。#86760 (Azat Khuzhin )。
データレイク向け分散 INSERT/SELECT。 #86783 (scanhex12 ).
Keeper の RemoveRecursive リクエストのパフォーマンスを改善しました。 #86789 (Antonio Andelic ).
JSON 型の出力時に PrettyJSONEachRow が余分な空白を出力しないようにしました。 #86819 (Pavel Kruglov ).
レプリケートされた重複排除ウィンドウを 10000 まで拡大。 #86820 (Sema Checherinda ).
プレーンな書き込み可能ディスクでディレクトリが削除される際に、prefix.path の BLOB サイズを記録するようにしました。 #86908 (alesapin ).
yesterday() 関数を大文字小文字を区別しないようにし、today() 関数と動作を揃えました。 #86914 (Kaviraj Kanagaraj )。
リモートの ClickHouse インスタンス(ClickHouse Cloud を含む)に対する .xml 形式のパフォーマンス テストをサポートします。使用例: tests/performance/scripts/perf.py tests/performance/math.xml --runs 10 --user <username> --password <password> --host <hostname> --port <port> --secure。 #86995 (Raufs Dunamalijevs )。
大量のメモリ(>16MiB)を割り当てることが知られているいくつかの箇所(ソート、非同期インサート、ファイルログ)で、メモリ制限が適用されるようにしました。 #87035 (Azat Khuzhin ).
クエリにおいて非ブール型の設定値が反映されない問題を防止。#85800 の改良。#87084 (thraeka )。
フォーマット名に関するサポート用ヒントを追加。 #86761 をクローズ。#87092 (flynn )。
リモートレプリカは PROJECTION が存在しない場合、索引の解析をスキップします。 #87096 (zoomxi )。
network_compression_method 設定がサポートされていない汎用コーデックの場合に例外をスローします。 #87097 (Robert Schulze ).
システムテーブル system.query_cache は、以前は共有エントリ、または同一ユーザーかつ同一ロールの非共有エントリのみを返していましたが、現在は すべての クエリ結果キャッシュのエントリを返すようになりました。非共有エントリは クエリ結果 を開示しないことが想定されており、system.query_cache が返すのは クエリ文字列 であるため、問題はありません。この変更により、システムテーブルの動作は system.query_log により近いものになりました。#87104 (Robert Schulze )。
arrowFlight() テーブル関数に認証および SSL のサポートを追加しました。 #87120 (Vitaly Baranov ).
storage_class_name という新しいパラメータを S3 テーブルエンジンおよび s3 テーブル関数に追加しました。このパラメータにより、AWS がサポートする Intelligent-Tiering ストレージクラスを指定できます。キー・バリュー形式および位置指定(非推奨)形式の両方で利用できます。 #87122 (alesapin )。
ytsaurus テーブルで UTF-8 エンコーディングを無効にできるようにしました。 #87150 (MikhailBurdukov ).
データレイク向けディスクで Azure をサポートしました。 #87173 (scanhex12 ).
Dictionary 圧縮を制御するための新しいテキスト索引パラメータ dictionary_block_frontcoding_compression を追加しました。デフォルトでは有効で、front-coding 圧縮が使用されます。 #87175 (Elmi Ahmadov ).
parseDateTime 関数で短絡評価を有効化しました。 #87184 (Pavel Kruglov )。
alter table ... materialize statistics all のサポートにより、テーブルのすべての統計情報をマテリアライズできるようになりました。#87197 (Han Fei )。
デフォルトで s3_slow_all_threads_after_retryable_error を無効化しました。#87198 (Nikita Mikhaylov ).
新しい system.aggregated_zookeeper_log テーブルを追加しました。このテーブルには、セッション ID、親パス、およびオペレーション種別ごとにグループ化された ZooKeeper オペレーションの統計情報(オペレーション数、平均レイテンシ、エラー数など)が含まれており、定期的にディスクにフラッシュされます。 #87208 (Miсhael Stetsyuk ).
テーブル関数 arrowflight の名称を arrowFlight に変更しました。 #87249 (Vitaly Baranov ).
clickhouse-benchmark の CLI フラグで _ の代わりに - を使用できるように更新しました。 #87251 (Ahmed Gouda )。
挿入時のマテリアライズ対象からスキップ索引のリストを除外するためのセッション設定(exclude_materialize_skip_indexes_on_insert)を追加しました。マージ時のマテリアライズ対象からスキップ索引のリストを除外するための MergeTree テーブル設定(exclude_materialize_skip_indexes_on_merge)を追加しました。 #87252 (George Larionov )。
シグナルハンドリングでの system.crash_log へのフラッシュを同期的に行うようにしました。 #87253 (Miсhael Stetsyuk ).
system.parts_columns に新しいカラム statistics を追加しました。 #87259 (Han Fei ).
ORDER BY 句を含まないトップレベルの SELECT クエリに対して自動的に ORDER BY rand() を挿入する、inject_random_order_for_select_without_order_by という設定を追加しました。 #87261 (Rui Zhang )。
Iceberg への書き込みで他のフォーマット(ORC、Avro)をサポートします。これにより #86179 がクローズされました。#87277 (scanhex12 )。
join_keys の数が right_table_keys の数と一致していないことを正しく示すように、joinGet 関数のエラーメッセージを改善しました。 #87279 (Isak Ellmer ).
min_insert_block_size_rows_for_materialized_views と min_insert_block_size_bytes_for_materialized_views の設定に応じて、materialized view への挿入前にすべてのスレッドからのデータをまとめるようにしました。以前は、parallel_view_processing が有効な場合、特定の materialized view に対して各スレッドがそれぞれ独立して挿入データをまとめており、その結果、生成されるパーツの数が多くなる可能性がありました。 #87280 (Antonio Andelic ).
このパッチでは、書き込みトランザクション中に任意の Keeper ノードの stat をチェックできる機能を追加しました。これにより、ABA 問題の検出に役立ちます。 #87282 (Mikhail Artemenko )。
負荷の高い ytsaurus リクエストを heavy プロキシにリダイレクトするようにしました。 #87342 (MikhailBurdukov ).
このパッチでは、ディスクトランザクション由来のメタデータに対するあらゆるワークロードでの unlink/rename/removeRecursive/removeDirectory などの操作のロールバック処理およびハードリンク数を修正し、インターフェイスをより汎用的にして他のメタストアでも再利用できるよう単純化します。 #87358 (Mikhail Artemenko )。
Keeper における TCP_NODELAY を無効化できる keeper_server.tcp_nodelay 設定パラメータを追加しました。#87363 (Copilot)。
clickhouse-benchmarks で --connection をサポートするようになりました。これは clickhouse-client でサポートされているものと同様で、クライアントの config.xml/config.yaml 内の connections_credentials パス配下に事前定義された接続を指定することで、コマンドライン引数で明示的にユーザー名/パスワードを指定する必要がなくなります。clickhouse-benchmark に --accept-invalid-certificate のサポートを追加しました。#87370 (Azat Khuzhin )。
これにより、max_insert_threads を設定すると Iceberg テーブルにも適用されるようになりました。 #87407 (alesapin ).
PrometheusMetricsWriter にヒストグラムおよびディメンションを持つメトリクスを追加しました。これにより、PrometheusRequestHandler ハンドラーがすべての重要なメトリクスを含むようになり、クラウド環境での信頼性が高く低オーバーヘッドなメトリクス収集に利用できるようになります。#87521 (Miсhael Stetsyuk )。
関数 hasToken は、空のトークンを指定した場合に一致数ゼロを返すようになりました(以前はこの場合に例外がスローされていました)。 #87564 (Jimmy Aguilar Mena )。
Array および Map(mapKeys と mapValues)値向けのテキスト索引サポートを追加しました。サポートされる関数は mapContainsKey と has です。 #87602 (Elmi Ahmadov )。
期限切れとなったグローバル ZooKeeper セッションの数を示す新しい ZooKeeperSessionExpired メトリクスを追加しました。 #87613 (Miсhael Stetsyuk ).
バックアップ専用の設定(例: backup_slow_all_threads_after_retryable_s3_error)を使用する S3 storage クライアントで、サーバー側(ネイティブ)コピーによりバックアップ先へコピーするようにしました。s3_slow_all_threads_after_retryable_error を廃止しました。 #87660 (Julia Kartseva ).
実験的機能 make_distributed_plan を使用したクエリプランのシリアライゼーション時に、max_joined_block_size_rows および max_joined_block_size_bytes の設定が誤って処理されていた問題を修正しました。 #87675 (Vladimir Cherkasov )。
enable_http_compression の設定がデフォルトで有効になりました。これは、クライアントが HTTP 圧縮を受け入れる場合、サーバー側で圧縮が使用されることを意味します。ただし、この変更にはいくつかのデメリットがあります。クライアントは bzip2 のような重い圧縮方式を要求でき、これは現実的ではなく、サーバーのリソース消費を増加させます(ただし、大きな結果が転送される場合にのみ顕在化します)。クライアントは gzip を要求することもできますが、これはそれほど悪くはないものの、zstd と比較すると最適ではありません。#71591 をクローズ。#87703 (Alexey Milovidov )。
新しい設定 keeper_hosts を追加し、ClickHouse が接続可能な [Zoo]Keeper ホストの一覧を取得できるようにしました。 #87718 (Nikita Mikhaylov )。
ALTER TABLE REWRITE PARTS を追加しました。これは、すべての新しい設定を使用してテーブルのパーツを一から書き換えます(use_const_adaptive_granularity など、一部の設定は新しいパーツに対してのみ適用されるため)。 #87774 (Azat Khuzhin ).
システムダッシュボードに from および to の値を追加し、履歴調査を容易にしました。 #87823 (Mikhail f. Shiryaev ).
Iceberg の SELECT におけるパフォーマンス計測用の情報を追加。 #87903 (Daniil Ivanik ).
多数のキーごとの一致が発生するハッシュ結合でのメモリ使用量を削減するため、新しい設定 joined_block_split_single_row を追加しました。これにより、左側テーブルの単一の行に対する一致結果の中でも、ハッシュ結合の結果を chunk に分割できるようになります。これは、左側テーブルの 1 行が右側テーブルの数千行または数百万行と一致するような場合に特に有用です。以前は、すべての一致をメモリ上で一度にマテリアライズする必要がありました。この変更によりピーク時のメモリ使用量は削減されますが、CPU 使用量は増加する可能性があります。 #87913 (Vladimir Cherkasov )。
ファイルシステムキャッシュの改善: キャッシュ内の領域を同時に確保する複数スレッド間で、キャッシュ優先度イテレータを再利用するようにしました。 #87914 (Kseniia Sumarokova ).
Keeper に対するリクエストを制限できる機能を追加(max_request_size 設定。ZooKeeper の jute.maxbuffer と同等で、後方互換性のためデフォルトは OFF だが、今後のリリースで変更される予定)。 #87952 (Azat Khuzhin ).
clickhouse-benchmark がデフォルトではエラーメッセージにスタックトレースを含めないように修正。 #87954 (Ahmed Gouda ).
マークがキャッシュに存在する場合は、スレッドプールを使ったマークの非同期読み込み(load_marks_asynchronously=1)は使用しないでください(プールが逼迫していると、マークが既にキャッシュにある場合でもクエリ側にオーバーヘッドのペナルティが発生するため)。 #87967 (Azat Khuzhin ).
Ytsaurus: テーブル/テーブル関数/辞書を、一部のカラムのみで作成できるようにしました。 #87982 (MikhailBurdukov ).
今後は system.zookeeper_connection_log がデフォルトで有効になり、Keeper セッションに関する情報を取得するために使用できます。#88011 (János Benjamin Antal )。
重複した外部テーブルが渡された場合の TCP と HTTP の動作を統一しました。HTTP では、一時テーブルを複数回渡すことができます。 #88032 (Sema Checherinda ).
Arrow/ORC/Parquet を読み込むためのカスタム MemoryPool を削除しました。このコンポーネントは、現在ではすべてのアロケーションを追跡しているため、https://github.com/ClickHouse/ClickHouse/pull/84082 以降は不要と考えられます。#88035 (Nikita Mikhaylov )。
引数なしで Replicated データベースを作成できるようにしました。 #88044 (Pervakov Grigorii )。
clickhouse-keeper の TLS ポートへの接続のサポートを追加し、フラグ名は clickhouse-client と同一にしました。 #88065 (Pradeep Chhetri )。
メモリ制限を超過したためにバックグラウンドマージが拒否された回数を追跡する新しいプロファイルイベントを追加しました。 #88084 (Grant Holly )。
新しいシリーズのカスタム開始値を指定できるように、generateSerialID 関数にオプションの start_value パラメータを追加しました。 #88085 (Manuel ).
CREATE/ALTER TABLE におけるカラムのデフォルト式検証を行うアナライザを有効化しました。 #88087 (Max Justus Spransy ).
内部のクエリ計画の改善:CROSS JOIN に JoinStepLogical を使用。#88151 (Vladimir Cherkasov )。
演算子 IS NOT DISTINCT FROM (<=>) を完全にサポート。#88155 (simonmichal ).
グローバルサンプリングプロファイラをデフォルトで有効にし、すべてのスレッドのスタックトレースをCPU時間および実時間において10秒ごとに収集します。 #88209 (Alexander Tokmakov ).
Alias エンジンを使用するテーブルに対する EXCHANGE TABLES 操作のサポートを修正しました。エンジンは、これまでの固定のストレージ ID ではなく、対象テーブルをデータベース名およびテーブル名として保存するようになり、テーブル交換後も対象テーブルを正しく解決できるようになりました。 #88233 (Kai Zhu ).
一時ファイルの書き込み用バッファサイズを制御するための temporary_files_buffer_size 設定を追加しました。* LowCardinality カラムに対する scatter 操作のメモリ使用量を最適化しました(たとえば Grace ハッシュ結合で使用されます)。#88237 (Vladimir Cherkasov ).
テキスト索引からの直接読み取りで並列レプリカをサポートしました。オブジェクトストレージ上のテキスト索引読み取りのパフォーマンスを改善しました。 #88262 (Anton Popov ).
関数 generateSerialID がシリーズ名を指定する非定数引数をサポートするようになりました。#83750 をクローズしました。#88270 (Alexey Milovidov )。
分散処理のための Datalakes カタログデータベース。 #88273 (scanhex12 ).
コピーおよびコンテナ作成機能で発生していた 'Content-Length' の問題に対応する修正を取り込むため、Azure SDK を更新。 #88278 (Smita Kulkarni ).
MySQL との互換性のために、関数 lag の大文字小文字を区別しないようにしました。 #88322 (Lonny Kapelushnik )。
keeper_server.coordination_settings.check_node_acl_on_remove 設定を追加しました。有効化されている場合、ノードを削除する前に、そのノード自身および親ノードの両方の ACL が検証されます。無効化されている場合は、親ノードの ACL のみが検証されます。 #88513 (Antonio Andelic )。
Vertical フォーマット使用時に、JSON カラムが整形表示されるようになりました。 #81794 をクローズします。 #88524 (Frank Rosner )。
clickhouse-client のファイル(例: クエリ履歴)をホームディレクトリ直下ではなく、XDG Base Directories 仕様で定義されている場所に保存するようにしました。~/.clickhouse-client-history がすでに存在する場合は、引き続きそちらが使用されます。#88538 (Konstantin Bogdanov )。
GLOBAL IN に起因するメモリリークを修正します(https://github.com/ClickHouse/ClickHouse/issues/88615 )。#88617 (pranav mehta )。
hasAny/hasAllTokens が文字列を引数に取れるようにオーバーロードを追加しました。 #88679 (George Larionov ).
このパッチ適用後は、ヒューリスティック to_remove_small_parts_at_right がマージ範囲スコアの計算前に実行されます。これ以前は、マージセレクタが広い範囲のマージを選択し、その後でその末尾部分をフィルタリングしていました。修正: #85374 。#88736 (Mikhail Artemenko )。
起動時に自動的に開始できるようにするため、clickhouse-keeper のポストインストールスクリプトに手順を追加しました。 #88746 (YenchangChan ).
Web UI では、キー入力のたびではなく、貼り付け時にのみ資格情報の検証を行うようにしました。これにより、誤設定された LDAP サーバーで発生する問題を回避できます。この変更により #85777 が解決されました。 #88769 (Alexey Milovidov )。
CONSTRAINT 違反時の例外メッセージの長さを制限しました。以前のバージョンでは、非常に長い文字列が挿入された場合に、同様に非常に長い例外メッセージが生成され、query_log に書き込まれてしまうことがありました。#87032 をクローズしました。#88801 (Alexey Milovidov )。
バグ修正(公式の安定版リリースにおけるユーザーに表面化する不具合の修正)
ALTER クエリの結果は、レプリケートされたデータベースおよび内部レプリケーションされているテーブルに対しては、発行ノード上でのみ検証されるようになりました。これにより、すでにコミット済みの ALTER クエリが他のノードで処理が滞ってしまう状況が解消されました。 #83849 (János Benjamin Antal ).
BackgroundSchedulePool 内の各種類のタスク数を制限します。ある種類のタスクだけで全スロットが占有され、他のタスクが飢餓状態になる状況を回避します。また、タスク同士が互いを待ち合うことで発生するデッドロックも防ぎます。これはサーバーの background_schedule_pool_max_parallel_tasks_per_type_ratio 設定で制御されます。 #84008 (Alexander Tokmakov )。
GeoParquet が原因で発生していたクライアントプロトコルエラーを修正しました。 #84020 (Michael Kolupaev ).
イニシエーターノードでのサブクエリ内における shardNum() のようなホスト依存の関数の解決を修正しました。 #84409 (Eduard Karacharov )。
データベースのレプリカを復旧する際に、テーブルが適切にシャットダウンされるようにしました。不適切なシャットダウンにより、データベースレプリカの復旧中に一部のテーブルエンジンで LOGICAL_ERROR が発生する可能性がありました。 #84744 (Antonio Andelic ).
データベース名のタイプミス修正候補の生成時に、アクセス権限を確認するようにしました。 #85371 (Dmitry Novik ).
parseDateTime64BestEffort、change{Year,Month,Day}、makeDateTime64 など、各種の日時関連関数における、エポック以前の日時で小数秒を含む値の扱いを修正しました。以前は、本来は小数秒部分を加算すべきところで、秒から減算していました。例えば、parseDateTime64BestEffort('1969-01-01 00:00:00.468') は、本来は 1969-01-01 00:00:00.468 を返すべきところを 1968-12-31 23:59:59.532 を返していました。 #85396 (xiaohuanlin ).
Hive カラムに対する LowCardinality のサポート 2. 仮想カラムより前に Hive カラムを設定(https://github.com/ClickHouse/ClickHouse/pull/81040 に必要) 3. Hive 用の空フォーマット時に発生する LOGICAL_ERROR を修正 #85528 4. Hive パーティションカラムのみが存在する場合のチェックを修正 5. すべての Hive カラムがスキーマで指定されていることをアサート 6. Hive を用いた parallel_replicas_cluster の部分的な修正 7. Hive utils の extractkeyValuePairs で順序付きコンテナを使用(https://github.com/ClickHouse/ClickHouse/pull/81040 に必要)。 #85538 (Arthur Passos )。
配列マッピング使用時にエラーになることがあった IN 関数の第1引数に対する不要な最適化を行わないようにしました。 #85546 (Yakov Olkhovskiy ).
Parquet ファイルを書き込む際に、Iceberg のソース ID と Parquet の名前との対応付けがスキーマに合わせて調整されていませんでした。この PR では、現在のスキーマではなく、各 Iceberg データファイルに対応するスキーマを処理するようにしました。 #85829 (Daniil Ivanik )。
ファイルを開く処理とは別に行っていたファイルサイズの読み取り処理を修正しました。これは、5.10 リリース以前の Linux カーネルのバグに対応するために導入された https://github.com/ClickHouse/ClickHouse/pull/33372 に関連します。 #85837 (Konstantin Bogdanov )。
カーネルレベルで IPv6 が無効化されているシステム(例: ipv6.disable=1 が設定された RHEL)でも、ClickHouse Keeper が起動に失敗しなくなりました。IPv6 リスナーの作成に失敗した場合、自動的に IPv4 リスナーへのフォールバックを試みるようになりました。 #85901 (jskong1124 ).
このPRで #77990 をクローズします。globalJoin で並列レプリカを使用するための TableFunctionRemote のサポートを追加しました。#85929 (zoomxi )。
OrcSchemaReader::initializeIfNeeded() におけるヌルポインタ参照の問題を修正しました。この PR は次の Issue を解決します: #85292 。#85951 (yanglongwei )。
FROM 句における相関サブクエリについて、外側のクエリのカラムを参照している場合にのみ許可するようチェックを追加しました。 #85469 を修正しました。 #85402 を修正しました。 #85966 (Dmitry Novik )。
他のカラムの MATERIALIZED 式で使用されているサブカラムを含むカラムに対する ALTER UPDATE の挙動を修正しました。以前は、式の中にサブカラムを含む MATERIALIZED カラムが正しく更新されていませんでした。 #85985 (Pavel Kruglov ).
PK またはパーティション式でサブカラムが使用されているカラムを変更できないようにしました。 #86005 (Pavel Kruglov ).
同じ ALTER ステートメント内でカラムの状態が変化した場合に、ALTER COLUMN IF EXISTS コマンドが失敗する問題を修正しました。DROP COLUMN IF EXISTS、MODIFY COLUMN IF EXISTS、COMMENT COLUMN IF EXISTS、RENAME COLUMN IF EXISTS といったコマンドは、同じステートメント内の前のコマンドによってカラムが削除されている場合を正しく処理できるようになりました。 #86046 (xiaohuanlin ).
ストレージ DeltaLake において、デフォルト以外のカラムマッピングモード使用時のサブカラムの読み取りを修正。 #86064 (Kseniia Sumarokova ).
JSON 内の Enum ヒント付きのパスで誤ったデフォルト値が使用される問題を修正。#86065 (Pavel Kruglov )。
DataLake hive カタログ URL のパース時に入力をサニタイズするようにしました。#86018 をクローズ。#86092 (rajat mohan )。
ファイルシステムキャッシュの動的リサイズ時の論理エラーを修正しました。 #86122 をクローズしました。 https://github.com/ClickHouse/clickhouse-core-incidents/issues/473 をクローズしました。 #86130 (Kseniia Sumarokova )。
DatabaseReplicatedSettings において logs_to_keep に NonZeroUInt64 を使用するようにしました。 #86142 (Tuan Pham Anh )。
テーブル(例:ReplacingMergeTree)が index_granularity_bytes = 0 という設定で作成されていた場合、skip index を伴う FINAL クエリを実行すると例外がスローされていました。この例外は修正されました。 #86147 (Shankar Iyer ).
UB を除去し、Iceberg のパーティション式の解析時に発生していた問題を修正します。 #86166 (Daniil Ivanik ).
サポート対象範囲外の日付に対する Date/DateTime/DateTime64 型の推論を修正しました。 #86184 (Pavel Kruglov ).
1 回の INSERT 内で const ブロックと非 const ブロックが混在している場合に発生するクラッシュを修正。 #86230 (Azat Khuzhin )。
SQL からディスクを作成する際に、デフォルトで /etc/metrika.xml の include を処理するようにしました。 #86232 (alekar ).
String から JSON への accurateCastOrNull/accurateCastOrDefault の動作を修正。 #86240 (Pavel Kruglov ).
iceberg エンジンで「/」を含まないディレクトリをサポート可能にした。 #86249 (scanhex12 ).
replaceRegex で FixedString の haystack と空の needle を使用した際に発生していたクラッシュを修正しました。 #86270 (Raúl Marín ).
ALTER UPDATE Nullable(JSON) の実行時に発生するクラッシュを修正しました。 #86281 (Pavel Kruglov ).
system.tables における欠落していたカラム定義を修正。 #86295 (Raúl Marín ).
LowCardinality(Nullable(T)) から Dynamic へのキャストを修正しました。 #86365 (Pavel Kruglov ).
DeltaLake への書き込み時に発生する論理エラーを修正。 #86175 をクローズ。 #86367 (Kseniia Sumarokova )。
plain_rewritable ディスク向けに Azure blob storage から空の blob を読み取る際に発生する 416 The range specified is invalid for the current size of the resource. The range specified is invalid for the current size of the resource エラーを修正。 #86400 (Julia Kartseva ).
GROUP BY での Nullable(JSON) の不具合を修正。 #86410 (Pavel Kruglov ).
Materialized View に関するバグを修正しました。MV を作成して削除した後、同じ名前で再度作成すると、正しく動作しない場合がありました。 #86413 (Alexander Tokmakov ).
*cluster 関数から読み取る際に、すべてのレプリカが利用できない場合は失敗するようになりました。 #86414 (Julian Maicher ).
Buffer テーブルに起因する MergesMutationsMemoryTracking のリークを修正し、Kafka(およびその他)からのストリーミング向けの query_views_log を修正。 #86422 (Azat Khuzhin ).
エイリアスストレージが参照しているテーブルを削除した後の SHOW TABLES の動作を修正しました。 #86433 (RinChanNOW ).
send_chunk_header が有効な状態で、UDF が HTTP プロトコル経由で呼び出された場合に chunk ヘッダーが欠落する問題を修正しました。 #86469 (Vladimir Cherkasov ).
jemalloc プロファイルフラッシュが有効な場合に発生し得るデッドロックを修正しました。 #86473 (Azat Khuzhin ).
DeltaLake テーブルエンジンでのサブカラムの読み取りを修正。Closes #86204 . #86477 (Kseniia Sumarokova ).
DDL タスク処理時の競合を回避するため、ループバックホストIDを適切に扱うようにしました。 #86479 (Tuan Pham Anh ).
numeric/decimal 型のカラムを含む PostgreSQL database engine テーブルに対する detach/attach を修正しました。 #86480 (Julian Maicher ).
getSubcolumnType における未初期化メモリの使用を修正。#86498 (Raúl Marín )。
関数 searchAny と searchAll は、空の needles 引数で呼び出された場合に true(「すべてにマッチする」)を返すようになりました。以前は false を返していました(issue #86300 )。#86500 (Elmi Ahmadov )。
先頭バケットに値が存在しない場合に timeSeriesResampleToGridWithStaleness() が正しく動作しない問題を修正しました。 #86507 (Vitaly Baranov ).
merge_tree_min_read_task_size が 0 に設定されていたことが原因で発生していたクラッシュを修正しました。 #86527 (yanglongwei ).
読み取り時に各データファイルのフォーマットを Iceberg のメタデータから取得するようになりました(以前はテーブル引数から取得していました)。 #86529 (Daniil Ivanik ).
一部のユーザーが送信した有効なデータが AggregateFunction(quantileDD) カラムに書き込まれた場合に、マージ処理が無限再帰を起こしてクラッシュする問題を修正しました。 #86560 (Raphaël Thériault ).
サイズが 0 のパートファイルを含むクエリで例外をスローしていた Backup データベースエンジンの不具合を修正しました。 #86563 (Max Justus Spransy ).
send_chunk_header が有効で、HTTP プロトコル経由で UDF が呼び出された場合に chunk ヘッダーが欠落する問題を修正しました。 #86606 (Vladimir Cherkasov ).
keeper セッションの期限切れにより発生する S3Queue の論理エラー "Expected current processor to be equal to " を修正しました。 #86615 (Kseniia Sumarokova ).
挿入およびプルーニングにおける NULL 許容のバグを修正しました。これにより #86407 がクローズされました。#86630 (scanhex12 )。
Iceberg メタデータキャッシュが無効になっている場合は、ファイルシステムキャッシュを無効化しないでください。 #86635 (Daniil Ivanik ).
Parquet リーダー v3 で発生する 'Deadlock in Parquet::ReadManager (single-threaded)' エラーを修正しました。 #86644 (Michael Kolupaev ).
ArrowFlight の listen_host における IPv6 サポートを修正。 #86664 (Vitaly Baranov ).
ArrowFlight ハンドラーのシャットダウン処理を修正。この PR では #86596 を修正しています。 #86665 (Vitaly Baranov )。
describe_compact_output=1 設定時の分散クエリを修正。 #86676 (Azat Khuzhin ).
ウィンドウ定義の構文解析とクエリパラメータの適用処理を修正。 #86720 (Azat Khuzhin ).
例外 Partition strategy wildcard can not be used without a '_partition_id' wildcard. が、PARTITION BY を指定しているもののパーティション用のワイルドカードを使用していないテーブル作成時に発生する問題を修正しました。これは 25.8 より前のバージョンでは問題なく動作していたケースです。 https://github.com/ClickHouse/clickhouse-private/issues/37567 をクローズします。 #86748 (Kseniia Sumarokova ).
並列クエリが同一のロックを取得しようとした際に発生する LogicalError を修正。 #86751 (Pervakov Grigorii ).
RowBinary 入力フォーマットにおける JSON 共有データへの NULL の書き込みを修正し、ColumnObject にいくつかの追加の検証を導入しました。 #86812 (Pavel Kruglov ).
cluster テーブル関数で作成されたテーブルで JSON/Dynamic 型をサポートしました。 #86821 (Pavel Kruglov ).
LIMIT 指定時の空の Tuple の順列処理を修正しました。 #86828 (Pavel Kruglov ).
永続処理ノード向けに専用の Keeper ノードを使用しないようにしました。 https://github.com/ClickHouse/ClickHouse/pull/85995 に対する修正です。 #86406 をクローズしました。 #86841 (Kseniia Sumarokova )。
Replicated Database で新しいレプリカを作成できなくしていた TimeSeries エンジンのテーブルを修正しました。 #86845 (Nikolay Degterinsky ).
一部の Keeper ノードでタスクが欠落している場合の system.distributed_ddl_queue のクエリ処理を修正しました。 #86848 (Antonio Andelic ).
解凍済みブロック末尾でのシーク処理を修正。 #86906 (Pavel Kruglov ).
Iceberg Iterator の非同期実行中にスローされる例外を処理するようにしました。 #86932 (Daniil Ivanik ).
大きな事前処理済み XML 設定ファイルの保存処理を修正。 #86934 (c-end ).
system.iceberg_metadata_log テーブルにおける date フィールドへの値の設定を修正。 #86961 (Daniil Ivanik ).
WHERE 句付きの TTL の無限再計算を修正しました。 #86965 (Anton Popov ).
CTE で計算された関数の結果がクエリ内で非決定的になっていた問題を修正。 #86967 (Yakov Olkhovskiy ).
プライマリキー列で pointInPolygon を使用した EXPLAIN で発生する LOGICAL_ERROR を修正しました。 #86971 (Michael Kolupaev ).
ROLLUP および CUBE 修飾子を使用した場合に uniqExact 関数が誤った結果を返す可能性があった不具合を修正しました。 #87014 (Nikita Taranov ).
名前にパーセントエンコードされたシーケンスを含むデータレイクテーブルを修正しました。#86626 をクローズします。 #87020 (Anton Ivashkin ).
parallel_replicas_for_cluster_functions 設定が 1 に設定されている場合に、url() テーブル関数でテーブルスキーマを解決できない問題を修正しました。 #87029 (Konstantin Bogdanov ).
PREWHERE の出力を複数のステップに分割した場合でも正しくキャストされるようにしました。 #87040 (Antonio Andelic ).
ON CLUSTER 句を伴う論理更新の不具合を修正しました。 #87043 (Anton Popov ).
一部の集約関数状態と String 型引数との互換性を修正しました。 #87049 (Pavel Kruglov ).
optimize_functions_to_subcolumns 使用時の OUTER JOIN における Nullable なカラムに対する IS NULL の誤った動作の不具合を修正し、#78625 をクローズ。 #87058 (Vladimir Cherkasov )。
OpenAI のモデル名が渡されない問題を修正します。 #87100 (Kaushik Iska ).
EmbeddedRocksDB:パスは user_files の配下である必要があります。 #87109 (Raúl Marín ).
25.1 より前に作成された KeeperMap テーブルで、DROP クエリ実行後も ZooKeeper 内にデータが残ってしまう問題を修正しました。 #87112 (Nikolay Degterinsky ).
Parquet 読み込み時の Map 型および Array 型のフィールド ID を修正。 #87136 (scanhex12 ).
lazy materialization における array sizes サブカラム付き配列の読み取りを修正。 #87139 (Pavel Kruglov )。
max_temporary_data_on_disk_size 制限の追跡において、一時データの解放の計上が誤っていた問題を修正し、#87118 をクローズしました。 #87140 (JIaQi )。
関数 checkHeaders は、渡されたヘッダーを正しく検証し、禁止されているヘッダーを拒否するようになりました。元の作者: Michael Anastasakis (@michael-anastasakis)。#87172 (Raúl Marín )。
すべての数値型に対して toDate と toDate32 の動作を統一しました。int16 からのキャスト時における Date32 のアンダーフローの検査を修正しました。 #87176 (Pervakov Grigorii ).
Dynamic 型引数を持つ CASE 関数を修正。 #87177 (Pavel Kruglov )。
複数の JOIN を含むクエリ、特に LEFT / INNER JOIN の後に RIGHT JOIN が続く場合における parallel replicas 使用時の論理エラーを修正しました。#87178 (Igor Nikonov ).
スキーマ推論キャッシュで input_format_try_infer_variants 設定を考慮するようにしました。 #87180 (Pavel Kruglov ).
pathStartsWith がプレフィックス配下のパスのみにマッチするように変更。 #87181 (Raúl Marín ).
CSV で空文字列から空配列を読み取る際の不具合を修正。 #87182 (Pavel Kruglov ).
非相関 EXISTS で誤った結果が返される可能性のあった不具合を修正しました。この不具合は https://github.com/ClickHouse/ClickHouse/pull/85481 で導入された execute_exists_as_scalar_subquery=1 によって発生し、25.8 に影響していました。#86415 を修正します。#87207 (Nikolai Kochetov )。
_row_number 仮想カラムおよび Iceberg の position delete(位置削除)における論理エラーを修正しました。 #87220 (Michael Kolupaev ).
const ブロックと非 const ブロックが混在していることが原因で JOIN で発生する "Too large size passed to allocator" LOGICAL_ERROR を修正しました。 #87231 (Azat Khuzhin ).
iceberg_metadata_log が設定されていない状態でユーザーが iceberg メタデータのデバッグ情報を取得しようとするとエラーをスローするようにし、nullptr アクセスが発生する問題を修正しました。 #87250 (Daniil Ivanik )。
他の MergeTree テーブルから読み取るサブクエリを使用する論理更新の不具合を修正しました。 #87285 (Anton Popov ).
ROW POLICY が存在する場合に正しく動作していなかった move-to-prewhere 最適化を修正しました。#85118 の続きです。#69777 をクローズします。#83748 をクローズします。#87303 (Nikolai Kochetov )。
データパーツ内に存在しないがデフォルト式を持つカラムにパッチを適用する処理を修正しました。 #87347 (Anton Popov ).
EmbeddedRocksDB のアップグレード処理を修正。 #87392 (Raúl Marín ).
オブジェクトストレージ上にあるテキスト索引からの直接読み込みを修正しました。 #87399 (Anton Popov ).
存在しないエンジンに対する権限が作成されないようにしました。 #87419 (Jitendra ).
s3_plain_rewritable では、not found エラーのみを無視します(それ以外を無視するとさまざまな問題につながる可能性があります)。 #87426 (Azat Khuzhin ).
YTSaurus ソースおよび *range_hashed レイアウトを使用する辞書を修正しました。 #87490 (MikhailBurdukov ).
空のタプル配列の生成処理を修正。 #87520 (Pavel Kruglov ).
一時テーブルの作成時に不正なカラムをチェックするようにしました。 #87524 (Pavel Kruglov ).
Hive のパーティションカラムをフォーマットヘッダーに含めないようにしました。#87515 を修正しました。#87528 (Arthur Passos )。
テキスト形式が使用されている場合の DeltaLake におけるフォーマット読み取り準備処理を修正。 #87529 (Pavel Kruglov ).
Buffer テーブルに対する SELECT および INSERT のアクセス検証を修正。 #87545 (pufit ).
S3 テーブルに対してデータスキッピング索引を作成することを禁止しました。 #87554 (Bharat Nallan ).
非同期ロギングおよび text_log における追跡メモリのリークを防止しました(10時間で約 100GiB に達する大きなドリフトが発生する可能性があり、text_log でもほぼ同程度のドリフトが発生するおそれがありました)。 #87584 (Azat Khuzhin ).
View または materialized view に対する SELECT の設定によってグローバルなサーバー設定が上書きされてしまう可能性のあったバグを修正しました。この問題は、該当する view が非同期に削除され、バックグラウンドでのクリーンアップが完了する前にサーバーが再起動された場合に発生する可能性がありました。 #87603 (Alexander Tokmakov ).
メモリ過負荷警告を算出する際に、可能であればユーザースペースのページキャッシュのバイト数を除外するようにしました。 #87610 (Bharat Nallan ).
不正な型順序で CSV デシリアライズを行うと LOGICAL_ERROR が発生する不具合を修正しました。 #87622 (Yarik Briukhovetskyi ).
実行可能辞書における command_read_timeout の誤った扱いを修正。#87627 (Azat Khuzhin )。
新しいアナライザを使用している場合に、置き換えられたカラムをフィルタ条件とする WHERE 句における SELECT * REPLACE の誤った動作を修正しました。 #87630 (xiaohuanlin ).
Distributed 上で Merge を使用する場合の二段階の集約処理を修正しました。 #87687 (c-end ).
右側の行リストが使用されていない場合の HashJoin アルゴリズムにおける出力ブロックの生成を修正。#87401 を修正。#87699 (Dmitry Novik )。
索引解析を適用した後に読み取るデータが存在しない場合、並列レプリカの読み取りモードが誤って選択される可能性がありました。#87653 をクローズします。 #87700 (zoomxi )。
Glue における timestamp / timestamptz カラムの扱いを修正。 #87733 (Andrey Zvonov ).
この変更により #86587 がクローズされます。 #87761 (scanhex12 )。
PostgreSQL インターフェイスにおける boolean 値の書き込み処理を修正。 #87762 (Artem Yurov ).
CTE を使用した INSERT SELECT クエリで発生する unknown table エラーを修正。#85368 。#87789 (Guang Zhao )。
Nullable の内部に含められない Variants からの null map サブカラムの読み取りを修正。 #87798 (Pavel Kruglov )。
クラスタのセカンダリノードでデータベースを完全に削除できなかった場合のエラー処理を修正。 #87802 (Tuan Pham Anh ).
複数の skip index 関連のバグを修正。#87817 (Raúl Marín )。
AzureBlobStorage において、まずネイティブコピーを試し、'Unauthroized' エラーが発生した場合は read & write 方式にフォールバックするように更新しました(AzureBlobStorage では、ソースと宛先でストレージアカウントが異なる場合、'Unauthorized' エラーが発生します)。また、設定で endpoint が定義されている場合に "use_native_copy" が適用されるように修正しました。 #87826 (Smita Kulkarni ).
ArrowStream ファイルに一意ではない Dictionary が含まれている場合、ClickHouse がクラッシュします。 #87863 (Ilya Golshtein ).
最後のブロックが空の場合の PROJECTION を用いたマージ処理を修正します。 #87928 (Raúl Marín ).
引数型が GROUP BY で許可されていない場合でも、GROUP BY から単射関数を削除しないようにしました。 #87958 (Pavel Kruglov ).
クエリで session_timezone 設定を使用している場合に、datetime ベースのキーに対する granule およびパーティションの除外が正しく行われない問題を修正しました。 #87987 (Eduard Karacharov ).
PostgreSQL Interface でクエリ実行後に影響を受けた行数を返すようになりました。 #87990 (Artem Yurov ).
不正な結果を招く可能性があるため、PASTE JOIN に対するフィルタープッシュダウンの利用を制限します。 #88078 (Yarik Briukhovetskyi )。
https://github.com/ClickHouse/ClickHouse/pull/84503 で導入された権限チェックを行う前に URI の正規化を適用します。 #88089 (pufit )。
新しいアナライザにおいて ARRAY JOIN COLUMNS() がどのカラムにもマッチしない場合に発生する論理エラーを修正。 #88091 (xiaohuanlin ).
「ClickHouse のメモリ使用量が高い」警告を修正(ページキャッシュを除外)。 #88092 (Azat Khuzhin ).
Set 型カラムに TTL を設定した MergeTree テーブルで発生する可能性があったデータ破損を修正しました。 #88095 (Anton Popov ).
空のタプルを引数として呼び出した場合にクラッシュしていた mortonEncode および hilbertEncode 関数の不具合を修正しました。 #88110 (xiaohuanlin ).
クラスタ内に非アクティブなレプリカがある場合でも、ON CLUSTER クエリの実行時間が短くなりました。 #88153 (alesapin )。
DDL worker がレプリカセットから不要になったホストをクリーンアップするようになりました。これにより、ZooKeeper に保存されるメタデータ量が削減されます。 #88154 (alesapin ).
エラー発生時にディレクトリの移動操作を正しくロールバックできるようにしました。ルートのものだけでなく、実行中に変更されたすべての prefix.path オブジェクトを再書き込みする必要があります。 #88198 (Mikhail Artemenko ).
ColumnLowCardinality における is_shared フラグの伝播処理を修正しました。これは、ReverseIndex 内でハッシュ値がすでに事前計算されてキャッシュされた後に、カラムへ新しい値が挿入された場合に、誤った GROUP BY の結果を引き起こす可能性がありました。 #88213 (Nikita Taranov )。
ワークロード設定 max_cpu_share を修正しました。これにより、max_cpus ワークロード設定が未設定でも使用できるようになりました。 #88217 (Neerav )。
サブクエリを含む非常に重い mutation が prepare ステージで処理が進まなくなる可能性があったバグを修正しました。これらの mutation は、SYSTEM STOP MERGES を使用して停止できるようになりました。 #88241 (alesapin ).
相関サブクエリがオブジェクトストレージに対しても動作するようになりました。 #88290 (alesapin ).
system.projections および system.data_skipping_indices にアクセスしている間は、DataLake データベースの初期化を行わないようにしました。 #88330 (Azat Khuzhin ).
これからは、show_data_lake_catalogs_in_system_tables が明示的に有効化されている場合にのみ、データレイクのカタログが system introspection テーブルに表示されます。 #88341 (alesapin )。
DatabaseReplicated が interserver_http_host 設定を考慮するように修正しました。 #88378 (xiaohuanlin ).
PROJECTION を定義するコンテキストでは、位置引数はこの内部クエリ処理段階では意味をなさないため、明示的に無効化されました。これにより #48604 が修正されました。 #88380 (Amos Bird )。
countMatches 関数の二次計算量を修正しました。#88400 をクローズしました。#88401 (Alexey Milovidov ).
KeeperMap テーブルに対する ALTER COLUMN ... COMMENT コマンドがレプリケーション対象となり、Replicated データベースのメタデータにコミットされてすべてのレプリカに伝播されるようにしました。これにより #88077 をクローズしました。#88408 (Eduard Karacharov )。
DatabaseReplicated における Materialized Views 間の誤った循環依存関係の検出を修正し、そのためにデータベースに新しいレプリカを追加できなくなっていた問題を解消しました。 #88423 (Nikolay Degterinsky )。
group_by_overflow_mode が any に設定されている場合に、スパースなカラムの集計を修正。 #88440 (Eduard Karacharov ).
query_plan_use_logical_join_step=0 を、複数の FULL JOIN USING 句を含むクエリで使用した際に発生する「column not found」エラーを修正しました。#88103 をクローズします。#88473 (Vladimir Cherkasov )。
ノード数が 10 を超える大規模クラスタでは、[941] 67c45db4-4df4-4879-87c5-25b8d1e0d414 <Trace>: RestoreCoordinationOnCluster The version of node /clickhouse/backups/restore-7c551a77-bd76-404c-bad0-3213618ac58e/stage/num_hosts changed (attempt #9), will try again というエラーによりリストアが失敗しやすくなります。num_hosts ノードが多数のホストから同時に上書きされるためです。この修正により、試行回数を制御する設定を動的にしました。#87721 をクローズしました。#88484 (Mikhail f. Shiryaev )。
この PR は、23.8 以前との互換性を維持するためだけのものです。互換性の問題は次の PR によって導入されました: https://github.com/ClickHouse/ClickHouse/pull/54240 この SQL は enable_analyzer=0 の場合に失敗します(23.8 より前のバージョンでは問題ありません)select * from t1 s final join ( select * from t2 final ) r final on s.key = r.key join ( select * from t3 final ) c final on s.key = c.key。これは、JoinToSubqueryTransformVisitor がこの SQL を次のように書き換えるためです: SELECT `_--s.key` AS `s.key`, `_--s.value` AS `s.value`, `_--r.key` AS `r.key`, `_--r.value` AS `r.value`, `_--c.key` AS `c.key`, `_--c.value` AS `c.value` FROM ( SELECT value AS `_--s.value`, key AS `_--s.key`, r.value AS `_--r.value`, r.key AS `_--r.key` FROM t1 AS s FINAL ALL INNER JOIN ( SELECT key, value FROM t2 FINAL ) AS r FINAL ON `_--s.key` = `_--r.key` ) AS `--.s` ALL INNER JOIN ( SELECT value AS `_--c.value`, key AS `_--c.key` FROM ( SELECT key, value FROM t3 FINAL ) AS c FINAL ) AS `--.t` ON `_--s.key` = `_--c.key` 私たちが行いたい書き換えは(最後の FINAL を移動するだけで)、次のとおりです: SELECT `_--s.key` AS `s.key`, `_--s.value` AS `s.value`, `_--r.key` AS `r.key`, `_--r.value` AS `r.value`, `_--c.key` AS `c.key`, `_--c.value` AS `c.value` FROM ( SELECT value AS `_--s.value`, key AS `_--s.key`, r.value AS `_--r.value`, r.key AS `_--r.key` FROM t1 AS s FINAL ALL INNER JOIN ( SELECT key, value FROM t2 FINAL ) AS r FINAL ON `_--s.key` = `_--r.key` ) AS `--.s` ALL INNER JOIN ( SELECT value AS `_--c.value`, key AS `_--c.key` FROM ( SELECT key, value FROM t3 FINAL ) AS c ) AS `--.t` FINAL ON `_--s.key` = `_--c.key`。 #88491 (JIaQi )。
大きな数値を DateTime に変換する際の accurateCast のエラーメッセージで発生していた UBSAN の整数オーバーフローを修正。 #88520 (xiaohuanlin ).
タプル型に対する CoalescingMergeTree を修正しました。これにより #88469 がクローズされます。 #88526 (scanhex12 )。
iceberg_format_version=1 に対する削除操作を禁止しました。これにより #88444 がクローズされました。 #88532 (scanhex12 )。
このパッチは、任意の深さにネストされたフォルダに対する plain-rewritable ディスクの移動処理を修正します。 #88586 (Mikhail Artemenko )。
*cluster 関数における SQL SECURITY DEFINER の動作を修正しました。 #88588 (Julian Maicher ).
内部の const PREWHERE カラムの同時変更により発生する可能性のあるクラッシュを修正しました。 #88605 (Azat Khuzhin ).
テキストインデックスからの読み取りを修正し、クエリ条件キャッシュを有効化しました(use_skip_indexes_on_data_read と use_query_condition_cache の設定を有効にした場合)。#88660 (Anton Popov ).
Poco::Net::HTTPChunkedStreamBuf::readFromDevice からスローされる Poco::TimeoutException 例外により SIGABRT でクラッシュしていた問題を修正しました。 #88668 (Miсhael Stetsyuk )。
設定をリロードした後に ClickHouse が初めて接続する際、system.zookeeper_connection_log への追記が正しく行われない問題を修正しました。 #88728 (Antonio Andelic ).
date_time_overflow_behavior = 'saturate' を使用して DateTime64 を Date に変換する際、タイムゾーンを扱う際に範囲外の値に対して誤った結果が返される可能性があったバグを修正しました。 #88737 (Manuel ).
キャッシュを有効にした S3 テーブルエンジンで発生する "having zero bytes error" を修正する N 回目の試み。 #88740 (Kseniia Sumarokova ).
loop テーブル関数に対する SELECT クエリのアクセス検証を修正しました。 #88802 (pufit ).
非同期ロギングが失敗した場合は例外をキャッチし、プログラムの異常終了を防ぎます。 #88814 (Raúl Marín ).