メインコンテンツへスキップ
メインコンテンツへスキップ

v24.12 Cloud 向け変更ログ

v24.12 リリースにおける ClickHouse Cloud サービス関連の主な変更点。

後方互換性のない変更

  • 関数 greatestleast は、これまでは引数のいずれかが NULL の場合に NULL を返していましたが、NULL 入力値を無視するようになりました。たとえば、SELECT greatest(1, 2, NULL) は現在は 2 を返します。この挙動は PostgreSQL と互換になります。 #65519 (kevinyhzou).
  • 予期しない結果につながる可能性があるため、デフォルトでは ORDER BY/GROUP BY/PARTITION BY/PRIMARY KEY で Variant/Dynamic 型を許可しないようにしました。 #69731 (Pavel Kruglov).
  • system テーブル generate_seriesgenerateSeries を削除しました。これらは誤って追加されたものでした: #59390#71091 (Alexey Milovidov).
  • StorageExternalDistributed を削除しました。 #70600 をクローズします。 #71176 (flynn).
  • サーバー設定 (users.xml) の設定がクライアントにも適用されるようになりました。これは、date_time_output_format などのフォーマット設定に便利です。 #71178 (Michael Kolupaev).
  • JSON サブカラム用ファイル内の、エスケープされていない特殊文字により生じる可能性があった No such file or directory エラーを修正しました。 #71182 (Pavel Kruglov).
  • テーブルエンジン Kafka、NATS、RabbitMQ は、SOURCES 階層内のそれぞれ専用の権限で管理されるようになりました。これらのエンジン型でテーブルを作成するデフォルト以外のデータベースユーザーには、対応する権限を付与してください。 #71250 (Christoph Wurm).
  • 実行前に(サブクエリを含む)完全なミューテーション クエリを検査するようにしました。これにより、誤って不正なクエリを実行してしまい、有効なミューテーションをブロックするデッドミューテーションが蓄積されることを防ぎます。 #71300 (Christoph Wurm).
  • ファイルシステムキャッシュ設定 skip_download_if_exceeds_query_cache の名前を filesystem_cache_skip_download_if_exceeds_per_query_cache_write_limit に変更しました。 #71578 (Kseniia Sumarokova).
  • 混乱を避けるため、min/max 関数で Dynamic/Variant 型を禁止しました。 #71761 (Pavel Kruglov).
  • deltaSumTimestamp における EnumUInt128 および UInt256 引数のサポートを削除しました。deltaSumTimestamp の第 2 引数(「timestamp」引数)としての Int8UInt8Int16UInt16 のサポートも削除しました。 #71790 (Alexey Milovidov).
  • ClickHouse をディクショナリのソースとして使用する場合に、ソースクエリの検証を追加しました。 #72548 (Alexey Katsman).

