Cloud 向け v26.2 変更履歴
後方互換性のない変更
クエリおよび構文の変更
- 誤ったエイリアス置換によって発生していた、クエリ書式の不整合を修正しました。注: アナライザーが無効な場合、エイリアス参照を伴う
INを使用する一部のCREATE VIEWクエリが処理されなくなる可能性があります。これを避けるには、アナライザーが有効になっていることを確認してください (24.3 以降、デフォルトでは有効です) 。 #82838 (Alexey Milovidov). JOIN USING ()の空のカラムリストは、構文エラーとして扱われるようになりました。以前は、これはクエリ実行時にINVALID_JOIN_ON_EXPRESSIONとして報告されており、場合によっては (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).
- 統計値のストレージ形式が変更され、すべての統計値が単一ファイルに保存されるようになりました。 #93414 (Anton Popov).
- パーツの破損を防ぐため、索引ファイル名がエスケープされるようになりました。以前のバージョンで作成され、名前に非 ASCII 文字を含む索引は、ClickHouse で読み込みに失敗するようになります。これに対処するには、MergeTree の設定
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)
設定および構成の変更
- A new setting で、データレイクカタログがオブジェクトストレージにアクセスできない場合はエラーになるようになりました。#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、DeltaLake、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を尊重するようになりました。以前、FINALの前に行ポリシーを適用するためにoptimize_move_to_prewhere_if_final=1に依存していた場合は、代わりに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).
挿入と重複排除の変更
- すべての挿入で、重複排除がデフォルトで有効になりました。以前は、非同期挿入と materialized view では無効でしたが、同期挿入では有効でした。従来の動作を維持するには、
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 索引関数を修正しました。#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 catalog のサポートを追加しました。 #92011 (JIaQi Tang).
icebergLocalClusterテーブル関数を追加しました。 #93323 (Anton Ivashkin).lazy_load_tablesデータベース設定を追加しました。有効にすると、データベースの起動時にテーブルは読み込まれず、代わりに軽量なStorageTableProxyが作成され、実際のテーブルエンジンは初回アクセス時に実体化されます。 #96283 (xiaohuanlin).DatabaseReplicated向けに補助 ZooKeeper のサポートを追加しました。 #91683 (RinChanNOW).- キャッシュ内のデータファイルとシステムファイルを別々のセグメントに分割できるようになりました。 #87834 (MikhailBurdukov).
- 冗長なファイルダウンロードを回避して読み取り性能を向上させるため、Parquet メタデータ用の新しい SLRU キャッシュを追加しました。このキャッシュは
SYSTEM DROP PARQUET METADATA CACHEで削除できます。 #89750 (Grant Holly). - データレイクテーブルで、Parquet reader v3 における
PREWHEREと多段階PREWHEREをサポートするようになりました。 #93542 (Konstantin Vedernikov). - 複数のレプリカにまたがる分散索引解析を追加しました。共有ストレージや大容量データで効果があります。 #86786 (Azat Khuzhin).
挿入と重複排除
- 非同期挿入の重複排除が、依存する materialized view でも機能するようになりました。
block_idの衝突が発生すると、元のブロックから衝突したblock_idに関連する行がフィルタリングで除外され、残りの行は関連するすべての materialized view クエリを通じて変換されます。 #89140 (Sema Checherinda). - 非同期挿入で parallel quorum がサポートされるようになりました。挿入されたデータはクォーラムにレプリケートされ、重複が見つかった場合、クエリは以前に挿入されたデータのレプリケーションも完了するまで待機します。 #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).- PROJECTION 索引機能を簡素化および拡張するための新しい構文とフレームワークが導入されました。 #91844 (Amos Bird).
設定と構成
- 挿入ブロックの形成をより細かく制御するための
max_insert_block_size_bytes設定を追加しました。#92833 (Kirill Kopnev). use_primary_key設定を追加しました。これをfalseに設定すると、主キーに基づく granule のプルーニングが無効になります。#93319 (Nihal Z. Miaji).default_dictionary_database設定を追加しました。これにより、ClickHouse はデータベース修飾子なしで参照される外部 Dictionary を、指定したデフォルトデータベースで解決できるようになります。これにより、XML で定義されたグローバル Dictionary から、SQL で定義されたデータベース単位の Dictionary への移行が簡単になります。#91412 (Dmitrii Plotnikov).- テーブルで使用されている名前付きコレクションの削除を防ぐための
check_named_collection_dependencies設定 (デフォルトで有効) を追加しました。#96181 (Pablo Marcos). - 同時実行制御のための max-min fair スケジューラを追加し、多数のクエリが限られた CPU スロットを奪い合う高オーバーサブスクリプション環境で、より高い公平性を実現しました。
concurrent_threads_schedulerサーバー設定のデフォルトはfair_round_robinではなくmax_min_fairになり、短時間で終了するクエリが長時間実行されるクエリによって不利にならなくなりました。#94732 #95300 (Sergei Trifonov). - ClickHouse の起動時および停止時に、それぞれコンソールログレベルを上書きするための
logger.startup_console_levelおよびlogger.shutdown_console_level構成オプションを追加しました。#95919 (Garrett Thomas).
監視
- バージョン情報を含む
ClickHouse_Infoメトリクスを Prometheus の/metricsエンドポイントに追加しました。これにより、時間の経過に伴う詳細なバージョン情報の推移を追跡するチャートを作成できるようになりました。#91125 (Christoph Wurm) 。
実験的機能
- ベクトル検索で、クラスタ内のレプリカ間に負荷を分散できるようになり、単一の VM のメモリ容量を超える大規模なベクトル索引をサポートできるようになりました。 #95876 (Shankar Iyer).
ast_fuzzer_runsおよびast_fuzzer_any_query設定で制御されるサーバー側の AST ファザーを追加しました。有効にすると、サーバーは通常の実行後に各クエリにランダムな変異を加えて実行し、その結果を破棄します。 #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テーブル関数のフィルタリングプッシュダウンが改善されました。ClickHouse はWHERE条件から安全側の値の範囲を導出してシーケンス生成を制限できるようになり、無制限のスキャンを回避できます。#96115 (Nihal Z. Miaji).- 等価Setの最適化が、連続する複数の
INNER JOIN操作全体で機能するようになり、その連鎖内の任意のテーブルに適用されたフィルタリングが、関連するすべてのテーブルに自動的にプッシュダウンされるようになりました。#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 フィルターで立っているビットが多すぎる場合、またはフィルタリングされる行が少なすぎる場合に、フィルターを自動的に無効化することで削減されるようになりました。#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 COLUMNミューテーションの直後に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).- 外部集約、ソート、結合が、あらゆるコンテキストでクエリ設定
temporary_files_codecに従うようになりました。#92388 (Vladimir Cherkasov). - ベクトル類似度検索プランの最適化は、検索対象のカラムに索引が存在する場合にのみ適用されるようになりました。 #94998 (Eduard Karacharov).
テーブルエンジンとストレージ
StorageEmbeddedRocksDBが、主キーとして複数のカラムをサポートするようになりました。#33917 (usurai).ALTER TABLE <table> ATTACH PART <part_name> FROM <directory_name>構文が追加され、ファイルシステム上で手動で名前を変更しなくても、detached/配下の任意のサブディレクトリ (例:broken-on-startまたはunexpectedプレフィックスを持つパート) からパーツをアタッチできるようになりました。#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) は、
defaultプロファイル経由で通常のクエリと設定を共有するのではなく、backgroundプロファイルで個別に設定できるようになりました。#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 データベースでは、ダミークエリごとにキャッシュされたクラスタが更新されなくなりました。#96897 (Tuan Pham Anh).
- DDLWorker の状態をリセットする
SYSTEM RESET DDL WORKER [ON CLUSTER]クエリが追加され、ホスト ID の更新時にレプリカのアクティビティを更新する際に役立ちます。#93780 (Tuan Pham Anh).
データレイク
- DeltaLake の deletion vector サポートを追加しました。#93852 (Kseniia Sumarokova).
deltaLakeClusterでも deletion vector がサポートされるようになりました。#94365 (Kseniia Sumarokova).- DeltaLake が macOS で利用可能になりました。#95985 (Alexey Milovidov).
- DeltaLake がメタデータから
count()の結果を取得し、system.tablesに正しいテーブル統計情報 (合計バイト数/行数) を表示するようになりました。#96190 (Kseniia Sumarokova). system.tablesから DeltaLake テーブルをクエリする際に、オブジェクトストレージの読み取りをスキップするようになりました。#95899 (Antonio Andelic).- delta-kernel のロギングをデバッグするための
SYSTEM RELOAD DELTA KERNEL TRACING <level>コマンドを追加しました。#96763 (Kseniia Sumarokova). - Glue メタデータで
metadata_locationが指定されていない場合、Iceberg テーブルのメタデータの場所を自動的に推定するようになりました。#91994 (Andrey Zvonov). - Iceberg の manifest ファイルエントリで、position delete ファイル名の下限値と上限値を解析するようになり、データファイルの選択が改善されました。#93980 (Daniil Ivanik).
- Iceberg テーブルで
PREWHERE最適化を有効にしました。#95476 (Konstantin Vedernikov). - Iceberg テーブルで、スレッドおよびメモリの制限がデータファイルリーダーと position delete ファイルリーダーの間で共有されるようになりました。#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 catalog へのロールベースアクセスを追加しました。#90825 (Antonio Andelic).
S3Queue
- S3Queue は、ordered mode で Hive パーティションを追跡するようになりました。#81040 (Anton Ivashkin).
- S3Queue の ordered mode の処理がバケットを用いるようにリファクタリングされ、Keeper へのリクエスト数が削減され、パフォーマンスが向上しました。#92889 (Kseniia Sumarokova).
- S3Queue の ordered mode に、より汎用的なパーティション化のサポートが追加されました。#94321 (Bharat Nallan).
- ordered mode の S3Queue に、パーティションキーに基づくバケット化が追加されました。#94698 (Bharat Nallan).
keeper_path設定を介した、S3Queue の補助 ZooKeeper サポートが追加されました。#95203 (Diego Nieto).- S3(Azure)Queue の ordered mode では、制限を追跡することで失敗したノードをクリーンアップするようになりました。#94412 (Kseniia Sumarokova).
S3 とオブジェクトストレージ
- S3 の
x-amz-server-side-encryptionヘッダーは、HeadObject、UploadPart、CompleteMultipartUploadリクエストには伝播されなくなりました。 #64577 (Francisco J. Jurado Moreno). - S3 テーブルエンジンおよび
s3テーブル関数の名前付きコレクションで、storage_class_nameを指定できるようになりました。 #91926 (János Benjamin Antal). - インスタンスプロファイル認証情報を使用して多数の S3 クエリを同時実行した際に発生していた、EC2 メタデータエンドポイントのスロットリングを修正しました。認証情報プロバイダーはキャッシュされ、すべてのクエリ間で共有されるようになりました。 #92891 (Sav).
- AWS S3 C++ SDK に MinIO 互換サポートを追加し、MinIO 固有のエラーに対するエラーコードマッピングを実装することで、セルフホスト型 MinIO クラスタでの信頼性を向上させました。 #93082 (XiaoBinMu).
- S3 の認証エラーメッセージを改善し、認証情報をチェックするためのヒントを追加しました。 #95648 (Gerald Latkovic).
- Azure Blob Storage では、ネイティブコピーが何らかのエラーで失敗した場合、読み取り/書き込みコピーにフォールバックするようになりました (以前は 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 内で、重複するパスを許可できるようにしました。これは、パスの重複排除が強制される前に作成されたデータとの後方互換性を確保するためです。#93604 (Pavel Kruglov).- マージ時および解析時に JSON カラム内の動的サブカラム数を制限するため、
merge_max_dynamic_subcolumns_in_compact_partMergeTree 設定とmax_dynamic_subcolumns_in_json_type_parsingクエリレベル設定を追加しました。#94184 (Pavel Kruglov). allow_statistics_optimizeのエイリアスとしてuse_statisticsを追加し、use_primary_keyおよびuse_skip_indexesとの一貫性を持たせました。#94366 (Robert Schulze).- 要素の存在をチェックするために、Numbers-to-Enum 変換で
input_format_numbers_enum_on_conversion_errorを有効にしました。#94384 (Elmi Ahmadov) 。 - テーブルに行ポリシーがあるにもかかわらず、現在のユーザーに適用されるものがない場合に、設定ミスの可能性を検出するために例外を送出する設定が追加されました。 #95014 (Vitaly Baranov).
- 互換性バージョン 26.2 以降では、
enable_max_bytes_limit_for_min_age_to_force_mergeがデフォルトで有効になりました。 #95917 (Christoph Wurm). core_dump.size_limitは、サーバーの再起動なしでホットリロードできるようになりました。#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) 。 - 統計値キャッシュは、更新間隔が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).- 実行中のタスクが
system.background_schedule_poolおよび対応するログテーブルに反映されるようになりました。#92587 (Azat Khuzhin). - 実行中の内部クエリ以外のクエリ数を追跡する
QueryNonInternalメトリクスを追加しました。これにより、max_concurrent_queries制限に対する同時実行数を監視しやすくなります。#94284 (Ashwath Singh). - 最長実行中のマージの経過時間を示す非同期メトリクスを追加しました。#94825 (Raúl Marín).
- 物理接続を反映するため、
query_logにconnection_addressとconnection_portを追加しました (プロキシ経由で接続している場合に有用です) 。#95471 (Yakov Olkhovskiy). system.crash_logにさらに多くの情報を追加しました。#94112 (Miсhael Stetsyuk).system.aggregated_zookeeper_logにコンポーネント名を追加しました。#95882 (Antonio Andelic).- 利用可能なすべてのトークナイザーを表示する
system.tokenizersテーブルを追加しました。#96753 (Robert Schulze). - jemalloc メモリアロケーターの統計値を対話的に可視化するための
system.jemalloc_statsテーブルと/jemalloc.htmlHTTP エンドポイントを追加しました。#97077 (Antonio Andelic). - jemalloc ヒーププロファイルの読み取りと分析を行うための
system.jemalloc_profile_textテーブルを追加しました。raw、symbolized、collapsed の各出力形式をサポートしています。#97218 (Antonio Andelic). MUTATE_PARTおよびMUTATE_PART_STARTイベント向けに、system.part_logにmutation_idsを追加しました。#93811 (Shaohua Wang).- ネストされたグローバルサーバー設定 (例:
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_schedule_pool_log.duration_threshold_milliseconds、デフォルトは 30ms) を超えた場合にログへ記録されるようになりました。#92965 (Azat Khuzhin). - URL ストレージのパスワードがクエリログに表示されなくなりました。#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).- 壊れたスナップショットや不整合な変更ログを検出した場合、Keeper は abort するのではなく例外を送出するようになり、より安全に復旧するために手動での介入が必要になります。#94168 (Antonio Andelic).
getChildrenKeeper リクエストにwith_dataおよびwith_stat拡張機能を追加し、子要素をデータおよび統計情報とあわせて 1 回の操作で取得できるようにしました。#94826 (Nikolay Degterinsky).- クラスタの構成失敗につながる可能性がある Keeper の設定不備をチェックする機能を追加しました。#94682 (Konstantin Bogdanov).
- Database Replicated でのテーブル取得を改善するため、
with_dataKeeper 拡張機能のサポートを追加しました。#96090 (Nikolay Degterinsky). - 補助 ZooKeeper に対して
system.zookeeper経由で挿入できるようになりました。#92092 (RinChanNOW).
メモリ管理
- ファイルシステムキャッシュの領域予約を最適化し、排出候補を排他ロックを保持せずに収集できるようにしました。#82764 (Kseniia Sumarokova).
- リモートテーブルエンジン/関数向けに、ファイルシステムキャッシュの読み取りバッファで並列読み取りを有効にしました。#71781 (Kseniia Sumarokova).
- jemalloc のダーティページの即時パージを有効にし、Linux 以外のシステムでのメモリ使用量を削減しました。#93360 (Eduard Karacharov).
- jemalloc のダーティページのパージが、メインの MemoryWorker スレッドとは別スレッドで実行されるようになりました。総メモリ使用率に基づいてパージを行うための
memory_worker_purge_total_memory_threshold_ratio設定を追加しました。#94902 (Antonio Andelic). - ClickHouse が継続的なメモリ逼迫状態にある場合、jemalloc のダーティページの decay が動的に無効化されるようになりました。#95145 (Antonio Andelic).
- MergeTree からデータを読み取る前に、明示的なメモリ消費チェックを追加し、本番環境での運用経験に基づいてスレッドプールのキューサイズを引き下げました。#94692 (Nikita Mikhaylov).
- ユーザー認証の前に総メモリ制限をチェックするようになり、制限を超過している場合は
memory limit exceededをスローします。#95003 (Nikolai Kochetov). - クエリ条件キャッシュにおけるメモリ計上の誤りを修正しました。#95478 (Nikita Mikhaylov).
- 集約/ソート中にディスクへスピルする際のクエリメモリ使用量の検出を、より堅牢にしました。#92500 (Azat Khuzhin).
- CPU 枯渇時にプロセスを保護するため、スケジューラが MemoryWorker スレッドを優先するようになりました。#94864 (Nikita Mikhaylov).
- テーブルの読み取り時に、一部のケースで ClickHouse がメモリ制限を尊重しなかった問題を修正しました。#93715 (Nikita Mikhaylov).
データ形式
- Parquet リーダーで、
Tupleまたはマップカラムを JSON として読み取れるようになりました。#92864 (Michael Kolupaev). - Parquet リーダーが空のタプルをサポートするようになりました。#92868 (Michael Kolupaev).
Date型は、Arrow/ArrowStream 形式において Arrow ネイティブのdate32型としてシリアライズされるようになりました (従来はuint16) 。以前の動作は、output_format_arrow_date_as_uint16設定でリストアできます。#96860 (Alexey Milovidov).Hash出力形式がブロックサイズに依存しなくなりました。#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).
バックアップとリストア
- リフレッシャブルmaterialized view のデータをバックアップ対象に含めるかどうかを制御するための
backup_data_from_refreshable_materialized_view_targetsバックアップ設定を追加しました。APPENDリフレッシュ戦略を使用する RMV のターゲットは、常にバックアップされます。#93658 (Julia Kartseva). - S3 および Azure Blob Storage 向けの
BACKUP/RESTOREで、SQL で定義された名前付きコレクションのサポートを追加しました。#94605 (Pablo Marcos).
名前付きコレクションとDictionary
- MongoDB テーブル関数で、名前付きコレクションのパラメータ上書きが許可されるようになりました。#89616 (vanchaklar).
- YTsaurus の Dictionary とテーブルで、名前付きコレクションが有効になりました。#94582 (MikhailBurdukov).
- YTsaurus の動的テーブルの Dictionary ソースに、カラムの説明を渡せるようになりました。#92391 (MikhailBurdukov).
- 明示的に指定した場合、パラメータ化されたビューのスキーマが表示されるようになりました。#90220 (Grigorii Sokolik).
重複排除
- 後方互換性オプションを追加するため、
insert_select_deduplicate設定を改訂しました。#92951 (Sema Checherinda). - materialized view が関係する場合でも、非同期挿入での重複排除が可能になりました。#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に動的ディスパッチを実装し、一部のハッシュ JOIN 操作を高速化しました。#79573 (Raúl Marín).- より多くのフィルタリングを
JOINにプッシュダウンできるようになりました。#85556 (Nikita Taranov). - フィルタリングが片側の入力だけを使用する場合、
ANY、SEMI、ANTIJOIN について、JOINのON条件からのフィルタリングのプッシュダウンを拡張しました。#92584 (Dmitry Novik). SEMI JOINのフィルタリングをプッシュダウンするために、同値 Set を使用できるようになりました。#92837 (Dmitry Novik).- 複雑な述語に対して、
ParallelHashJoinにおける非結合行の処理を並列化しました。これはparallel_non_joined_rows_processing設定で制御されます (デフォルトで有効) 。#92068 (Yarik Briukhovetskyi). - 右側が空の場合、ハッシュ JOIN は左側の読み取りを完全にスキップするようになり、重いフィルタリングや集約による不要な処理を回避します。#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). - 可能な場合 (NULL ではない、
-Ifではない、GROUP BYなし、IPv6またはStringではない) に挿入をバッチ化することで、数値型に対するuniqを高速化しました。#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).
- テキスト索引の直接読み取り最適化が部分的に機能するようになりました。マテリアライズドされたテキスト索引を持つパーツではそれが使用され、持たないパーツでは元のフィルタ式にフォールバックします。#96411 (Anton Popov).
- 不要なデータコピーを削除し、数値カラムに対するベクトル化された min/max 計算を有効化することで、
INSERT中の minmax スキップ索引の計算を最適化しました。#97392 (Raúl Marín). - system log テーブルに対し、フィルタリングを高速化するため、時間カラムに
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). - カラム名を汎用的な AST リテラルノードではなく文字列として直接格納することで、名前付きタプル AST オブジェクトのメモリ消費を最適化しました。#94704 (Ilya Yatsishin).
CachedOnDiskReadBufferFromFile構造体のサイズを約 1/50 に削減しました。#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の修正
- outer-to-inner join の最適化が適用された際に Join ストレージで発生していた
INCOMPATIBLE_TYPE_OF_JOINエラーを修正しました。#84292 (Vladimir Cherkasov). USING句とjoin_use_nullsを使用した、複数の JOIN を含むクエリで発生する論理エラーを修正しました。#92251 (Vladimir Cherkasov).join_use_nulls使用時の join の並べ替えにおける論理エラーを修正しました。#92289 (Vladimir Cherkasov).join_on_disk_max_files_to_merge設定で発生する可能性があるクラッシュを修正しました。#92335 (Bharat Nallan).- 外部結合を内部結合に変換する際に、クエリプランが意図せず変更されることで発生していた
LOGICAL_ERRORを修正しました。また、結合時に集約キーで単射関数が使用される場合にも適用できるよう、最適化の要件を緩和しました。 #92503 (János Benjamin Antal). - 定数条件での複数の JOIN と
join_use_nullsに関する論理エラーを修正しました。 #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).
- 結合ランタイムフィルターで使用される
__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ストレージの結合処理における、スーパータイプへの型変換を修正しました。#94000 (Dmitry Novik).- 並列レプリカおよび非MergeTreeテーブルとのJOINを含むクエリを修正しました。 #93902 (Igor Nikonov).
- ランタイムフィルターにおけるNullable結合カラムの競合状態の問題を修正しました。 #95775 (Hechem Selmi).
Nullable(String)キーを持つJoinテーブルで、空文字列がNULLになってしまう問題を修正しました。#96002 (Alexey Milovidov) 。- 空のMergeTreeテーブルに対して
direct結合アルゴリズムを使用した際のNOT_SUPPORTEDエラーを修正しました。#95935 (Vladimir Cherkasov). - 外部結合と複数の INNER JOIN を組み合わせたクエリにおいて、外部結合の
ON条件がそれまでに結合された複数のテーブルのカラムを参照している場合に、不正な結合順序の並べ替えによって誤った結果が返される問題を修正しました。 #96193 (Vladimir Cherkasov). - TupleカラムでNullableのサブフィールドに対して発生していたランタイムフィルターの例外を修正しました。 #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).
クエリとアナライザーの修正
- 事前定義済みのクエリハンドラーで、末尾の空白文字が INSERT 時にデータとして解釈される不具合を修正しました。 #83604 (Fabian Ponce).
- Enum 要素の拡張など、メタデータのみを変更する ALTER の後に、プロジェクション付き集約で例外が発生する問題を修正しました。#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が機能しない問題を修正しました。#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 分片を使用するクエリで、条件が false の場合に失敗していた問題を修正しました。#92815 (Yarik Briukhovetskyi) 。
Mergeテーブルエンジンのクエリプランニングで、ローカルテーブルとリモート/分散テーブルをマージする際にhostName()に対してILLEGAL_COLUMNが発生していた問題を修正しました。#93286 (Jinlin).- 別名を持つテーブル上の
Mergeエンジンで発生していたNO_SUCH_COLUMN_IN_TABLEエラーを修正しました。#92910 (Pavel Kruglov). - 複数のカラムに対する述語を含み、Bloom フィルターのスキップ索引と
ORおよびNOT条件の両方を使用するSELECTクエリで、不整合な結果が返される問題を修正しました。#94026 (Shankar Iyer) 。 - フィルタリングにサブカラムが含まれる場合のプロジェクションの適用を修正しました。#93141 (Pavel Kruglov) 。
- マージ中にプロジェクションが再構築された際に発生する
_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が有効な場合に、NULL値に対してIN関数が誤った結果を返す問題を修正しました。#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 およびサブクエリ内の
fileなどのテーブル関数に、各サブクエリのSETTINGSが適用されない問題を修正しました。 #96882 (Alexey Milovidov). - CTE で折りたたまれた定数に対するクエリ条件キャッシュのハッシュ衝突を修正しました。この問題により、誤ったクエリ結果が返される可能性がありました。 #96172 (Alexey Milovidov).
- analyzer を有効にした状態で
merge()テーブル関数を介して、ALIAS カラム内にラムダ式を含むテーブルをクエリする際に発生していた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 と型推論を伴う分散クエリのまれなケースにおいて、
if関数のUInt64とInt32間の型不一致を修正しました。#96012 (Alexey Milovidov). Bool型を使用する JIT コンパイルされたクエリを修正しました。#96013 (Alexey Milovidov).- JITでコンパイル済みの式が
DateTimeをDateTime64に変換する際に誤った結果を返す問題を修正しました (たとえば、DateTime型が混在するCASE/if/multiIfの場合) 。 #96879 (Alexey Milovidov). - 固定幅でないフォーマッタを使用した
formatDateTimeにおける未初期化の値の使用を修正しました。#96133 (Alexey Milovidov). - 互換性のない型で呼び出された場合に
indexOfAssumeSortedで発生するstd::terminateを修正しました。 #96877 (Alexey Milovidov). - ジオメトリ関数が、
Geometryバリアント型に加えて、個別のジオメトリサブタイプも受け入れるようになりました。#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).
- その後ロールバックされたアクティブなトランザクション内のパーツを、トランザクションを伴わないミューテーションが変更してしまう場合に発生していた論理エラーを修正しました。#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).- alter によって
ratio_of_defaults_for_sparse_serializationが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 データベースをアタッチできない問題を修正しました。 #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).
- エイリアスカラムを含む暗黙的インデックスの問題を修正し、作成前に完全な検証を行うようにしました。 #97115 (Raúl Marín) 。
- TTLマージ後にすべての行がフィルタリングされた場合、
min(timestamp)が_minmax_count_projection経由でエポック (1970-01-01) を返す問題を修正しました。 #96703 (Raquel Barbadillo). use_const_adaptive_granularityとindex_granularity_bytes(非適応粒度) の組み合わせによって計算が誤る問題を修正しました。#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によってカラムの型が変更された後、カラム統計値の作成時に発生していたassert_cast例外を修正しました。#97027 (Alexey Milovidov).- テーブルに統計値が定義されていない場合、ClickHouse は不要なオーバーヘッドを避けるため、それらを読み込もうとしなくなりました。 #96233 (Han Fei).
- 分散 DDL の完了待機中に Replicated データベースを同時に削除した場合に発生する
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型で、互換性のない型付きパスのチェックに関する不具合を修正しました。#92539 (Pavel Kruglov).
- JSON 内のパス 'skip' に対する型ヒントの作成に関する不具合を修正しました。 #92842 (Pavel Kruglov).
- analyzer におけるカラム別名内の動的サブカラム解決を修正しました。#92583 (Pavel Kruglov).
- Variantカラムに対する誤ったインプレースフィルタリング最適化により発生していた
Nested columns sizes are inconsistent with local_discriminatorsエラーを修正しました。#96410 (Alexey Milovidov). GROUP BYで使用されるVariant引数を持つifNullで発生するクラッシュを修正しました。#96790 (Alexey Milovidov).arrayROCAUCのように定数引数を必要とする関数で発生していたFunctionVariantAdaptorの論理エラーを修正しました。#97116 (Bharat Nallan).- 関数が
Nothing型を返した場合にFunctionVariantAdaptorで発生するLOGICAL_ERRORを修正しました。#97213 (Alexey Milovidov). - LowCardinality 型を含む Variant カラムと NULL を比較した際に発生する論理エラーを修正しました。 #97379 (Alexey Milovidov).
LowCardinalityを内部に含むVariant型の引数がある場合にconcatで発生する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エンジンで
BOOLEAN[]を正しく読み取れるようになりました。#96006 (Alexey Milovidov) 。 - SQLite の TEXT カラムから UUID カラムを読み取る際の論理エラーを修正しました。#96016 (Alexey Milovidov).
- SQLite エンジンにおける
DateTime、Date、UUID、およびその他の型の変換を修正しました。#96017 (Alexey Milovidov). - SQLite および PostgreSQL へのクエリで、
FixedStringの値が誤ってエスケープされる問題を修正しました。#96019 (Alexey Milovidov). - Numbers から Enum への変換時の
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). - テキスト索引にトークンが含まれていない場合に、配列カラムに対するテキスト索引解析が正しく行われない問題を修正しました。 #93457 (Anton Popov).
- サブカラム上に作成されたテキスト索引の再構築に関する不具合を修正しました。#93326 (Anton Popov).
- 重複した検索クエリがある場合の、テキスト索引からの直接読み取りを修正しました。 #93516 (Anton Popov).
has、mapContainsKey、mapContainsValue関数におけるテキスト索引の解析の不整合を修正しました。これまでは、テキスト索引が使用されるかどうかによって異なる結果が返される可能性がありました。#93578 (Anton Popov).system.partsにおけるテキスト索引の非圧縮サイズ計算を修正しました。#92832 (Anton Popov) 。- ngram 長が > 8 の
ngrambf_v1索引で例外が発生する問題を修正しました。#92672 (Robert Schulze). - 非UTF-8データに対する
ngram_bf索引で、未初期化メモリの読み取りを引き起こす問題を修正しました。#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 の vended credentials のサポートを修正しました。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) 。
- Iceberg のマニフェストエントリで position delete の参照が null の場合に、データファイルの境界情報が誤っていた問題を修正しました。 #96061 (Daniil Ivanik).
- Iceberg のルートメタデータファイル設定に対する検証をさらに追加しました。#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).
- キャッシュ有効時に発生していた
ReadBufferFromS3のassertを修正しました。#93809 (Kseniia Sumarokova) 。 - DiskObjectStorage のクリーンアップスレッドで発生する可能性があるエラーを修正しました。#87411 (Kseniia Sumarokova).
DiskObjectStorageTransactionで発生する可能性のあるデッドロックを修正しました。 #93810 (Kseniia Sumarokova).- 多数のエラーが発生した際に、DiskObjectStorage のクリーンアップスレッドで発生する可能性があった不具合を修正しました。#94048 (Kseniia Sumarokova).
copyS3Fileの multipart_tags におけるデータ競合を修正しました。#97227 (Azat Khuzhin) 。- オブジェクトストレージのファイルライクなテーブル (S3、Azure) に対して無効な
ALTER UPDATEミューテーションを実行しても、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の状態デシリアライズにおける整数オーバーフローの脆弱性を修正しました。この脆弱性により、メモリ安全性の問題が発生する可能性がありました。#93426 (Raufs Dunamalijevs).- 展開後のバッファサイズが想定どおりであることを確認しました。#93690 (Raúl Marín).
- デフォルトロールの取り消しに関する問題を修正しました。 #96103 (Vitaly Baranov).
- 部分的な権限取り消し時に
AccessRights::containsが誤った結果を返す問題を修正しました。#96170 (pufit). - 分散クエリで、初期ユーザーに割り当てられた行ポリシーの更新に関する不具合を修正しました。#95469 (Vitaly Baranov).
redisテーブル関数のパスワード引数は、ログおよびシステムテーブルでマスクされるようになりました。#95325 (Janos Benjamin Antal).- X509 証明書の読み取り時に発生する BIO オブジェクトのメモリリークを修正しました。 #96885 (Alexey Milovidov).
- バッファオーバーフローを防ぐため、bech32 の witness バージョンを検証するようにしました。#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). tokens()関数で、2 番目の引数が null の場合に発生する可能性のあるクラッシュを修正しました。#92586 (Raúl Marín).tokensが非 const のトークナイザーパラメータで呼び出された際に発生していたサーバークラッシュを修正しました。#93383 (Robert Schulze).- 同時実行中のカラム縮小またはフィルタリング時に、基盤となる const PREWHERE カラムがインプレースで変更されることで発生する可能性があったクラッシュを修正しました。 #92588 (Arsen Muk).
- バックグラウンドスケジュールプールの終了時に発生し得るハングを修正しました。この問題により、シャットダウン時にサーバーがハングする可能性がありました。 #93008 (Azat Khuzhin).
- 分散クエリの事前キャンセル後に、接続が壊れた状態のまま残る問題を修正しました。#93029 (Azat Khuzhin).
estimateCompressionRatio()でCannot finalize buffer after cancellationが発生する可能性がある問題を修正しました。#93068 (Azat Khuzhin).- シャットダウン時に ZooKeeper が確実に終了処理されるようにし、発生する可能性のあるハングを修正しました。 #93602 (Azat Khuzhin).
- ZooKeeper ストレージで、バックグラウンドでの名前付きコレクションの再読み込み中に発生していた未捕捉例外を修正しました。 #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が大きいクエリにおける cancellation checkerスレッドのライブロックを修正しました。#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 テーブルを参照していた場合に、Dictionary でデッドロックが発生する問題を修正しました。#96120 (Alexey Milovidov).
- 新しいサーバーがクエリプランのデシリアライズ中に未知の設定を送信した場合に発生していた、
BaseSettings::readBinaryの範囲外アクセスを修正しました。#97585 (Michael Stetsyuk). dropReplicationSlotがスタックのアンワインド中に例外を送出した場合に、テーブルをMaterializedPostgreSQLデータベースにアタッチするとクラッシュする問題を修正しました。#96871 (Alexey Milovidov) 。- HTTP 接続が閉じられないようにするため、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).- 内部関数で、
system.functionsにcategories = 'Internal'ではなく空文字列が表示される問題を修正しました。#97315 (Robert Schulze). ip_trieDictionary において、キーの型が String でない場合に発生する可能性がある論理エラーを修正しました。 #97555 (Bharat Nallan).system.query_log.exceptionで stderr のキャプチャを有効にすることで、UDF のデバッグに関する問題を修正しました。#92209 (Xu Jia)。- 常に false となる述語に対する
filterPartsByVirtualColumnsの不具合を修正しました。#97620 (Bharat Nallan). ColumnConstが squashing の前にマテリアライズされない不具合を修正しました。#97019 (Hasyimi Bahrudin).