後方互換性を持たない変更
クエリと構文の変更
- 誤ったエイリアス置換によって生じていたクエリのフォーマットの不整合を修正しました。注: アナライザが無効な場合、エイリアス参照を伴う
INを使用する一部のCREATE VIEWクエリは処理されなくなる可能性があります。これを避けるには、アナライザが有効になっていることを確認してください (24.3 以降はデフォルトで有効です) 。 #82838 (Alexey Milovidov). JOIN USING ()の空のカラムリストは、現在では構文エラーになります。従来は、これはクエリ実行時にINVALID_JOIN_ON_EXPRESSIONとして報告されており、場合によっては (Joinストレージとの JOIN など)LOGICAL_ERRORを引き起こすことがありました。 #92371 (Vladimir Cherkasov).ORDER BYやその他のテーブルキー式では、サブクエリは使用できなくなりました。 #96847 (Alexey Milovidov).
データ型の変更
Nullable(Tuple)のサポートを追加しました。有効にするには、allow_experimental_nullable_tuple_type = 1を設定してください。#89643 (Nihal Z. Miaji).- JSON 型の高度な共有データが、デフォルトで有効になりました。新しい JSON フォーマットで書き込まれたデータパーツは古いバージョンでは読み取れないため、25.8 より前のバージョンにダウングレードすることはできません。安全にアップグレードするには、
compatibility設定を以前のバージョンに設定するか、MergeTree 設定dynamic_serialization_version='v2'およびobject_serialization_version='v2'を設定してください。#92511 (Pavel Kruglov). - JSON 型の
SKIP REGEXPは、デフォルトで部分一致を使用するようになりました。#92847 (Pavel Kruglov). Variant型の不一致時に発生していた論理エラーを修正しました。#95811 (Bharat Nallan).- PostgreSQL の
DATEカラムは、ClickHouse ではDate32として推論されるようになりました (以前はDateとして推論されていましたが、対応範囲が狭いため、その範囲外の値ではオーバーフローする可能性がありました) 。Date32の値を PostgreSQL に挿入することもサポートされるようになりました。#95999 (Alexey Milovidov).
ストレージと索引の変更
- 転置テキスト索引のストレージレイアウトが改善され、オブジェクトストレージからの読み取り効率が向上したほか、転置テキスト索引を持つテーブルのマージ性能も改善されました。バージョン 25.12 より前に実験的なテキスト索引を使用していた場合は、アップグレード前にその索引を削除し、新しいバージョンで再構築する必要があります。 #91518 (Anton Popov).
- 統計情報のストレージフォーマットが変更され、すべての統計情報が 1 つのファイルに保存されるようになりました。 #93414 (Anton Popov).
- パーツの破損を防ぐため、索引ファイル名がエスケープされるようになりました。以前のバージョンで作成され、名前に非 ASCII 文字を含む索引は、ClickHouse で読み込めなくなります。これに対処するには、MergeTree setting
escape_index_filenamesを使用してください。 #94079 (Raúl Marín).
削除された機能
DEFLATE_QPLおよびZSTD_QATコーデックは削除されました。これらのコーデックで圧縮された既存データがある場合は、アップグレード前に別のコーデックへ変換してください。なお、これらのコーデックを使用するには、従来enable_deflate_qpl_codecまたはenable_zstd_qat_codecを有効にする必要がありました。#92150 (Robert Schulze).- 単純な
ALIASカラムへのINSERTはサポートされなくなりました (#84154 を差し戻し) 。この機能はカスタムフォーマットでは動作せず、設定による保護もありませんでした。#92849 (Azat Khuzhin). Lazyデータベースエンジンは削除され、利用できなくなりました。#93627 (Alexey Milovidov).metric_logのtransposed_with_wide_viewモードは、使用できなくなる不具合があったため削除されました。system.metric_logをこのモードで定義することはできなくなりました。#93867 (Alexey Milovidov).
設定および構成の変更
- データレイクカタログがオブジェクトストレージにアクセスできない場合にエラーとなる新しい設定が追加されました。#93606 (Konstantin Vedernikov).
- ワークロードの CPU スケジューリングは、デフォルトでプリエンプティブ方式になりました。
cpu_slot_preemptionサーバー設定を参照してください。#94060 (Sergei Trifonov). 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、Delta Lake、Kafka、S3、S3Queue、Azure、Hive、RabbitMQ、Set、FileLog、または NATS のテーブルエンジン定義で指定していた場合は例外で、そのような定義は今後、黙って無視されるのではなくエラーになります。#94106 (Robert Schulze).do_not_merge_across_partitions_select_finalの意味が簡素化されました。以前は、この機能は明示的に設定されていなくても自動的に有効になることがあり、混乱や本番環境での問題の原因となっていました。現在は、これを1に設定すると無条件で機能が有効になり、0に設定すると新しい設定enable_automatic_decision_for_merging_across_partitions_for_final(デフォルトは1) に従います。#96110 (Nikita Taranov).- S3 スキーマ検証が追加されました。#96194 (Konstantin Vedernikov).
apply_row_policy_after_final設定はデフォルトで有効になり、ROW POLICYが本来どおりFINALを尊重するようになりました。以前optimize_move_to_prewhere_if_final=1によってFINALより前に行ポリシーが適用される動作に依存していた場合は、代わりにapply_row_policy_after_final=0を使用してください。#97279 (Nikolai Kochetov).
セキュリティとアクセス制御の変更
joinGet/joinGetOrNullで、基になる Join テーブルに対してSELECT権限が適用されるようになりました。joinGet('db.table', 'column', key)の実行には、キーカラムと取得する属性カラムの両方に対するSELECT権限が必要です。これらの権限がないクエリはACCESS_DENIEDで失敗します。移行するには、テーブル全体へのアクセスにはGRANT SELECT ON db.join_table TO userで権限を付与するか、カラムレベルのアクセスにはGRANT SELECT(key_col, attr_col) ON db.join_table TO userを使用してください。 #94307 (Vladimir Cherkasov).CREATE TABLE ... AS ...クエリでは、これまで誤ってチェックされていたSHOW TABLESではなく、SHOW COLUMNS権限が必要になりました。 #94556 (pufit).
INSERT と重複排除に関する変更
- すべての INSERT で、重複排除がデフォルトで有効になりました。以前は、非同期 INSERT と materialized view では無効でしたが、同期 INSERT では有効でした。従来の動作を維持するには、
deduplicate_insert='backward_compatible_choice'を明示的に設定してください (deduplicate_blocks_in_dependent_materialized_viewsも同様です) 。 #95970 (Sema Checherinda).
システムテーブルの変更
- S3Queue と AzureQueue のインメモリメタデータが制限されるようになりました。システムテーブルの名前も変更され、
system.s3queueはsystem.s3queue_metadata_cacheに、system.azure_queueはsystem.azure_queue_metadata_cacheになりました。#95809 (Kseniia Sumarokova).
その他の破壊的変更
- 無効な入力を渡して呼び出した際にクラッシュまたはハングすることがあった h3 index 関数を修正しました。#93657 (Michael Kolupaev) 。
新機能
認証
- 時間ベースのワンタイムパスワード (TOTP) に、認証方式として対応しました。#71273 (Vladimir Cherkasov).
関数
- 指定した区切り文字で分割された文字列内の部分文字列の順序を反転する
reverseBySeparator関数が追加されました。#91780 (Xuewei Wang). - sRGB 色空間と OKLAB 色空間を相互変換する
colorOKLABToSRGB関数およびcolorSRGBToOKLAB関数が追加されました。#93361 (Pranav Tiwari). - 2 点間の コサイン距離を近似する
cosineDistanceTransposed関数が追加されました。#93621 (Raufs Dunamalijevs). xxh3_128ハッシュ関数が追加されました。#96055 (Raúl Marín).- MergeTree の索引使用状況を分析する
mergeTreeAnalyzeIndex()関数が追加されました。#92954 (Azat Khuzhin). - 関数が、新しい
FunctionVariantAdaptorを介してVariant型をサポートするようになりました。#90900 (Bharat Nallan). - 一部の関数は、SQL で括弧なしで呼び出せるようになりました。#94678 (Aly Kafoury).
システムテーブル
- UDF の読み込みステータスと設定を監視するための
system.user_defined_functionsテーブルを追加しました。 #90340 (Xu Jia). system.zookeeper_infoテーブルを追加しました。 #90809 (Smita Kulkarni).- 昇順の素数を含む
system.primesテーブルとprimesテーブル関数を追加しました。 #92776 (Nihal Z. Miaji). - 各データパーツ内のファイル数を示す
filesカラムをsystem.partsに追加しました。 #94337 (Match). - 既存の failpoint とその有効/無効を確認するための
system.fail_pointsテーブルを追加しました。 #96762 (Pedro Ferreira).
テーブルエンジンとストレージ
Arrayカラムのテキスト索引をサポートしました。#89895 (Jimmy Aguilar Mena).- Paimon REST カタログのサポートを追加しました。#92011 (JIaQi Tang).
icebergLocalClusterテーブル関数を追加しました。#93323 (Anton Ivashkin).lazy_load_tablesデータベース設定を追加しました。有効にすると、データベースの起動時にテーブルは読み込まれず、代わりに軽量なStorageTableProxyが作成され、実際のテーブルエンジンは初回アクセス時に実体化されます。#96283 (xiaohuanlin).DatabaseReplicated向けに補助的な ZooKeeper をサポートしました。#91683 (RinChanNOW).- cache 内の data ファイルと system ファイルを、それぞれ別のセグメントに分割できるようになりました。#87834 (MikhailBurdukov).
- 冗長なファイルダウンロードを回避して読み取り性能を向上させるため、Parquet メタデータ用の新しい SLRU cache を追加しました。この cache は
SYSTEM DROP PARQUET METADATA CACHEで削除できます。#89750 (Grant Holly). - データレイクのテーブルで、Parquet リーダー v3 における
PREWHEREおよび多段階PREWHEREがサポートされるようになりました。#93542 (Konstantin Vedernikov). - 複数のレプリカにまたがる分散索引解析を追加しました。共有ストレージや大規模データ量の環境で有用です。#86786 (Azat Khuzhin).
挿入と重複排除
- 非同期 INSERT の重複排除が、依存先の materialized view でも機能するようになりました。
block_idの衝突が発生した場合、元のブロックをフィルタリングして衝突したblock_idに関連する行を除外し、残りの行は関連するすべての materialized view クエリを通じて変換されます。 #89140 (Sema Checherinda). - 非同期 INSERT で並列クォーラムがサポートされるようになりました。挿入されたデータはクォーラムまでレプリケートされ、重複が見つかった場合は、以前に挿入されたデータのレプリケーションも完了するまでクエリが待機します。 #93356 (Sema Checherinda).
- 統一された重複排除ハッシュへの移行を有効にする
insert_deduplication_versionサーバー設定が追加されました。 #95409 (Sema Checherinda). - 重複排除ハッシュの移行を開始しました。 #97562 (Sema Checherinda).
SQL とクエリ機能
- 既存の
SYSTEM DROP [...] CACHEに代わる、より分かりやすいSYSTEM CLEAR [...] CACHE構文を追加しました。従来の構文も引き続き利用できます。#93727 (Pranav Tiwari)。 - 結果のパーツをコミットせずにマージをシミュレートする
OPTIMIZE <table> DRY RUN PARTS <part names>クエリを追加しました。マージの正確性の検証、マージ関連バグの再現、マージ性能のベンチマークに役立ちます。#96122 (Anton Popov)。 ignore_on_cluster_for_replicated_database設定が有効な場合、ON CLUSTERを含む DDLクエリを Replicatedデータベースに対して実行できるようになりました。クラスター名は無視されます。#92872 (Kirill)。- プロジェクション索引機能を簡素化し、拡張しやすくするための新しい構文とフレームワークを導入しました。#91844 (Amos Bird)。
設定と構成
max_insert_block_size_bytes設定を追加し、挿入されるブロックの形成をより細かく制御できるようにしました。#92833 (Kirill Kopnev).use_primary_key設定を追加しました。これをfalseに設定すると、主キーに基づくグラニュールプルーニングが無効になります。#93319 (Nihal Z. Miaji).default_dictionary_database設定を追加しました。これにより、データベース修飾子なしで参照された external Dictionary を、指定したデフォルトデータベース内で ClickHouse が解決できるようになります。これにより、XML で定義されたグローバル Dictionary から、SQL で定義されたデータベースごとの Dictionary への移行が容易になります。#91412 (Dmitrii Plotnikov).check_named_collection_dependencies設定 (デフォルトで有効) を追加し、テーブルで使用されている named collections が削除されるのを防げるようにしました。#96181 (Pablo Marcos).- 同時実行制御のために max-min fair スケジューラを追加し、多数のクエリが限られた CPU スロットを奪い合う高オーバーサブスクリプション時でも、より公平に処理できるようにしました。
concurrent_threads_schedulerサーバー設定のデフォルト値はfair_round_robinではなくmax_min_fairになり、短時間で完了するクエリが長時間実行されるクエリによって不利にならなくなりました。#94732 #95300 (Sergei Trifonov). logger.startup_console_levelおよびlogger.shutdown_console_levelの設定オプションを追加し、それぞれ ClickHouse の起動時および終了時のコンソールのログレベルを上書きできるようにしました。#95919 (Garrett Thomas).
監視
- バージョン情報を含む
ClickHouse_Infoメトリクスを Prometheus の/metricsエンドポイントに追加しました。これにより、詳細なバージョン情報の推移を時系列で追跡するグラフを作成できるようになりました。#91125 (Christoph Wurm) 。
実験的機能
- ベクトル検索でクラスター内のレプリカに負荷を分散できるようになり、単一の VM のメモリ容量を超える大規模なベクトル索引もサポート可能になりました。#95876 (Shankar Iyer).
ast_fuzzer_runsおよびast_fuzzer_any_queryの設定で制御されるサーバー側の AST fuzzer を追加しました。有効にすると、サーバーは通常の実行後に各クエリへランダムな変異を加えたものを実行し、その結果を破棄します。#97568 (Alexey Milovidov).
改善
クエリとSQL
- 相関サブクエリで、より多くのテーブルエンジンとデータソースの種類がサポートされるようになりました。#90175 (Dmitry Novik) 。
- 非定数の
INがスカラー値に対してサポートされるようになりました (例:val1 NOT IN if(cond, val2, val3)) 。#93495 (Yarik Briukhovetskyi) 。 - JOIN における拡張テーブル別名のサポートを追加しました (例:
SELECT * FROM (SELECT 1) AS t(a) JOIN (SELECT 1) AS u(b) ON a = b) 。#95331 (Yarik Briukhovetskyi) 。 EXPLAIN indices = 1は、EXPLAIN indexes = 1の別名として利用できるようになりました。#92774 (Pranav Tiwari).numbersおよびprimesテーブル関数の filter pushdown を改善 — ClickHouse はWHERE条件から保守的な値の範囲を導き出して数列の生成を制限できるようになり、無制限なスキャンを回避します。#96115 (Nihal Z. Miaji).- 同値集合の最適化が、連続する複数の
INNER JOIN演算でも機能するようになりました。これにより、結合チェーン内の任意の table に適用された filter が、関連するすべての table に自動的にプッシュダウンされます。#96596 (Vladimir Cherkasov) 。 FROM句内の単一のサブクエリでも、自動クラスター・テーブル関数が使用されるようになりました。#96332 (phulv94).- プレフィックスが ASCII 文字のみで構成されている場合、
startsWithUTF8によるフィルタリング時に主キー索引が使用されるようになりました。#97055 (vkcku). assumeNotNull、coalesce、ifNullにより、キーカラムがこれらの関数でラップされている場合でも、範囲述語に対する主キーおよびスキップ索引のプルーニングが有効になりました。#94754 (Nihal Z. Miaji) 。- MergeTree から読み取る際、未使用のカラムが読み取りステップからも削除されるようになりました。これは、特にフィルターが
PREWHEREにプッシュダウンされる場合に有効です。#89982 (János Benjamin Antal). use_join_disjunctions_push_downの最適化は、デフォルトで有効になりました。#89313 (Alexey Milovidov) 。enable_join_runtime_filters最適化はデフォルトで有効になりました。#89314 (Alexey Milovidov) 。- JOIN ランタイムフィルタのオーバーヘッドが低減されました。これは、bloom filter でセットされる bits が多すぎる場合や、フィルタで除外される行が少なすぎる場合に、フィルタを自動的に無効化するようになったためです。 #91578 (Alexander Gololobov).
use_hash_table_stats_for_join_reordering設定 (デフォルトで有効) を追加し、join の並べ替えに実行時のハッシュテーブルサイズ統計を使用するかどうかを制御できるようにしました。#93912 (Vladimir Cherkasov) 。- 索引解析は、クエリの実行がローカルか並列レプリカかにかかわらず、1 回だけ行われるようになりました。#94854 (Nikita Taranov).
FINALクエリで、スキップ索引の対象が主キーを構成するカラムである場合、他のパーツに対する追加の主キー積集合チェックはスキップされるようになりました。#93899 (Shankar Iyer) 。DROP DATABASEは、データベースに読み込み依存関係のあるテーブルが含まれている場合のクラッシュ安全性を向上させるため、依存関係の逆順でテーブルを削除するようになりました。#97057 (Alexey Milovidov).- ミューテーションの完了を同期的に待機する際に、クエリのキャンセルと時間制限が反映されるようになりました。#96756 (Alexey Milovidov).
DROP COLUMNmutation の直後にADD COLUMNをすばやく実行した場合に、削除済みデータが復活するのを防止しました。#96713 (Alexey Milovidov).UPDATEとRENAME COLUMNを伴う競合するALTER式で、論理エラーではなく適切な例外がスローされるようになりました。#96022 (Alexey Milovidov).- 集約のキーカラムについて、推定総行数と NDV (異なる値の数) の統計情報が収集されるようになりました。 #92812 (Alexander Gololobov).
- すべてのレプリカが、並列レプリカ読み取り時に取り残された範囲を並列に引き継げるようになり、負荷分散が改善され、ロングテールレイテンシが低減されました。#91374 (zoomxi) 。
- 選択性の高い
PREWHEREフィルター使用時の自動並列レプリカの推定精度を向上しました。#97231 (Nikita Taranov). joinGetが一時テーブルに対応しました。#92973 (Eduard Karacharov) 。- 外部集約、ソート、および join は、あらゆるコンテキストで
temporary_files_codecクエリ設定に従うようになりました。#92388 (Vladimir Cherkasov) 。 - ベクトル類似度検索の実行計画の最適化は、検索対象カラムに索引がある場合にのみ適用されるようになりました。#94998 (Eduard Karacharov) 。
テーブルエンジンとストレージ
StorageEmbeddedRocksDBが、主キーとして複数のカラムをサポートするようになりました。#33917 (usurai).ALTER TABLE <table> ATTACH PART <part_name> FROM <directory_name>構文が追加され、filesystem 上で手動で名前を変更しなくても、detached/配下の任意のサブディレクトリ (たとえばbroken-on-startやunexpectedプレフィックスを持つパーツ) からパーツを Attach できるようになりました。#74816 (Anton Popov).min_free_disk_bytes_to_perform_insertが JBOD ボリュームでも正しく動作するようになりました。#90878 (Aleksandr Musorin).max_parts_to_merge_at_onceが、TTL の drop-part マージ時にも尊重されるようになりました。#95315 (Kseniia Sumarokova).- バックグラウンド操作 (mutate、merge) を、
defaultprofile で通常のクエリと設定を共有するのではなく、backgroundprofile で個別に設定できるようになりました。#93905 (Arsen Muk). - サイズを正確に計算するようにしてサブカラムの読み取りを改善し、メモリ使用量を削減するとともに速度も向上しました。#96251 (Pavel Kruglov).
split_intersecting_parts_ranges_into_layersで生成されるパイプラインのストリーム数を制限し、過剰なメモリ消費を防ぐようにしました。#96478 (Nikita Taranov).- テキスト索引が GA になりました。#96794 (Robert Schulze).
QBitが GA になりました。#95358 (Raufs Dunamalijevs).QBit同士を等価比較できるようになりました。#94078 (Raufs Dunamalijevs).enable_positional_arguments_for_projectionsを使用してテーブルスキーマを保存する際、位置引数ではなく式が保存されるようになり、この設定を無効にした状態でもサーバーを再起動できるようになりました。#96372 (Alexey Milovidov).- Replicated データベースでは、cache 済みのクラスターがダミークエリのたびに更新されなくなりました。#96897 (Tuan Pham Anh).
- DDLWorker の状態をリセットするための
SYSTEM RESET DDL WORKER [ON CLUSTER]クエリが追加され、ホスト ID の更新時にレプリカのアクティビティを更新するのに役立ちます。#93780 (Tuan Pham Anh).
データレイク
- Delta Lake の削除ベクター対応を追加しました。#93852 (Kseniia Sumarokova)。
- 削除ベクターは
deltaLakeClusterでもサポートされるようになりました。#94365 (Kseniia Sumarokova)。 - Delta Lake が macOS で利用できるようになりました。#95985 (Alexey Milovidov)。
- Delta Lake でメタデータから
count()の結果を取得し、system.tablesに正しいテーブル統計情報 (合計バイト数/行数) を表示するようになりました。#96190 (Kseniia Sumarokova)。 system.tablesから Delta Lake テーブルをクエリする際、オブジェクトストレージの読み取りをスキップするようになりました。#95899 (Antonio Andelic)。- delta-kernel ログのデバッグ用に
SYSTEM RELOAD DELTA KERNEL TRACING <level>コマンドを追加しました。#96763 (Kseniia Sumarokova)。 - Glue メタデータで
metadata_locationが指定されていない場合、Iceberg テーブルのメタデータの場所を自動的に判定するようになりました。#91994 (Andrey Zvonov)。 - Iceberg のマニフェストファイルのエントリで、position delete file 名の下限値と上限値を解析するようになり、データファイルの選択が改善されました。#93980 (Daniil Ivanik)。
- Iceberg テーブルで
PREWHERE最適化を有効にしました。#95476 (Konstantin Vedernikov)。 - Iceberg テーブルで、スレッドとメモリ制限をデータファイルリーダーと position delete file リーダーの間で共有するようになりました。#94701 (Yang Jiang)。
- Iceberg テーブルで
ALTER TABLE RENAME COLUMNをサポートしました。#97455 (murphy-4o)。 - データレイクで Google Cloud Storage をサポートしました。#93866 (Konstantin Vedernikov)。
- Unity Catalog で長時間実行されるクエリ中に、S3 アクセストークンを動的に更新するようになりました。#95069 (Konstantin Vedernikov)。
aws_role_arnおよびaws_role_session_name設定を使用して、Glue カタログへのロールベースアクセスを追加しました。#90825 (Antonio Andelic)。
S3Queue
- S3Queue が ordered モードで Hive パーティション化を追跡するようになりました。#81040 (Anton Ivashkin).
- バケットを使って S3Queue の ordered モードの処理をリファクタリングし、Keeper へのリクエスト数を削減してパフォーマンスを向上させました。#92889 (Kseniia Sumarokova).
- S3Queue の ordered モードに、より汎用的なパーティション化のサポートを追加しました。#94321 (Bharat Nallan).
- ordered モードの S3Queue に、パーティションキーに基づくバケット化を追加しました。#94698 (Bharat Nallan).
- S3Queue で、
keeper_path設定による補助的な ZooKeeper をサポートしました。#95203 (Diego Nieto). - S3(Azure)Queue の ordered モードで、制限を追跡することで失敗したノードをクリーンアップするようになりました。#94412 (Kseniia Sumarokova).
S3 とオブジェクトストレージ
- S3 の
x-amz-server-side-encryptionヘッダーは、HeadObject、UploadPart、CompleteMultipartUploadリクエストには渡されなくなりました。#64577 (Francisco J. Jurado Moreno). - S3 table engine と
s3テーブル関数の 名前付きコレクション で、storage_class_nameを指定できるようになりました。#91926 (János Benjamin Antal). - インスタンスプロファイル認証情報を使用して多数の同時実行 S3 クエリを実行する際に発生していた EC2 metadata エンドポイントのスロットリングを修正しました。認証情報プロバイダーは cache され、すべてのクエリで共有されるようになりました。#92891 (Sav).
- AWS S3 C++ SDK に、MinIO 固有のエラーに対応するエラーコードマッピングを含む MinIO 互換サポートを追加し、セルフホストの MinIO クラスターの信頼性を向上させました。#93082 (XiaoBinMu).
- 認証情報を確認するためのヒントを追加し、S3 の認証エラーメッセージを改善しました。#95648 (Gerald Latkovic).
- Azure Blob Storage では、ネイティブコピーが何らかのエラーで失敗した場合、read-write コピーにフォールバックするようになりました (以前は Unauthorized の場合のみ) 。#92888 (Smita Kulkarni).
関数
avg()が、Date、DateTime、Time型の値を引数としてサポートするようになりました。 #87845 (Yarik Briukhovetskyi).mapContainsKeyLikeとmapContainsValueLikeで、mapKeys()またはmapValues()に対するテキスト索引を利用できるようになりました。 #93049 (Michael Jarrett).flipCoordinatesがGeometry型をサポートするようになりました。 #93303 (Bharat Nallan).hasAnyTokens関数およびhasAllTokens関数の 64 トークン制限を撤廃しました。 #95152 (Elmi Ahmadov).- 他の距離関数との一貫性を保つため、
cosineDistanceの別名としてdistanceCosineを追加しました。 #96065 (Raufs Dunamalijevs). - ClickHouse KQL に
iif関数を追加しました。 #94790 (happyso). use_variant_as_common_typeがデフォルトで有効になり、Array、UNIONクエリ、およびif/multiIf/caseの分岐内で互換性のない型を扱えるようになりました。 #90677 (Alexey Milovidov).
設定と構成
use_skip_indexes_on_data_readはデフォルトで有効になっています。#93407 (Shankar Iyer) 。add_minmax_index_for_time_columns設定を追加しました。有効にすると、すべてのDate、Date32、Time、Time64、DateTime、DateTime64カラムに対して minmax 索引が自動的に作成されます。#93355 (Michael Jarrett).- マージ時に統計をマテリアライズするかどうかを制御する
materialize_statistics_on_merge設定 (デフォルトで有効) が追加されました。#93379 (Han Fei) 。 - 悪意のあるペイロードを防ぐため、バイナリフォーマットでデコードできる型ノードの総数を制限する
input_format_binary_max_type_complexity設定が追加されました。 #92519 (Raufs Dunamalijevs). - 特定のイベント名に対してのみ
trace_profile_eventによるトレースを行うよう制限するtrace_profile_events_list設定を追加しました。#92298 (Alexey Milovidov) 。 type_json_allow_duplicated_key_with_literal_and_nested_object設定を追加し、一方がリテラルでもう一方がネストされたオブジェクトである JSON において、重複するパスを許可できるようにしました。これは、パスの deduplication が強制される前に作成されたデータとの後方互換性を維持するためです。#93604 (Pavel Kruglov).- マージおよびパース時に JSON カラム内の動的サブカラムを制限するため、
merge_max_dynamic_subcolumns_in_compact_partMergeTree 設定とmax_dynamic_subcolumns_in_json_type_parsingクエリレベルの設定が追加されました。#94184 (Pavel Kruglov). use_statisticsをallow_statistics_optimizeのaliasとして追加し、use_primary_keyおよびuse_skip_indexesと整合するようにしました。#94366 (Robert Schulze) 。- 要素の存在を確認できるよう、数値から Enum への変換時に
input_format_numbers_enum_on_conversion_errorを有効にしました。#94384 (Elmi Ahmadov) 。 - テーブルに行ポリシーが設定されているにもかかわらず、現在のユーザーに適用されるものが1つもない場合に例外を発生させる設定が追加され、設定ミスの可能性を検出できるようになりました。#95014 (Vitaly Baranov).
- 互換性バージョン 26.2 以降では、
enable_max_bytes_limit_for_min_age_to_force_mergeがデフォルトで有効になります。 #95917 (Christoph Wurm). core_dump.size_limitは、server を再起動しなくてもホットリロードできるようになりました。#96524 (Miсhael Stetsyuk).- 設定の再読み込み時に、コマンドラインのオーバーライドが適用されるようになりました。#80295 (Alexey Milovidov).
- サーバーログに、複合ローテーション戦略 (サイズ + 時間) が追加されました。 #87620 (Jianmei Zhang).
- 分散索引解析を、パーツ数 (
distributed_index_analysis_min_parts_to_activate) および索引サイズ (distributed_index_analysis_min_indexes_size_to_activate) に基づいて有効化できるようになりました。#95216 (Azat Khuzhin) 。 - Statistics cache は、更新間隔 300 秒でデフォルトで有効になりました。#95841 (Han Fei) 。
path構成パラメータは、起動時に作業ディレクトリを基準とする相対パスとして解決されるようになり、データディレクトリが想定外の場所に配置されるのを防げるようになりました。#96305 (Alexey Milovidov).
システムテーブルと監視
- 診断機能の向上のため、
system.mutationsにparts_postpone_reasonsカラムを追加しました。#92206 (Shaohua Wang). system.data_skipping_indicesにcreation(implicit/explicit) カラムを追加しました。#92378 (Raúl Marín).- Running タスクが
system.background_schedule_poolおよび対応するログテーブルに反映されるようになりました。#92587 (Azat Khuzhin). - 実行中の非内部クエリ数を追跡する
QueryNonInternalMetric を追加しました。これにより、max_concurrent_queries制限に対する同時実行数の監視がしやすくなります。#94284 (Ashwath Singh). - 最も長時間実行されている merge の経過時間を示す非同期 Metric を追加しました。#94825 (Raúl Marín).
- 物理的な connection を反映するため、
query_logにconnection_addressとconnection_portを追加しました (proxy 経由で接続している場合に便利です) 。#95471 (Yakov Olkhovskiy). system.crash_logに追加情報を加えました。#94112 (Miсhael Stetsyuk).system.aggregated_zookeeper_logに component 名を追加しました。#95882 (Antonio Andelic).- 利用可能なすべてのトークナイザーを表示する
system.tokenizersテーブルを追加しました。#96753 (Robert Schulze). - jemalloc メモリアロケータの統計情報を対話的に可視化するための
system.jemalloc_statsテーブルと/jemalloc.htmlHTTP エンドポイント を追加しました。#97077 (Antonio Andelic). - raw、シンボル化された、collapsed の出力フォーマットに対応した、jemalloc ヒーププロファイルの読み取りと分析のための
system.jemalloc_profile_textテーブルを追加しました。#97218 (Antonio Andelic). MUTATE_PARTおよびMUTATE_PART_STARTイベント向けに、system.part_logにmutation_idsを追加しました。#93811 (Shaohua Wang).- ネストされたグローバル server settings (例:
logger.level) が、system.server_settingsで部分的に見えるようになりました。#94001 (Hechem Selmi). view_duration_msは、スレッド の継続時間の合計ではなく、グループがアクティブだった時間を示すようになりました。#94966 (Sema Checherinda).system.blob_storage_logが Azure Blob Storage、Local、HDFS でも利用可能になりました。あわせてerror_codeカラムも追加しました。#93105 (Alexey Milovidov).- 平均より遅い Background task は、設定可能なしきい値 (
background_schedule_pool_log.duration_threshold_milliseconds、デフォルトは 30ms) を超えるとログに記録されるようになりました。#92965 (Azat Khuzhin). - URL ストレージの password は、クエリログに表示されなくなりました。#93245 (Konstantin Vedernikov).
ClickHouse Keeper
- 最後にコミットされたインデックスより前のログが存在する場合でも、Keeper のログエントリ内のギャップを正しく処理するようになりました。#90403 (Antonio Andelic).
- Keeper リクエストに対する OpenTelemetry トレーシングを追加しました。#91332 (Miсhael Stetsyuk).
- 新しい Keeper メトリクス
KeeperChangelogWrittenBytes、KeeperChangelogFileSyncMicroseconds、KeeperSnapshotWrittenBytes、KeeperSnapshotFileSyncMicroseconds、KeeperBatchSizeElements、KeeperBatchSizeBytesを追加しました。#92149 (Miсhael Stetsyuk). CHECK_STATおよびTRY_REMOVEの Keeper 拡張機能がデフォルトで有効になりました。#93886 (Mikhail Artemenko).- 壊れたスナップショットや不整合な changelog を検出した場合、Keeper は異常終了するのではなく例外を送出するようになり、より安全に復旧するために手動での介入が必要になります。#94168 (Antonio Andelic).
getChildrenKeeper リクエストにwith_dataおよびwith_stat拡張機能を追加し、1 回の操作で子ノードをそのデータおよび stat 情報とともに取得できるようにしました。#94826 (Nikolay Degterinsky).- クラスターの構成失敗につながる可能性がある Keeper の設定不備を検出するチェックを追加しました。#94682 (Konstantin Bogdanov).
- Database Replicated でのテーブル取得を改善するため、
with_dataKeeper 拡張機能のサポートを追加しました。#96090 (Nikolay Degterinsky). system.zookeeper経由で補助的な ZooKeeper への挿入が可能になりました。#92092 (RinChanNOW).
メモリ管理
- ファイルシステムキャッシュの領域予約を最適化し、エビクション候補を排他ロックを保持せずに収集できるようにしました。#82764 (Kseniia Sumarokova).
- リモートテーブルエンジン/関数向けに、ファイルシステムキャッシュの読み取りバッファで並列読み取りを有効化しました。#71781 (Kseniia Sumarokova).
- jemalloc の dirty page の即時パージを有効にし、Linux 以外のシステムでのメモリ使用量を削減しました。#93360 (Eduard Karacharov).
- jemalloc の dirty page のパージは、メインの MemoryWorker スレッドとは別スレッドで実行されるようになりました。さらに、総メモリ使用率に基づいてパージを行うための
memory_worker_purge_total_memory_threshold_ratioconfig を追加しました。#94902 (Antonio Andelic). - ClickHouse が継続的なメモリ逼迫状態にある場合、jemalloc の dirty page decay が動的に無効化されるようになりました。#95145 (Antonio Andelic).
- MergeTree からデータを読み取る前に明示的なメモリ消費チェックを追加し、production 環境での経験に基づいてスレッドプールのキューサイズを引き下げました。#94692 (Nikita Mikhaylov).
- ユーザー認証の前に総メモリ制限をチェックするようになり、制限を超えた場合は
memory limit exceededをスローします。#95003 (Nikolai Kochetov). - query conditions cache のメモリ使用量の計測が不正確だった問題を修正しました。#95478 (Nikita Mikhaylov).
- aggregation/ソート 時にディスクへのスピルが発生する際のクエリメモリ使用量の検出を、より堅牢にしました。#92500 (Azat Khuzhin).
- CPU が枯渇した状況では、プロセス保護のために scheduler が MemoryWorker スレッドを優先するようになりました。#94864 (Nikita Mikhaylov).
- テーブルからの読み取り時に、場合によって ClickHouse がメモリ制限を守らない問題を修正しました。#93715 (Nikita Mikhaylov).
データフォーマット
- Parquet リーダーで、
TupleまたはMapカラムを JSON として読み込めるようになりました。#92864 (Michael Kolupaev). - Parquet リーダーで空のタプルがサポートされるようになりました。#92868 (Michael Kolupaev).
- Arrow/ArrowStream フォーマットでは、
Date型が Arrow ネイティブのdate32型 (従来はuint16) としてシリアライズされるようになりました。従来の動作はoutput_format_arrow_date_as_uint16設定で復元できます。#96860 (Alexey Milovidov). Hash出力フォーマットが block サイズに依存しなくなりました。#94503 (Alexey Milovidov).- Pretty JSON フォーマットでは、単純な型が別の行に出力されなくなりました。#93836 (Pavel Kruglov).
- スキーマ推論で
allow_experimental_nullable_tuple_typeが考慮されるようになりました。これを有効にすると、欠落したネストオブジェクトはNULL要素のタプルではなくNULLになることがあります。#95525 (Nihal Z. Miaji). - SQL フォーマッタで、
SELECTを括弧で囲む代わりに、AS SELECTの前にCOMMENTを出力するようになりました。#96293 (Alexey Milovidov). - simdcomp を使用した postings list の圧縮を最適化しました。#92871 (Peng Jian).
バックアップと復元
- リフレッシュ可能なマテリアライズドビューのターゲットデータをバックアップするかどうかを制御するためのバックアップ設定
backup_data_from_refreshable_materialized_view_targetsを追加しました。APPENDリフレッシュ戦略を持つ RMV のターゲットは、常にバックアップされます。#93658 (Julia Kartseva). - S3 および Azure Blob Storage 向けに、SQL で定義された名前付きコレクションを
BACKUP/RESTOREでサポートしました。#94605 (Pablo Marcos).
Named collections と Dictionaries
- MongoDB table function で、named collection のパラメーターのオーバーライドが許可されるようになりました。#89616 (vanchaklar).
- YTsaurus の dictionaries と tables で named collections が有効になりました。#94582 (MikhailBurdukov).
- YTsaurus の dynamic table の Dictionary ソースに、カラム定義を渡せるようになりました。#92391 (MikhailBurdukov).
- パラメーター化ビューのスキーマが、明示的に指定された場合に表示されるようになりました。#90220 (Grigorii Sokolik).
重複排除
insert_select_deduplicate設定が見直され、後方互換性のオプションが追加されました。#92951 (Sema Checherinda) 。- materialized view が関係する場合でも、非同期 INSERT で重複排除を行えるようになりました。#93957 (Sema Checherinda) 。
その他の改善
SYSTEM INSTRUMENT ADD/REMOVEの UX を改善しました。関数名に文字列リテラルを使えるようになり、一致するすべての関数にパッチが適用されるようになったほか、REMOVEでfunction_nameもサポートされました。#93345 (Pablo Marcos).- 一時停止可能な failpoint 向けに
SYSTEM NOTIFY FAILPOINTを追加し、PAUSE/RESUME 向けにSYSTEM WAIT FAILPOINTを追加しました。#92368 (Shaohua Wang). system.trace_log、system.symbols、およびdemangle関数で、C++ の関数名が正しく表示されるようになりました。#93075 (Alexey Milovidov).- jemalloc のプロファイルがシンボル付きで書き込まれるようになり、ヒーププロファイル生成時にバイナリが不要になりました。#93099 (Azat Khuzhin).
- スタック巻き戻し中に
dropReplicationSlotが例外を送出した場合、MaterializedPostgreSQLデータベースにテーブルをアタッチする際にクラッシュする問題を修正しました。#96871 (Alexey Milovidov). CREATE TABLEが失敗した際に、不要な残留物が残る可能性がある問題を修正しました。#94174 (Azat Khuzhin).- パスワードで保護された TLS 秘密鍵を使用した際に、未初期化メモリにアクセスする問題を修正しました。#94182 (Konstantin Bogdanov).
alter table ... modify setting ...がロック取得中にタイムアウトした場合、論理エラーではなくタイムアウトエラーを返すようになりました。#93856 (Han Fei).- ソケットのタイムアウトに対する CPU プロファイラおよびリアルタイムプロファイラの相互運用性を改善しました。#96601 (Sergei Trifonov).
- リリースビルドで高速な libcxx ハードニング (主に境界外チェック) を有効化し、目立った性能への影響なしに利用できるようにしました。#94757 (Miсhael Stetsyuk).
パフォーマンス改善
JOIN パフォーマンス
ColumnVector::replicateに動的ディスパッチを実装し、一部のハッシュ結合演算を高速化しました。#79573 (Raúl Marín).- より多くのフィルタを JOIN にプッシュダウンできるようになりました。#85556 (Nikita Taranov).
- フィルタが片側の入力のみを使用する場合、
ANY、SEMI、ANTIJOIN に対して、JOINON条件からのフィルタのプッシュダウンを拡張しました。#92584 (Dmitry Novik). SEMI JOINのフィルタのプッシュダウンに、同値集合を使用できるようになりました。#92837 (Dmitry Novik).- 複雑な条件式に対して、
ParallelHashJoinにおける非結合行の処理を並列化しました。これはparallel_non_joined_rows_processing設定で制御されます (デフォルトで有効) 。#92068 (Yarik Briukhovetskyi). - 右側が空の場合、ハッシュ結合では左側の読み取りを完全にスキップするようになり、重いフィルタ処理や集約による不要な処理を回避します。#94062 (Alexander Gololobov).
RIGHT OUTERJOIN で JOIN ランタイムフィルタがサポートされるようになりました。#96183 (Hechem Selmi).- PREWHERE 最適化は、JOIN ランタイムフィルタの最適化後まで遅らせるようになり、ランタイムフィルタを PREWHERE にもプッシュダウンできるようになりました。#95838 (Alexander Gololobov).
クエリ最適化
- パーティションキーがソートキーと一致するか、そのプレフィックスである場合、ウィンドウ関数に対するソート順の最適化を無効化し、並列実行性能を向上させました。#87299 (Nikita Taranov).
- 外側のフィルターがビューにプッシュダウンされるようになり、ローカルノードとリモートノードの両方で PREWHERE を適用できるようになりました。#88316 (Igor Nikonov).
- 小数の
LIMITおよびOFFSETに対する性能とメモリ使用量を最適化しました。#91167 (Ahmed Gouda). - 仮想カラムに対する定数フィルターは、不要に繰り返し評価されなくなりました。#91588 (c-end).
- 主キー内の任意の決定論的な式 (例:
ORDER BY cityHash64(user_id)) を、データスキップに使用できるようになりました。ClickHouse はその式をクエリ定数に適用し、その結果を=,IN,hasによる主キー索引のルックアップに利用します。単射な式では、否定形 (!=,NOT IN,NOT has) もサポートされます。#92952 (Nihal Z. Miaji). - read-in-order 最適化で、
WHERE条件によってORDER BYカラムが定数になるケースを認識できるようになり、逆順での効率的な読み取りが可能になりました。これはWHERE tenant='42' ORDER BY tenant, event_time DESCのようなマルチテナントクエリで効果があります。#94103 (matanper). - 主キー条件の後にスキップ索引を使用する
FINALクエリでは、PrimaryKeyExpandステップが、最初に絞り込まれた主キー範囲のみを確認するようになりました。#94903 (Shankar Iyer). - 遅延マテリアライゼーションの最適化が、
UNION ALLクエリの最初の分岐だけでなく、すべての分岐に適用されるようになりました。これにより、異なる MergeTree テーブルから複数のソート済み・件数制限付き読み取りを組み合わせるクエリで I/O を削減します。#96832 (Federico Ginosa).
関数と集約のパフォーマンス
- JIT コンパイルの対象となる関数が増えました。#88770 (Alexey Milovidov).
distinctJSONPaths集約関数を最適化し、JSON カラム全体ではなくデータパーツから JSON パスのみを読み取るようにしました。#92196 (Pavel Kruglov).- 同じ要素が連続して現れることが多い場合の
uniqExactを最適化しました。#93268 (Alexey Milovidov). - 入力値がすべて ASCII の場合の
isValidASCIIを高速化しました。#93347 (Robert Schulze). - 可能な場合には insert のバッチ化により、数値型に対する
uniqを高速化しました (Not null、-Ifではない、GROUP BYなし、IPv6またはStringではない場合) 。#95904 (Raúl Marín).
ストレージとI/Oのパフォーマンス
- Parquet Reader V3 Prefetcher が、より高速なランダムリードロジックを使用するようになりました。#91435 (Arsen Muk) 。
icebergClusterのパフォーマンスを改善しました。#91537 (Yang Jiang) 。- 適応型書き込みバッファを有効にすることで、wide パーツを持つ列数の多いテーブルにおける
INSERTおよびマージのメモリ使用量を削減しました。あわせて、暗号化ディスク向けの適応型書き込みバッファ対応も追加しました。#92250 (Azat Khuzhin) 。 - 検索対象のトークン数を減らすことで、テキスト索引と
sparseGramsトークナイザーを使用した全文検索のパフォーマンスを改善しました。#93078 (Anton Popov) 。 - x86 で動的ディスパッチを用いることで、T64 コーデックの圧縮を高速化しました。#95881 (Raúl Marín) 。
- x86 における 32 バイトブロックの LZ4 展開を高速化しました。#96778 (Raúl Marín) 。
- テキスト索引の direct read 最適化が部分的に機能するようになりました。マテリアライズ済みのテキスト索引を持つパーツではそれが使われ、持たないパーツでは元のフィルタ式にフォールバックします。#96411 (Anton Popov) 。
- 不要なデータコピーを削除し、数値カラムに対するベクトル化された min/max 計算を有効にすることで、
INSERT時のminmaxスキップ索引計算を最適化しました。#97392 (Raúl Marín) 。 - フィルタリングを高速化するため、system ログテーブルに time カラム用の
minmaxセカンダリ索引と、query_id/initial_query_idカラム用のbloom_filter索引を追加しました。#96712 (Alexey Milovidov) 。 - 重複排除が有効でない場合に、
INSERT時のメモリ使用量の回帰を回避しました。#96503 (Alexey Milovidov) 。
メモリ最適化
- ハイライト処理と
VALUESのパースが有効でない場合、未使用のフィールドを削除することで、ASTLiteralのメモリフットプリントを削減しました。#93974 (Ilya Yatsishin). - 汎用的な
ASTLiteralの子ノードではなく、値パラメータを文字列/整数のペアとして保持する専用の Enum AST クラスを導入し、メモリ消費を削減しました。#94178 (Ilya Yatsishin). - named tuple AST オブジェクトについて、カラム名を汎用的な AST リテラルノードではなく文字列として直接保持することで、メモリ消費を最適化しました。#94704 (Ilya Yatsishin).
CachedOnDiskReadBufferFromFile構造体のサイズを約 50 分の 1 に削減しました。#96098 (Azat Khuzhin).- テーブルが空の場合、
HashTable::resizeは古いデータをコピーしなくなりました。#96180 (Raúl Marín).
内部最適化
- クエリパイプライン内でデータをパーティション化するために "fastrange" (Daniel Lemire) 手法を採用し、並列ソートと JOIN を改善しました。 #93080 (Alexey Milovidov).
- リンカーオプションを追加し、脱仮想化を改善しました。 #94737 (Nikita Taranov).
- ZooKeeper リクエストをバッチ化することで、多数のパーツを持つ
ReplicatedMergeTreeテーブルでのレプリカのクローン処理のパフォーマンスを改善しました。 #94847 (c-end). - より高速なハッシュ化とロックフリーのカウンターへの切り替えにより、
observeOperationsによる ZooKeeper の受信スレッドの CPU 使用量を 20% 以上削減しました。 #95962 (Miсhael Stetsyuk).
バグ修正
すべてのバグ修正(クリックして展開)
JOINの修正
- 外部結合から内部結合への最適化が適用された際に、Join ストレージで発生していた
INCOMPATIBLE_TYPE_OF_JOINエラーを修正しました。#84292 (Vladimir Cherkasov) 。 - 複数の JOIN、
USING句、およびjoin_use_nullsを含むクエリで発生する論理エラーを修正しました。#92251 (Vladimir Cherkasov). join_use_nullsを使用した join の並べ替え時に発生していた論理エラーを修正しました。#92289 (Vladimir Cherkasov).join_on_disk_max_files_to_merge設定に起因するクラッシュの可能性を修正しました。 #92335 (Bharat Nallan).- outer join を inner join に変換する際の不要なクエリプラン変更が原因で発生していた
LOGICAL_ERRORを修正しました。あわせて、JOIN時に集約キーに対して単射関数が使用されている場合にも適用できるよう、最適化の要件を緩和しました。#92503 (János Benjamin Antal) 。 - 定数条件および
join_use_nullsを使用する複数の JOIN で発生していた論理エラーを修正しました。#92892 (Vladimir Cherkasov) 。 LowCardinality(Nullable(T))カラムにおけるfull_sorting_joinのNULL != NULLのケースを修正しました。#92924 (Vladimir Cherkasov) 。- 右側の結合キーがスパースなカラムである場合の結合結果を修正しました。#93038 (Amos Bird) 。
LEFT ANTI JOINに追加の後続条件がある場合に、ランタイムフィルタが正しく動作しない不具合を修正しました。#91824 (Alexander Gololobov).- 右側テーブルに対して totals を使用するクエリでランタイムフィルタが使われた際に発生していた論理エラーを修正しました。 #93330 (Alexander Gololobov).
- 一部のケースで、重複した const カラムが誤って返されることにより、join ランタイムフィルタがクエリプランに追加された際に発生していた論理エラーを修正しました。 #93144 (Alexander Gololobov).
- JOIN ランタイムフィルタで使用される
__applyFilter関数が、本来は有効な一部のケースでILLEGAL_TYPE_OF_ARGUMENTを返していた不具合を修正しました。 #93187 (Alexander Gololobov). - すでに補完済みの右側テーブルとの結合時にランタイムフィルタが追加されない不具合を修正しました。 #93211 (Alexander Gololobov).
- 結合したテーブルが同じカラムを複数回返す場合に、ランタイムフィルタ有効時に発生していた
NOT_FOUND_COLUMN_IN_BLOCKエラーを修正しました。 #93526 (Alexander Gololobov). Mergeテーブルに join ランタイムフィルタが適用された際、FilterStepが正しく追加されない不具合を修正しました。 #94021 (Alexander Gololobov).USING句を使ったJoinストレージのJOIN演算で、スーパータイプへの型変換が正しく行われるよう修正しました。#94000 (Dmitry Novik) 。- 並列レプリカを使用するクエリと、MergeTree ではないテーブルとのJOINに関する問題を修正しました。#93902 (Igor Nikonov).
- ランタイムフィルタにおけるNullable な JOIN カラムの競合状態を修正しました。#95775 (Hechem Selmi) 。
Nullable(String)のキーを持つJoinテーブルで、空文字列がNULLになってしまう問題を修正しました。#96002 (Alexey Milovidov).- 空の MergeTree テーブルで
directJOIN アルゴリズムを使用した際に発生するNOT_SUPPORTEDエラーを修正しました。#95935 (Vladimir Cherkasov). - アウタージョインの
ON条件が、それまでに結合された複数のテーブルのカラムを参照している場合に、不正な結合順序の並べ替えによって、アウタージョインと複数の INNER JOIN を組み合わせたクエリで誤った結果が返される問題を修正しました。#96193 (Vladimir Cherkasov) 。 - Nullable のサブフィールドを含む Tuple カラムに対するランタイムフィルタの例外を修正しました。 #96509 (Alexey Milovidov).
- CROSS JOIN を含むクエリで、並列レプリカが有効な場合に誤った結果が返される問題を修正しました。#96848 (Igor Nikonov) 。
- INNER JOIN および WHERE 句とともに使用した際に
arrayJoinが重複した行を生成する不具合を修正しました。これは、部分的な述語プッシュダウンにより、arrayJoinを含むフィルターが JOIN より下位に誤ってプッシュされていたことが原因でした。#96989 (Alexey Milovidov). WHERE句のarrayJoinが JOIN の両側のカラムを参照した際に発生していたLOGICAL_ERRORを修正しました。#97239 (Alexey Milovidov).- USING を伴う JOIN の VALUES 句内のラムダ関数でマッチャー (
*) を使用した際の論理エラーを修正しました。#95661 (Vladimir Cherkasov). USINGカラムの型が異なる場合に、matcher (*、table.*) およびanalyzer_compatibility_join_using_top_level_identifierで発生する可能性があった論理エラーを修正しました。#95808 (Vladimir Cherkasov).analyzer_compatibility_join_using_top_level_identifierと ALIAS カラムで発生していた論理エラーを修正しました。 #97297 (Vladimir Cherkasov).- 旧アナライザで、重複した別名を使用した JOIN により発生していたクラッシュを修正しました。 #96405 (Ilya Golshtein) 。
クエリとアナライザの修正
- 事前定義クエリのハンドラーで、末尾の空白が挿入時にデータとして解釈される不具合を修正しました。#83604 (Fabian Ponce).
- Enum 要素の拡張など、メタデータのみを変更する ALTER の後に、projection を伴う集約で例外が発生する不具合を修正しました。#84143 (Alexey Milovidov).
count_distinct_optimizationパスの、ウィンドウ関数および複数引数に対する処理を修正しました。#92376 (Raúl Marín).arrayElementの、否定リテラルを含む場合のASTフォーマットの不整合を修正しました。#92293 (Pavel Kruglov) 。- 非定数の配列引数を指定した
NOT INが誤った値を返す問題を修正しました。#93314 (Yarik Briukhovetskyi) 。 Nothing型に関わる null-safe 比較のエラーを修正しました。#91884 (Yarik Briukhovetskyi) 。use_top_k_dynamic_filteringの最適化で発生するNot found columnエラーを修正しました。#93316 (Nikolai Kochetov) 。- スカラー相関サブクエリがある場合に、サブクエリから未使用のカラムが削除されてしまう問題を修正しました。#93273 (Dmitry Novik).
- キーが符号付き整数型の場合に、
optimize_inverse_dictionary_lookupが distributed queries で機能しない問題を修正しました。#93848 (Nihal Z. Miaji). - 分散
remote()クエリでlag/leadが機能しない問題を修正しました。#93858 (Nihal Z. Miaji). WHEREでnot match(...)を使用した際に誤った結果が返される原因となっていた、データスキッピングロジックの不具合を修正しました。#92726 (Nihal Z. Miaji) 。WHEREでnot materialize(...)またはnot CAST(...)を使用した場合に、データスキップロジックの不具合によって誤った結果が返される問題を修正しました。#93017 (Nihal Z. Miaji).- 空の配列を
has関数で使用した際に、索引解析中に発生していた論理エラーを修正しました。 #92995 (Nihal Z. Miaji). - 空のタプルを
Mapカラムで使用した際に発生する、まれなケースの論理エラーを修正しました。#93814 (Nihal Z. Miaji). - 常に偽となる条件で PK 分片を使用したクエリが失敗する問題を修正しました。#92815 (Yarik Briukhovetskyi).
Mergeテーブルエンジンのクエリプランニングで、ローカルテーブルとリモート/Distributed テーブルのマージ時にhostName()に対してILLEGAL_COLUMNが発生する問題を修正しました。#93286 (Jinlin).- 別名を持つテーブルに対する
MergeエンジンのNO_SUCH_COLUMN_IN_TABLEエラーを修正しました。#92910 (Pavel Kruglov) 。 - 複数のカラムに対する述語、bloom filter スキップ索引、および
ORとNOTの両方の条件を含むSELECTクエリで、結果に一貫性がなくなる問題を修正しました。 #94026 (Shankar Iyer). - filter に subcolumns が含まれている場合の projection の適用を修正しました。#93141 (Pavel Kruglov) 。
merges中にプロジェクションが再構築された際の_part_offsetの破損を修正し、不要な読み取りを回避することでプロジェクション処理を最適化しました。#93827 (Amos Bird).- 実質的に同一カラムの別名である場合に、異なる補間カラムがブロック内で同じカラムとして折りたたまれてしまう問題を防止しました。#93197 (Yakov Olkhovskiy).
- マージ時にプロジェクションを再構築する際、未使用のカラムを削除するようにし、メモリ使用量を削減するとともに、一時パーツの作成数も減らしました。 #93233 (Nikolai Kochetov).
- 分散クエリで負の
LIMIT/OFFSETを使用した際に、一部のケースで発生していた論理エラーを修正しました。 #95357 (Nihal Z. Miaji). - 分散クエリで小数の
LIMIT/OFFSETを使用した場合に、一部のケースで発生していた論理エラーを修正しました。#96475 (Nihal Z. Miaji). transform_null_inが有効な場合に、IN関数がNULL値に対して誤った結果を返していた不具合を修正しました。 #95674 (Nihal Z. Miaji).- 単一のカラム参照を含む
IN (col)がUNSUPPORTED_METHODエラーで失敗していた問題を修正しました。#97646 (Alexey Milovidov). - 集約引数が
LowCardinality(Nullable)の場合に、optimize_syntax_fuse_functionsがsum/count/avgをsumCount()に書き換えてしまう不具合を修正しました。#96239 (Nihal Z. Miaji). not INおよびnot has関数に対する誤ったパーティションプルーニングを修正しました。 #96241 (Nihal Z. Miaji).- prewhere 内のラムダ式が原因で発生していた prewhere フィルターのエラーを修正しました。 #95395 (Xiaozhe Yu).
- 具体的な値が必要な箇所にラムダ式が渡された場合に、クエリアナライザで発生していた
LOGICAL_ERRORを修正しました。 #96892 (Alexey Milovidov). - ラムダ関数を含む特定の式で発生するヌルポインタ逆参照を修正しました。#96479 (Alexey Milovidov) 。
- CTE およびサブクエリで、サブクエリごとの
SETTINGSがfileなどのテーブル関数に適用されない問題を修正しました。#96882 (Alexey Milovidov). - CTE で折りたたまれた定数に対するクエリ条件 cache のハッシュ衝突を修正しました。これにより、誤ったクエリ結果が返される可能性がありました。#96172 (Alexey Milovidov).
- アナライザを有効にした状態で、ALIASカラム内にラムダ式を含むテーブルを
merge()テーブル関数経由でクエリしたときに発生していたBAD_ARGUMENTSエラーを修正しました。 #97551 (Alexey Milovidov). EXCEPT ALLとINTERSECT ALLが行の出現回数を無視し、DISTINCT版と同様に動作していた問題を修正しました。 #96876 (Alexey Milovidov).PRECEDINGオフセットが大きい場合にWindowTransformで発生するアサーション失敗を修正しました。#96026 (Alexey Milovidov).group_by_use_nulls = 1およびCUBE/ROLLUP/GROUPING SETSの使用時に、ウィンドウ関数で例外が発生していた問題を修正しました。#96878 (Alexey Milovidov).GROUPING SETS、group_by_use_nulls、およびLowCardinalityを持つTupleの組み合わせにより、予期しないブロック構造が生成される問題を修正しました。#96358 (Alexey Milovidov).- キーに
Nullable(Tuple(...))内のLowCardinality(Nullable(...))が含まれている場合に、GROUP BY ... WITH ROLLUP/CUBE実行時に発生していた論理エラーを修正しました。#97647 (Alexey Milovidov) 。 ifまたはtransformがNullable(String)を返す場合にIfTransformStringsToEnumPassで発生していたアサーション失敗を修正しました。#97002 (Alexey Milovidov).optimize_inverse_dictionary_lookupがdictGet(...)の述語を書き換える際に、CREATE TEMPORARY TABLE権限のないユーザーでACCESS_DENIEDが発生していた問題を修正しました。#97484 (Nihal Z. Miaji).- PREWHERE と型推論を伴う分散クエリのまれなケースで発生していた、
UInt64とInt32の間のif関数の型不一致を修正しました。#96012 (Alexey Milovidov) 。 Bool型を含む JIT コンパイル済みクエリの不具合を修正しました。#96013 (Alexey Milovidov).- JIT コンパイルされた式が
DateTimeをDateTime64に変換する際に誤った結果を返す不具合を修正しました (たとえば、CASE/if/multiIfでDateTime型が混在する場合) 。#96879 (Alexey Milovidov) 。 - 非固定幅のフォーマッタを使用した
formatDateTimeでの未初期化値の使用を修正しました。#96133 (Alexey Milovidov) 。 - 互換性のない型で呼び出した際に
indexOfAssumeSortedで発生するstd::terminateを修正しました。#96877 (Alexey Milovidov). - Geometry 関数は、
GeometryVariant 型に加え、個々のジオメトリサブタイプも受け付けるようになりました。#97571 (Alexey Milovidov). - 索引が row policy/PREWHERE および FINAL を含むクエリの結果に影響を与えていたケースを修正しました。#97076 (Yarik Briukhovetskyi).
- read-in-order 最適化で行ポリシーを利用できるようにしました。#97538 (Janos Benjamin Antal) 。
QUALIFY句でテキスト索引付きカラムを使用した際に発生していたLOGICAL_ERRORを修正しました。 #97313 (Alexey Milovidov).WHERE句にAND/ORを含む式が 32 個を超える場合に発生する可能性のあったクラッシュを修正しました。#97698 (Shankar Iyer).FINALを使用するテーブルで、スター展開とindexHintを併用した際のremoveUnusedColumns最適化におけるブロック構造の不一致を修正しました。#97622 (Alexey Milovidov) 。- 括弧内のエイリアス付きタプルリテラルにおける、AST フォーマットのラウンドトリップの不整合を修正しました。#97418 (Alexey Milovidov).
NOT (1, 1, 1)に対するASTフォーマットの不整合を修正しました。 #97653 (Alexey Milovidov).
MergeTree とストレージの修正
- ファイルシステムが大文字と小文字を区別しない場合、MergeTree ではファイル名を常にハッシュ値に置き換えるようにしました。従来は macOS で、カラム名/サブカラム名が大文字と小文字の違いしかない場合に、データ破損を引き起こす可能性がありました。#86559 (Pavel Kruglov).
- materialized view は、作成先のデータベースを実行コンテキストとして使用するようになり、ビューの select クエリで明示的なデータベース修飾を省略できるようになりました。#88193 (Dmitry Kovalev).
- materialized view 内の元となるクエリに対して、作成時に完全な権限チェックを追加しました。#89180 (pufit).
- ロールバックされたアクティブなトランザクション内のパーツに、トランザクションを伴わない mutation が変更を適用してしまう論理エラーを修正しました。 #90469 (Shaohua Wang).
- 通常のデータベースを atomic データベースに変換した後、
system.warningsが正しく更新されない問題を修正しました。#90473 (sdk2) 。 ATTACH AS REPLICATED中に発生していたLOGICAL_ERROR: Storage does not support transactionを修正しました。#91772 (Shaohua Wang).ratio_of_defaults_for_sparse_serialization=0.0のスパースカラムに対するミューテーション後に発生する可能性のあるFILE_DOESNT_EXISTエラーを修正しました。#92860 (Pavel Kruglov) 。ratio_of_defaults_for_sparse_serializationを ALTER で1.0に変更した場合に、スパースカラムのミューテーション後にFILE_DOESNT_EXISTエラーが発生する可能性があった問題を修正しました。 #93016 (Pavel Kruglov).- 共有パーツにおけるTOCTOU競合により、古いパーツが使用される可能性があった問題を修正しました。#93022 (Azat Khuzhin).
- MergeTree のミューテーション時にソースパーツのシリアライゼーション情報設定を継承するようにし、データ型のシリアライゼーション変更後に変更済みパーツに対するクエリ結果が誤る可能性があった問題を修正しました。#92419 (Pavel Kruglov).
- 同名のカラムとサブカラムが競合し、誤ったシリアライゼーションやクエリ失敗を引き起こす可能性があった問題を修正しました。#92453 (Pavel Kruglov) 。
- パーティション式にサブカラムを含むテーブルへの挿入時に発生していた
NOT_FOUND_COLUMN_IN_BLOCKを修正しました。 #92905 (Pavel Kruglov). - ソーステーブルのALTER時に、MVでサブカラムが欠落する可能性があった問題を修正しました。#93276 (Pavel Kruglov).
ReplicatedMergeTreeの復元時に、重複排除の競合状態によって発生していたLOGICAL_ERRORを修正しました。#93612 (Pablo Marcos).- 直接デシリアライズ中の有効期限 (TTL) 更新でスパースカラムを使用するよう修正し、
Unexpected type of result TTL columnエラーを防止しました。#93619 (Pavel Kruglov) 。 - TTL集約時に必要に応じて、SET式の結果に対する
LowCardinalityラッパーを復元しました。#92971 (Seva Potapov) 。 ALTER TABLE REWRITE PARTSで発生していたCannot add action to empty ExpressionActionsChainを修正しました。#92754 (Azat Khuzhin).ON CLUSTER使用時にCREATE USERの認証方式で使われるクエリパラメータの置換を修正しました。#92777 (xiaohuanlin).- MergeTree テーブルが読み取り専用のディスク上にある場合、起動時に一時ディレクトリの削除を試みなくなりました。 #92748 (Alexey Milovidov).
- サブカラムに対して作成されたスキップ索引の実体化を修正しました。#93708 (Anton Popov) 。
- 依存関係のあるインデックスを持つ
CLEAR COLUMNの不具合を修正しました。#94057 (Raúl Marín) 。 - 再起動後に interserver host が変更された場合、Replicated データベースを Attach できない問題を修正しました。 #93779 (Tuan Pham Anh).
CREATE TABLE ... AS urlCluster()とReplicatedデータベースエンジンに関するロジックエラーを修正しました。#92418 (Kseniia Sumarokova).REPLACE PARTITIONとバックグラウンドミューテーションの間のレースコンディションを修正しました。この問題により、古いデータと新しいデータの両方が表示される可能性がありました。#96955 (Alexey Milovidov).REPLACE PARTITIONとバックグラウンドミューテーションの間に残っていた競合状態を修正し、その結果古いデータが再び現れる可能性がある問題を解消しました。#97105 (Alexey Milovidov).PartCheckThreadが、すでにミューテーション適用済みのパートに対してGET_PARTを再エンキューした場合に、ミューテーションが停止したままになる問題を修正しました。#97162 (Alexey Milovidov).- 同じカラムに対して事前に論理更新が実行されていた場合、
ALTER TABLE DROP COLUMNが失敗する問題を修正しました。#96861 (Anton Popov)。 - 論理更新でパッチパートを適用する際に発生するヌルポインタの逆参照を修正しました。#97583 (Alexey Milovidov) 。
- 不明なプロジェクションを持つパーツは、今後は永久に失われたものとして扱われなくなりました。 #95952 (Mikhail Artemenko).
CREATE TABLE ... CLONE AS ...がソーステーブルの完全修飾子を無視していた問題を修正しました。#96415 (Hasyimi Bahrudin) 。- メタデータ変更時にレプリケートテーブルで暗黙的に索引が再生成される不具合を修正しました。 #96600 (Raúl Marín).
- alias カラムを含む暗黙的インデックスを修正し、作成前に完全な検証を行うようにしました。 #97115 (Raúl Marín) 。
- すべての行がフィルタリングで除外された場合に、TTLマージ後に
_minmax_count_projection経由でmin(timestamp)が epoch (1970-01-01) を返していた問題を修正しました。#96703 (Raquel Barbadillo). - 誤計算の原因となっていた
use_const_adaptive_granularityとindex_granularity_bytesの組み合わせ (非 adaptive granularity) を修正しました。#96143 (Alexey Milovidov) 。 - 非アダプティブインデックス粒度のテーブルの読み取り時に
ORDER BY ... LIMITを使用すると発生していたNumber of rows in lazy chunk does not match number of offsets例外を修正しました。#97270 (Alexey Milovidov) 。 - 他のレプリカによる共有パーツの取得が完了する前に共有パーツが削除されることがあった、ゼロコピー レプリケーションのリグレッションを修正しました。 #95597 (filimonov).
SYSTEM RESTART REPLICAにおいて、テーブルの再作成が ZooKeeper 以外の例外で失敗した際にデータベースからテーブルが失われ、その結果DatabaseReplicatedでメタデータダイジェストの不一致が発生する不具合を修正しました。 #97276 (Alexey Milovidov).ALTER TABLE MODIFY COLUMNによってカラムの型が変更された後、カラム STATISTICS の構築時に発生していたassert_cast例外を修正しました。#97027 (Alexey Milovidov) 。- テーブルに統計情報が定義されていない場合、ClickHouse は不要なオーバーヘッドを避けるため、それらを読み込もうとしなくなりました。#96233 (Han Fei).
- distributed DDL の完了待機中に Replicated database を同時に削除すると
There was an error: Cannot obtain error messageという論理エラーが発生する不具合を修正しました。#95664 (Alexander Tokmakov). - テーブルの主キーが Nullable で、クエリで第1引数に定数を指定した
coalesceを使用している場合にKeyConditionで発生していた論理エラーを修正しました。#96340 (Alexey Milovidov).
データ型とシリアライゼーションの修正
- Dynamic/JSON 型の size サブカラムの読み取り時に発生する可能性のあるエラーを修正しました。#95573 (Pavel Kruglov).
- JSON の配列に
tupleElementを適用した際に発生していたクラッシュを修正しました。#95647 (Pavel Kruglov) 。 - ネストされたパスを持つ JSON に対して
tupleElementを実行すると誤った結果が返される不具合を修正しました。#95907 (Pavel Kruglov) 。 - 型ヒント付きのパスに対する JSON で
tupleElementが例外を発生させていた問題を修正しました。#97728 (Pavel Kruglov). - JSONデータ型のパスのスキップを修正しました。以前は
JSON(SKIP path)で、プレフィックスpathを持つすべてのキー (pathpathのようなキーも含む) がスキップされ、データ損失につながる可能性がありました。現在は、完全一致するキーのみがスキップされます。#95948 (Pavel Kruglov) 。 - JSON 内の型付きパスに
type_json_allow_duplicated_key_with_literal_and_nested_objectを適用する際に発生していた不具合を修正しました。#97422 (Pavel Kruglov) 。 - JSON typeでの互換性のない型付きパスのチェックを修正しました。#92539 (Pavel Kruglov) 。
- JSON の path 'skip' に対する type hint の生成に関する問題を修正しました。#92842 (Pavel Kruglov) 。
- アナライザにおけるカラム別名内の動的サブカラム解決を修正しました。 #92583 (Pavel Kruglov).
- Variant カラムに対する誤ったインプレースフィルタリング最適化が原因で発生していた
Nested columns sizes are inconsistent with local_discriminatorsエラーを修正しました。#96410 (Alexey Milovidov). GROUP BYで使用される、Variant型の引数を持つifNullで発生していたクラッシュを修正しました。#96790 (Alexey Milovidov) 。arrayROCAUCのように const 引数を必要とする関数におけるFunctionVariantAdaptorの論理エラーを修正しました。#97116 (Bharat Nallan).Nothing型を返す関数で、FunctionVariantAdaptorにおいて発生していたLOGICAL_ERRORを修正しました。#97213 (Alexey Milovidov).- NULL を LowCardinality 型を含む Variant カラムと比較した際に発生する論理例外を修正しました。 #97379 (Alexey Milovidov).
concatで、引数に内部でLowCardinalityを持つVariant型が含まれている場合に発生していたLOGICAL_ERRORを修正しました。#97654 (Alexey Milovidov).LowCardinalityカラムがNullableに変換された際に、誤った結果が返される問題を修正しました。#96483 (Nihal Z. Miaji).cast_keep_nullableが有効な場合に、CASTでLowCardinality Nullable型が正しく処理されるよう修正しました。 #95747 (Alexey Milovidov).- 複雑にネストされた型を型変換する際に発生していた
ColumnNullable is not compatible with original例外を修正しました。 #96924 (Alexey Milovidov). Nullable(Tuple(... Nullable(T) ...))型のサブカラムでisNull/isNotNullを使用した際に発生するLOGICAL_ERRORを修正しました。 #97582 (Alexey Milovidov).- Array から
QBitへの変換時のLOGICAL_ERRORを修正しました。#97413 (Alexey Milovidov). - スパースカラムとそのサブカラムを同時に読み込む際の
LOGICAL_ERRORを修正しました。#97515 (Pavel Kruglov). - PREWHERE 使用時に、Tuple 内のスパースな
Nullable(String)の.sizeサブカラムを読み取る際に発生するLOGICAL_ERRORを修正しました。#97264 (Alexey Milovidov). SetおよびMergeTreeIndexSetで、内部にスパースなサブカラムを持つカラムの処理時に発生するアサーション失敗を修正しました。#97493 (Alexey Milovidov) 。- 空のタプル型カラムのソート時に発生する可能性があったエラー
SIZES_OF_COLUMNS_DOESNT_MATCHを修正しました。#92520 (Pavel Kruglov) 。 - 同じ値が非常に多く繰り返される文字列データに影響していた、ネイティブ Parquet リーダーの
DELTA_BYTE_ARRAYデコードのバグを修正しました。#91929 (Daniel Muino) 。 - prewhere式の一部がクエリ内の別の箇所でも使われていた場合に、Parquetファイルの読み取り時に発生していたアサーションエラーを修正しました。 #90635 (Max Kainov).
- PREWHERE フィルターカラムにブール値でない UInt8 値が含まれている場合に、Parquet V3 ネイティブリーダーで発生していた
LOGICAL_ERRORを修正しました。#96594 (Alexey Milovidov). - 旧リーダーにおいて、JSONカラムがTupleカラムの後に続く場合のParquetスキーマ推論を修正しました。#92867 (Michael Kolupaev).
- glob によるスキーマ推論で、推論対象のファイルだけでなく、すべてのファイルに対してスキーマがキャッシュされていた問題を修正しました。 #92006 (Pavel Kruglov).
- 空のファイルから
ProtobufListフォーマットを読み込む際に、空のテーブルに存在しないレコードが生成される問題を修正しました。#96007 (Alexey Milovidov). - 明示的に指定されたサイズがデータ型のサイズと一致しない場合に、
Gorillaコーデックで発生していたリグレッションを修正しました。#96118 (Alexey Milovidov) 。 - PostgreSQL engineで
BOOLEAN[]を正しく読み取れるようになりました。#96006 (Alexey Milovidov) 。 - SQLite の TEXT カラムから UUID カラムを読み込む際の論理エラーを修正しました。 #96016 (Alexey Milovidov).
- SQLiteエンジンの
DateTime、Date、UUID、その他の型における型変換を修正しました。#96017 (Alexey Milovidov) 。 - SQLite および PostgreSQL へのクエリで、
FixedStringの値が誤ってエスケープされていた不具合を修正しました。 #96019 (Alexey Milovidov). - Numbers から Enums への変換時の
input_format_numbers_enum_on_conversion_error設定を追加しました。#56240 (Nikolay Degterinsky) 。
テキスト索引とスキップ索引の修正
- 4,294,967,295行を超えるパーツを持つテーブルでは、誤ったクエリ結果を防ぐため、テキスト索引の作成およびマテリアライズが一時的に無効化されています。#92644 (Anton Popov).
- MergeTree テーブルのテキスト索引のマージ中に発生していた複数のクラッシュを修正しました。 #92925 (Anton Popov).
- 複雑な式 (
concat(col1, col2)など) に基づいて構築されたテキスト索引のマージに関する不具合を修正しました。#93073 (Anton Popov). - 索引にトークンが含まれていない場合に、Arrayカラムに対するテキスト索引解析を修正しました。 #93457 (Anton Popov).
- サブカラム上に作成されたテキスト索引の再構築に関する不具合を修正しました。#93326 (Anton Popov) 。
- 重複する検索クエリで発生していた、テキスト索引からの direct read の不具合を修正しました。#93516 (Anton Popov).
has、mapContainsKey、mapContainsValue関数におけるテキスト索引解析の不整合を修正し、テキスト索引を使用するかどうかで結果が異なることがある問題を解消しました。 #93578 (Anton Popov).system.partsにおけるテキスト索引の非圧縮サイズの計算を修正しました。#92832 (Anton Popov).- ngram 長が > 8 の
ngrambf_v1索引で例外が発生する問題を修正しました。#92672 (Robert Schulze). ngram_bf索引で、UTF-8 以外のデータを処理した際に未初期化メモリの読み取りが発生する問題を修正しました。#93663 (Alexey Milovidov) 。- ベクトル類似度索引での
stack-use-after-scopeを修正しました。#96259 (Alexey Milovidov). - スキップ索引の式が定数カラムを生成した場合に発生していた論理エラーを修正しました。#96880 (Alexey Milovidov).
- 索引として空の式
()を指定したテーブルの作成時に、無効なメモリアクセスが発生する問題を修正しました。 #96363 (Alexey Milovidov). use_primary_keyを無効にし、非常に多数の論理和がある場合の索引解析における use-after-free を修正しました。#96112 (Alexey Milovidov) 。WHERE内のIN句のサブクエリを含む論理更新でのプライマリインデックスの使用を修正しました。#92838 (Anton Popov).- hypothesis索引の検証時に、適切なエラーコードを使うよう修正しました。 #92559 (Raúl Marín).
データレイクの修正
- split-by-buckets モードで Iceberg から読み込む際に、単一ノード構成のクラスターで発生するクラッシュを修正しました。 #91553 (Konstantin Vedernikov).
- Iceberg の ORDER BY 句のタプルを修正しました。#93225 (Konstantin Vedernikov) 。
- DataLakeCatalog における Azure ADLS Gen2 の払い出し認証情報のサポートを修正し、Iceberg REST カタログから
adls.sas-token.*キーをパースできるようにするとともに、ABFSS URL のパースも修正しました。 #93477 (Karun Anantharaman). - Iceberg向けに
DateをDate32に置き換えました。 #95322 (Konstantin Vedernikov). - Iceberg の ORDER BY で発生するクラッシュを修正しました。 #96484 (Konstantin Vedernikov).
- Icebergのパーティション化の問題を修正しました。#96620 (Konstantin Vedernikov) 。
- position delete reference が null の場合に、Iceberg マニフェストエントリ内のデータファイルの境界が誤っていた問題を修正しました。 #96061 (Daniil Ivanik).
- Iceberg の root metadata file 設定に対する検証項目をさらに追加しました。 #96754 (Daniil Ivanik).
- Iceberg カタログに認証情報が記録されることはなくなりました。#96831 (Konstantin Vedernikov).
- パーティション化された Delta Lake データのまとめ処理に関する不具合を修正しました。 #95773 (Kseniia Sumarokova).
- 無効な
auth_headerによってsystem.tablesが壊れる問題があった RESTful なデータレイクカタログを修正しました。#96680 (Han Fei) 。
S3/Azure/オブジェクトストレージの修正
- 非決定論的関数がある場合の S3テーブルエンジンにおけるパーティションキーのキャッシュ処理を修正しました。 #92844 (Miсhael Stetsyuk).
- cache が有効な場合に発生していた
ReadBufferFromS3のアサートを修正しました。#93809 (Kseniia Sumarokova) 。 - DiskObjectStorage のクリーンアップスレッドで起こり得るエラーを修正しました。#87411 (Kseniia Sumarokova).
DiskObjectStorageTransactionで発生する可能性のあるデッドロックを修正しました。#93810 (Kseniia Sumarokova) 。- 多数のエラーが発生した際に、DiskObjectStorage のクリーンアップスレッドで発生する可能性があった障害を修正しました。 #94048 (Kseniia Sumarokova).
copyS3Fileの multipart_tags におけるデータ競合を修正しました。#97227 (Azat Khuzhin) 。- オブジェクトストレージ上のファイルライクなテーブル (S3、Azure) で無効な
ALTER UPDATEmutation を実行しても、nullptr の逆参照が発生しなくなりました。 #96162 (Alexey Milovidov).
S3Queue の修正
- S3Queue の ordered モードで発生していた
Failed to set file processing within 100 retriesエラーを修正し、現在は警告として扱われるようになりました。 #92814 (Kseniia Sumarokova). - S3Queue の設定
s3queue_migrate_old_metadata_to_bucketsに関する不具合を修正しました。#93232 (Kseniia Sumarokova) 。 - S3Queue/AzureQueue エンジンのメタデータを修正しました。 #90498 (Kseniia Sumarokova) 。
- S3Queue/AzureQueueストレージにおけるデータレースを修正しました。#95385 (Kseniia Sumarokova) 。
- S3Queue/AzureQueueエンジンからのストリーミング時の重複排除を修正しました。#95467 (Kseniia Sumarokova) 。
セキュリティとアクセス制御の修正
SYSTEM SYNC FILE CACHEで不足していたアクセスチェックを修正しました。#92372 (Kseniia Sumarokova).- 過度に制限的だったワイルドカード権限のアクセス権チェックにおける誤ったロジックを修正しました。#92725 (pufit).
mergeテーブルエンジンを使用した場合、SHOW COLUMNS権限なしでテーブルのカラム一覧を取得できないようにしました。#93695 (János Benjamin Antal).groupConcatの state のデシリアライゼーションにおける整数オーバーフローの脆弱性を修正しました。この脆弱性により、メモリ安全性上の問題が発生する可能性がありました。#93426 (Raufs Dunamalijevs) 。- 展開後のバッファサイズが想定どおりであることを確認しました。 #93690 (Raúl Marín).
- デフォルトロールの取り消しに関する問題を修正しました。 #96103 (Vitaly Baranov).
- 部分的な権限の取り消し時に
AccessRights::containsが誤った結果を返していた問題を修正しました。#96170 (pufit). - 分散クエリで、初期ユーザーに割り当てられた行ポリシーが更新されない問題を修正しました。#95469 (Vitaly Baranov) 。
redisテーブル関数の password 引数は、ログおよびシステムテーブル内でマスクされるようになりました。#95325 (Janos Benjamin Antal) 。- X509 証明書の読み取り時に発生する BIO オブジェクトのメモリリークを修正しました。 #96885 (Alexey Milovidov) 。
- bech32 の witness version を検証し、バッファオーバーフローを防止しました。 #96671 (Raúl Marín).
- 多数のデータベースに対して限定的な権限しか持たないユーザーがシステムテーブルをクエリした際の、パフォーマンス低下を修正しました。#95874 (pufit).
バックアップと復元の修正
- 不正なアーカイブエントリのサイズヘッダーが原因で発生していた
Couldn't pack tar archive: Failed to write all bytesエラーを修正しました。#92122 (Julia Kartseva). - 多数の同時実行バックアップが同じファイルをめぐって競合した際に発生するサーバークラッシュを修正しました。#93659 (Alexey Milovidov).
plain_rewritableオブジェクトストレージディスクにアーカイブベースのバックアップ (.zip、.tzst) を作成する際に発生していたスタックオーバーフローを修正しました。#96872 (Alexey Milovidov).- ディスク容量不足やその他の I/O エラーが原因でバックアップに失敗した際に発生していたサーバーのクラッシュを修正しました。#96873 (Alexey Milovidov).
- use-after-free が原因で
StorageKeeperMapのバックアップ時に発生していた segfault を修正しました。 #97336 (Alexey Milovidov).
クラッシュおよび安定性の修正
- 切断された
Connectionの読み取り時に発生するクラッシュを修正しました。#92807 (Raufs Dunamalijevs) 。 - 2番目の引数が NULL の場合に
tokens()関数でクラッシュする可能性がある問題を修正しました。#92586 (Raúl Marín) 。 tokensが定数でないトークナイザーパラメーターで呼び出された際に、サーバーがクラッシュする問題を修正しました。#93383 (Robert Schulze).- 同時実行されるカラムの縮小またはフィルタリング中に、内部の const PREWHERE カラムがインプレースで変更されることで発生する可能性があったクラッシュを修正しました。 #92588 (Arsen Muk).
- 終了時に background schedule pool の停止処理でハングする可能性がある問題を修正しました。これにより、シャットダウン時にサーバーがハングするおそれがありました。 #93008 (Azat Khuzhin).
- 分散クエリを事前にキャンセルした後に、接続が壊れた状態のままになる問題を修正しました。 #93029 (Azat Khuzhin).
estimateCompressionRatio()で発生する可能性があるCannot finalize buffer after cancellationを修正しました。#93068 (Azat Khuzhin).- シャットダウン時にZooKeeperが確実に終了するようにし、起こりうるハングを修正しました。#93602 (Azat Khuzhin).
- ZooKeeperストレージを使用する環境で、バックグラウンドでの named collections の再読み込み中に発生する未捕捉例外を修正しました。 #92717 (Kseniia Sumarokova) 。
ReadWriteBufferFromHTTPにおける未初期化の値の使用を修正しました。#94058 (Alexey Milovidov).TraceSenderのバッファサイズが更新されず、異なるスレッドからのフラッシュ処理が交錯していた問題を修正しました。#93966 (Miсhael Stetsyuk).PipelineExecutorの存続中にIStorageオブジェクトが破棄されないよう、QueryPipelineにストレージへの共有ポインタを保持するようにしました。#93746 (Miсhael Stetsyuk) 。- キャンセル時に分散クエリで発生する可能性のあったクラッシュを修正しました。 #95466 (Aleksandr Musorin).
DROP WORKLOADをクエリと同時に実行した際に発生するクラッシュを修正しました。#95856 (Alexey Milovidov) 。DROP WORKLOADにおけるデータ競合を修正しました。 #96614 (Sergei Trifonov).ThreadPoolCallbackRunnerLocalの使用に関して、複数の重大なバグを修正しました。#95818 (Raúl Marín).- メモリオーバーコミットトラッカーのトリガー時にロック順序の逆転が発生し、
ProcessListでデッドロックが起こる可能性があった問題を修正しました。 #96182 (Antonio Andelic). - 大きい
max_execution_timeが設定されたクエリのキャンセル確認用スレッドで発生していたライブロックを修正しました。 #96450 (Sergei Trifonov). - 競合状態により、MemoryWorker のパージ用スレッドが停止したままになる不具合を修正しました。#96819 (Antonio Andelic).
- キャッシュされたストレージスナップショットの早期破棄が原因で発生していた
clearCachesのクラッシュを修正しました。#96995 (Alexey Milovidov). - 制約付きの
CREATE TABLEにおけるheap-use-after-freeを修正しました。#96669 (Nikita Taranov) 。 StorageKafka2における use-after-free の可能性がある問題を修正しました。#97520 (Bharat Nallan) 。DatabaseMaterializedPostgreSQLにおけるshutdown_calledのデータレースを修正しました。#97554 (Alexey Milovidov) 。- 一部の行が読み込まれない原因となっていた、分片された
HASHEDDictionary の並列読み込みにおけるレースコンディションを修正しました。#96953 (Alexey Milovidov) 。 - あるDictionaryが、それ自身を再帰的に参照するMerge tableを参照していた場合に発生していた、Dictionaryのデッドロックを修正しました。 #96120 (Alexey Milovidov).
- 新しいサーバーがクエリプランのデシリアライズ中に未知の設定を送信した際に発生していた、
BaseSettings::readBinaryの範囲外アクセスを修正しました。 #97585 (Michael Stetsyuk). - スタックアンワインド中に
dropReplicationSlotが例外を送出した場合、テーブルをMaterializedPostgreSQLデータベースにアタッチするとクラッシュする問題を修正しました。#96871 (Alexey Milovidov). - HTTP connection が閉じられないようにするため、insert select におけるリクエストストリームの解放を行いました。#92175 (Sema Checherinda) 。
- Backupデータベースでの
SHOW CREATE DATABASEのデッドロックを修正しました。#92541 (Azat Khuzhin) 。
その他のバグ修正
hasAllTokensおよびhasAnyTokens関数におけるhandleAllTokensの空配列の処理を修正しました。#93328 (Anton Popov) 。- グローバルプロファイラの周期を修正しました — 設定値ではなく切り捨てられた値が使用されていたため、ウェイクアップがより頻繁に発生していました。#96048 (Antonio Andelic).
system.asynchronous_metric_logのevent_dateを修正しました。 #95947 (Raúl Marín) 。- 内部関数について、
categories = 'Internal'ではなく空文字列が表示されていたsystem.functionsを修正しました。#97315 (Robert Schulze). ip_trieDictionary で、キーの型が String ではない場合に発生する可能性がある論理エラーを修正しました。#97555 (Bharat Nallan).system.query_log.exceptionで stderr のキャプチャを有効にし、UDF のデバッグが正しく行えるように修正しました。 #92209 (Xu Jia).- 常に偽となる述語に対する
filterPartsByVirtualColumnsを修正しました。#97620 (Bharat Nallan) 。 - squashing 前に
ColumnConstが実体化されない不具合を修正しました。#97019 (Hasyimi Bahrudin).