新機能

  • SYSTEM LOAD PRIMARY KEY コマンドを実装し、指定したテーブルのすべてのパーツ、またはテーブルを指定しない場合はすべてのテーブルについて、プライマリインデックスをロードできるようにしました。これはベンチマークで役立ち、クエリ実行時の追加レイテンシを防ぐのに有用です。 #66252 (ZAWA_ll).
  • 指定したテーブルのすべてのパーツ、またはテーブルを指定しなかった場合はすべてのテーブルについて、プライマリインデックスをロードするための SYSTEM LOAD PRIMARY KEY ステートメントを追加しました。これはベンチマーク用途や、クエリ実行時の余分なレイテンシーを防ぐために有用です。 #67733 (ZAWA_ll).
  • 現在のユーザー/ロールに特定の権限が付与されているか、および対応するテーブル/カラムがメモリ内に存在するかを確認できる CHECK GRANT クエリを追加しました。 #68885 (Unalian)。
  • ワークロードおよびリソース管理を定義するための SQL 構文を追加しました。 https://clickhouse.com/docs/en/operations/workload-scheduling#69187 (Sergei Trifonov)。
  • Iceberg データストレージ 形式は、テーブルのスキーマを変更するためのさまざまなオプションをユーザーに提供します。このプルリクエストでは、カラムの順序やカラム名、単純な型の拡張が変更された Iceberg 形式のテーブルを読み取る機能が実装されました。 #69445 (Daniil Ivanik)。
  • 各認証方式ごとに独自の有効期限を持てるようにし、ユーザーエンティティからは削除しました。 #70090 (Arthur Passos).
  • クエリの起点ノードからクラスタ内の他のノードへ外部ユーザーのロールをプッシュできるようにしました。外部認証器(LDAP など)へのアクセス権が起点ノードのみにある場合に便利です。 #70332 (Andrey Zvonov)。
  • String から JSON への ALTER 操作をサポートしました。この PR では、JSON および Dynamic 型のシリアライゼーションも新しいバージョン V2 に変更しています。古いバージョン V1 も、設定 merge_tree_use_v1_object_and_dynamic_serialization を有効にすることで引き続き使用できます(アップグレード時に問題なくバージョンをロールバックできるようにするために利用できます)。#70442Pavel Kruglov)。
  • DateTime64 を秒単位の固定精度を持つ Int64 値に変換する関数 toUnixTimestamp64Second を追加しました。これにより、日時が 1970 年 1 月 1 日 木曜日 00:00:00 UTC より前の場合に負の値を返せるようになります。 #70597 (zhanglistar).
  • 新しい設定 enforce_index_structure_match_on_partition_manipulation を追加し、ソーステーブルのプロジェクションとセカンダリインデックスがターゲットテーブルのものの部分集合である場合に ATTACH を許可できるようにしました。 #70602 をクローズ。 #70603zwy991114)。
  • 関数 cast の出力が Apache Spark と異なるため、gluten プロジェクトとの間で差異が生じています。詳細は https://github.com/apache/incubator-gluten/issues/7602 を参照してください。この PR では Spark のテキスト出力フォーマットのサポート機能を追加し、デフォルトでは無効としています。 #70957 (zhanglistar).
  • ユーザー認証のための S3 エンドポイント向けに、新しいヘッダータイプ(access_header)を追加しました。これにより、最も優先度の低いアクセスヘッダーを指定できるようになり、これはテーブルスキーマや名前付きコレクションなど、他の任意のソースから取得された access_key_id によって上書きされます。 #71011 (MikhailBurdukov)。
  • 設定階層の初期実装。 #71145 (Raúl Marín).
  • ORDER BY 句での fill 演算子使用時に、staleness 句をサポートしました。 #71151 (Mikhail Artemenko).
  • JSON 文字列のシリアライズ/デシリアライズを通じて、Map/Tuple/Object から新しい JSON への単純な CAST を実装。 #71320 (Pavel Kruglov).
  • 集計関数 any に対して、anyRespectNullsfirstValueRespectNullsanyValueRespectNulls のエイリアスを追加しました。また、集計関数 anyLast に対して、anyLastRespectNulls および lastValueRespectNulls のエイリアスも追加しました。これにより、anyLast_respect_nullsStateIf の代わりに SELECT anyLastRespectNullsStateIf のように、キャメルケースのみからなるより自然な構文を使用できるようになります。 #71403 (Peter Nguyen).
  • JSON ログのフォーマットで RFC 3339/ISO8601 形式の UTC 日時をサポートするための date_time_utc パラメータを追加しました。 #71560 (Ali).
  • 結合のどちらの側をクエリプラン上の inner(ビルド)テーブルとして扱うかを選択できるオプションを追加しました。これは query_plan_join_swap_table で制御され、auto に設定可能です。このモードでは、ClickHouse は行数が最も少ないテーブルを選択しようとします。 #71577 (Vladimir Cherkasov)。
  • パーツに対してインデックス粒度の値が一定である場合のメモリ使用量を最適化しました。常にパーツに対して一定の粒度を選択できるようにする設定(use_const_adaptive_granularity)を追加し、これによりメモリ使用を常に最適化された状態に保てるようにしました。これにより、大規模ワークロード(共有ストレージ上で数兆行規模)において、データパーツのメタデータ(インデックス粒度の値)によるメモリ使用量が継続的に増大することを防ぐのに役立ちます。 #71786 (Anton Popov).
  • allowed_feature_tier を、すべての実験的およびベータ機能を無効化するグローバルスイッチとして実装しました。 #71841 (Raúl Marín).
  • iceberg[S3;HDFS;Azure]ClusterdeltaLakeClusterhudiCluster テーブル関数を追加しました。 #72045Mikhail Artemenko)。
  • ALTER USER {ADD|MODIFY|DROP SETTING}ALTER USER {ADD|DROP PROFILE} の構文を追加し、同様の構文を ALTER ROLEALTER PROFILE にも追加しました。 #72050 (pufit)。
  • arrayPrAUC 関数を追加しました。この関数は Precision-Recall 曲線の AUC(曲線下面積、Area Under the Curve)を計算します。 #72073 (Emmanuel).
  • MergeTree テーブルのプライマリインデックス用キャッシュを追加しました(テーブル設定 use_primary_key_cache で有効化可能)。プライマリインデックスに対して遅延読み込みとキャッシュが有効になっている場合、メモリ上に常駐させておく代わりに、マークキャッシュと同様に必要に応じてキャッシュへ読み込まれるようになりました。データパーツの挿入/マージ/フェッチ時およびテーブルの再起動時にプライマリインデックスを事前にウォームする機能を追加しました(設定 prewarm_primary_key_cache で有効化可能)。 #72102 (Anton Popov).
  • 配列型に対して indexOfAssumeSorted 関数を追加しました。要素が非減少順に並んだ配列での検索を最適化します。 #72517 (Eric Kurbanov)。
  • 集約関数 groupConcat の第2引数として区切り文字をオプションで指定できるようにしました。 #72540 (Yarik Briukhovetskyi).
  • 新しい設定 http_response_headers により、HTTP レスポンスヘッダーをカスタマイズできるようになりました。たとえば、データベースに保存されている画像をブラウザに表示させることができます。これにより、#59620 がクローズされました。#72656Alexey Milovidov)。
  • Int64 の Unix タイムスタンプ値を DateTime64 に変換する関数 fromUnixTimestamp64Second を追加しました。#73146Robert Schulze)。

パフォーマンスの改善

  • short_circuit_function_evaluation_for_nullsshort_circuit_function_evaluation_for_nulls_threshold という 2 つの新しい設定を追加しました。これらにより、データブロック内の NULL 値の比率が指定したしきい値を超えた場合に、Nullable 列に対してショートサーキット方式で関数を実行できるようになります。これは、NULL ではない値を持つ行に対してのみ関数が実行されることを意味します。これらの設定は、少なくとも 1 つの引数が NULL の行に対しては NULL 値を返す関数にのみ適用されます。 #60129 (李扬).
  • オブジェクトストレージディスクにおける clickhouse disks remove --recursive のメモリ使用量が低減されました。 #67323 (Kirill)。
  • 現在は、並列処理のためにスレッド間に分配する際、join_algorithm='parallel_hash' 用の入力ブロックの列をコピーしません。 #67782 (Nikita Taranov)。
  • より多くの式で JIT コンパイルを有効化しました: abs/bitCount/sign/modulo/pmod/isNull/isNotNull/assumeNotNull/to(U)Int*/toFloat*、比較関数(=, <, >, >=, <=)、論理関数(and, or)。 #70598 (李扬).
  • 今後は、join_algorithm 設定が default の場合、適用可能であれば parallel_hash アルゴリズムが使用されます。parallel_hash が使用できない場合には、従来の 2 つの代替手段(directhash)が引き続き候補として考慮されます。#70788Nikita Taranov)。
  • 互いに交差しないパーツ向けに Replacing マージアルゴリズムを最適化しました。 #70977 (Anton Popov).
  • メトリクスおよび system.detached_parts で、read-only ディスクおよび write-once ディスク上の detached part を列挙しないようにしました。 #71086 (Alexey Milovidov).
  • デフォルトでは重い非同期メトリクスを計算しないようにしました。この機能は #40332 で導入されましたが、特定の一人(社)の顧客にしか必要とされない重いバックグラウンドジョブを動かすのは望ましくありません。#71087Alexey Milovidov)。
  • クリティカルセクションを短縮することで、system.query_metric_log の収集間隔におけるパフォーマンスと精度を改善しました。 #71473 (Pablo Marcos)。
  • WHEREON の式から共通式を抽出して、結合時に使用されるハッシュテーブルの数を削減するオプションを追加しました。optimize_extract_common_expressions = 1 で有効にできます。 #71537 (János Benjamin Antal)。
  • LowCardinality(String) を使用する SELECT 文でインデックスを利用できるようにしました。 #71598 (Yarik Briukhovetskyi)。
  • 並列レプリカかつローカルプランが有効な状態でクエリを実行する際、ワーカー側ではスキップインデックスの解析を行わないようにしました。コーディネーターは、クエリ発行元(クエリイニシエーター)側でインデックス解析を行い、その結果に基づいてワーカーが読み取るレンジを選択します。 #72109 (Igor Nikonov)。
  • https://github.com/ClickHouse/ClickHouse/pull/57631 で導入された、Compact parts における単一カラムのサブカラム読み取り最適化を元に戻しました。これは誤って削除されていました。 #72285 (Pavel Kruglov).
  • コンパレータ内の仮想関数呼び出しを排除することで、LowCardinality(String) カラムのソートを高速化しました。 #72337 (Alexander Gololobov)。
  • いくつかの単純なデータ型に対して argMin/argMax 関数を最適化しました。 #72350 (alesapin)
  • メモリトラッカーで共有ロックを使用するようロック機構を最適化し、ロック競合を減らしました。 #72375 (Jiebin Sun).
  • 新しい設定 use_async_executor_for_materialized_views を追加しました。マテリアライズドビューのクエリを非同期で、場合によってはマルチスレッドで実行し、INSERT 時のビュー処理を高速化できますが、より多くのメモリを消費する可能性があります。 #72497 (alesapin)。
  • 設定 max_size_to_preallocate_for_aggregationmax_size_to_preallocate_for_joins のデフォルト値はさらに 10^12 まで引き上げられたため、より多くの場面で最適化が適用されるようになりました。 #72555 (Nikita Taranov).
  • 集約関数の状態(データ型 AggregateFunction および分散クエリ内)のデシリアライズ性能を改善しました。フォーマット RowBinary のパース性能もわずかに改善しました。 #72818 (Anton Popov).

改善

  • 定数配列および定数としてキャプチャされた引数を取る高階関数は、定数を返すようになりました。 #58400 (Alexey Milovidov).
  • 仮想行を生成することで読み込み順序を最適化し、マージソート時に読み取るデータ量を削減します。これは、特に複数のパーツが存在する場合に有効です。 #62125 (Shichao Jin).
  • クエリプランのステップ名(EXPLAIN PLAN json=1)およびパイプラインプロセッサ名(EXPLAIN PIPELINE compact=0,graph=1)に、一意な ID が接尾辞として付与されるようになりました。これにより、processors profiler の出力や OpenTelemetry のトレースを EXPLAIN の出力と突き合わせることができます。 #63518 (qhsong).
  • Azure Blob Storage への書き込み後にオブジェクトが存在するかを確認するオプションを追加しました。これは check_objects_after_upload の設定で制御できます。#64847 (Smita Kulkarni).
  • HashTable の destroyElements における use-after-dtor のロジックを修正。 #65279 (cangyin).
  • clickhouse-local でデフォルトとして Atomic データベースを使用するようにしました。#50647 の項目 1 および 5 に対応しました。#44817 をクローズしました。#68024Alexey Milovidov)。
  • 書き込みバッファは明示的にキャンセルするか、ファイナライズする必要があります。例外は、クライアントにエラーを通知するために HTTP プロトコルを破ります。 #68800 (Sema Checherinda).
  • replica_dir を作成し、DDLWorker 内でレプリカをアクティブとしてマークすることで、実行中の DDLWorker ホストを報告できるようにしました。 #69658 (Tuan Pham Anh).
    1. DDLQueryStatusSource のリファクタリング: - DDLQueryStatusSourceDistributedQueryStatusSource にリネームし、ベースクラスにする - DDL On Cluster とレプリケーテッドデータベースからそれぞれ DDL タスクのステータスをクエリするために、DDLQueryStatusSource から派生した 2 つのサブクラス DDLOnClusterQueryStatusSourceReplicatedDatabaseQueryStatusSource を作成する。2. DDLOnClusterQueryStatusSource でオフラインホストの待機を中止できるように対応。#69660 (Tuan Pham Anh).
  • 新しいキャンセルロジックを追加しました。CancellationChecker は、開始されたすべてのクエリのタイムアウトを監視し、タイムアウトに達した時点でそれらを停止します。 #69880 (Yarik Briukhovetskyi)。
  • allow_experimental_join_condition 設定を削除し、既定で非等値条件を許可するようにしました。 #69910 (Vladimir Cherkasov).
  • parallel_replicas_local_plan をデフォルトで有効化しました。クエリのイニシエーター上で完全なローカルプランを構築することで、リソース消費を抑えつつ parallel replicas のパフォーマンスを向上させ、より多くのクエリ最適化を適用できるようにしました。 #70171 (Igor Nikonov).
  • http_handlers(dynamic_query_handler / predefined_query_handler)でユーザー/パスワードを設定できるようにしました。 #70725 (Azat Khuzhin).
  • S3Queue ストレージにおいて、一部の設定に対する ALTER TABLE ... MODIFY/RESET SETTING ... をサポートしました。 #70811 (Kseniia Sumarokova).
  • ディレクトリを一覧表示する際にオブジェクトストレージの API を呼び出すのは避けてください。コスト効率が悪くなる可能性があります。代わりに、ファイル名のリストをメモリに保持してください。トレードオフとして、初期読み込み時間とファイル名を保持するためのメモリ使用量が増加します。 #70823 (Julia Kartseva)。
  • clickhouse-compressor--threads パラメータを追加し、データを並列に圧縮できるようにしました。 #70860 (Alexey Milovidov).
  • Replxx クライアントの履歴サイズを設定できるようにしました。 #71014 (Jiří Kozlovský).
  • 設定 prewarm_mark_cache を追加し、挿入、マージ、パーツのフェッチ、およびテーブルの起動時にマークを mark キャッシュへ事前読み込みできるようにしました。 #71053 (Anton Popov).
  • Parquet ネイティブリーダーでの Boolean 型サポート。 #71055 (Arthur Passos)。
  • S3 とのやり取り時に、「Malformed message」など、より多くの種類のエラーをリトライ対象としました。 #71088 (Alexey Milovidov).
  • 一部の S3 関連メッセージのログレベルを下げました。 #71090 (Alexey Milovidov).
  • スペースを含む HDFS ファイル名への書き込みをサポート。 #71105 (exmy).
  • system.session_log は十分です。これにより #51760 がクローズされます。#71150Alexey Milovidov)。
  • parallel replicas を使用するクエリにおける RIGHT / FULL JOIN の問題を修正しました。これにより、RIGHT JOIN は parallel replicas で実行できるようになり(右側テーブルの読み取りが分散されます)が、FULL JOIN はノード間で並列化できず、ローカルで実行されます。 #71162 (Igor Nikonov).
  • レプリケートテーブル、辞書、ビューの数を制限する設定を追加しました。 #71179 (Kirill).
  • #71227 を修正。#71286Arthur Passos)。
  • サーバー/ユーザーのメモリ使用量に応じて、自動的に GROUP BY / ORDER BY をディスク処理に切り替えます。max_bytes_ratio_before_external_group_by / max_bytes_ratio_before_external_sort クエリ設定で制御できます。#71406Azat Khuzhin)。
  • ホスト単位のダッシュボード Overview (host)Cloud overview (host) を高度なダッシュボードに追加。 #71422 (alesapin).
  • 関数 translate は、from 引数に含まれる文字が to 引数より多い場合に、余分な文字の削除をサポートするようになりました。例:SELECT translate('clickhouse', 'clickhouse', 'CLICK') は、CLICK を返すようになりました。#71441shuai.xu)。
  • 新しい関数 parseDateTime64parseDateTime64OrNullparseDateTime64OrZero を追加しました。既存の関数 parseDateTime(およびその派生関数)とは異なり、これらは DateTime ではなく DateTime64 型の値を返します。 #71581 (kevinyhzou)。
  • MergeTree テーブルエンジンファミリーのメモリフットプリントを削減するため、index_granularity 配列をメモリ内に収まるように縮小しました。 #71595 (alesapin).
  • コマンドラインアプリケーションは、マルチステートメントに対しても構文をハイライトするようになりました。 #71622 (Alexey Milovidov).
  • コマンドラインアプリケーションは、エラー発生時に非ゼロの終了コードを返すようになりました。以前のバージョンでは、disks アプリケーションはエラー時にもゼロを返しており、また他のアプリケーションでも、エラー 256 (PARTITION_ALREADY_EXISTS) および 512 (SET_NON_GRANTED_ROLE) に対してゼロを返していました。 #71623 (Alexey Milovidov)。
  • Vertical フォーマット(クエリの末尾を \G で終えることでも有効化されます)では、次のような Pretty フォーマットの機能が利用できます: - 数値を3桁ごとのグループにハイライト表示する。 - 読みやすい数値ヒントを表示する。 #71630 (Alexey Milovidov)。
  • 設定 filesystem_cache_prefer_bigger_buffer_size によって、ファイルシステムキャッシュにおけるメモリバッファサイズの拡大を無効化できるようにしました。 #71640 (Kseniia Sumarokova).
  • ファイルシステムキャッシュにおけるバックグラウンドダウンロードの最大ファイルセグメントサイズを制御するための個別設定 background_download_max_file_segment_size を追加しました。 #71648 (Kseniia Sumarokova).
  • enable_http_compression のデフォルト値を 0 から 1 に変更します。これにより #71591 がクローズされます。#71774Peter Nguyen)。
  • Object 形式から JSON 形式への ALTER をサポートしました。 #71784 (Pavel Kruglov).
  • JSON 型パースをわずかに改善しました: JSON パスに対応する現在のブロックに複数の型の値が含まれている場合、専用のベストエフォート順で各型を試すことで、最適な型を選択するようにしました。 #71785 (Pavel Kruglov).
  • 以前は system.asynchronous_metrics から読み取る際、並行して実行中の更新処理が完了するまで待機する必要がありました。これは、システムに高い負荷がかかっている場合には長時間になる可能性があります。この変更により、以前に収集された値を常に読み取れるようになりました。 #71798 (Alexander Gololobov).
  • polling_max_timeout_ms を 10 分、polling_backoff_ms を 30 秒に設定します。 #71817 (Kseniia Sumarokova).
  • 'SELECT - FROM t LIMIT 1' のようなクエリは、実際には使用されないにもかかわらず、パートインデックスをロードしていました。 #71866 (Alexander Gololobov).
  • Allow_reorder_prewhere_conditions は、古い互換性設定では既定で有効になっています。 #71867 (Raúl Marín).
  • bitmapTransform 関数を使用していて、かつ引数の型が有効な場合には、system.errors テーブル内の ILLEGAL_TYPE_OF_ARGUMENT カウンタをインクリメントしないようにしました。 #71971 (Dmitry Novik)。
  • Dictionary ストレージ、Dictionary テーブル関数、または辞書自体への直接の SELECT によって辞書からデータを取得する場合、辞書に対する SELECT 権限または dictGet 権限のいずれかがあれば十分です。これは ACL の回避を防止しようとした以前の取り組み(https://github.com/ClickHouse/ClickHouse/pull/57362https://github.com/ClickHouse/ClickHouse/pull/65359)と整合しています。また、これにより後者の変更との後方互換性も保たれます。#72051Nikita Mikhaylov)。
  • 高度なダッシュボード用 HTML ページに、system.dashboards テーブルからダッシュボードを選択するためのドロップダウンセレクターを追加しました。 #72081 (Sergei Trifonov)。
  • 分散 INSERT ... SELECT のクエリプランを構築する際に prefer_locahost_replica を尊重するようになりました。 #72190 (filimonov).
  • この問題についてはこちらで説明しています。Azure Iceberg Writer は仕様に違反する Iceberg メタデータファイル(およびマニフェストファイル)を作成します。この PR では、v2 リーダーで v1 Iceberg フォーマットのメタデータを読み取る処理を追加しました(Azure Iceberg Writer がその形式でメタデータを書き出しているため)ほか、マニフェストファイル内に対応するフィールドが作成されていない場合にエラーを出すようにしました。#72277Daniil Ivanik)。
  • JSON/Dynamic/Variant 型を実験的機能からベータ段階へ移行しました。 #72294 (Pavel Kruglov).
  • クエリ内で UNION [ALL] を含む CREATE MATERIALIZED VIEW を作成できるようになりました。動作は JOIN を使用したマテリアライズドビューと同様で、SELECT 式内の最初のテーブルだけが挿入トリガーとして機能し、他のテーブルはすべて無視されます#72347 (alesapin)。
  • 挿入バッチ内のパーティションキーが1種類の値しか含まれていない場合に、MergeTree への挿入を高速化しました。#72348 (alesapin).
  • 新しい MergeTreeIndexGranularityInternalArraysTotalSize メトリクスを system.metrics に追加しました。このメトリクスは、大規模なデータセットを保持していて高いメモリ使用量の問題が発生しやすいインスタンスを特定するために必要です。#72490Miсhael Stetsyuk)。
  • クエリで Format Null を使用する場合、単語 Null のあらゆる綴りが認識されるようになりました。以前は他の表記(例:NULL)でも例外はスローされませんでしたが、その一方で、そのような場合にフォーマット Null は実際には使用されていませんでした。 #72658 (Nikita Taranov)。
  • Enum に存在しない未知の値も set 内で許可するようにしました。#72662 を修正。#72686zhanglistar)。
  • 非アクティブなパーツの総バイト数をカウントできるように、system.tables に total_bytes_with_inactive を追加しました。 #72690 (Kai Zhu).
  • MergeTreeSettings を system.settings_changes に追加しました。 #72694 (Raúl Marín).
  • Enum データ型に対して文字列検索演算子(例: LIKE)をサポートし、#72661 を修正しました。#72732zhanglistar)。
  • notEmpty 関数で JSON 型をサポートしました。 #72741 (Pavel Kruglov).
  • GCS S3 エラー AuthenticationRequired の解析をサポートします。 #72753 (Vitaly Baranov).
  • 関数 ifNull と coalesce に Dynamic 型のサポートを追加しました。 #72772 (Pavel Kruglov)。
  • JoinBuildTableRowCount/JoinProbeTableRowCount/JoinResultRowCount プロファイルイベントを追加しました。 #72842 (Vladimir Cherkasov).
  • toFloat64/touInt32 などの関数で Dynamic 型をサポートしました。 #72989 (Pavel Kruglov).

バグ修正(公式安定版リリースで発生する、ユーザーから見て明らかな不具合)

  • ATTACH PART クエリ中に重複排除されたパーツが、attaching_ 接頭辞が付いたまま残ってしまうことはなくなりました。#65636Kirill)。
  • IN 関数において DateTime64 の精度が失われていた不具合を修正。#67230 (Yarik Briukhovetskyi)。
  • ORDER BY ... WITH FILLIGNORE/RESPECT NULLS を使用する際に発生しうる論理エラーを修正しました。#57609#68234Vladimir Cherkasov)。
  • メモリ制限に達した場合に、Native フォーマットでの非同期挿入でまれに発生していた論理エラーを修正しました。 #68965 (Anton Popov).
  • EPHEMERAL 列の CREATE TABLE 文における COMMENT を修正。 #70458 (Yakov Olkhovskiy).
  • JSONExtract で LowCardinality(Nullable) を使用した場合の論理エラーを修正。 #70549 (Pavel Kruglov).
  • テーブル名が長すぎる場合の挙動を修正。 #70810 (Yarik Briukhovetskyi).
  • URL エンジンでユーザー指定ヘッダーにより Content-Type を上書きできる機能を追加しました。 #70859 (Artem Iurin).
  • StorageS3Queue の論理エラー「/processed にはすでに存在するため永続ノードを作成できません」を修正。 #70984 (Kseniia Sumarokova).
  • projection の lightweight delete における rebuild オプションで _row_exists カラムが考慮されていなかったバグを修正しました。 #71089 (Shichao Jin).
  • 予期しないレースコンディションに起因する system.query_metric_log の誤った値を修正。#71124Pablo Marcos)。
  • quantileExactWeightedInterpolated 集約関数名の不整合を修正しました。このバグは https://github.com/ClickHouse/ClickHouse/pull/69619 で導入されました。cc @Algunenano. #71168 (李扬).
  • 関数比較において Dynamic を使用した際に発生する bad_weak_ptr 例外を修正。 #71183 (Pavel Kruglov).
  • ReplicatedMergeTree のゼロコピー レプリケーションで、ノードが使用中の blob を削除しないようにしました。 #71186 (Antonio Andelic).
  • HTTP および Async Inserts 経由の Native 形式でフォーマット設定が無視されていた問題を修正。 #71193 (Pavel Kruglov)。
  • use_query_cache = 1 を設定して実行された SELECT クエリで、システムテーブル名がリテラルとして現れる場合でもエラーにならなくなりました。例えば、SELECT - FROM users WHERE name = 'system.metrics' SETTINGS use_query_cache = true; は現在では正常に動作します。#71254Robert Schulze)。
  • enable_filesystem_cache=1 を有効にした際、storage 構成内のディスクにキャッシュ構成がまったく定義されていない場合にメモリ使用量が増加してしまうバグを修正しました。 #71261 (Kseniia Sumarokova).
  • Dynamic column から LowCardinality 辞書をデシリアライズする際に発生する可能性のある "Cannot read all data" エラーを修正します。 #71299 (Pavel Kruglov).
  • クライアントにおける並列出力フォーマットのクリーンアップが不完全だった問題を修正。 #71304 (Raúl Marín).
  • 名前付きコレクションに不足していたエスケープ解除処理を追加しました。この修正がないと clickhouse-server は起動できません。#71308 (MikhailBurdukov)。
  • ネイティブプロトコルを使用した空ブロックを含む非同期 INSERT の問題を修正しました。 #71312 (Anton Popov).
  • 誤ったワイルドカード権限を付与した際に発生する AST フォーマットの不整合を修正しました #71309#71332 (pufit)。
  • JSON の型ヒント内で疑わしい型および実験的な型をチェックするようにしました。 #71369 (Pavel Kruglov).
  • Variant カラムを含むチャンクで発生する「Invalid number of rows in Chunk」エラーを修正しました。 #71388 (Pavel Kruglov).
  • 誤った引数(例: NULL)を渡した場合に mongodb テーブル関数がクラッシュする不具合を修正しました。 #71426 (Vladimir Cherkasov)。
  • optimize_rewrite_array_exists_to_has が原因のクラッシュを修正。 #71432 (Raúl Marín)。
  • palin&#95;rewritable ディスクでディレクトリの作成に失敗した際に、トランザクションのロールバック時に発生する NoSuchKey エラーを修正。 #71439 (Julia Kartseva).
  • max_insert_delayed_streams_for_parallel_write 設定の INSERT 時の扱いを修正しました。以前は正しく動作しておらず、複数のパーティションにデータを書き込む INSERT で高いメモリ使用量につながる可能性がありました。#71474 (Anton Popov)。
  • WHERE 条件内に arrayJoin が現れる可能性がある場合に、旧アナライザーで発生し得た Argument for function must be constant エラーを修正しました。https://github.com/ClickHouse/ClickHouse/pull/65414 の後に発生した回帰バグ(リグレッション)です。#71476Nikolai Kochetov)。
  • SortCursor で列数が 0(旧アナライザー)の場合にクラッシュしないように修正。 #71494 (Raúl Marín).
  • 未初期化の ORC データによって発生する date32 の範囲外となる問題を修正しました。詳細については https://github.com/apache/incubator-gluten/issues/7823 を参照してください。#71500李扬)。
  • Dynamic および JSON の wide part における列サイズの計算を修正。 #71526 (Pavel Kruglov).
  • マテリアライズドビュー内のクエリで CTE と併用した IN 句を使用する場合の Analyzer の不具合を修正。 #65598 をクローズ。 #71538Maksim Kita)。
  • 範囲外の場合、bitShift 関数ではエラーをスローするのではなく、0 またはデフォルトの文字を返すようにしました。 #71580 (Pablo Marcos)。
  • 特定のエンジンを使用するマテリアライズドビューで発生していたサーバークラッシュを修正しました。 #71593 (Pervakov Grigorii).
  • 定数配列へのエイリアスを含む入れ子のデータ構造に対する ARRAY JOIN が、ヌルポインタ参照を引き起こしていました。この修正により #71677 がクローズされました。#71678Alexey Milovidov)。
  • 空のタプルで ALTER を実行した際に発生する LOGICAL_ERROR を修正しました。これにより #71647 が修正されました。#71679Amos Bird)。
  • NOT IN 演算子を使用する場合は、パーティション列を対象とする述語内の定数集合を変換しないようにしました。 #71695 (Eduard Karacharov).
  • LowCardinality(Nullable) から Dynamic への CAST を修正しました。以前は Bad cast from type DB::ColumnVector<int> to DB::ColumnNullable というエラーが発生することがありました。 #71742 (Pavel Kruglov).
  • DateTime64 型のプライマリキーを持つテーブルの WHERE 句で発生する toDayOfWeek の例外を修正。 #71849 (Yakov Olkhovskiy).
  • スパースカラムへのパース後に行われるデフォルト値の補完処理を修正しました。 #71854 (Anton Popov).
  • 分散テーブル上で入力が ALIAS 列の場合に発生する GROUPING 関数のエラーを修正し、#68602 をクローズ。#71855Vladimir Cherkasov)。
  • WITH TIES 句を使用していて、十分な行を返さない可能性があった SELECT 文を修正しました。 #71886 (wxybear)。
  • arrayWithConstant の評価時に、カラムが配列サイズ制限を超えると誤って判断されて発生する TOO_LARGE_ARRAY_SIZE 例外を修正。 #71894 (Udi).
  • clickhouse-benchmark は、実行に 1 秒を超えて時間がかかるクエリに対して誤ったメトリクスを報告していました。 #71898 (Alexey Milovidov).
  • clickhouse-client における進捗インジケーターと進捗テーブル間のデータ競合を修正します。この問題は FROM INFILE 句が使用されている場合に顕在化します。INSERT クエリ実行中のキーストロークをフックして、進捗テーブルの表示をトグルできるようにします。 #71901 (Julia Kartseva).
  • Pretty JSON フォーマットでの Dynamic 値のシリアル化を修正。 #71923 (Pavel Kruglov).
  • 24.6 で不正になっていた system.s3/azure_queue_log の rows_processed 列を修正。#69975 をクローズ。#71946 (Kseniia Sumarokova)。
  • s3/s3Cluster 関数が不完全な結果を返したり、例外をスローしたりする可能性があったケースを修正しました。これは、s3 の URI にグロブパターン(pattern/* のような)を使用し、かつキー pattern/ を持つ空のオブジェクトが存在している場合(そのようなオブジェクトは S3 コンソールによって自動的に作成されます)に発生していました。あわせて、設定項目 s3_skip_empty_files のデフォルト値を false から true に変更しました。#71947 (Nikita Taranov)。
  • clickhouse-client の構文ハイライト時に発生していたクラッシュを修正。#71864 をクローズ。#71949 (Nikolay Degterinsky).
  • ORDER BY で最初の引数が定数の場合に、バイナリの単調関数を使用した MergeTree テーブルで発生する Illegal type エラーを修正しました。#71941 を修正。 #71966Nikolai Kochetov)。
  • サブクエリ内で使用される EXPLAIN AST では SELECT クエリのみを許可するようにしました。その他の種類のクエリは、'Bad cast from type DB::ASTCreateQuery to DB::ASTSelectWithUnionQuery' または Inconsistent AST formatting という論理エラーになります。 #71982 (Pavel Kruglov).
  • clickhouse-client でレコードを挿入する際、クライアントはサーバーからカラム定義を読み取ります。しかし、本来 [statistics, ttl, settings] の順序であるべきカラム定義を誤った順序で記述してしまうバグがありました。#71991Han Fei)。
  • format_alter_commands_with_parentheses が有効な場合に、MOVE PARTITION ... TO TABLE ... の ALTER コマンドの書式を修正しました。 #72080 (János Benjamin Antal)。
  • File/S3/URL/HDFS/Azure エンジンの CREATE クエリに、推論されたフォーマット名を追加するようにしました。以前は、サーバーが再起動されるたびにフォーマット名を推論しており、指定されたデータファイルが削除されていると、サーバー起動時にエラーが発生していました。 #72108 (Pavel Kruglov).
  • min_age_to_force_merge_on_partition_only が、すでに単一パートにマージ済みの同じパーティションを繰り返しマージしようとしてスタックしてしまい、複数パートを持つパーティションをマージしない不具合を修正しました。 #72209 (Christoph Wurm).
  • スパースカラムを処理する際にまれに発生していた SimpleSquashingChunksTransform のクラッシュを修正しました。 #72226 (Vladimir Cherkasov).
  • GraceHashJoin におけるデータレースを修正しました。この不具合が原因で、結合結果から一部の行が欠落する可能性がありました。 #72233 (Nikita Taranov)。
  • 設定 enable_block_number_column が有効な場合に、マテリアライズされる _block_number 列を使用する ALTER DELETE クエリの問題を修正しました。 #72261 (Anton Popov).
  • ColumnDynamic::dumpStructure() が、ConcurrentHashJoin のコンストラクタ内などで並行して呼び出された際に発生していたデータレースを修正しました。 #72278 (Nikita Taranov).
  • ORDER BY ... WITH FILL に重複したカラムが含まれる場合に発生する可能性のある LOGICAL_ERROR を修正しました。 #72387 (Vladimir Cherkasov).
  • optimize_functions_to_subcolumns を適用した後に発生していた、複数のケースでの型の不整合を修正しました。 #72394 (Anton Popov).
  • BACKUP DATABASE db EXCEPT TABLES db.table クエリのパース時に発生していたエラーを修正しました。 #72429 (Konstantin Bogdanov).
  • 空の Variant を作成できないようにしました。 #72454 (Pavel Kruglov).
  • system.merges における result_part_path の不正な形式を修正。 #72567 (Konstantin Bogdanov).
  • 要素が1つだけの glob の構文解析を修正。 #72572 (Konstantin Bogdanov)。
  • ARRAY JOIN を含む分散クエリの場合のフォロワーサーバー向けクエリ生成を修正しました。#69276 を修正します。#72608Dmitry Novik)。
  • DateTime64 in DateTime64 が値を返さない不具合を修正しました。 #72640 (Yarik Briukhovetskyi).
  • S3Queue の Unordered モードで、tracked_files_limit の設定値が S3 上のファイルの出現頻度より小さい場合に発生する「No such key」エラーを修正しました。 #72738 (Kseniia Sumarokova).
  • mark cache が大きい場合、それを破棄する処理には無視できない時間がかかることがあります。この処理の間に context のミューテックスを保持してしまうと、他の多くの処理がブロックされ、新しいクライアント接続でさえミューテックスが解放されるまで確立できません。そもそも同期のためにこのミューテックスを保持する必要はなく、shared_ptr を介してキャッシュへのローカル参照を持っていれば十分です。 #72749 (Alexander Gololobov).
  • あるテストインスタンスで、PK キャッシュが実際のサイズを大きく過小評価していました。特に、LowCardinality カラムではディクショナリのサイズが含まれていませんでした。修正としては、キャッシュエントリのサイズの見積もりに column->allocatedBytes() を用いるとともに、いくつかの追加オーバーヘッドも考慮するようにしました。 #72750 (Alexander Gololobov)。
  • ユーザーがローカルに存在しない場合に RemoteQueryExecutor がスローする例外を修正。 #72759 (Andrey Zvonov).
  • マテリアライズされた _block_number 列(enable_block_number_column 設定が有効な場合)を使用するミューテーションの不具合を修正しました。 #72854 (Anton Popov).
  • バックアップ内に空のファイルが存在する場合でも、プレーンな再書き込み可能ディスクでのバックアップ/リストアが正しく動作するように修正しました。 #72858 (Kseniia Sumarokova).
  • DistributedAsyncInsertDirectoryQueue 内の insert を適切にキャンセルできるようにしました。#72885 (Antonio Andelic).
  • 誤ったデータをスパース列にパースする際に発生していたクラッシュを修正しました(enable_parsing_to_custom_serialization 設定が有効な場合に発生する可能性があります)。 #72891 (Anton Popov).
  • バックアップリストア中に発生する可能性のあるクラッシュを修正。 #72947 (Kseniia Sumarokova).
  • ON 句に不等式フィルタを含む複雑な条件を持つクエリで発生する可能性があった parallel_hash JOIN メソッドのバグを修正しました。 #72993 (Nikita Taranov).
  • JSON のパース時には、デシリアライズが壊れないようにデフォルトのフォーマット設定を使用します。 #73043 (Pavel Kruglov)。
  • サポートされていないストレージを用いたトランザクションで発生するクラッシュを修正。 #73045 (Raúl Marín)。
  • Tuple のパース時に重複した JSON キーの有無をチェックするようにしました。以前は、パース中に論理エラー Invalid number of rows in Chunk が発生する可能性がありました。#73082Pavel Kruglov)。