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

2025年の変更履歴

目次

ClickHouse リリース v25.12, 2025-12-18
ClickHouse リリース v25.11, 2025-11-27
ClickHouse リリース v25.10, 2025-10-30
ClickHouse リリース v25.9, 2025-09-25
ClickHouse リリース v25.8 LTS, 2025-08-28
ClickHouse リリース v25.7, 2025-07-24
ClickHouse リリース v25.6, 2025-06-26
ClickHouse リリース v25.5, 2025-05-22
ClickHouse リリース v25.4, 2025-04-22
ClickHouse リリース v25.3 LTS, 2025-03-20
ClickHouse リリース v25.2, 2025-02-27
ClickHouse リリース v25.1, 2025-01-28
2024 年の変更履歴
2023 年の変更履歴
2022 年の変更履歴
2021 年の変更履歴
2020 年の変更履歴
2019 年の変更履歴
2018 年の変更履歴
2017 年の変更履歴

ClickHouse リリース 25.12, 2025-12-18

後方互換性を損なう変更

  • ALTER MODIFY COLUMN は、Nullable カラムを非 Nullable 型に変換する際に、明示的な DEFAULT の指定が必須になりました。以前はこのような ALTER 文は cannot convert null to not null エラーによって行き詰まることがありましたが、現在では NULL がカラムのデフォルト式で置き換えられます。#5985 を解決します。 #84770 (Vladimir Cherkasov)。
  • Ngram tokenizer は、設定された長さ N 未満の ngram を返さなくなります。Text Search は、検索トークンが空の場合、行を返さなくなります。#89757 (George Larionov).
  • String から Nullable(String) へのカラムの ALTER を行う場合、データに対するミューテーションは行いません。しかし uniq 集約関数については、異なるデータ構造を使用します。Nullable カラムに対しては、ネストされた uniq アグリゲータを伴う AggregateFunctionNull を使用します。AggregateFunctionNull は追加の bool フラグをシリアライズします。このため、statistics ファイルとの互換性がなくなります。この問題の修正として、シリアライズ時に対象が Nullable カラムであるかどうかを記録するフラグを追加しました。statistics のフォーマットは変更されており、古いフォーマットの statistics が存在する場合、サーバーがクラッシュする可能性があります。この PR #90904 はクラッシュを修正し、既存の statistics がレガシーフォーマットを使用している場合に例外をスローします。例外を回避するには、ALTER TABLE table MATERIALIZE STATISTICS ALL を実行して statistics を再生成し、この問題を修正する必要があります。 #90311 (Han Fei)。
  • allow_not_comparable_types_in_order_by/allow_not_comparable_types_in_comparison_functions の設定を削除しました。ORDER BY 句や比較関数で比較不能な型を許可すると、論理エラーや予期しない結果を招く可能性があります。これにより、#90028 が解決されます。#90527Pavel Kruglov)。
  • check_query_single_value_result SETTING のデフォルト値を true から false に変更しました。これにより、CHECK TABLE は集約結果(1 = 正常、0 = エラー検出)ではなく、各パーツごとの詳細な結果を返すようになります。以前の動作と比較して、この方がユーザーの期待により沿った挙動と考えられます。 #91009 (Robert Schulze)。
  • 暗黙的な索引に関する複数の修正を行いました。表示されたり Keeper のメタデータとして保存されたりするスキーマには、add_minmax_index_for_numeric_columnsadd_minmax_index_for_string_columns のような設定によって作成される暗黙的な索引は含まれません。このため、新しいバージョンで ReplicatedMergeTree テーブルを作成または更新する際、古いリリースにレプリカが存在しているとメタデータエラーが発生する可能性があります。そのような場合は、クラスタ全体のアップグレードが完了するまで、古いレプリカに DDL 文を送信してください。 #91429 (Raúl Marín).
  • receive_timeout によってクエリがタイムアウトした場合に、clickhouse-client が非ゼロの終了コード (159 - TIMEOUT_EXCEEDED) を返すように変更しました。これまでは、タイムアウト時にも終了コード 0 (成功) を返していたため、スクリプトや自動化ツールがタイムアウトによる失敗を検知しづらい状態でした。 #91432 (Sav)。
  • これらのテーブルでのマージ動作が未定義であるため、空の ORDER BY キーを持つ特殊な MergeTree テーブル(ReplacingMergeTreeCollapsingMergeTree など)を作成することは、現在は禁止されています。それでもそのようなテーブルを作成する必要がある場合は、allow_suspicious_primary_key SETTING を有効にしてください。 #91569 (Anton Popov)。
  • bitShiftLeftbitShiftRight 関数を修正し、型のサイズとちょうど同じだけシフトした場合は 0 または空の値を返すようにしました。 #91943 (Pablo Marcos)。
  • #88380 のフォローアップです。この PR では、プロジェクションにおける位置指定引数の無効化を後方互換性のない変更として扱います。加えて、プロジェクション内に位置指定引数が存在する場合でも ClickHouse クラスターを安全にアップグレードできるようにするための enable_positional_arguments_for_projections 設定を導入しています。 #92007Dmitry Novik)。

新機能

  • ユーザーは、従来のファイルを保持または削除するオプションに加えて、処理済みファイルを移動またはタグ付けするように S3/Azure Queue テーブルを構成できるようになりました。#72944 を解決しました。#86907Murat Khairulin)。
  • ストレージ S3/Azure Queue に commit_on_select 設定を追加しました(処理済みデータをコミットするかどうか、および after_processing アクションを適用するかどうかを制御します)。デフォルト値は false で、SELECT 実行時のアタッチされたマテリアライズドビューのチェック処理を修正しました。 #91450 (Kseniia Sumarokova).
  • 本番環境での問題をデバッグし、決定論的にプロファイルするために、XRay を使用して実行時にインストルメンテーションを追加できるようにしました。#74249 を解決しました。#89173Pablo Marcos)。
  • IN の第 2 引数に非定数も指定できるようになりました。また、第 2 引数としてタプルもサポートします。#77906Yarik Briukhovetskyi)。
  • geometry 型に対する面積と周長を計算する関数。 #89047 (Konstantin Vedernikov).
  • dictGetKeys 関数を実装しました。この関数は、属性値が指定した値と等しい Dictionary のキー(複数可)を返します。クエリ単位のリバースルックアップキャッシュを使用し、繰り返し行われるルックアップの高速化のために、そのサイズを max_reverse_dictionary_lookup_cache_size_bytes SETTING で調整できます。 #89197 (Nihal Z. Miaji)。
  • 入力 JSON が JSON 型内の明示的な型付きパスにキャストできない場合でも、JSON 型への INSERT/型キャストで例外を発生させないようにする type_json_skip_invalid_typed_paths SETTING を追加しました。その場合は、型付きパスの null/ゼロ値を使用します。 #89886 (Max Justus Spransy).
  • MergeTree テーブルで direct(ネストループ方式)結合をサポートしました。使用するには、設定で唯一のオプションとして join_algorithm = 'direct' を指定します。 #89920Vladimir Cherkasov)。
  • iceberg に対する CREATE 操作での ORDER BY のサポートと、INSERT 時のソートに対応。 #89916 を解決。 #90141 (Konstantin Vedernikov)。
  • ALTER TABLE ... ADD PROJECTION に新たに追加された WITH SETTINGS 句を通じて利用できる、PROJECTION レベルの設定を追加しました。これらの設定により、各 PROJECTION ごとに index_granularityindex_granularity_bytes などの一部の MergeTree ストレージパラメータを上書きできるようになります。#90158 (Amos Bird)。
  • HMAC(algorithm, message, key) SQL 関数を、#73900 および #38775 の対応の一環として追加。#90837Mikhail f. Shiryaev)。
  • 最初の引数が定数配列のときにプライマリキーとデータスキッピングインデックスを利用できるよう、has 関数のサポートを追加しました。#90980 をクローズ。#91023Nihal Z. Miaji)。
  • 新しい入出力フォーマット Buffers を実装しました。このフォーマットは Native に似ていますが、Native と異なり、カラム名やカラム型などのメタデータは保存しません。#84017 をクローズ。#91156Nihal Z. Miaji による)。
  • Cluster テーブル関数でのファイルの並列読み込みに使用するストリーム数を制御するための max_streams_for_files_processing_in_cluster_functions SETTING を追加しました。#90223 をクローズしました。#91323Pavel Kruglov)。
  • 行レベルセキュリティ用のデータマスキング機能(ClickHouse Cloud でのみ利用可能)。これを clickhouse-client でサポートするためのデータマスキングポリシー用パーサーを追加。 #90552 (pufit).
  • windowFunnel 集約関数に allow_reentry オプションを追加しました。strict_order と併用すると、ファネル分析を停止する代わりに、順序違反となるイベントを無視します。これにより、リフレッシュを含むユーザージャーニー(A->A->B)や、戻る操作を含むナビゲーション(A->B->A->C)でも、コンバージョン率を過小に算出することなく処理できるようになります。 #86916 (Lee ChaeRok).
  • Keeper の ZooKeeper 互換機能: STATISTICS 付きで CREATE できるようになりました。 #88797 (Konstantin Vedernikov).
  • ClickHouse Keeper における ZooKeeper 永続ウォッチのサポート。続き(パート 2): https://github.com/ClickHouse/ClickHouse/pull/78207#88813Konstantin Vedernikov)。
  • MergeTree の設定 alter_column_secondary_index_mode を追加し、ミューテーション実行中にセカンダリ索引をどのように処理するかを制御できるようにしました。指定可能な値は throw、drop、rebuild、compatibility です。 #77797 をクローズしました。 #89335Raúl Marín)。
  • TimeTime64 データ型が本番利用に十分な品質となったため、enable_time_time64_type SETTING はデフォルトで有効化されました。#89345 (Yarik Briukhovetskyi)。
  • delta_lake_snapshot_start_versiondelta_lake_snapshot_end_version の設定を使用した deltaLake テーブル関数経由で、DeltaLake CDF の読み取りをサポートします。CDF(Change Data Feed。Delta テーブルのバージョン間で、挿入・更新・削除などの行レベルのデータ変更を自動的に取得してクエリできるようにする機能)は、DeltaLake では delta.enableChangeDataFeed によって有効化されます。データとともに提供されるカラムは _change_type_commit_version_commit_timestamp です。#90431Kseniia Sumarokova)。
  • タプル要素へのアクセスで負のインデックスをサポートしました(例:tuple.-1)。#91665Amos Bird)。

実験的機能

  • TODO: Text インデックスフォーマット v3 を導入し、Beta ステータスに昇格させます。
  • 設定 automatic_parallel_replicas_mode によって制御される、並列レプリカを用いてクエリを自動実行するための新しいロジックが導入されました。通常の単一ノード実行時に、ClickHouse は後のプランニング段階で参照される統計情報を収集します。統計情報から並列レプリカが有益である可能性が高いと判断された場合、ClickHouse はそのクエリを並列レプリカで自動的に実行します。現在のところ、対応しているクエリの範囲はかなり限定的です。 #87541 (Nikita Taranov)。
  • --login を使用して Cloud の認証情報により ClickHouse Cloud インスタンスへアクセスできます。 #89261 (Krishna Mannem)。
  • セッションレベルの設定 aggregate_function_input_format を追加し、AggregateFunction カラムを持つテーブルへの INSERT クエリを改善しました。これにより、シリアライズされた状態、生の値、もしくは配列としてデータを挿入できるようになります。 #88088 (Punith Nandyappa Subashchandra)。

パフォーマンスの向上

  • ORDER BY...LIMIT N クエリに対して skip index と動的なしきい値フィルターを用いることで、処理される行数を大幅に削減して最適化しました。 #89835 (Shankar Iyer).
  • ClickHouse は、ANDOR が混在したフィルター条件を含む WHERE 句に対して、skip index を用いた索引の解析を行うようになりました。以前は、skip index を利用するためには WHERE 句がフィルター条件の連言(AND)のみで構成されている必要がありました。新しい設定 use_skip_indexes_for_disjunctions(デフォルト: on)でこの機能を制御できます。(issue #75228)。#87781Shankar Iyer)。
  • LEFT/INNER JOIN 操作において、左側のテーブルからの読み取り順序を保持し、その順序を後続のステップで利用できるようにしました。この挙動は設定 query_plan_read_in_order_through_join で無効化できます。LEFT/INNER JOIN に対する読み取り最適化として virtual row のサポートも追加しました(設定 read_in_order_use_virtual_row を参照)。 #89815 (Vladimir Cherkasov).
  • 遅延マテリアライズカラムの上限値を引き上げてパフォーマンスを改善。 #90309 (Nikolai Kochetov).
  • 大きな minmax 索引(granule が数百万単位)が存在する場合、ユーザーは索引解析のレイテンシが低減していることを確認できるはずです。 #90428 (Shankar Iyer).
  • INNER JOIN 向けに単純な DPsize 結合順序再配置アルゴリズムを実装。新しい実験的な設定で、どのアルゴリズムをどの順序で使用するかを制御できます。例えば、query_plan_optimize_join_order_algorithm='dpsize,greedy' は、まず DPsize を試し、フォールバックとして greedy を使用することを意味します。 #91002 (Alexander Gololobov).
  • クエリが行数上限に達した時点で即座に失敗するようにしました。 #61872 を解決します。 #62804 (Sean Haynes)。
  • #84477 により、insert select from s3Cluster(...) クエリで並列分散実行を行う際に使用できる select クエリに関する制約が追加されました。この変更により、以前は使用できなかった where の使用が可能になりました。#84611 (Igor Nikonov)。
  • ハッシュテーブルを走査する際にキーをプリフェッチし、キャッシュミスを最小限に抑えるようにしました。 #84708 (lgbo).
  • histogram 集約関数を最適化し、ポイント配列の末尾部分のみをソートし、単調な入力に対してはソートをスキップすることで、約 10% の高速化を実現しました。 #85760 (MakarDev)。
  • likeequalshas などの関数を含む述語に対して、テキスト索引から構築された追加の予備フィルタを活用することでフィルタリング性能を向上させました。この最適化は query_plan_text_index_add_hint SETTING で有効化できます。Map データ型のカラムに対するテキスト索引の利用も改善しました。#88550 (Anton Popov).
  • 事前計算された可能なキー値の Set に対してより高速にルックアップすることで、繰り返し発生する逆引き Dictionary ルックアップを最適化しました。#7968 をクローズ。#88971Nihal Z. Miaji)。
  • topK 集約関数のパフォーマンスと挙動を改善しました。 #90091 (Raúl Marín).
  • Decimal の比較演算のパフォーマンスを改善しました。 #28192 を解決しました。 #90153Konstantin Bogdanov)。
  • Apache Paimon 関数でパーティションプルーニングをサポートし、https://github.com/ClickHouse/ClickHouse/pull/84423 の対応を拡張しました。 #90253 (JIaQi).
  • 動的ディスパッチを用いて、論理関数に高度な SIMD 演算を適用します。 #90432 (Raúl Marín).
  • 結果カラムを不要にゼロで初期化しないことで、JIT 関数のパフォーマンスを改善しました。 #90449 (Raúl Marín).
  • 動的ディスパッチを用いてT64の伸長処理を高速化。 #90610 (Raúl Marín).
  • MergeTree リーダーでのインプレース フィルタリングを最適化。#87119 を解決。#90630 (Xiaozhe Yu)。
  • 選択されるマージ候補の対象範囲をより狭めるための追加のヒューリスティックを導入しました。より小さな範囲でマージを行うことで書き込み増幅は増加しますが、その一方で TOO_MANY_PARTS エラーの発生を防ぐのに役立ちます。 #91163 (Mikhail Artemenko)。
  • グロブパターンで作成された S3 テーブルに対して _path フィルタ値をプッシュダウンすることでクエリのパフォーマンスを向上させ、S3 上でのリスト操作を回避できるようにしました。s3_path_filter_limit 設定で制御されます。 #91165 (Eduard Karacharov)。
  • 動的ディスパッチを用いて、WHERE 句内でのカラムから bool 型への変換を高速化しました。 #91203 (Raúl Marín).
  • 動的ディスパッチを用いて単一の数値ブロックのソートを高速化。 #91213 (Raúl Marín).
  • クエリプランから未使用カラムを削除する最適化を追加しました。この変更により #75152 が解決されました。#76487János Benjamin Antal)。
  • query_plan_optimize_join_order_limit のデフォルト値が 10 に変更されました。 #89312 (Alexey Milovidov)。
  • allow_statistics_optimize 設定をデフォルトで有効にし、JOIN のオプティマイザがカラム統計情報を使用するようにしました。 #89332 (Alexey Milovidov)。
  • ANTI JOIN に対する JOIN ランタイムフィルタのサポートを追加しました。また、ロック競合を減らすためにランタイムフィルタの実装をリファクタリングしました。 #89710 (Dmitry Novik)。
  • system.metric_log テーブル(デフォルトで有効)のマージ処理時のメモリ使用量を削減するために、min_bytes_for_wide_part および vertical_merge_algorithm_min_bytes_to_activate を 128MB に設定します。 #89811 (filimonov).
  • PREWHERE で inverted index を使用できるようにしました。 #89975 を解決しました。 #89977Peng Jian)。
  • GCP OAuth を使用している場合には S3 プロバイダーを追加しないようにし、GCS 上でのパフォーマンスを改善しました。 #91706 (Antonio Andelic).

改良

  • FINAL の後にのみ ROW POLICY を適用するようクエリを制御できる新しい設定 apply_row_policy_after_final を追加しました。これにより、ROW POLICY を伴う ReplacingMergeTree の動作がより正しくなります。 #90986 を修正しました。 #91065Yarik Briukhovetskyi)。
  • Pretty フォーマットでは、名前付きタプルが Pretty JSON として表示されるようになりました。これにより #65022 が解決されました。 #91779 (Mostafa Mohamed Salah)。
  • system.error_log テーブルに last_error_timelast_error_messagelast_error_query_idlast_error_trace フィールドを新たに追加しました。 #89879 (Narasimha Pakeer).
  • CLI クライアントで、--no-server-client-version-message または false を指定することで、「ClickHouse server version is older than ClickHouse client. It may indicate that the server is out of date and can be upgraded」というメッセージを表示しないようにできるようになりました。 #87784 (Larry Snizek)。
  • パーツが重複排除されたことを示すエラーメッセージを追加。 #80264 (Aleksandr Musorin).
  • Kafka テーブルに対する materialized view のターゲットテーブルを報告できるように、system.kafka_consumersdependencies カラムと missing_dependencies カラムを追加しました。また、KafkaMVNotReady カウンタを追加しました。#85346 (Ilya Golshtein)。
  • これにより、remote および native プロトコル経由の挿入でもテーブルのデフォルト式が正しく動作するようになりました。 #87972 をクローズしました。 #88540Pervakov Grigorii)。
  • PSI_*_* 非同期メトリクスの収集を無効化できるようにしました。 #88557 (MikhailBurdukov)。
  • Nullable 型カラム向けにスパースシリアライゼーションのサポートを追加しました。これは #44539 の継続です。#88999 (Amos Bird)。
  • plain-rewritable ディスクは独自の実装とレイアウトを持つようにしました。通常の plain ディスクをベースにしないようにしています。 #89807 (Mikhail Artemenko).
  • HTTP の例外応答には final zero chunk が含まれないようにしました。 #89998 (Kaviraj Kanagaraj).
  • ハンドシェイク時に、last_zxid_seen (クライアントから提供される値) > last_processed_zxid の場合にクライアントを拒否する keeper サーバー側のチェックを追加しました。これにより、ラグのあるレプリカにクライアントが再接続した際に、古い状態を読み取ってしまうことを防止します。 #90016 (Miсhael Stetsyuk)。
  • Kafka テーブルエンジンの調整可能な設定として kafka_consumer_reschedule_ms を追加し、コンシューマーが新しいデータを待機する際のスリープ時間を調整できるようにしました。#89204 を解決しました。#90112Jeremy Aguilon)。
  • 診断性を向上させるために、新しいカラム parts_in_progress_namessystem.mutations に追加しました。 #90155 (Shaohua Wang)。
  • S3 ライブラリによる XML レスポンスの解析時にネットワークエラーが発生した場合にリトライするようにしました。 #90216 (Sema Checherinda).
  • keeper を別のサーバープロセスとして実行し、大規模なリージョンで Prometheus に過度な負荷がかからないようにするため、引き続き keeper 関連のメトリクスのみを公開するようにしました。 #90244 (Miсhael Stetsyuk)。
  • 従来の ~/.clickhouse-client/ の場所に加えて、XDG Base Directory のパス(例: ~/.config/clickhouse/config.xml)からも ClickHouse Client の設定を読み込めるようにしました。#89882 を解決。#90306Wujun Jiang)。
  • Keeper における append リクエストのバッチに対してバイトサイズの上限を追加しました。上限は keeper_server.coordination_settings.max_requests_append_bytes_size で制御されます。 #90342 (Antonio Andelic).
  • Iceberg 向けに、パーティション数が過度に増加するのを防ぐための設定を追加。#90365 (Konstantin Vedernikov).
  • ガードレールの制限に近づいたときの警告メッセージを更新し、現在値と例外をスローする値を表示するようにしました。 #90438 (Nikita Fomichev).
  • system.filesystem_cache テーブル内で chunk をストリーミングし、キャッシュ状態のすべてを 1 つの chunk にまとめて作成しないようにしました。ファイルシステムキャッシュの状態を読み取る処理は、大きなキャッシュの場合には長時間かかり、多くのメモリを消費する可能性があるため、大規模なデプロイメントではストリーミングが不可欠です。#90508Kseniia Sumarokova)。
  • Hive のパーティション処理における誤った例外メッセージを修正:スペースが 1 つ不足していました。 #90685 (Alexey Milovidov).
  • ベクトル類似性索引キャッシュ内のエントリは、テーブルのパーツが削除されるか、より新しいパーツに置き換えられたときに削除されるようになりました。これ以前は、キャッシュのエビクションによって、怠惰な方式でのみクリアされていました。 #90750 (Shankar Iyer).
  • chdig(コマンドライン ClickHouse 診断ツール)を v25.12.1 にバージョンアップ。 #91394Azat Khuzhin)。
  • 事前署名付きURLが S3 でも利用できるようになりました。これにより #65032 がクローズされました。#90827Yarik Briukhovetskyi)。
  • テキスト索引が ReplacingMergeTree テーブルでも利用できるようになりました。 #90908 (Elmi Ahmadov).
  • 認証前に返される HTTP エラー応答に ClickHouse サーバーのバージョンが含まれないようにしました。 #91003 (filimonov).
  • http クライアント接続の hard_limit に到達した場合、HTTP_CONNECTION_LIMIT_REACHED 例外がスローされるようになりました。ディスク接続では、この値は 20000 に設定されています。 #91016 (Sema Checherinda).
  • バックグラウンドジョブの状態をより詳細に把握できるようにするため、system.background_schedule_pool{,_log} を導入しました。 #91157 (Azat Khuzhin).
  • Web UI のクエリエディタで、現在選択している行を Ctrl+/(Mac では Cmd+/)で簡単にコメントアウト/コメント解除できるようになりました。これにより、テスト中にクエリの一部を一時的に無効化しやすくなります。 #91160 (Samuel K.).
  • system.completions を常にアクセス可能なテーブル一覧に追加しました。 #91166 (Yakov Olkhovskiy).
  • プロファイルイベント FailedInitialQueryFailedInitialSelectQuery を追加しました。 #91172 (RinChanNOW).
  • merge_tree_use_prefixes_deserialization_thread_pool SETTING を尊重し、thread pool を常に使用するのではなく設定に従うようにすることで、多数のサブカラムを持つ JSON カラムのサンプルを読み取る際に発生する可能性があったスレッドプールの枯渇を修正しました。 #91208 (Raufs Dunamalijevs)。
  • tupleElementJSON 型をサポートしました。#81630 をクローズしました。#91327Pavel Kruglov)。
  • ユーザースペースページキャッシュが有効な場合に誤検知されていたメモリ制限エラーを修正しました。 #91361 (Michael Kolupaev).
  • Ngrams tokenizer は ngram_length = 1 でビルドできるようになりました。#91529 (George Larionov).
  • SELECT ですでにサポートされているのと同様に、INSERT INTO FUNCTION で使用する関数内でもストレージ設定をサポートするようにしました。#89386 をクローズします。#91707Kseniia Sumarokova)。
  • データレイクに対する truncate クエリでは、何も行わず黙って無視するのではなく、"not implemented" をスローするようにしました。#86604 をクローズします。#91713Kseniia Sumarokova)。
  • parquet v3 リーダーで最大メッセージサイズを設定し、DB::Exception: apache::thrift::transport::TTransportException: MaxMessageSize reached が発生しないようにしました。 #91737 (Arthur Passos).
  • insert_select_deduplicate という設定を追加しました。これにより、INSERT SELECT 時の挿入の重複排除をどのように扱うかが、より明確になります。一般的には、この種のクエリに対して重複排除を行うことはできませんが、テーブルが変更されておらず、かつ結果がソートされている場合には、リトライ時に重複排除を行うことが可能です。INSERT 元が同一であることは追跡できませんが、SELECT クエリの結果がソートされているかどうかは検査できます。もっとも、一般的なケースでそれを検査するのは非常に難しいことが分かりましたが、ORDER BY ALL を用いた単純なケースであれば容易です。現時点では、ここでのロジックは実際には正しく動作していません。重複排除を試みてはいるものの、ほとんどの場合、SELECT が異なるデータを返すため、ブロック間の重複を検出できていません。#91830Sema Checherinda)。
  • Array から QBit 型へのキャスト時に暗黙の型変換を許可しました。整数および浮動小数点数の配列は、明示的な型キャストなしで QBit カラムに直接挿入できるようになりました。 #91846 (Raufs Dunamalijevs)。
  • CapnProto メッセージのサイズ上限を追加しました。format_capn_proto_max_message_size で変更できます。#91888 (Antonio Andelic)。
  • マークキャッシュのメトリクスを、クエリのみを対象として計測するように調整しました(#83415MarkCacheHits/MarkCacheMisses がマージ処理でもカウントされるように更新されましたが、この PR でその挙動を元に戻します)。#91910Azat Khuzhin)。
  • ローカル接続時に client_info.interfaceTCP に設定されてしまう問題を修正。 #91933 (Konstantin Bogdanov)
  • ACME クライアント設定の refresh_certificates_task_interval パラメータは、値を秒単位で指定する必要があります。 #92211 (Konstantin Bogdanov).
  • system.*_log のパーツに関するイベントを system.part_log に記録します。 #92217 (Azat Khuzhin).

バグ修正(公式安定版リリースにおけるユーザーに影響する不具合)

  • Time および Time64 データ型のスーパータイプに関連する PREWHERE の一部のバグを修正します。#84544 を解決します。#84715Yarik Briukhovetskyi)。
  • カスタム設定を反映できるよう、使用前に DNSResolver を初期化するようにしました。#76296 を修正。#81302Zhigao Hong)。
  • 一部のケースにおいて、名前にドットを含むカラムからサブカラムを読み取れない問題を修正しました。#81261#82058#88169 を解決します。#87205Pavel Kruglov)。
  • GenerateRandom エンジンがリテラルでない引数でクラッシュする問題を修正。LOGICAL_ERROR の代わりに、より明確なメッセージとともに BAD_ARGUMENTS を返すようにしました。 #88157 (Shafi Ahmed).
  • UNION が含まれる場合に未使用の PROJECTION カラムが削除されない問題を修正しました。 #88180 を解決します。 #88350Sema Checherinda)。
  • JOIN の最適化において、主キーが降順ソートされている場合に誤った分片が行われていた問題を修正しました。#88512 を解決します。#88794Amos Bird)。
  • s3queue_keeper_fault_injection_probablility を再度有効化し、問題を修正しました。 #88800 (Kseniia Sumarokova).
  • 有効期限 (TTL) でカラムが早期に削除されることに起因する複数の問題を修正しました。#88002 を解決します。#88860Amos Bird)。
  • temporary_files_buffer_size が 0 に設定された場合に例外をスローするようになりました。#88900 を修正します。 #88917Vladimir Cherkasov)。
  • 述語に NULL 定数が含まれている場合に、Set 索引の解析中に発生していた Bad get エラーを修正しました。これにより、#84856 および #82974 が解決されています。 #89429Nikolai Kochetov)。
  • エラー Cannot add subcolumn X.Y: column with this name already exists を修正。#89599 を解決。#89602Azat Khuzhin)。
  • theilsU 関数および contingency 関数で誤った結果が生じる原因となっていたバグを修正しました。 #89760 (Nihal Z. Miaji)。
  • エイリアスの安定性に関する問題を修正: SharedDatabaseCatalog 使用時の StrictnessLevel を修正し、ターゲットとして別のエイリアスを指定することを禁止し、さらに追加のインターフェース (getSerializationHints, supportsReplication, getStoragePolicy, totalBytesUncompressed, lifetimeRows, lifetimeBytes, storesDataOnDisk, tryLockForShare, lockForShare) を実装しました。 #89106 を解決。 #89812Kai Zhu)。
  • IN 内に ARRAY JOIN があり、enable_lazy_columns_replication 設定が有効な場合に、リモートクエリの実行中に発生する可能性のあるクラッシュを修正しました。#90361 を解決します。#89997 (Pavel Kruglov)。
  • 複数の JOIN を行う際に analyzer_compatibility_join_using_top_level_identifier を使用した場合に発生する可能性のある論理エラーを修正。#90010Vladimir Cherkasov)。
  • 一部のケースでテキスト形式の文字列から誤った DateTime64 値が推論される問題を修正しました。#89368 を解決します。 #90013Pavel Kruglov)。
  • 集計状態やその他のソースからデータをデシリアライズする際にサイズを検査するようにしました。 #90031 (Raúl Marín).
  • ボリュームの特性に基づいてパーツのレンジを分割し、コールドボリュームに対する有効期限 (TTL) に基づくドロップマージを有効化しました。このパッチ適用後は、最大 TTL が現在時刻より前のパーツはコールドストレージから削除されます。アルゴリズムは 単一パーツのドロップ のみをスケジュールします。 #90059 (Mikhail Artemenko)。
  • kafka_handle_error_mode = 'dead_letter_queue' という設定を指定して Kafka テーブルを作成した場合に、テーブル system.dead_letter_queue が構成されていないとサーバーがクラッシュすることがありました。この問題を修正しました。#87573 を解決します。#90064Nikita Mikhaylov)。
  • ARRAY JOIN を使用した挿入時に、enable_lazy_columns_replication 設定が有効な場合に発生する可能性がある Column with Array type is not represented by ColumnArray column: Replicated というエラーを修正しました。#90066 (Pavel Kruglov)。
  • 誤った破棄順序が原因で、サーバーの正常なシャットダウン時に発生していたクラッシュを修正しました。#82420 を解決します。 #90076 (Nikita Mikhaylov)。
  • ステップサイズが大きい場合に numbers システムテーブルで発生する論理エラーと剰余演算のバグを修正しました。#83398 をクローズします。#90123Nihal Z. Miaji)。
  • ネイティブ writer を用いた単一スレッドでの書き込み時に、Parquet への書き込みで元の順序が保持されない問題を修正しました。 https://github.com/ClickHouse/ClickHouse/pull/64424/files の一部を取り消します。 #90126 (Arthur Passos)。
  • LIMIT/OFFSET 式には定数ノードの最適化を適用しないようにしました。#89607 を修正しました。#90156Yakov Olkhovskiy)。
  • Hive パーティション分割の非互換性を修正し、25.8 への円滑なアップグレードを可能にしました(アップグレード時に発生していたエラー All hive partitioning columns must be present in the schema を解消)。 #90202 (Kseniia Sumarokova).
  • Glue カタログを使用している場合に、timestamp カラムを含む Iceberg テーブルで JSON 例外が発生する問題を修正。#90210 を解決。#90209Alsu Giliazova)。
  • part が持つ行数が index_granularity より少ない場合に、MergeTreeReaderIndex で行数の不整合が発生する問題を修正しました。#89691 を解決します。#90254Peng Jian)。
  • nan/inf の無限値を含む WITH FILL クエリの不具合を修正しました。#69261 を解決します。#90255Konstantin Bogdanov)。
  • query_plan_use_logical_join_step=0 および JOIN の ON 句における残余条件で発生する「column not found」エラーを修正。 #88635 を解決。 #90279Vladimir Cherkasov)。
  • 集約 PROJECTION の最適化を使用する一部のクエリを修正しました。 #90288 (János Benjamin Antal).
  • コンパクトパーツにおける JSON からのサブカラム読み取り処理のバグを修正しました。このバグにより CANNOT_READ_ALL_DATA エラーが発生する可能性がありました。 #90264 を解決します。 #90302Pavel Kruglov)。
  • manifest ファイルでソート順が指定されていない(またはテーブルの default_sort_order と一致していない)場合、ClickHouse は Iceberg に対して read-in-order 最適化を使用しなくなりました。 #89178 を修正しました。 #90304alesapin)。
  • Time および Time64 が、DateTime および DateTime64 からの変換の際にタイムゾーンを正しく扱うようになりました(DateTime[64] としてユーザーに表示される場合と同じタイムゾーンで時刻が表示されます)。#89896 を解決しました。 #90310Yarik Briukhovetskyi)。
  • SELECT CAST(CAST(now(), 'Time'), 'Time64') が誤った結果を返していた不具合を修正しました。#88349 をクローズしました。#90324Yarik Briukhovetskyi)。
  • randomStringUTF8 で整数オーバーフローが発生した際にクラッシュする問題を修正しました。 #90326 (Michael Kolupaev).
  • multicluster_root_path を使用するマルチクラスタ構成で、クラスタディスカバリの更新が遅延したり ZooKeeper の更新が欠落したりしないように修正しました。 #90341 (RinChanNOW)。
  • 存在しない JSON パスに対する prewhere 句で、index_granularity_bytes=0 の場合に発生しうる潜在的な論理エラーを修正しました。#86924 を解決します。 #90375Pavel Kruglov)。
  • L2DistanceTransposed において、precision 引数が有効な範囲を超えた場合にクラッシュしていたバグを修正しました。 #90401 をクローズ。 #90405Raufs Dunamalijevs)。
  • Array(Dynamic) を引数に取る arrayUnion で発生する可能性のある論理エラーを修正しました。#90270 を解決します。#90409Pavel Kruglov)。
  • 1つの ALTER 文内で同一の Nested カラムをリネームおよび変更する際に発生しうる論理エラーを修正しました。#90406 を解決します。#90412Pavel Kruglov)。
  • HTTP パラメータからの JSON/Dynamic/Variant 値のパース処理を修正。#88925 を解決。#90430Pavel Kruglov)。
  • Hive のパーティション処理において、静的な KeyValuePairExtractor が原因でファイルの同時読み取り時にデータ破損やクラッシュを引き起こしていたレースコンディションを修正しました。 #90474 (Paresh Joshi).
  • 配列の参照ベクトル(デフォルトでは Array(Float64))と、要素型が Float64 ではない(Float32BFloat16QBit カラムを組み合わせて使用した場合に、L2DistanceTransposed で誤った距離計算が行われていた問題を修正しました。この関数は現在、参照ベクトルを QBit の要素型に合わせて自動的にキャストするようになりました。#89976 を解決します。#90485Raufs Dunamalijevs)。
  • 負の引数を渡した場合に toDateTimeOrNull が NULL を返してしまうバグを修正しました。 #90490 (Yarik Briukhovetskyi)。
  • Arrow フォーマットでの LowCardinality(Bool/Date32) の出力時に発生し得た論理エラーを修正しました。#83883 を解決します。#90505Pavel Kruglov)。
  • 一部の不正な入力に対して不正な値を返していた IPv4 解析関数(例: IPv4StringToNumOrDefault)を修正しました。#90544 を解決しました。#87583 を解決しました。#90545Michael Kolupaev)。
  • ローカルホストチェック中にアドレス解決に失敗した場合に markReplicasActive を再試行するよう変更: DDLTask における自己ホストチェック中に例外が発生した場合、警告ログを出力します。DDLWorker::markReplicasActive では、ローカルホストが見つからず、かつクラスタ内にホスト ID が存在する場合に、再試行のための例外をスローします。 #90556 (Tuan Pham Anh)。
  • equals 関数のまれなケースが原因で発生していた論理エラーを修正。#88142 をクローズ。#90557Nihal Z. Miaji)。
  • おそらく test_ssh/test.py::test_paramiko_password における ThreadSanitizer のクラッシュを修正しました。 #90612 (Govind R Nair)。
  • concatWithSeparator 関数で、非文字列の定数カラムを使用した場合に発生する論理エラーを修正。#90596 をクローズ。#90655Nihal Z. Miaji)。
  • INTO OUTFILE のフォーマットを修正し、#90207 を解決しました。#90656Azat Khuzhin)。
  • allow_statistics_optimize=1 が有効な状態でサブクエリを含む mutation を実行した際に発生しうるクラッシュを修正しました。#90626 を解決します。#90664Azat Khuzhin)。
  • GROUP BY と併用した LIMIT BY に対するアナライザーの検証ロジックを修正し、LIMIT BYGROUP BY に含まれないカラムを使用している場合に、NOT_FOUND_COLUMN_IN_BLOCK ではなく正しいエラー NOT_AN_AGGREGATE を返すようにしました。#89713 をクローズ。#90665xiaohuanlin)。
  • LowCardinality カラムをパーティションキーで使用する際に発生する型キャストエラーを修正しました。 #89412 をクローズしました。 #90666xiaohuanlin)。
  • shardNum() などの非決定論的関数から折り畳まれた定数を含むフィルタ述語を持つクエリが、誤ってクエリ条件キャッシュを使用してしまう問題を修正しました。 #90692 (Eduard Karacharov).
  • JOIN の ON 句で EXISTS 関数を使用するクエリで発生していたセグメンテーションフォルトを修正しました。クエリは単に INVALID_JOIN_ON_EXPRESSION エラーを返すようになりました。#90698 をクローズしました。 #90719Vladimir Cherkasov)。
  • デフォルトデータベースをテーブルなしで使用した場合に AccessRightsElement で発生していた論理エラー 'Inconsistent AST formatting' を修正。#90742Pablo Marcos)。
  • remote テーブル関数でターゲットホストとして localhost を使用した場合の ALTER UPDATE クエリに対するアクセス権限の検証処理を修正しました。 #90761 (pufit).
  • named collections のシークレットの非表示動作が display_secrets_in_show_and_selectformat_display_secrets_in_show_and_select に依存するよう修正しました。 #90765 (Pablo Marcos).
  • enable_shared_storage_snapshot_in_query を無効化(メモリリークを引き起こすため)。 #90770 (Azat Khuzhin)。
  • parallel replicas が有効な状態で RIGHT JOIN と分散テーブルを使用した際に発生する重複データの問題を修正。 #90806 (zoomxi).
  • JSON 内の共有データおよび動的パスが不整合な状態となり、論理エラーや予期しない結果を引き起こす可能性があった問題を修正しました。 #90816 (Pavel Kruglov).
  • SharedCatalog(Cloud 専用機能)の CSE における、dictGet() と辞書名を含む ALTER MODIFY QUERY の問題を修正。 #90860 (Azat Khuzhin).
  • String 集約状態のインメモリシリアライズ処理の互換性を修正しました。シリアライズ形式が異なると、異なるバージョンのインスタンスで同じ集約クエリを実行した場合に、結果が重複する可能性がありました。新しいシリアライズ方式は serialize_string_in_memory_with_zero_byte で有効化できます。 #90880 (Antonio Andelic)。
  • 頻繁に INSERT が行われる場合の Buffer のバックグラウンドでのフラッシュ処理を修正。 #90892 (Azat Khuzhin).
  • system.licenses に contrib/ の親フォルダを表示しないようにしました。 #90901 (Raúl Marín).
  • JSON/Dynamic/Variant カラムの読み取り時にメモリ使用量が高くなる問題を修正。 #90907 (Pavel Kruglov).
  • base58Decode 関数のバッファ割り当てを修正しました。 #90909 (Antonio Andelic)
  • finish=true フラグ付きのレスポンス送信後に、レプリカから別の読み取りリクエストを受信した場合に発生する可能性のあった論理エラーを修正しました。これは MergeTreeReadPoolParallelReplicas 内の論理的なレースコンディションが原因でしたが、実際に発生する可能性は非常に低いものでした。 #90921 (Nikita Taranov)。
  • 部分的な権限取り消し時のワイルドカード権限チェックを修正し、テストをさらに追加。 #90922 (pufit).
  • Nested LowCardinality カラムに対する SummingMergeTree 集約を修正しました。 #90927 (Ivan Babrou)。
  • ワイルドカードを用いた取り消し時のグローバル権限の扱いを修正。ワイルドカードで付与された権限を取り消した際に、CREATE USER のようなグローバルレベルの権限まで誤って取り消されてしまう問題を修正。 #90928 (pufit).
  • Azure の Blob 一覧取得時に発生し得る無限ループを修正。 #90947 (Julia Kartseva).
  • 過剰な Buffer フラッシュを修正しました(CPU を無駄に消費し、大量のログを出力していました)。 #91000 (Azat Khuzhin).
  • ... adaptive_write_buffer_initial_size を 0 に設定することを禁止しました。 #91001 (Pedro Ferreira)。
  • Compact パーツで write_marks_for_substreams_in_compact_parts が無効になっている場合に、JSON のサブオブジェクト読み取り中、パスが共有データと動的パスの両方になり得るケースで発生していたバグを修正。 #91014 (Pavel Kruglov).
  • 引数なしの dictGet を含む CTE で発生する std::out_of_range 例外を修正。#91027 をクローズ。#91022Pavel Kruglov)。
  • ミューテーションでマテリアライズドカラムから動的サブカラムを読み取る処理を修正しました。#90653 をクローズしました。#91040Pavel Kruglov)。
  • 空配列と isNull 関数を併用した場合に arrayFilter 関数が動作しない問題を修正しました。#73849 をクローズしました。#91105Nihal Z. Miaji)。
  • テーブルのカラムのいずれかが空のタプル型カラムである場合に ARRAY JOIN で発生していた論理エラーを修正。#90801 をクローズ。#91123Nihal Z. Miaji)。
  • 古いパーツに対して alter add column で追加されたカラムが遅延マテリアライズされる問題を修正。 #91142 (Pavel Kruglov)。
  • Summing/Aggregating/Coalescing MergeTree における JSON カラムのマージ処理を修正しました。以前は、パーツへの書き込み時に予期しない動的なパスが発生する可能性がありました。 #91151 (Pavel Kruglov).
  • コンパクトなパーツへの書き込み時に、セグメンテーションフォルトを引き起こす可能性のある動的構造の不整合を修正しました。 #91152 (Pavel Kruglov).
  • 指数表記で表現されたサブノーマルな浮動小数点数の解析を修正しました。#78903 をクローズします。#91162Nihal Z. Miaji)。
  • 暗黙的スキーマを持つソースからのサブクエリを用いた INSERT SELECT におけるスキーマ推論の誤りを修正。 #91204 (Pervakov Grigorii)。
  • https://github.com/clickhouse/clickhouse/issues/91206 を修正しました。統計情報付きでテーブルを作成し、データを書き込み、その後統計情報の一つを削除すると、再度読み込む際にクラッシュしていました。これは、シリアライズとデシリアライズで同じ型の統計情報が存在することを前提としていたためです。この修正では、現在のメタデータにシリアライズ済みの統計情報が含まれているかを確認し、含まれていない場合はダミーの統計情報を作成してデシリアライズのみを行い、その統計情報をスキップするようにしました。 #91227 (Han Fei)。
  • CoalescingMergeTree のカラムへ JSON/Dynamic と LowCardinality から成る Tuple を挿入する際の不具合を修正しました。 #91215 をクローズしました。 #91270Pavel Kruglov)。
  • SYSTEM DROP FILESYSTEM CACHE ON CLUSTER の不具合を修正。 #91304 (Anton Ivashkin).
  • 論理エラー「Bad cast from type DB::ColumnSparse to DB::ColumnNullable」が発生する可能性があった問題を修正しました。 #91284 をクローズしました。 #91309Pavel Kruglov)。
  • 悪意を持って細工されたバイトストリームが、本来は不可能なはずのネストした QBit 型としてデシリアライズされることでサーバーがクラッシュする問題を修正しました。これは悪用されるとサーバーをクラッシュさせることに利用される可能性がありました。 #91313 (Raufs Dunamalijevs).
  • Replicated データベースにおいて引数が空の Alias テーブルの問題を修正。#91378 を解決。#91382Kai Zhu)。
  • この設定は現在 false に設定されているため、非同期挿入キューがリモートサーバーにフラッシュされる際には、挿入は常に同期的に実行されます。ユーザーごとにこの設定が True にされている場合でも同様です。 #91386 (Mikhail f. Shiryaev).
  • マージアルゴリズムのヘッダーからスパースカラムを削除しました。 #91377 をクローズ。 #91396Pavel Kruglov)。
  • 25.8 における Hive パーティショニングのバグを修正しました。このバグにより、本来は発生すべきでない例外 A hive partitioned file can't contain only partition columns が誤ってスローされてしまう可能性がありました。 #91403 (Kseniia Sumarokova).
  • Dictionary タイプが Hierarchy をサポートしているにもかかわらず、どのカラムも HIERARCHICAL ではない場合に、NULL が原因で dictGetDescendants がクラッシュする問題を修正しました。#92026 および #92121 をクローズ。#91420Nihal Z. Miaji)。
  • IN 関数でラムダ式と非定数タプル引数が使用された場合にクラッシュする問題を修正しました。#91379 をクローズしました。 #91446Nihal Z. Miaji)。
  • MaterializedView への挿入によって、並列書き込みをサポートしないストレージで並列書き込みが開始されてしまう問題を修正しました。 #91449 (Pervakov Grigorii).
  • Ytsaurus の XML 辞書における null 値の処理を修正しました。 #91465 (MikhailBurdukov).
  • SET param_q=[1,2,3,4]; SELECT {q:QBit(Float32,4)} のようなクエリパラメータを使用した場合に QBit 型でエラーが発生する問題を修正しました。 #91488 (Raufs Dunamalijevs).
  • 定数式で untuple が使用された場合に LOGICAL_ERROR が発生する問題を修正。 #91507 (Pervakov Grigorii).
  • librdkafka においてデータレースが発生する可能性のあった問題を修正しました。 #91521 (János Benjamin Antal)。
  • remote 関数のアスタリスク引数が原因で発生していた論理エラーを修正しました。#90568 をクローズ。#91524Nihal Z. Miaji)。
  • Date 型および DateTime64 型に対して ORC フォーマットから読み込む際に発生していたオーバーフローを修正しました。#70976 をクローズ。#91572Yarik Briukhovetskyi)。
  • Object Storage テーブルエンジンに対する ALTER を禁止しました。たとえば、ALTER ADD PROJECTION を実行すると、Object Storage エンジンは PROJECTION をサポートしていないため、サーバーを再起動できなくなる可能性がありました。 #91573 (Nikolay Degterinsky).
  • 非定数の参照ベクトル(例: テーブル由来のもの)を使用した場合に L2DistanceTransposed が誤った結果を返す問題を修正しました。#91517#91593Raufs Dunamalijevs)。
  • ディスパッチ段階で FALSE 条件の JOIN を行うと LOGICAL_ERROR が返されるバグを修正しました。#91173 をクローズ。#91598Yarik Briukhovetskyi)。
  • "additional filter" を伴う join で発生していたメモリ使用量増加の問題を修正し、#91011 をクローズしました。#91664 (Vladimir Cherkasov).
  • VIEW を使用し、並列レプリカを有効にした状態での JOIN クエリを修正しました。 #91813 (Igor Nikonov)。
  • Delta Lake の設定 delta_lake_snapshot_version を修正しました。この設定は、テーブルエンジン(テーブル関数ではない)で、以前にスナップショットバージョンを使用した後に値 -1(無効)を指定して使用すると、不正な結果を返す可能性がありました。 #87676 をクローズ。 #91818Kseniia Sumarokova)。
  • RecursiveCTEChunkGenerator で発生する LOGICAL_ERROR を修正。 #91827 (Pablo Marcos).
  • FINAL と PREWHERE を使用するクエリで発生していたブロック構造の不整合を修正。 #91847 (Antonio Andelic).
  • join_use_nulls を複数の JOIN および CROSS JOIN と併用した際の論理エラーを修正。 #91853 (Vladimir Cherkasov).
  • 共有データおよび動的パスにおいてパスが重複した JSON を修復するための機構を追加しました。これは、https://github.com/ClickHouse/ClickHouse/pull/90816 で修正されたバグが原因で発生する可能性がありました。#91886 (Pavel Kruglov)。
  • DICTIONARY_V2 でエンコードされ、NULL 値のみを含む文字列カラムを読み取る際の ORC リーダーのバグを修正しました。 #91889 (Peng Jian).
  • Tuple カラムにおけるスパースおよび Nullable サブストリーム間のシリアライズの不整合を修正しました。この不整合により、読み取り中にパーツが破損したりクラッシュしたりする可能性がありました。この修正は https://github.com/ClickHouse/ClickHouse/pull/91851 に対応するものです。@Algunenano この変更でプライベートリポジトリ内のストレステストが解消されるか確認してもらえますか?@CurtizJ こちらも合わせてご確認いただけますか?ありがとうございます。 #91932 (Amos Bird)。
  • plain-rewritable ディスク上でバックアップを作成する際に発生するエラー Directory '{}' does not exist (LOGICAL_ERROR) を修正しました。 #91935 (Julia Kartseva).
  • 名前付きコレクションを使用して MongoDB に接続する際にクラッシュしないように修正。 #91959 (Antonio Andelic).
  • コンパクトなパーツに対して一部の ALTER クエリを実行した後に発生する可能性があった「TOO_MANY_MARKS」エラーを修正しました。 #91980 (alesapin).
  • https://github.com/clickhouse/clickhouse/issues/87417 をクローズ。v1 フォーマットの書き込みスキーマに誤りがありました。必須項目であるため、"added_snapshot_id" の型は "null, long" ではなく "long" であるべきです。これにより Spark など他のシステムとの互換性がなくなっていたため、バグとなっていました。マニフェストファイルを混在させると、このバグが発生します。#92078Han Fei)。
  • 以前のバージョンで命名スタイルが誤っていた readWKTreadWKB の名称を修正しました。 #92094 (Alexey Milovidov)。
  • midpoint 関数における多数の論理エラー、オーバーフロー、および機能上の不具合を修正しました。#91816 をクローズしました。#92102Nihal Z. Miaji)。
  • 特定のサブカラム(例: 文字列サイズ)をスパースエンコーディングを使用して読み取る際に誤った結果が返されることがあった問題を修正しました。 #92156 (Pavel Kruglov)。
  • system.view_refreshesNo macro 'replica' in config エラーで失敗する不具合を修正しました。 #92203 (Michael Kolupaev).
  • フォーマット処理における UDF replace の問題を修正。 #92210 (Raúl Marín).
  • ddlworker::markreplicasactive でアクティブなホストが見つからず、かつ remote_servers にいくつかの host_ids が存在する場合、例外を投げる代わりに警告ログを出力するようにしました。 #92223 (Tuan Pham Anh)。
  • 演算子 IN および NOT IN を丸括弧で囲むようにしました。#85075 を修正。#92225Mikhail f. Shiryaev)。
  • KeeperMap と Memory テーブルのバックアップ処理を修正しました。これら 2 つのエンジンのいずれかを使用するテーブルで max_compress_block_size0 に設定してバックアップを作成すると、クラッシュする可能性がありました。 #92237 (Antonio Andelic)。
  • Log エンジンから String 型データと .size サブカラムの両方を読み込む際にクラッシュする問題を修正しました。これにより #89909 が修正されます。これには #92290 の一部のコミットが含まれます。#92341Amos Bird)。
  • caseWithExpression 関数の引数で Nothing 型を使用したことにより発生していた論理エラーを修正しました。#85354 をクローズしました。#92351Nihal Z. Miaji)。
  • MEMORY_LIMIT_EXCEEDED 発生後に集約関数がクラッシュする可能性があった問題を修正しました。 #92390 (Azat Khuzhin).

ビルド/テスト/パッケージングの改善

ClickHouse リリース 25.11(2025-11-27)

後方互換性のない変更

  • 非推奨となっていた Object 型を削除しました。#85718 (Pavel Kruglov)。
  • 廃止予定だった LIVE VIEW 機能を削除しました。LIVE VIEW を使用している場合は、新しいバージョンへのアップグレードはできません。#88706 (Alexey Milovidov)。
  • 以前のバージョンでは Geometry 型は String へのエイリアスでしたが、現在は独立したフル機能の型になりました。#83344 (scanhex12)。
  • MergeTree テーブルの Wide 形式のデータパートにおける Variant 型サブカラム向けに作成されるファイル名をエスケープするようにしました。この変更により、Variant/Dynamic/JSON データ型を持つ古いテーブルとの互換性が失われます。この変更は、Variant 内に特殊記号を含む型(\ を含む特定のタイムゾーンを持つ DateTime など)の保存の問題を修正します。エスケープは、MergeTree の設定 escape_variant_subcolumn_filenames を変更することで無効化できます(互換性を維持するには、MergeTree 用の設定ファイルでこの設定を無効にするか、アップグレード前に compatibility 設定を以前のバージョンに設定してください)。#69590 を解決します。#87300 (Pavel Kruglov)。
  • 既定で String データ型に対して with_size_stream シリアル化形式を有効にしました。この変更は後方互換性がありますが、新しいシリアル化形式はバージョン 25.10 以降でのみサポートされているため、25.10 より前のバージョンへのダウングレードはできません。25.9 以前へのダウングレードの可能性を残したい場合は、サーバー設定の merge_tree セクションで serialization_info_versionbasic に、string_serialization_versionsingle_stream に設定してください。#89329 (Alexey Milovidov)。
  • クライアントが例外をより確実に解析できるように、HTTP レスポンス結果に対する例外タグ付けをサポートしました。#75175 を解決します。設定 http_write_exception_in_output_format は、フォーマット間の一貫性のためデフォルトでは無効になっています。#88818 (Kaviraj Kanagaraj)。既存の動作を壊さない想定ではあります(最悪の場合でも例外メッセージに奇妙な文字列が追加されるだけです)が、注意喚起の意味から、変更ログのカテゴリとしては「Backward Incompatible Change」を使用するのが妥当です(例外メッセージをどのような「雑な」スクリプトがパースしているか分からないためです)。
  • 共有オブジェクトストレージパス上に複数の plain-rewritable ディスクを作成することを禁止しました。これは、異なるメタデータストレージトランザクション間で衝突が発生した際に未定義の動作を引き起こす可能性があるためです。#89038 (Mikhail Artemenko)。
  • Kafka ストレージの SASL 設定の優先順位を修正しました。CREATE TABLE クエリで指定されたテーブルレベルの SASL 設定が、設定ファイルにある consumer/producer 固有の設定を正しく上書きするようになりました。#89401 (János Benjamin Antal)。
  • Parquet のタイムゾーンなしタイムスタンプ(isAdjustedToUTC=false)は、これまでの DateTime64(...) ではなく DateTime64(..., 'UTC') として読み込まれるようになりました。これは、UTC タイムスタンプを文字列に変換したときに正しいローカル時刻の表現が得られるという点で、従来よりも誤りが少ない動作です。以前の動作を再現するには input_format_parquet_local_time_as_utc = 0 を使用してください。#87469 を解決します。#87872 (Michael Kolupaev)。
  • T64 コーデックに対する小さな改善として、圧縮要素サイズと整列していないデータ型を受け付けないようにしました。そうしないとバグが発生するためです。#89282 を解決します。#89432 (yanglongwei)。

新機能

  • Geometry 型を導入しました。Geometry 型に対して WKB および WKT 形式での読み取りをサポートします。以前のバージョンでは Geometry 型は String のエイリアスでしたが、現在はフル機能の独立した型になりました。#83344 (scanhex12).
  • ユーザーのなりすまし(impersonation)をサポートするために、新しい SQL ステートメント EXECUTE AS を追加しました。#39048 を解決しました。#70775Shankar)。
  • naiveBayesClassifier 関数を追加し、n-gram に基づくナイーブベイズ法でテキストを分類できるようにしました。 #88677 (Nihal Z. Miaji)。
  • テーブルの一部を割合で抽出できるよう、小数の LIMIT および OFFSET をサポートしました。#81892 をクローズ。#88755Ahmed Gouda)。
  • Microsoft OneLake カタログ向け ClickHouse のサブシステム。 #89366 (scanhex12).
  • 配列内の必要な数の次元をアンラップし、Tuple カラム内のポインタを入れ替える flipCoordinates 関数を追加しました。#79469 を解決しました。#79634Sachin Kumar Singh)。
  • Unicode 文字とそのプロパティの一覧を含む system.unicode テーブルを追加しました。#80055 をクローズしました。 #80857 (wxybear).
  • マージ後の Wide パートにおける動的サブカラム数を、データ型で指定されたパラメータに関係なく制限できるようにするため、新しい MergeTree 設定 merge_max_dynamic_subcolumns_in_wide_part を追加しました。 #87646 (Pavel Kruglov)。
  • cume_dist ウィンドウ関数のサポートを追加し、#86920 を修正しました。 #88102 (Manuel)。
  • テキスト索引の構築時に、新しい引数 preprocessor を追加できるようになりました。この引数には、トークン化の前に各ドキュメントを変換する任意の式を指定できます。 #88272 (Jimmy Aguilar Mena)。
  • X-ClickHouse-ProgressX-ClickHouse-Summarymemory_usage フィールドを追加しました。これにより、クライアント側でクエリのメモリ使用量をリアルタイムに収集できます。 #88393 (Christoph Wurm)。
  • INTO OUTFILE のために親ディレクトリを自動作成し、出力パスが存在しない場合のエラーを防ぐ setting into_outfile_create_parent_directories を追加しました。これにより、クエリが結果を階層化されたディレクトリに書き込むワークフローが簡素化されます。#88610 を解決しました。#88795Saksham)。
  • 一時テーブル向けの CREATE OR REPLACE 構文をサポートしました。#35888 をクローズ。#89450Aleksandr Musorin)。
  • 配列 arr から elem と等しいすべての要素を削除するための arrayRemove のサポートを追加しました。これは Postgres との互換性のためだけに必要なもので、ClickHouse にはすでにそれよりはるかに強力な arrayFilter 関数があります。#52099 を解決しました。#89585tiwarysaurav)。
  • 平均値を計算するスカラー関数 midpoint を追加。#89029 を解決。#89679simonmichal)。
  • Web UI にダウンロードボタンが追加されました。UI には結果の一部しか表示されていない場合でも、このボタンから結果全体をダウンロードできます。 #89768 (Alexey Milovidov)。
  • arrow_flight_request_descriptor_type SETTING を追加し、コマンド形式の descriptor を要求する Dremio およびその他の Arrow Flight サーバーをサポート。#89523 を実装。#89826Shreyas Ganesh)。
  • 引数と対応する極値を返す新しい集約関数 argAndMinargAndMax を追加しました。以前のバージョンでは、引数としてタプルを使用することで同様のことも実現できました。 #89884 (AbdAlRahman Gad)。
  • Parquet チェックサムの書き込みおよび検証用の設定を追加。 #79012 (Michael Kolupaev).
  • Kafka テーブルエンジンに kafka_schema_registry_skip_bytes 設定を追加し、メッセージペイロードをパースする前にエンベロープヘッダーのバイト列(例: AWS Glue Schema Registry の 19 バイトのプレフィックス)をスキップできるようにしました。これにより、メタデータヘッダーを追加するスキーマレジストリから ClickHouse がメッセージを消費できるようになります。 #89621 (Taras Polishchuk).
  • h3PolygonToCells 関数を追加しました。これにより、ジオメトリ領域を H3 の六角形セルで埋めることができます。 #33991 を解決しました。 #66262Zacharias Knudsen)。
  • S3 内の BLOB に関連付けられているすべてのタグを含む新しい仮想カラム _tags (Map(String, String)) を追加しました(なお、BLOB にタグがない場合は追加のリクエストは発生しません)。#72945 を解決。#77773Zicong Qu)。

実験的機能

  • Let's Encrypt などの ACME プロバイダから TLS 証明書を取得する機能をサポートしました(RFC 8555)。これにより、分散クラスタ上で TLS を自動的に設定できるようになります。 #66315 (Konstantin Bogdanov).
  • Prometheus HTTP Query API の一部をサポートしました。有効化するには、設定ファイルの <prometheus> セクションに型が query_api のルールを追加します。サポートされるハンドラは /api/v1/query_range/api/v1/query です。 #86132 (Nikita Mikhaylov).
  • フルテキスト検索が(従来の実験的段階から)ベータ版になりました。 #88928 (Robert Schulze).
  • Alias を実験的機能に移行しました。allow_experimental_alias_table_engine = 1 を設定することで有効化できます。 #89712 (Kai Zhu).

パフォーマンスの向上

  • Parquet リーダー v3 がデフォルトで有効です。 #88827 (Michael Kolupaev).
  • 分散実行: タスクをファイル単位ではなく行グループ ID 単位で分割するように改善。 #87508 (scanhex12).
  • RIGHT および FULL JOIN が ConcurrentHashJoin を使用するようになりました。これにより、これらの種類の JOIN はより高い並列度で実行されます。さまざまな RIGHT および FULL JOIN を含むケースで、性能が最大 2 倍向上します。#78027 を解決しました。 #78462Yarik Briukhovetskyi)。
  • クエリ内の定数式で扱う大きな値の最適化。#72880 をクローズ。#81104Yakov Olkhovskiy)。
  • 1万以上のパーツを持つテーブルに対してパーティションプルーニングを多用する SELECT クエリが最大8倍高速になりました。 #85535 (James Morrison)。
  • クエリが集約状態に fixed hash map を使用する場合(小さな整数での GROUP BY)、ClickHouse はクエリを高速化するために集約状態のマージを並列化します。 #87366 (Jianfei Hu).
  • _part_offset の SELECT と異なる ORDER BY を使用する PROJECTION をセカンダリインデックスとして利用できるようにしました。有効化すると、一部のクエリ述語に対しては、PROJECTION のパーツから読み取り、PREWHERE フェーズで行を効率的にフィルタリングするためのビットマップを生成できるようになります。これは、#80343 に続く、PROJECTION INDEX 実装の第 3 段階です。#81021Amos Bird)。
  • まれな Aarch64 システムおよび、他のアーキテクチャ/カーネルの組み合わせでも発生し得る問題に対して、VDSO を修正しました。 #86096 (Tomas Hulata).
  • コードの単純化と選択アルゴリズムの調整により、LZ4 伸張の速度を向上しました。 #88360 (Raúl Marín).
  • S3 は内部的にキー名プレフィックスに基づいてオブジェクトをパーティション分割し、パーティションごとの高いリクエストレートに自動的にスケールします。この変更により、2 つの新しい BACKUP 設定 data_file_name_generatordata_file_name_prefix_length が追加されました。data_file_name_generator=checksum の場合、バックアップデータファイルはその内容のハッシュに基づいて命名されます。例: checksum が abcd1234ef567890abcd1234ef567890 で、data_file_name_prefix_length = 3 の場合、生成されるパスは abc/d1234ef567890abcd1234ef567890 となります。このようなキーの分布により、S3 のパーティション間での負荷分散が強化され、スロットリングのリスクが低減します。 #88418 (Julia Kartseva)。
  • Dictionary ブロックのキャッシュと、トークン検索に二分探索ではなくハッシュテーブルを使用することで、テキスト索引のパフォーマンスを向上しました。 #88786 (Elmi Ahmadov).
  • クエリで optimize_read_in_orderquery_plan_optimize_lazy_materialization の両方を同時に利用できるようになりました。#88767 を解決しました。#88866Manuel)。
  • DISTINCT を含むクエリに対して集約プロジェクションを使用するようにしました。 #86925 をクローズしました。 #88894Nihal Z. Miaji)。
  • 連続した実行でのパフォーマンスを向上させるため、posting list をキャッシュするようにしました。 #88912 (Elmi Ahmadov).
  • 入力のソート順が LIMIT BY キーと一致する場合に、ストリーミング LIMIT BY 変換を実行するようにしました。 #88969 (Eduard Karacharov).
  • 特定の状況で、ANY LEFT JOIN または ANY RIGHT JOINALL INNER JOIN に書き換えられるようになりました。 #89403 (Dmitry Novik).
  • ログ出力時のオーバーヘッドを削減し、エントリごとのアトミック操作数を減らしました。 #89651 (Sergei Trifonov).
  • 複数の JOIN を含むクエリでランタイムフィルタが有効な場合に、複数のランタイムフィルタが追加されたとき、新しく追加されたフィルタステップが他のステップより前にプッシュダウンされるように実装しました。 #89725 (Alexander Gololobov).
  • ハッシュテーブルのマージ時のオーバーヘッドを削減することで、いくつかの uniqExact 操作をわずかに高速化しました。 #89727 (Raúl Marín).
  • 遅延マテリアライゼーションで処理される行数の上限を 10 から 100 に引き上げました。 #89772 (Alexey Milovidov)。
  • allow_special_serialization_kinds_in_output_formats の設定をデフォルトで有効化しました。これにより、一部の行形式の出力フォーマットで Sparse/Replicated カラムを出力する際のメモリ使用量が減少し、クエリの処理速度が向上します。 #89402 (Pavel Kruglov).
  • ALTER TABLE ... FREEZE クエリでの並列実行を追加しました。 #71743 (Kirill).
  • bcrypt 認証にキャッシュを追加。 #87115 (Nikolay Degterinsky).
  • FINAL を指定したクエリで使用されるスキップ索引が、プライマリキーを構成するカラム上にある場合、他のパーツに対してプライマリキーの交差を確認する追加ステップは不要となり、現在は実行されなくなりました。 #85897 を解決しました。 #88368Shankar Iyer)。
  • 最適化オプション enable_lazy_columns_replication がデフォルトになったため、JOIN 時のメモリ使用量を削減できます。#89316Alexey Milovidov)。
  • パーツ向けにテーブル単位の ColumnsDescription キャッシュを導入し、多数のパーツと多数のカラムを含むテーブルでのメモリ使用量を削減します。 #89352 (Azat Khuzhin)。
  • テキスト索引のデシリアライズされたヘッダー向けキャッシュを導入し、I/O を削減してクエリパフォーマンスを向上しました。キャッシュは次の新しいサーバー設定で構成できます: - text_index_header_cache_policy - text_index_header_cache_size - text_index_header_cache_max_entries - text_index_header_cache_size_ratio#89513 (Elmi Ahmadov)。

改良

  • use_variant_as_common_type が設定されている場合、必要に応じて UNIONVariant 型に型を統一するようになりました。#82772 を解決。#83246Mithun p)。
  • SQL で定義されたロールを、users.xml で定義されたユーザーに付与できるようになりました。 #88139 (c-end).
  • 辞書やリフレッシャブルmaterialized view などが内部的に実行する内部クエリもログに記録し、新しい is_internal カラムを system.query_log に追加しました。 #83277 (Miсhael Stetsyuk).
  • IS NOT DISTINCT FROM<=>)演算子を拡張しました。逆演算である IS DISTINCT FROM をサポートし、Nullable(UInt32)Nullable(Int64) のような、型が異なる互換性のある数値オペランドにも対応しました。#86763 を解決。#87581yanglongwei)。
  • インタラクティブモードの clickhouse-client および clickhouse-local で、カーソル位置にある識別子と同名のコマンドライン上の識別子がハイライトされるようになりました。 #89689 (Alexey Milovidov).
  • 出力フォーマットに関する設定は、クエリキャッシュには影響しなくなりました。また、クエリキャッシュでは http_response_headers 設定は無視されます。これは、Web UI からキャッシュ済み結果をダウンロードするなどの機能を実装できるようにするためです。#89756 (Alexey Milovidov)。
  • HTTP インターフェイスは、クエリ結果キャッシュが使用されている場合に Age ヘッダーと Expires ヘッダーを返します。Age ヘッダーの有無で結果がキャッシュ由来かどうかが分かり、Expires も初回の書き込み時に設定されます。新しいプロファイルイベントを導入しました: QueryCacheAgeSeconds, QueryCacheReadRows, QueryCacheReadBytes, QueryCacheWrittenRows, QueryCacheWrittenBytes#89759 (Alexey Milovidov)。
  • disable_insertion_and_mutation が有効(つまり ClickHouse Cloud の読み取り専用ウェアハウス)な場合でも、remote テーブルおよびデータレイク テーブルへの挿入を許可しました。 #88549 (Alexander Tokmakov)。
  • クエリ SYSTEM DROP TEXT INDEX CACHES を追加。 #90287 (Anton Popov).
  • 一貫性の保証を強化するため、デフォルトで enable_shared_storage_snapshot_in_query を有効化しました。悪影響はないはずです。 #82634 (Alexey Milovidov)。
  • send_profile_events SETTING を追加しました。これにより、クライアントはプロファイルイベントを利用していない場合のネットワークトラフィックを削減できます。 #89588 (Kaviraj Kanagaraj).
  • クエリ単位で近傍セグメントのバックグラウンドでのダウンロードを無効化できるようにしました。 #89524 を修正しました。 #89668 (tanner-bruce).
  • ReplicatedMergeTree テーブルで故障したディスクが存在する場合でも、FETCH PARTITION を使用できるようになりました。 #58663 (Duc Canh Le).
  • MySQL データベースエンジンで MySQL テーブルスキーマを取得する際に発生していた未捕捉例外を修正。 #69358 (Duc Canh Le).
  • すべての DDL ON CLUSTER クエリは、アクセス権限の検証をより適切に行えるよう、元のクエリ発行ユーザーのコンテキストで実行されるようになりました。 #71334 (pufit)。
  • Parquet において、論理型 UUID を持つ FixedString(16) で表現された UUID のサポートを追加しました。 #74484 (alekseev-maksim).
  • サーバー以外のバイナリでは、デフォルトで ThreadFuzzer を無効化します。 #89115 (Raúl Marín).
  • クエリプランの最適化が相関サブクエリの入力サブプランにも反映されるよう、そのマテリアライズを遅らせました。 #79890 の一部。 #85455Dmitry Novik)。
  • clickhouse-client で、SELECT を含む CREATE OR REPLACE TABLE クエリのプログレスバー、ログ、およびパフォーマンス統計情報を表示できるようになりました。SELECT が非常に時間のかかる処理であっても、このクエリがタイムアウトすることはなくなりました。#38416 を解決しました。 #87247Diskein)。
  • ハッシュ関数で JSON 型および Dynamic 型をサポートします。これにより #87734 を解決します。#87791Pavel Kruglov)。
  • ArrowFlight サーバーの未実装部分を実装しました。 #88013 (Vitaly Baranov).
  • Keeper のリクエスト実行各ステージの所要時間を計測するために、サーバーおよび Keeper 向けに複数のヒストグラム型メトリクスを追加します。サーバーには次のメトリクスが追加されます: keeper_client_queue_duration_milliseconds, keeper_client_send_duration_milliseconds, keeper_client_roundtrip_duration_milliseconds。Keeper には次のメトリクスが追加されます: keeper_server_preprocess_request_duration_milliseconds, keeper_server_process_request_duration_milliseconds, keeper_server_queue_duration_milliseconds, keeper_server_send_duration_milliseconds#88158 (Miсhael Stetsyuk)。
  • EXPLAIN クエリに input_headers オプションを追加し、各ステップに入力ヘッダーを含められるようにしました。 #88311 (János Benjamin Antal).
  • スロットラーによって遅延された S3 および AzureBlobStorage リクエストの数をカウントするための profile events を追加しました。ディスク関連およびディスク非関連の ThrottlerCount profile events の不整合を修正しました。これにより、AzureBlobStorage に対する HTTP DELETE リクエストはスロットルされなくなりました。 #88535 (Sergei Trifonov).
  • テーブルレベルの統計情報のキャッシュ機能を追加し、2 つの設定を導入しました。MergeTree の設定 refresh_statistics_interval は統計情報キャッシュを更新する間隔を指定し、0 の場合はキャッシュが作成されません。セッション設定 use_statistics_cache はクエリでテーブルレベルの統計情報キャッシュを使用するかどうかを指定します。より精度の高い統計情報が必要な場合には、キャッシュを無視することを選択できます。#88670 (Han Fei)。
  • Array および Map のバイナリデシリアライズ処理を修正し、サイズ制限を検証する際に max_binary_string_size ではなく max_binary_array_size 設定を使用するようにしました。これにより、RowBinary 形式の読み取り時に適切な制限が適用されるようになります。 #88744 (Raufs Dunamalijevs)。
  • マージ処理を実行するバックグラウンドプールで使用するために LockGuardWithStopWatch クラスを導入し、利用するようにしました。ミューテックスが 1 秒以上保持されている場合、またはスレッドが 1 秒以内にその取得ができずに待たされている場合には、警告メッセージが出力されます。MergeMutateSelectedEntry のデストラクタ内にあった重い処理を finalize メソッドへ移動し、MergeTreeBackground executor でロックを長時間保持しないようにしました。 #88898 (Nikita Mikhaylov)。
  • エンドポイントでリージョンが指定されていない場合に、S3 向けのオプトインが必要な AWS リージョンを自動的に利用できるようにしました。参考: opt-in AWS regions#88930Andrey Zvonov)。
  • clickhouse-client で pager 実行中に Ctrl-C を押すことでクエリをキャンセルできるようになりました。 #80778 を解決します。 #88935 (Grigorii)。
  • Web UI は、値が負の場合でもテーブル内にバーを表示します。これにより、正と負の値で色分けされた、左右両方向に伸びる棒グラフを表示できます。 #89016 (Alexey Milovidov)。
  • Keeper に保存される SharedMergeTree のメタデータ量を削減するため、shared_merge_tree_create_per_replica_metadata_nodes を無効にしました。 #89036 (Alexander Tokmakov)。
  • S3Queue がサーバー設定 disable_insertion_and_mutation に従うようにしました。 #89048 (Raúl Marín).
  • 25.6 では、S3 で再パーティショニングが発生し、10 分を超えて S3 からスローダウンエラーが返される場合でもバックアップが成功するよう、s3_retry_attempts のデフォルト値を 500 に設定しました。 #89051 (Nikita Mikhaylov)。
  • kafka_compression_codec および kafka_compression_level 設定を使用して、両方の Kafka エンジンにおける Kafka producer の圧縮方式と圧縮レベルを指定できるようになりました。 #89073 (János Benjamin Antal).
  • system.columns に新しいカラム statistics を追加し、このテーブルに構築されている統計情報の種類を示します。ある種類の統計情報が自動的に作成される場合は、接尾辞として (auto) が表示されます。 #89086 (Han Fei)。
  • *Cluster テーブル関数にクラスタ名ではなく汎用展開表現が渡された場合のエラーメッセージを改善。 #89093 (Konstantin Bogdanov).
  • YTsaurus: データソースとして replicated_table を使用可能にしました。 #89107 (MikhailBurdukov).
  • CLI で、先頭が空白文字のクエリは履歴に保存されなくなりました。 #89116 (Konstantin Bogdanov).
  • hasAnyTokens または hasAllTokens 関数の入力として String 型配列をサポートします。 #89124 (Elmi Ahmadov).
  • plain-rewritable ディスクにおけるメタデータのメモリ内保存方式を変更し、ディレクトリのネスト構造まわりの多数のバグを解消しました。 #89125 (Mikhail Artemenko).
  • Iceberg テーブルへのクエリで IN 式内に含まれるサブクエリは、パーティションプルーニングの解析の前に適切に事前計算されるようになりました。 #89177 (Daniil Ivanik).
  • create_table_empty_primary_key_by_default をデフォルトで有効化しました。これは使い勝手の面でより優れています。 #89333 (Alexey Milovidov).
  • SHOW CREATE DATABASE で無効なクエリが生成される場合や、system.databases から engine_full をクエリする場合に発生する Backup データベースエンジン内の誤ったコードを修正しました。#89477 をクローズしました。#89341Alexey Milovidov)。
  • 以前のバージョンでは、CREATE TABLE クエリでテーブルエンジンを指定しなかった場合、create_table_empty_primary_key_by_default 設定は機能していませんでした。 #89342 (Alexey Milovidov).
  • chdig を v25.11.1 に更新しました。ログの大幅な改善およびその他のさまざまな強化が含まれています(25.11 のリリースノート)。#89957Azat Khuzhin)。(25.10 のリリースノート)。#89452Azat Khuzhin)。
  • Web UI のクエリ用テキストエリアのリサイズハンドルを横幅いっぱいに広げ、少し使いやすくしました。なお、この変更以前は iPad の Safari ではブラウザ標準のリサイズ機能が利用できませんでしたが、変更後は、やり方をご存じであれば少なくともテキストエリア下端をドラッグしてサイズ変更できるようになりました。 #89457 (Alexey Milovidov).
  • ハッシュ結合の結果生成におけるメモリ使用状況のトラッキングを改善しました。以前は、結合結果の生成中に行われる一時的なメモリ割り当てが正しく追跡されておらず、メモリ制限の超過につながる可能性がありました。 #89560 (Azat Khuzhin).
  • 非同期サーバーログ: フラッシュを早め、デフォルトのキューサイズを拡大。 #89597 (Raúl Marín).
  • system.asynchronous_metrics 内の誤った FilesystemCacheBytes などを修正。ファイルシステムキャッシュに対する SYSTEM クエリは 1 回だけ実行するように変更。同じパスを指すキャッシュについては、system.filesystem_caches 内の同一パスを参照するアトミックなビューを追加。 #89640 (Azat Khuzhin).
  • system.view_refreshes 内の一部のカラムの説明をより明確にしました。 #89701 (Tuan Pham Anh)。
  • STS エンドポイントと連携して取得した S3 認証情報をキャッシュし、異なる関数呼び出し間で再利用できるようにしました。キャッシュされる認証情報の数は s3_credentials_provider_max_cache_size で制御できます。 #89734 (Antonio Andelic)。
  • その下に複数の式ステップが存在する場合に、runtime filter pushdown が正しく動作しない問題を修正しました。 #89741 (Alexander Gololobov).
  • システムメモリが 5GB 未満の場合、デフォルトで実行ファイルを mlock しないようにしました。 #89751 (Alexey Milovidov).
  • Web UI の型ヒントがテーブルヘッダーにはみ出さなくなりました。ツールチップの表示も修正され、テーブルヘッダーの背後に隠れなくなりました。 #89753 (Alexey Milovidov)。
  • Web UI でテーブルのプロパティを表示できるようになりました。行数またはバイト数をクリックすると、system.tables に対するクエリが表示されます。テーブルエンジンをクリックすると、SHOW TABLES が表示されます。 #89771 (Alexey Milovidov)。
  • append 方式の書き込みを実装していないディスクを使用するテーブルで non_replicated_deduplication_window をサポート。#87281 を解決。#89796Tuan Pham Anh)。
  • SYSTEM FLUSH ASYNC INSERT QUEUE コマンドでフラッシュするテーブルのリストを指定できるようになりました。 #89915 (Sema Checherinda).
  • system.part_log に重複排除ブロックの ID を保存するようにしました。 #89928 (Sema Checherinda).
  • ファイルシステムキャッシュ設定 keep_free_space_remove_batch のデフォルト値を 10 から 100 に変更しました。より最適な値であるためです。 #90030 (Kseniia Sumarokova).
  • TTL DROP マージタイプを導入し、このタイプのマージ後には次回の delete TTL マージスケジュールを更新しないようにしました。 #90077 (Mikhail Artemenko).
  • S3Queue のクリーンアップ中に実行される RemoveRecursive Keeper リクエストのノード数上限を、より低い値に設定しました。 #90201 (Antonio Andelic).
  • ログが空の場合でもテーブルの作成を待つように SYSTEM FLUSH LOGS クエリを変更しました。 #89408 (János Benjamin Antal).
  • 複数のリモート分片をまたぐ分散マージ型集約、または IN 述語内のサブクエリが存在する場合に rows_before_limit_at_least が誤った値になる問題を修正しました。これにより #63280 を解決しました。 #63511 (Amos Bird)。
  • INSERT INTO ... SELECT クエリの後に 0 rows in set が表示されてしまう問題を修正しました。 #47800 をクローズしました。 #79462Engel Danila)。

バグ修正(公式安定版リリースにおけるユーザーに影響する不具合)

  • 定数引数とショートサーキット評価を使用する multiIf の不具合を修正。#72714 をクローズ。#84546Yakov Olkhovskiy)。
  • サブクエリ制約を持つテーブルからの SELECT 時に発生する論理エラーを修正しました。 #84190 を解決します。 #85575 (Pervakov Grigorii).
  • 疑問符(?)を含む URI を使用する特定のクエリで発生していたバグを修正しました。 #85663 (Yarik Briukhovetskyi).
  • EXPLAIN indexes = 1 の出力でカラムが一部欠落することがあった問題を修正しました。#86696 を解決します。 #87083Michael Kolupaev)。
  • 並列レプリカ使用時に Cannot add subcolumn with parallel replicas エラーが発生する可能性があった問題を修正しました。Closes #84888. #87514 (Pavel Kruglov).
  • parquet writer において、created_by 文字列を正しいフォーマットで出力するようにしました(例: ClickHouse version 25.10.1 (build 5b1dfb14925db8901a4e9202cd5d63c11ecfbb9f)、従来の ClickHouse v25.9.1.1-testing ではなく)。古い parquet-mr によって書き込まれた不正な形式のファイルとの互換性を確保するために、parquet reader を修正しました。 #87735 (Michael Kolupaev).
  • cramersVcramersVBiasCorrectedtheilsUcontingency において誤った結果の原因となっていた φ 二乗の計算を修正。 #87831 (Nihal Z. Miaji)。
  • JSON 内で Float 型と Bool 型が混在する配列の読み取りを修正しました。以前はこのようなデータを挿入すると例外が発生していました。 #88008 (Pavel Kruglov).
  • TCPHandler で QueryState に shared_ptr を使用し、setProgressCallback、setFileProgressCallback、setBlockMarshallingCallback 内で状態が無効になっているかどうかを検出できるようにしました。 #88201 (Tuan Pham Anh).
  • query_plan_optimize_join_order_limit > 1 の場合の CROSS JOIN の再順序付け時に発生する論理エラーを修正。#89409 をクローズ。#88286Vladimir Cherkasov)。
  • Fix #88426 1. Alias テーブルでの明示的なカラム定義を禁止し、カラムをターゲットテーブルから自動的にロードするようにしました。これにより、エイリアステーブルが常にターゲットテーブルのスキーマと一致するようになります。 2. IStorage から委譲するメソッドを増やしました。 #88552 (Kai Zhu).
  • 復旧後に Replicated データベースのレプリカが、Failed to marked query-0004647339 as finished (finished=No node, synced=No node) のようなメッセージを長時間にわたって出力し続けてしまうことがありましたが、この問題は修正されました。 #88671 (Alexander Tokmakov).
  • サブクエリを含む新しいアナライザーで発生する可能性があった "Context has expired" エラーを修正。 #88694 (Azat Khuzhin).
  • input_format_parquet_local_file_min_bytes_for_seek が 0 に設定されている場合に発生していた Parquet リーダーのセグメンテーションフォールトを修正しました。#78456 を解決しました。#88784Animesh)。
  • PK が降順の場合に min(PK) / max(PK) の結果が誤っていた問題を修正しました。これにより #83619 が解決されます。 #88796 (Amos Bird).
  • 内部テーブルの DROP 時に、設定 max_table_size_to_drop および max_partition_size_to_drop によるサイズ制限が正しく伝播されるよう修正しました。 #88812 (Nikolay Degterinsky).
  • top_k が単一の引数で呼び出された場合でも threshold パラメータが正しく反映されるように修正しました。#88757 をクローズします。 #88867 (Manuel).
  • SSL 接続を必要とする ArrowFlight エンドポイントのソース(AWS ALB の背後にあるものなど)が、特定のデータセットを正しくリクエストできるようになりました。 #88868 (alex-shchetkov).
  • 非マテリアライズされた Nested(Tuple(...))(ALTER によって追加されたもの)の処理を修正。#83133 を修正。#88879Azat Khuzhin)。
  • 関数 reverseUTF8 のバグを修正しました。以前のバージョンでは、長さ 4 の UTF-8 コードポイントのバイト順を誤って反転していました。これにより #88913 がクローズされました。 #88914 (Alexey Milovidov)。
  • icebergS3Cluster プロトコルを修正しました。Iceberg クラスタ関数でスキーマ進化、位置指定削除、および等価削除をサポートするようになりました。#88287 を解決しました。#88919Yang Jiang)。
  • 分散テーブルに対して parallel replicas を使用するクエリについて、parallel_replicas_support_projection を無効化しました。これにより #88899 がクローズされました。 #88922 (zoomxi)。
  • 内部的な CAST でコンテキストを伝搬するようにしました。cast-settings が伝搬されていなかった複数の問題を修正しました。#88873 をクローズ。#78025 をクローズ。#88929Manuel)。
  • file() 関数で、glob パターンからファイルフォーマットを取得する処理を修正しました。#88920 を解決します。#88947Vitaly Baranov)。
  • SQL SECURITY DEFINER を使用して VIEW を作成する際に、アクセス権 SET DEFINER <current_user>:definer をチェックしないようにしました。 #88968 (pufit)。
  • L2DistanceTransposed(vec1, vec2, p) において、部分的な QBit 読み取りの最適化により、pNullable の場合に戻り値の型から誤って Nullable が削除されていたことが原因で発生していた LOGICAL_ERROR を修正しました。 #88974 (Raufs Dunamalijevs).
  • 未知のカタログタイプでクラッシュする不具合を修正しました。#88819 を解決します。 #88987 (scanhex12)。
  • これにより、#88081 をクローズします。 #88988scanhex12)。
  • スキッピングインデックスの解析における性能劣化を修正しました。 #89004 (Anton Popov).
  • 存在しないロールが割り当てられたユーザーから clusterAllReplicas を実行しようとした際に発生する ACCESS_ENTITY_NOT_FOUND エラーが発生していた問題を修正しました。#87670 を解決しました。 #89068pufit)。
  • CHECK 制約によるスパースカラムの処理を修正。 #88637 をクローズ。 #89076Eduard Karacharov)。
  • MergeTreeReaderTextIndex で仮想カラムを埋める処理において行数を誤ってカウントしていた問題を修正しました。この不具合により LOGICAL_ERROR が発生してクラッシュしていました。 #89095 (Peng Jian).
  • マージの準備中に例外が発生した場合に、有効期限 (TTL) マージカウンターがリークするのを防止しました。 #89019 を解決しました。 #89127save-my-heart)。
  • base32/base58 のエンコード/デコード処理に必要なバッファサイズの計算を修正。 #89133 (Antonio Andelic).
  • シャットダウン処理とバックグラウンドで実行される INSERT の間のレースコンディションにより Distributed で発生していた use-after-free を修正しました。#88640 を解決します。#89136Azat Khuzhin)。
  • Parquet のパース中に、ミュータブルな例外オブジェクトに起因してデータレースが発生しうる問題を回避しました。 #88385 を修正。 #89174Azat Khuzhin)。
  • リフレッシャブルmaterialized view: refresh 中にソーステーブルが完全に削除された場合に、まれにサーバーがクラッシュする不具合を修正。 #89203 (Michael Kolupaev).
  • HTTP インターフェイスで圧縮ストリーム送信中にエラーを返す際に、バッファをフラッシュするようにしました。 #89256 (Alexander Tokmakov).
  • クエリマスキングルールが DDL 文に誤って適用されないようにしました。 #89272 (MikhailBurdukov).
  • MergeTreeReaderTextIndex で仮想カラムを埋める際の行数カウントが誤っており、LOGICAL_ERROR によるクラッシュが発生する問題を修正しました。 #89095 を再オープンします。 #89303 (Jimmy Aguilar Mena)。
  • Statistics countmin が LowCardinality(Nullable(String)) の estimate データ型をサポートしておらず、LOGICAL_ERROR が発生していた問題を修正。 #89343 (Han Fei).
  • 主キーのカラム型が IN 関数の右辺のカラム型と異なる場合に、IN 関数でクラッシュ/未定義動作が発生する可能性がありました。例: SELECT string_column, int_column FROM test_table WHERE (string_column, int_column) IN (SELECT '5', 'not a number')。多くの行が選択され、その中に型の互換性のない値を含む行が存在する場合に発生します。 #89367 (Ilya Golshtein).
  • countIf(*) の引数が切り詰められる不具合を修正しました。#89372 をクローズ。#89373Manuel)。
  • ミューテーションにおける統計用の非圧縮チェックサムが失われないようにしました。 #89381 (Azat Khuzhin).
  • L2DistanceTransposed(vec1, vec2, p) において、部分的な QBit 読み取りの最適化により、p が LowCardinality(Nullable(T)) の場合に戻り値の型から Nullable が誤って削除され、LOGICAL_ERROR が発生していた問題を修正しました。#88362 を解決します。 #89397Raufs Dunamalijevs)。
  • タプル本体に対するスパースシリアライゼーションが誤っている(古いバージョンの ClickHouse によって書き込まれた)テーブルの読み込みを修正。 #89405 (Azat Khuzhin).
  • deduplicate_merge_projection_mode='ignore' 使用時に、有効期限 (TTL) により本体が空になったものの、非空の PROJECTION を含むパーツのマージ処理が誤っていた問題を修正しました。#89430 を解決します。#89458Amos Bird)。
  • 重複カラムを含む full_sorting_merge 結合における論理エラーを修正しました。#86957 を解決します。#89495Vladimir Cherkasov)。
  • ローテーション時に changelog が正しくリネームされなかった場合に、Keeper の起動時に changelog の読み込みが失敗する問題を修正しました。 #89496 (Antonio Andelic).
  • 一意な右テーブルキーを持つテーブルに対して OR 条件を使用した場合に発生していた、誤った JOIN 結果が返される問題を修正しました。#89391 を解決します。#89512Vladimir Cherkasov)。
  • analyzer および PK IN (subquery) 使用時に発生する可能性のある「Context has expired」エラーを修正 (v2)。#89433 を修正。#89527Azat Khuzhin)。
  • 大文字のカラム名が設定されているテーブルに対する MaterializedPostgreSQL のレプリケーションの不具合を修正しました。#72363 を解決します。#89530Danylo Osipchuk)。
  • 集約関数の状態に LowCardinality(String) 型のカラムのシリアル化された値が含まれている場合にクラッシュする問題を修正しました。 #89550 (Pavel Kruglov).
  • enable_lazy_columns_replication 設定を有効にした状態で、JOIN の右側で ARRAY JOIN を使用した場合にクラッシュする不具合を修正しました。 #89551 (Pavel Kruglov).
  • query_plan_convert_join_to_in での論理エラーを修正。#89066 を解決。#89554Vladimir Cherkasov)。
  • 変換できない型が一致しないカラムと定数を含む条件を推定しようとした際に、統計推定器で発生していた例外を修正しました。 #89596 (Han Fei).
  • ランタイムフィルタは、サポートされている結合アルゴリズム、すなわちハッシュ結合に対してのみ追加されるようになりました。ランタイムフィルタは、結合アルゴリズムがまず右側を完全に読み込んでから左側を読む場合にのみ構築できますが、たとえば FullSortingMergeJoin は両側を同時に読み込みます。#89220 を修正しました。#89652Alexander Gololobov)。
  • sparseGrams トークナイザー使用時における hasAnyTokenshasAllTokenstokens 関数の並行実行時の不具合を修正。#89605 を解決。#89665Elmi Ahmadov)。
  • 一部のケースで、join ランタイムフィルターにより発生していた論理エラーやクラッシュを修正しました。#89062 を修正します。 #89666 (Alexander Gololobov)。
  • enable_lazy_columns_replication が有効な場合に、Map カラムに対する ARRAY JOIN の実行中に発生する可能性のある論理エラーを修正しました。 #89705 をクローズ。 #89717Pavel Kruglov)。
  • キャンセル中のリモートクエリにおいて、切断後にリモートサーバーから読み取ろうとしてクラッシュする問題を回避しました。#89468 を解決します。#89740Azat Khuzhin)。
  • PROJECTION 索引の読み取りパスにおけるレースコンディションを修正しました。#89497 を解決します。#89762Peng Jian)。
  • projection 索引の読み取りで競合状態を引き起こす可能性のあったバグを修正しました。#89497 を解決しました。 #89775 (Amos Bird)。
  • パーティションを持たないテーブルに対する Paimon テーブル関数の処理を修正しました。#89690 の問題を解決します。#89793JIaQi)。
  • 高度な JSON 共有データシリアライゼーションにおけるパスおよびそのサブカラムの読み取り時に発生する可能性があった論理エラーを修正しました。 #89805 をクローズします。 #89819Pavel Kruglov)。
  • データ型のバイナリ逆シリアル化で発生し得るスタックオーバーフローを修正しました。 #88710 をクローズしました。 #89822Pavel Kruglov)。
  • IN 関数内の空タプルに関する論理エラーを修正しました。 #88343 をクローズしました。 #89850Nihal Z. Miaji)。
  • 互換性のため、旧アナライザーでは optimize_injective_functions_in_group_by の設定に関係なく、GROUP BY から単射関数を削除するようにしました。#89854 を解決しました。#89870Raufs Dunamalijevs)。
  • たとえばメモリ上限によってマージが中断された場合、merge mutate background executor はロックなしでマージタスクに対して cancel を呼び出しますが、この場合、部分的に作成された結果パートは削除されません(完了しておらず、この段階では可視状態ではなかったため)。その後、マージタスクが破棄され、それに伴い結果パートの破棄がトリガーされます。これによりディスクトランザクションがロールバックされ、S3 からデータが削除されます。最終的に、このガーベジクリーンアップ処理は merge mutate background executor のロックの下で実行されるようになりました。#89875Mikhail Artemenko)。
  • reverse および CAST 関数における空タプルの論理エラーを修正。#89137 をクローズ。#89908Nihal Z. Miaji)。
  • ClickHouse では、デフォルトで SHOW DATABASES クエリの結果にデータレイクカタログ データベースが表示されるようになりました。 #89914 (alesapin).
  • バックアップで GCS のネイティブコピーを使用する処理を修正しました。誤ったクライアントのクローン処理により、GCS のネイティブコピーが常に失敗し、データを手動で読み書きするという最適でない方法が使用されていました。 #89923 (Antonio Andelic).
  • base32Encode のバッファサイズ計算を修正しました。サイズが 5 未満の文字列カラムに対して base32Encode を実行するとクラッシュが発生する可能性がありました。#89911 を解消します。#89929Antonio Andelic)。
  • SHOW COLUMNS および SHOW FUNCTIONS クエリの誤ったエスケープ処理を修正しました。 #89942 (alesapin).
  • MongoDB エンジンにおいて、ユーザー名に「@」文字が含まれる場合の URL 検証処理を修正しました。以前は、不適切なエンコードにより「@」を含むユーザー名でエラーが発生していました。 #89970 (Kai Zhu).
  • #90592 にバックポート: IN 内で ARRAY JOIN を使用し、enable_lazy_columns_replication 設定が有効な場合にリモートクエリで発生し得るクラッシュを修正。#90361 を解決。#89997Pavel Kruglov)。
  • #90448 でバックポート済み: 一部のケースにおいて、テキスト形式の String から不正な DateTime64 値が推論される問題を修正。 #89368 を解決。 #90013Pavel Kruglov)。
  • BSONEachRow および MsgPack で、空のタプルカラムが原因で発生していた論理エラーを修正。#89814 および #71536 をクローズ。#90018Nihal Z. Miaji)。
  • #90457 にバックポート: 集約状態やその他のソースからデータをデシリアライズする際にサイズチェックを行うようにしました。#90031Raúl Marín)。
  • 重複したカラムを含む JOIN で Invalid number of rows in Chunk エラーが発生する可能性があった問題を修正しました。#89411 を解決しました。#90053Vladimir Cherkasov)。
  • #90588 でバックポート済み: enable_lazy_columns_replication 設定を有効にした状態で ARRAY JOIN を使用して挿入を行う際に、Column with Array type is not represented by ColumnArray column: Replicated というエラーが発生する可能性がある不具合を修正しました。#90066Pavel Kruglov)。
  • user_files 内でドットで始まるファイルを許可するようにしました。#89662 をクローズ。#90079Raúl Marín)。
  • #90647 にバックポート: 大きなステップサイズを使用した場合に numbers システムテーブルで発生する論理エラーおよび剰余計算のバグを修正。#83398 をクローズ。#90123Nihal Z. Miaji)。
  • Dictionary 引数の解析で発生していた整数オーバーフローを修正しました。 #78506 をクローズ。 #90171Raúl Marín)。
  • #90468 でバックポート済み: 25.8 へのスムーズなアップグレードを妨げていた hive パーティショニングとの非互換性を修正(アップグレード時に発生していたエラー All hive partitioning columns must be present in the schema を修正)。#90202Kseniia Sumarokova)。
  • SELECT クエリでクエリ条件キャッシュが有効になっている場合に、論理更新の後に誤ったクエリ結果が返される可能性がある問題を修正しました。#90176 を修正。#90054 を修正。 #90204Anton Popov)。
  • 誤った形式の分片ディレクトリ名を解析する際に StorageDistributed がクラッシュする不具合を修正しました。 #90243 (Aleksandr Musorin).
  • LogicalExpressionOptimizerPass において、文字列から整数または boolean への暗黙的な型変換を処理するようにしました。#89803 を解決します。#90245Elmi Ahmadov)。
  • テーブル定義内の特定の skip index の不正なフォーマットを修正しました。この問題により METADATA_MISMATCH が発生し、Replicated Database における新しいレプリカの作成が失敗していました。 #90251 (Nikolay Degterinsky).
  • #90381 でバックポート済み: part の行数が index_granularity より少ない場合に、MergeTreeReaderIndex で行数が一致しない問題を修正しました。#89691 を解決します。#90254Peng Jian)。
  • #90608 でバックポート済み: コンパクトパーツで JSON からサブカラムを読み取る際に CANNOT_READ_ALL_DATA エラーにつながる可能性があったバグを修正しました。 #90264 を解決します。 #90302Pavel Kruglov)。
  • 2 つの引数を取る場合に動作しなかった trimltrimrtrim 関数を修正しました。 #90170 をクローズしました。 #90305Nihal Z. Miaji)。
  • #90625 にバックポート: index_granularity_bytes=0 のときに、存在しない JSON path に対する prewhere で発生しうる論理エラーを修正。 #86924 を解決。 #90375 (Pavel Kruglov).
  • #90484 にバックポート: L2DistanceTransposed において、precision 引数が有効な範囲を超えるとクラッシュする不具合を修正しました。#90401 をクローズ。#90405Raufs Dunamalijevs)。
  • #90577 にバックポート済み: 配列参照ベクトル(デフォルトは Array(Float64))を、要素型が Float64 以外(Float32BFloat16)の QBit カラムと併用した場合に、L2DistanceTransposed で距離計算が誤っていた問題を修正しました。この関数は、QBit の要素型に一致するように参照ベクトルを自動的にキャストするようになりました。#89976 を解決しました。#90485Raufs Dunamalijevs)。
  • #90601 でバックポート済み: equals 関数で発生するまれなケースが原因の論理エラーを修正。#88142 をクローズ。#90557Nihal Z. Miaji)。
  • Tuple 型に対する CoalescingMergeTree の不具合を修正しました。 #88828 (scanhex12).

ビルド/テスト/パッケージングの改善

  • initdb の SQL スクリプトとオーバーライドされた TCP ポートを使用して Docker 内で ClickHouse を実行する際に発生する Connection refused エラーを修正。#88042 (Grigorii).
  • ClickHouse の新しいプラットフォームとして e2k を実験的にサポート。#90159 (Ramil Sattarov).
  • CMake から残っていた FindPackage の使用を削除。ビルドがシステムパッケージに依存しないようにした。#89380 (Alexey Milovidov).
  • CMake 構成時のビルドでコンパイラキャッシュを使用(例: protoc)。#89613 (Konstantin Bogdanov).
  • FreeBSD 13.4 の sysroot を使用。#89617 (Konstantin Bogdanov).

ClickHouse 25.10 リリース, 2025-10-31

後方互換性を損なう変更

  • デフォルトの schema_inference_make_columns_nullable SETTING を変更し、すべてを Nullable にするのではなく、Parquet/ORC/Arrow のメタデータに含まれるカラムの Nullable かどうかの情報を反映するようにしました。テキストフォーマットについては変更ありません。 #71499 (Michael Kolupaev).
  • クエリ結果キャッシュは log_comment 設定を無視するようになり、クエリで log_comment だけを変更しても、もはやキャッシュミスの要因にはなりません。ユーザーが意図的に log_comment を変化させることでキャッシュを分割していた可能性がわずかにあります。この変更によりその挙動は変わるため、後方互換性のない変更となります。この目的には query_cache_tag 設定を使用してください。 #79878 (filimonov).
  • 以前のバージョンでは、演算子の実装関数と同じ名前のテーブル関数を含むクエリのフォーマットに一貫性がありませんでした。#81601 をクローズ。#81977 をクローズ。#82834 をクローズ。#82835 をクローズ。EXPLAIN SYNTAX クエリは、今後は常に演算子をフォーマットするわけではありません。この新しい挙動は、構文を説明するという目的をより適切に反映します。clickhouse-formatformatQuery などは、クエリ内で関数呼び出しとして記述されている場合には、関数を演算子としてフォーマットしません。#82825Alexey Milovidov)。
  • JOIN キーで Dynamic 型を使用することを禁止しました。Dynamic 型の値を Dynamic ではない型と比較すると、予期しない結果を招く可能性があるためです。Dynamic カラムは、必要な型に明示的にキャストすることを推奨します。 #86358 (Pavel Kruglov).
  • storage_metadata_write_full_object_key サーバーオプションはデフォルトで有効になっており、現時点では無効にできません。これは後方互換性のある変更です。注意喚起としてお知らせします。この変更は 25.x 系のリリースとしか前方互換性がありません。つまり、新しいリリースからロールバックする必要がある場合は、25.x 系のいずれかのリリースにのみダウングレードできます。 #87335 (Sema Checherinda).
  • 挿入レートが低い場合に ZooKeeper 上に保存される znode の数を減らすため、replicated_deduplication_window_seconds の値を 1 週間から 1 時間に短縮しました。 #87414 (Sema Checherinda).
  • 設定 query_plan_use_new_logical_join_step の名前を query_plan_use_logical_join_step に変更しました。 #87679 (Vladimir Cherkasov).
  • 新しい構文により、テキスト索引の tokenizer パラメータをより柔軟に指定できるようになりました。 #87997 (Elmi Ahmadov).
  • 既存の関数 hasToken との一貫性を高めるため、関数 searchAnysearchAll の名称をそれぞれ hasAnyTokenshasAllTokens に変更しました。 #88109 (Robert Schulze).
  • ファイルシステムキャッシュから cache_hits_threshold を削除しました。この機能は SLRU キャッシュポリシーを導入する前に外部コントリビューターによって追加されたものですが、現在は SLRU があるため、両方をサポートし続ける意味はありません。 #88344 (Kseniia Sumarokova).
  • min_free_disk_ratio_to_perform_insertmin_free_disk_bytes_to_perform_insert 設定の動作を、次の 2 点でわずかに変更しました: - 挿入を拒否すべきかどうかを判定する際に、利用可能バイト数ではなく予約されていないバイト数を使用するようにしました。バックグラウンドマージやミューテーションの予約量が、設定されているしきい値と比べて小さい場合にはあまり重要ではないかもしれませんが、こちらの方がより正確です。 - これらの設定を system テーブルには適用しないようにしました。この理由は、query_log のようなテーブルを引き続き更新できるようにしたいためです。これはデバッグに大いに役立ちます。system テーブルに書き込まれるデータは通常、実データと比べて小さいため、妥当な min_free_disk_ratio_to_perform_insert のしきい値を設定しておけば、より長い期間にわたって書き込みを継続できるはずです。#88468 (c-end).
  • Keeper の内部レプリケーションに対して非同期モードを有効にしました。これにより、Keeper は従来と同じ動作を維持しつつ、パフォーマンスが向上する可能性があります。23.9 より古いバージョンからアップデートする場合は、まず 23.9 以上にアップデートしてから、さらに 25.10 以上にアップデートする必要があります。アップデート前に keeper_server.coordination_settings.async_replication を 0 に設定しておき、アップデート完了後に再度有効化することもできます。 #88515 (Antonio Andelic)。

新機能

  • 負の LIMIT および負の OFFSET のサポートを追加。 #28913 をクローズ。 #88411 (Nihal Z. Miaji)。
  • Alias エンジンは、別のテーブルへのプロキシを作成します。すべての読み取りおよび書き込み操作は対象テーブルに転送され、エイリアス自体はデータを保持せず、対象テーブルへの参照のみを保持します。 #87965 (Kai Zhu)。
  • 演算子 IS NOT DISTINCT FROM<=>)を完全にサポート。 #88155 (simonmichal).
  • MergeTree テーブル内の、適用可能なすべてのカラムに対して統計を自動作成する機能を追加しました。作成する統計の種類をカンマ区切りで指定するテーブルレベルの設定 auto_statistics_types を追加しました(例: auto_statistics_types = 'minmax, uniq, countmin')。#87241 (Anton Popov)。
  • テキスト向けの新しいブルームフィルター索引 sparse_gram#79985 (scanhex12)。
  • 数値の基数変換を行うための新しい conv 関数が追加されました。現在は基数 2〜36 をサポートしています。 #83058 (hp).
  • LIMIT BY ALL 構文のサポートを追加しました。GROUP BY ALLORDER BY ALL と同様に、LIMIT BY ALL は SELECT 句に含まれるすべての非集約式に自動的に展開され、それらを LIMIT BY のキーとして使用します。例えば、SELECT id, name, count(*) FROM table GROUP BY id LIMIT 1 BY ALLSELECT id, name, count(*) FROM table GROUP BY id LIMIT 1 BY id, name と等価です。この機能により、SELECT で選択した非集約カラムすべてを LIMIT BY の対象にしたい場合に、それらを明示的に列挙することなくクエリを簡潔に記述できます。#59152 をクローズしました。#84079Surya Kant Ranjan)。
  • ClickHouse で Apache Paimon をクエリできるようにしました。この統合により、ClickHouse ユーザーは Paimon のデータレイクストレージに直接アクセスできるようになります。 #84423 (JIaQi).
  • studentTTestOneSample 集約関数を追加しました。 #85436 (Dylan)。
  • 集約関数 quantilePrometheusHistogram は、ヒストグラムバケットの上限値と累積値を引数として受け取り、分位点が属するバケットの上限値と下限値の間で線形補間を行います。クラシックなヒストグラムに対する PromQL の関数 histogram_quantile と同様に動作します。 #86294 (Stephen Chi).
  • Delta Lake メタデータファイル向けの新しい system テーブルを追加しました。 #87263 (scanhex12)。
  • ALTER TABLE REWRITE PARTS を追加しました。これはテーブルのパーツを最初から再作成し、新しい設定をすべて使用して書き換えます(use_const_adaptive_granularity のように、一部の設定は新しいパーツに対してのみ適用されるため)。 #87774 (Azat Khuzhin)。
  • SYSTEM RECONNECT ZOOKEEPER コマンドを追加し、ZooKeeper との接続の切断と再接続を強制的に行えるようにしました(https://github.com/ClickHouse/ClickHouse/issues/87317)。#87318Pradeep Chhetri)。
  • max_named_collection_num_to_warn および max_named_collection_num_to_throw の設定によって、名前付きコレクションの数を制限できるようにしました。新しいメトリック NamedCollection とエラー TOO_MANY_NAMED_COLLECTIONS を追加しました。 #87343 (Pablo Marcos)。
  • startsWith および endsWith 関数の大文字小文字を区別しない最適化版である startsWithCaseInsensitiveendsWithCaseInsensitivestartsWithCaseInsensitiveUTF8endsWithCaseInsensitiveUTF8 を追加しました。 #87374 (Guang Zhao)。
  • サーバー設定の "resources_and_workloads" セクションを使用して、SQL で WORKLOAD および RESOURCE 定義を指定できるようにしました。 #87430 (Sergei Trifonov)。
  • ワイドパーツとして作成するための最小レベルを指定できる新しいテーブル設定 min_level_for_wide_part を追加しました。 #88179 (Christoph Wurm).
  • Keeper クライアントに、cpmv コマンドの再帰版である cpr および mvr を追加しました。 #88570 (Mikhail Artemenko).
  • 挿入時のマテリアライズ対象から除外するスキップ索引のリストを指定するためのセッション設定(exclude_materialize_skip_indexes_on_insert)を追加しました。マージ処理中のマテリアライズ対象から除外するスキップ索引のリストを指定するための MergeTree テーブル設定(exclude_materialize_skip_indexes_on_merge)を追加しました。 #87252 (George Larionov).

実験的機能

  • ベクトルをビットスライス形式で格納する QBit データ型と、パラメータによって精度と速度のトレードオフを制御できる近似ベクトル検索を行える L2DistanceTransposed 関数を実装しました。 #87922 (Raufs Dunamalijevs).
  • 関数 searchAll および searchAny は、テキストカラムを含まないカラムに対しても動作するようになりました。その場合、デフォルトのトークナイザーを使用します。 #87722 (Jimmy Aguilar Mena).

パフォーマンスの向上

  • JOIN および ARRAY JOIN において、遅延カラムレプリケーションを実装しました。Sparse や Replicated などの特殊なカラム表現を、一部の出力フォーマットで通常のカラムに変換しないようにしました。これにより、メモリ内での不要なデータコピーを回避します。 #88752 (Pavel Kruglov).
  • MergeTree テーブルのトップレベル String カラムに、圧縮率の向上および効率的なサブカラムアクセスを可能にするためのオプションの .size サブカラムシリアライゼーションを追加しました。シリアライゼーションのバージョン管理および空文字列を扱う式の最適化のための新しい MergeTree 設定を導入しました。 #82850 (Amos Bird)。
  • Iceberg に対して read in order をサポートしました。 #88454 (scanhex12).
  • 実行時に右側のサブツリーから Bloom filter を構築し、それを左側のサブツリーのスキャンに渡すことで、一部の JOIN クエリを高速化できるようになりました。これは、SELECT avg(o_totalprice) FROM orders, customer, nation WHERE c_custkey = o_custkey AND c_nationkey=n_nationkey AND n_name = 'FRANCE' のようなクエリで有効です。 #84772 (Alexander Gololobov)。
  • Query Condition Cache (QCC) と索引解析の順序および統合方法をリファクタリングすることで、クエリパフォーマンスを改善しました。QCC によるフィルタリングは、プライマリキーおよびスキップ索引の解析より前に適用されるようになり、不要な索引計算を削減できます。索引解析は複数の範囲フィルタをサポートするよう拡張され、そのフィルタリング結果は QCC に再度保存されるようになりました。これにより、索引解析が実行時間の大半を占めるクエリ、特にスキップ索引(ベクトル索引や転置インデックスなど)に依存するクエリの速度が大幅に向上します。 #82380 (Amos Bird)。
  • 小さなクエリを高速化するための細かな最適化を多数実施。 #83096 (Raúl Marín).
  • ネイティブプロトコルでログおよびプロファイルイベントを圧縮します。100 個以上のレプリカを含むクラスターでは、非圧縮のプロファイルイベントだけで 1〜10 MB/秒の帯域を消費し、インターネット接続が遅い場合には進行状況バーの更新が遅くなります。これにより #82533 が解決されました。 #83586 (Alexey Milovidov)。
  • 大文字小文字を区別する文字列検索(WHERE URL LIKE '%google%' のようなフィルタ処理)のパフォーマンスを、StringZilla ライブラリを用い、利用可能な場合は SIMD CPU 命令を使用することで改善しました。#84161Raúl Marín)。
  • テーブルに型 SimpleAggregateFunction(anyLast) のカラムが存在する場合に、AggregatingMergeTree テーブルに対して FINAL 付きで SELECT を実行する際のメモリ割り当ておよびメモリコピーを削減しました。 #84428 (Duc Canh Le).
  • JOIN の述語における論理和条件のプッシュダウンを行うロジックを追加します。例として、TPC-H Q7 において 2 つのテーブル n1 と n2 上の条件 (n1.n_name = 'FRANCE' AND n2.n_name = 'GERMANY') OR (n1.n_name = 'GERMANY' AND n2.n_name = 'FRANCE') がある場合、各テーブルごとに個別の部分的なフィルタ条件を抽出します。すなわち、n1 に対しては n1.n_name = 'FRANCE' OR n1.n_name = 'GERMANY'、n2 に対しては n2.n_name = 'GERMANY' OR n2.n_name = 'FRANCE' を抽出します。 #84735 (Yarik Briukhovetskyi)。
  • 新しいデフォルト設定 optimize_rewrite_like_perfect_affix により、前方一致または後方一致パターンを持つ LIKE のパフォーマンスを向上しました。 #85920 (Guang Zhao)。
  • 複数の文字列/数値カラムで GROUP BY を行う際に、サイズの大きなシリアライズ済みキーによって生じていたパフォーマンス低下を修正しました。これは #83884 のフォローアップです。#85924李扬)。
  • キーごとに多数の一致が発生するハッシュ結合におけるメモリ使用量を削減するために、新しい joined_block_split_single_row 設定を追加しました。これにより、左テーブルの単一行に対する一致であっても、ハッシュ結合結果を chunk 単位に分割できるようになります。これは、左テーブルの 1 行が右テーブルの数千または数百万行と一致する場合に特に有用です。以前は、すべての一致を一度にメモリ上に具体化する必要がありました。この変更によりピーク時のメモリ使用量は削減されますが、CPU 使用量が増加する可能性があります。 #87913 (Vladimir Cherkasov).
  • SharedMutex を改良し、多数のクエリが同時に実行される場合の性能を向上しました。 #87491 (Raúl Marín).
  • ほとんどが頻度の低いトークンで構成されるドキュメントに対するテキスト索引の構築パフォーマンスを改善しました。 #87546 (Anton Popov).
  • Field デストラクタの典型的なケースを高速化しました(多数の小さなクエリを処理する際のパフォーマンスを改善)。 #87631 (Raúl Marín).
  • JOIN 最適化中に実行時ハッシュテーブル統計の再計算をスキップするようにし(JOIN を含むすべてのクエリのパフォーマンスが向上)、新しいプロファイルイベント JoinOptimizeMicrosecondsQueryPlanOptimizeMicroseconds を追加しました。 #87683 (Vladimir Cherkasov).
  • MergeTreeLazy リーダーでマークをキャッシュに保存し、ダイレクト I/O を回避できるようにしました。これにより、ORDER BY と小さな LIMIT を含むクエリのパフォーマンスが向上します。 #87989 (Nikita Taranov)。
  • is_deleted カラムを持つ ReplacingMergeTree テーブルに対する FINAL 句付きの SELECT クエリの実行が、2 つの既存の最適化による並列化の改善により高速化されました。1. テーブル内で単一の part しか持たないパーティションに対する do_not_merge_across_partitions_select_final 最適化。2. テーブル内のその他の選択された範囲を intersecting / non-intersecting に分割し、FINAL マージ処理を通過する必要があるのは intersecting 範囲のみにしたこと。 #88090 (Shankar Iyer).
  • フェイルポイントを使用しない場合の影響を軽減しました(デバッグが有効でないときのデフォルトのコードパス)。 #88196 (Raúl Marín).
  • uuid でフィルタする system.tables へのフルスキャンを行わないようにしました(ログや ZooKeeper のパスから UUID しか取得できない場合に便利です)。 #88379 (Azat Khuzhin).
  • 関数 tokenshasAllTokenshasAnyTokens のパフォーマンスが向上しました。 #88416 (Anton Popov)。
  • 一部のケースで JOIN クエリのパフォーマンスをわずかに向上させるため、AddedColumns::appendFromBlock をインライン化しました。 #88455 (Nikita Taranov).
  • クライアントの自動補完機能は、複数の system テーブルを問い合わせるのではなく system.completions を使用することで、より高速かつ一貫性のあるものになりました。 #84694 (|2ustam)。
  • Dictionary の圧縮方式を制御するための新しいテキスト索引パラメータ dictionary_block_frontcoding_compression を追加しました。デフォルトで有効になっており、front-coding 圧縮を使用します。 #87175 (Elmi Ahmadov).
  • min_insert_block_size_rows_for_materialized_views および min_insert_block_size_bytes_for_materialized_views の設定に応じて、materialized view に挿入する前に、すべてのスレッドからのデータを 1 つにまとめてから挿入するようになりました。以前は、parallel_view_processing が有効な場合、特定の materialized view への挿入を行う各スレッドがそれぞれ独立してデータをまとめて挿入していたため、生成されるパーツの数が多くなる可能性がありました。 #87280 (Antonio Andelic).
  • 一時ファイルへの書き込み用バッファのサイズを制御するための設定 temporary_files_buffer_size を追加。* LowCardinality カラムに対して、scatter 操作(たとえば Grace ハッシュ結合で使用)時のメモリ消費を最適化。 #88237 (Vladimir Cherkasov).
  • テキストインデックスの並列レプリカからの直接読み取りをサポートしました。オブジェクトストレージからのテキストインデックス読み取りのパフォーマンスを改善しました。 #88262 (Anton Popov)。
  • データレイクカタログのテーブルを対象とするクエリでは、分散処理のためにパラレルレプリカが使用されるようになりました。 #88273 (scanhex12).
  • "to_remove_small_parts_at_right" と名付けられたバックグラウンドマージアルゴリズムのチューニング用内部ヒューリスティクスが、マージ範囲スコアの計算より前に実行されるようになりました。これ以前は、マージセレクタは広いマージ範囲を選択し、その後でその末尾をフィルタリングしていました。修正: #85374#88736 (Mikhail Artemenko)。

改良

  • 関数 generateSerialID が、系列名として非定数引数をサポートするようになりました。 #83750 をクローズしました。 #88270Alexey Milovidov)。
  • 新しいシーケンスの開始値をカスタマイズできるように、generateSerialID 関数にオプションの start_value パラメータを追加しました。 #88085 (Manuel).
  • clickhouse-format--semicolons_inline オプションを追加し、クエリをフォーマットする際にセミコロンが新しい行ではなく末尾行に付くようにしました。 #88018 (Jan Rada).
  • Keeper で設定が上書きされている場合でも、サーバーレベルのスロットリングを設定可能にしました。#73964 をクローズ。#74066 (JIaQi)。
  • mannWhitneyUTest は、両方のサンプルが同一の値のみを含む場合に、例外をスローしなくなりました。現在は SciPy と整合的な有効な結果を返します。これにより次の Issue がクローズされました: #79814#80009DeanNeaht)。
  • メタデータトランザクションがコミットされたとき、ディスクのオブジェクトストレージに対する書き換えトランザクションが既存のリモート BLOB を削除するようになりました。 #81787 (Sema Checherinda).
  • 最適化の前後で結果型の LowCardinality が異なる場合における冗長な等価比較式の最適化パスを修正しました。 #82651 (Yakov Olkhovskiy).
  • HTTP クライアントが Expect: 100-continue に加えてヘッダー X-ClickHouse-100-Continue: defer を設定した場合、ClickHouse は QUOTA 検証に通過するまでクライアントに 100 Continue レスポンスを送信しないため、いずれ破棄されるリクエストボディの送信によるネットワーク帯域の無駄を防ぎます。これは、クエリを URL のクエリ文字列で送信し、データをリクエストボディで送信する INSERT クエリで特に有効です。リクエストボディを最後まで送信せずにリクエストを中止すると、HTTP/1.1 におけるコネクションを再利用できなくなりますが、新しいコネクションを確立することで追加されるレイテンシは、大量データの INSERT 全体の所要時間と比べると通常は無視できる程度です。 #84304 (c-end).
  • S3 ストレージを使用する DATABASE ENGINE = Backup 利用時に、ログ内の S3 認証情報がマスクされるようになりました。 #85336 (Kenny Sun).
  • クエリプラン最適化の効果が相関サブクエリの入力サブプランからも見えるようにするため、そのマテリアライズを遅延させました。 #79890 の一部。 #85455Dmitry Novik)。
  • SYSTEM DROP DATABASE REPLICA に対する変更: - データベースを指定してドロップする、あるいはレプリカ全体をドロップする場合: データベース内の各テーブルのレプリカもドロップされる - 'WITH TABLES' が指定されている場合は、各ストレージのレプリカもドロップされる - それ以外の場合はロジックは変わらず、データベースのレプリカのみがドロップされる - Keeper パス付きでデータベースレプリカをドロップする場合: - 'WITH TABLES' が指定されている場合: - データベースを Atomic データベースとして復元する - Keeper 内のステートメントから RMT テーブルを復元する - データベースをドロップする(復元されたテーブルもドロップされる) - それ以外の場合は、指定された Keeper パス上のレプリカのみをドロップする。 #85637 (Tuan Pham Anh).
  • materialize 関数を含む場合の有効期限 (TTL) のフォーマットの不整合を修正しました。#82828 をクローズしました。#85749Alexey Milovidov)。
  • Iceberg テーブルの状態はストレージオブジェクトには保存されなくなりました。これにより、ClickHouse における Iceberg を同時実行クエリでも利用できるようになります。 #86062 (Daniil Ivanik)。
  • use_persistent_processing_nodes = 1 の場合の処理ノードと同様に、S3Queue の ordered モードにおける bucket lock を永続モードにしました。テストに Keeper のフォールトインジェクションを追加しました。 #86628 (Kseniia Sumarokova).
  • フォーマット名にタイプミスがある場合にヒントを表示するようにしました。#86761 をクローズしました。 #87092flynn)。
  • リモートレプリカは、PROJECTION が存在しない場合、索引の解析をスキップするようになりました。#87096 (zoomxi).
  • ytsaurus テーブルで UTF-8 エンコーディングを無効にできるようにしました。 #87150 (MikhailBurdukov).
  • s3_slow_all_threads_after_retryable_error をデフォルトで無効にしました。 #87198 (Nikita Mikhaylov).
  • テーブル関数 arrowflightarrowFlight に名称変更。 #87249 (Vitaly Baranov).
  • clickhouse-benchmark を更新し、CLI フラグで _ の代わりに - を使用できるようにしました。 #87251 (Ahmed Gouda)。
  • シグナルハンドラ内での system.crash_log へのフラッシュを同期的に行うようにしました。 #87253 (Miсhael Stetsyuk).
  • ORDER BY 句を含まないトップレベルの SELECT クエリに ORDER BY rand() を自動で挿入する inject_random_order_for_select_without_order_by 設定を追加しました。 #87261 (Rui Zhang).
  • joinGet のエラーメッセージを改善し、join_keys の数が right_table_keys の数と一致しない場合に、その旨を正しく示すようにしました。 #87279 (Isak Ellmer).
  • 書き込みトランザクション中に任意の Keeper ノードの stat を確認できるようにしました。これにより、ABA 問題の検出に役立ちます。 #87282 (Mikhail Artemenko).
  • 高負荷な ytsaurus リクエストを heavy プロキシにリダイレクトするようにしました。 #87342 (MikhailBurdukov).
  • ディスクトランザクション由来のメタデータに対して、unlink/rename/removeRecursive/removeDirectory などの操作のロールバック処理と、あらゆるワークロードでのハードリンク数を修正し、インターフェイスをより汎用的にして他のメタストアでも再利用できるよう簡素化しました。 #87358 (Mikhail Artemenko).
  • Keeper に対する TCP_NODELAY を無効化できる keeper_server.tcp_nodelay 構成パラメータを追加しました。 #87363 (Copilot)。
  • clickhouse-benchmarks--connection をサポートしました。これは clickhouse-client でサポートされているものと同様で、クライアントの config.xml / config.yamlconnections_credentials パス以下に事前定義された接続を指定することで、コマンドライン引数で明示的にユーザー名/パスワードを指定する必要を避けられます。clickhouse-benchmark--accept-invalid-certificate のサポートを追加しました。#87370 (Azat Khuzhin)。
  • max_insert_threads の設定が Iceberg テーブルにも適用されるようになりました。 #87407 (alesapin)。
  • PrometheusMetricsWriter にヒストグラムおよびディメンション付きメトリクスを追加しました。これにより、PrometheusRequestHandler ハンドラーは必要なメトリクスを一通り備えるようになり、Cloud 環境で信頼性が高く低オーバーヘッドなメトリクス収集に利用できるようになりました。 #87521 (Miсhael Stetsyuk)。
  • 関数 hasToken は、空のトークンに対してはマッチ数ゼロを返すようになりました(以前は例外をスローしていました)。 #87564 (Jimmy Aguilar Mena).
  • Array および MapmapKeysmapValues)の値に対するテキストインデックスのサポートを追加しました。サポートされる関数は mapContainsKeyhas です。 #87602 (Elmi Ahmadov)。
  • 有効期限が切れたグローバル ZooKeeper セッション数を示す新しい ZooKeeperSessionExpired メトリクスを追加。 #87613 (Miсhael Stetsyuk).
  • バックアップ専用の設定(たとえば backup_slow_all_threads_after_retryable_s3_error)を持つ S3 ストレージクライアントを、バックアップ先へのサーバーサイド(ネイティブ)コピーに使用するようにしました。s3_slow_all_threads_after_retryable_error を廃止しました。 #87660 (Julia Kartseva).
  • 実験的機能である make_distributed_plan を使用したクエリプランのシリアライズ時に、max_joined_block_size_rows および max_joined_block_size_bytes の設定が正しく処理されない問題を修正。 #87675 (Vladimir Cherkasov).
  • enable_http_compression 設定がデフォルトで有効になりました。これは、クライアントが HTTP 圧縮を受け入れる場合、サーバーがそれを使用することを意味します。ただし、この変更にはいくつかのデメリットがあります。クライアントは bzip2 のような計算コストの高い圧縮方式を要求でき、これは現実的ではなく、サーバーのリソース消費を増加させます(ただし、これは大きな結果セットが転送される場合にのみ顕在化します)。クライアントは gzip を要求することもでき、これはそれほど悪くはありませんが、zstd と比較すると最適とは言えません。#71591 をクローズ。#87703Alexey Milovidov)。
  • system.server_settings に新しいエントリ keeper_hosts を追加し、ClickHouse が接続可能な [Zoo]Keeper ホストの一覧を参照できるようにしました。 #87718 (Nikita Mikhaylov)。
  • 履歴調査を容易にするために、system ダッシュボードに fromto の値を追加しました。 #87823 (Mikhail f. Shiryaev)。
  • Iceberg の SELECT に対するパフォーマンス計測用の情報をさらに追加。 #87903 (Daniil Ivanik).
  • Filesystem キャッシュの改善: キャッシュ領域を同時に予約しているスレッド間で、キャッシュ優先度イテレータを再利用するようにしました。 #87914 (Kseniia Sumarokova).
  • Keeper に対するリクエストサイズを制限できるようにしました(ZooKeeperjute.maxbuffer と同様の max_request_size SETTING。後方互換性のためデフォルトは OFF で、今後のリリースで有効化される予定です)。 #87952 (Azat Khuzhin)。
  • clickhouse-benchmark はデフォルトでエラーメッセージにスタックトレースを含めないようにしました。 #87954 (Ahmed Gouda).
  • マークがキャッシュに存在する場合は、スレッドプールを利用した非同期マーク読み込み(load_marks_asynchronously=1)は使用しないでください(プールが逼迫している可能性があり、マークがすでにキャッシュ内にあってもクエリの待ち時間が増えるなどのペナルティを受けるため)。 #87967 (Azat Khuzhin).
  • Ytsaurus: カラムの一部のみを指定して CREATE TABLE/テーブル関数/辞書を作成できるようにしました。 #87982 (MikhailBurdukov).
  • 今後、system.zookeeper_connection_log はデフォルトで有効になり、Keeper セッションに関する情報を取得するために利用できます。 #88011 (János Benjamin Antal).
  • 重複した外部テーブルが渡された場合の TCP と HTTP の挙動を一貫させました。HTTP では、一時テーブルを複数回渡すことが許可されています。 #88032 (Sema Checherinda).
  • Arrow/ORC/Parquet の読み取り用に使用していたカスタム MemoryPools を削除しました。#84082 により、すべてのアロケーションを追跡するようになったため、このコンポーネントは不要になりました。#88035Nikita Mikhaylov)。
  • 引数を指定せずに Replicated データベースを作成できるようにしました。 #88044 (Pervakov Grigorii).
  • clickhouse-keeper-client: clickhouse-keeper の TLS ポートへの接続をサポートし、フラグ名は clickhouse-client と同じもののままとしました。 #88065 (Pradeep Chhetri).
  • メモリ制限を超過したためにバックグラウンドのマージが拒否された回数を追跡する新しいプロファイルイベントを追加しました。 #88084 (Grant Holly)。
  • CREATE/ALTER TABLE のカラムのデフォルト式を検証するアナライザーを有効にしました。 #88087 (Max Justus Spransy).
  • 内部のクエリプランニングを改善し、CROSS JOIN に JoinStepLogical を使用するようにしました。 #88151 (Vladimir Cherkasov).
  • hasAnyTokens 関数に hasAnyTokenhasAllTokens 関数に hasAllToken というエイリアスを追加しました。 #88162 (George Larionov).
  • グローバルサンプリングプロファイラをデフォルトで有効にしました(クエリに関連しないサーバースレッドも含まれます)。すべてのスレッドのスタックトレースを、CPU 時間および実時間の両方について 10 秒ごとに収集します。 #88209 (Alexander Tokmakov)。
  • コピーおよびコンテナ作成機能で発生していた 'Content-Length' の問題を修正した Azure SDK へ更新。 #88278 (Smita Kulkarni).
  • MySQL との互換性を高めるため、関数 lag を大文字小文字を区別しないようにしました。 #88322 (Lonny Kapelushnik).
  • clickhouse-server ディレクトリから clickhouse-local を起動できるようにしました。以前のバージョンでは、Cannot parse UUID: . というエラーが発生していました。これにより、サーバーを起動せずに clickhouse-local を起動してサーバーのデータベースを操作できるようになりました。 #88383 (Alexey Milovidov)。
  • keeper_server.coordination_settings.check_node_acl_on_remove 設定を追加しました。有効な場合は、各ノードを削除する前に、そのノード自身および親ノードの両方の ACL が検証されます。無効な場合は、親ノードの ACL のみが検証されます。 #88513 (Antonio Andelic).
  • Vertical フォーマットを使用する場合、JSON カラムが見やすく整形して表示されるようになりました。#81794 をクローズします。#88524Frank Rosner)。
  • clickhouse-client のファイル(例: クエリ履歴)をホームディレクトリ直下ではなく、XDG Base Directories 仕様で定義された場所に保存するようになりました。すでに存在している場合は、引き続き ~/.clickhouse-client-history が使用されます。 #88538 (Konstantin Bogdanov)。
  • GLOBAL IN に起因するメモリリークを修正(https://github.com/ClickHouse/ClickHouse/issues/88615)。 #88617pranavmehta94)。
  • 文字列引数を受け取れるように、hasAny/hasAllTokens にオーバーロードを追加しました。 #88679 (George Larionov).
  • clickhouse-keeper がブート時に起動できるようにするステップを postinstall スクリプトに追加しました。 #88746 (YenchangChan).
  • Web UI では、キー入力のたびではなく、貼り付け時にのみ認証情報をチェックするようにしました。これにより、設定が誤っている LDAP サーバーで発生していた問題を回避します。この変更により #85777 が解決されました。 #88769 (Alexey Milovidov)。
  • CONSTRAINT 違反時の例外メッセージの長さを制限しました。以前のバージョンでは、非常に長い文字列が挿入された場合に、同様に非常に長い例外メッセージが出力され、それが query_log に書き込まれてしまうことがありました。#87032 をクローズ。#88801Alexey Milovidov)。
  • テーブル作成時に ArrowFlight サーバーからデータセットの構造を取得する処理を修正。 #87542 (Vitaly Baranov).

バグ修正(公式安定版リリースにおけるユーザーに影響する不具合)

  • GeoParquet が原因でクライアントプロトコルエラーが発生していた問題を修正しました。 #84020 (Michael Kolupaev).
  • イニシエーターノード上のサブクエリ内で、shardNum() のようなホスト依存関数の解決処理を修正。 #84409 (Eduard Karacharov)。
  • parseDateTime64BestEffortchange{Year,Month,Day}makeDateTime64 など、いくつかの日時関連関数において、エポック以前の日付で小数秒を含む値の扱いが誤っていた問題を修正しました。これまでは、小数秒部分を秒に加算すべきところを減算していました。たとえば parseDateTime64BestEffort('1969-01-01 00:00:00.468') は、本来 1969-01-01 00:00:00.468 を返すべきところで 1968-12-31 23:59:59.532 を返していました。 #85396 (xiaohuanlin).
  • 同じ ALTER ステートメント内でカラムの状態が変化した場合に、ALTER COLUMN IF EXISTS コマンドが失敗する問題を修正しました。DROP COLUMN IF EXISTS、MODIFY COLUMN IF EXISTS、COMMENT COLUMN IF EXISTS、RENAME COLUMN IF EXISTS などのコマンドは、同一ステートメント内のそれ以前のコマンドによってカラムが削除されたケースを正しく処理するようになりました。 #86046 (xiaohuanlin).
  • サポート対象範囲外の日付に対する Date/DateTime/DateTime64 型の推論を修正。 #86184 (Pavel Kruglov).
  • AggregateFunction(quantileDD) カラムに対してユーザーが送信した一部の有効なデータが、マージ処理中に無限再帰に陥ってクラッシュを引き起こす可能性があった問題を修正しました。 #86560 (Raphaël Thériault).
  • cluster テーブル関数として作成されたテーブルで JSON/Dynamic 型をサポートしました。 #86821 (Pavel Kruglov)。
  • CTE 内で計算される関数の結果が、クエリ内で非決定的になっていた問題を修正。 #86967 (Yakov Olkhovskiy).
  • 主キーのカラム上で pointInPolygon を使用した EXPLAIN で発生していた LOGICAL_ERROR を修正。 #86971 (Michael Kolupaev).
  • 名前にパーセントエンコードされたシーケンスを含むデータレイクテーブルを修正しました。 #86626 をクローズしました。 #87020Anton Ivashkin)。
  • optimize_functions_to_subcolumns を使用した OUTER JOIN において、Nullable なカラムに対する IS NULL の誤った動作を修正しました。#78625 をクローズしました。#87058Vladimir Cherkasov)。
  • max_temporary_data_on_disk_size 制限のトラッキングにおいて、一時データの解放を誤って計上していた問題を修正しました。#87118 をクローズ。#87140 (JIaQi)。
  • 関数 checkHeaders は、提供されたヘッダーを適切に検証し、禁止されているヘッダーを拒否するようになりました。原作者: Michael Anastasakis (@michael-anastasakis)。#87172Raúl Marín)。
  • すべての数値型に対して toDatetoDate32 の動作を同一にしました。int16 からのキャスト時における Date32 のアンダーフロー検査を修正しました。 #87176 (Pervakov Grigorii).
  • 複数の JOIN を含むクエリで、特に LEFT / INNER JOIN の後に RIGHT JOIN が続く場合に、parallel replicas の利用時に発生していた論理エラーを修正しました。 #87178 (Igor Nikonov).
  • スキーマ推論キャッシュで input_format_try_infer_variants 設定が考慮されるようにしました。 #87180 (Pavel Kruglov).
  • pathStartsWith 関数が、指定したプレフィックス配下のパスにのみマッチするように修正しました。 #87181 (Raúl Marín).
  • _row_number 仮想カラムおよび Iceberg の positioned delete 操作における論理エラーを修正しました。 #87220 (Michael Kolupaev).
  • const ブロックと非 const ブロックが混在していたことにより JOIN で発生していた、LOGICAL_ERROR "Too large size passed to allocator" を修正しました。 #87231 (Azat Khuzhin).
  • 別の MergeTree テーブルを読み取るサブクエリを含む論理更新で発生していた不具合を修正しました。 #87285 (Anton Popov).
  • ROW POLICY が有効な場合に正しく動作しなかった move-to-prewhere 最適化を修正しました。#85118 の継続対応です。#69777 をクローズします。#83748 をクローズします。#87303 (Nikolai Kochetov)。
  • データパーツ内に存在しないデフォルト式を持つカラムへのパッチ適用の問題を修正しました。 #87347 (Anton Popov).
  • MergeTree テーブルで重複するパーティションフィールド名を使用した場合にセグメンテーションフォルトが発生していた問題を修正しました。 #87365 (xiaohuanlin).
  • EmbeddedRocksDB のアップグレード処理を修正。 #87392 (Raúl Marín).
  • オブジェクトストレージ上のテキスト索引からの直接読み込みの問題を修正しました。 #87399 (Anton Popov).
  • 存在しないエンジンに対する権限が作成できないようにしました。 #87419 (Jitendra).
  • s3_plain_rewritable に対しては「not found」エラーのみを無視するようにしました(それ以外のエラーを無視するとあらゆる問題につながる可能性があります)。 #87426 (Azat Khuzhin)。
  • YTSaurus ソースおよび *range_hashed レイアウトを使用する辞書を修正しました。 #87490 (MikhailBurdukov)。
  • 空のタプル配列の作成を修正。 #87520 (Pavel Kruglov).
  • 一時テーブル作成時に不正なカラムをチェックするようにしました。 #87524 (Pavel Kruglov).
  • Hive のパーティションカラムをフォーマットヘッダーに含めないようにしました。 #87515 を修正しました。 #87528Arthur Passos)。
  • テキストフォーマット使用時の DeltaLake におけるフォーマットからの読み取り準備処理を修正。 #87529 (Pavel Kruglov).
  • Buffer テーブルに対する SELECT および INSERT のアクセス検証を修正しました。 #87545 (pufit).
  • S3 テーブルに対してデータスキッピング索引を作成できないようにしました。 #87554 (Bharat Nallan).
  • 非同期ロギングにおいてトラッキングされているメモリがリークし(10時間で約100GiBに達する大きなドリフトが発生しうる)、text_log においてもほぼ同程度のドリフトが発生しうる問題を回避しました。 #87584 (Azat Khuzhin)。
  • View または Materialized View の SELECT の設定によってグローバルなサーバー設定が上書きされてしまう可能性があったバグを修正しました。この問題は、当該 View が非同期に削除され、バックグラウンドのクリーンアップが完了する前にサーバーが再起動された場合に発生する可能性がありました。 #87603 (Alexander Tokmakov)。
  • メモリ過負荷警告を計算する際、可能であればユーザースペースページキャッシュのバイト数を除外するように修正しました。 #87610 (Bharat Nallan).
  • CSV デシリアライズ時の型の並びが誤っていると LOGICAL_ERROR が発生していたバグを修正しました。 #87622 (Yarik Briukhovetskyi).
  • 実行可能ディクショナリに対する command_read_timeout の処理が誤っていた問題を修正。#87627 (Azat Khuzhin)。
  • 新しい analyzer 使用時に、置換されたカラムでフィルタリングした場合、WHERE 句における SELECT * REPLACE の動作が誤っていた問題を修正しました。 #87630 (xiaohuanlin).
  • Distributed テーブル上で Merge を使用した場合の二段階集約処理を修正しました。 #87687 (c-end).
  • 右側の行リストが使用されていない場合の HashJoin アルゴリズムにおける出力ブロックの生成を修正。 #87401 を修正。 #87699 (Dmitry Novik)。
  • 索引解析を適用した結果、読み取るデータが存在しない場合に、誤った並列レプリカ読み取りモードが選択されてしまう可能性がありました。 #87653 をクローズしました。 #87700 (zoomxi).
  • Glue における timestamp / timestamptz カラムの処理を修正。 #87733 (Andrey Zvonov).
  • この変更により、#86587 がクローズされました。 #87761scanhex12)。
  • PostgreSQL インターフェースでの boolean 値の書き込みを修正。 #87762 (Artem Yurov)。
  • CTE を含む INSERT SELECT クエリで発生していた不明なテーブルに関するエラーを修正。#85368#87789Guang Zhao)。
  • Nullable 内に含められない Variants から NULL な map サブカラムを読み取る処理を修正。 #87798 (Pavel Kruglov).
  • セカンダリノードでクラスタ上のデータベースを完全に削除できなかった場合のエラー処理を修正。 #87802 (Tuan Pham Anh).
  • 複数の skip index 関連のバグを修正。 #87817 (Raúl Marín)。
  • AzureBlobStorage において、まずネイティブコピーを試行し、'Unauthroized' エラーが発生した場合に読み書きでのコピーに切り替えるように更新しました(AzureBlobStorage で、ソースとデスティネーションでストレージアカウントが異なる場合、'Unauthorized' エラーが発生します)。また、構成でエンドポイントが定義されている場合に "use_native_copy" が適用されない問題を修正しました。 #87826 (Smita Kulkarni).
  • ArrowStream ファイルに一意でない Dictionary が含まれている場合、ClickHouse がクラッシュする問題がありました。 #87863 (Ilya Golshtein).
  • approx_top_k および finalizeAggregation 使用時に発生する致命的な不具合を修正。 #87892 (Jitendra).
  • 最後のブロックが空の場合に、プロジェクション付きマージが正しく行われない不具合を修正しました。 #87928 (Raúl Marín).
  • 引数型が GROUP BY で許可されていない場合に、GROUP BY から単射関数を削除しないようにしました。 #87958 (Pavel Kruglov).
  • session_timezone SETTING をクエリで使用した場合に、datetime ベースのキーに対する granule/パーティションの除外処理が正しく行われない問題を修正。 #87987 (Eduard Karacharov)。
  • PostgreSQL インターフェイスで、クエリ実行後に影響を受けた行数を返すようになりました。 #87990 (Artem Yurov).
  • 誤った結果を引き起こす可能性があるため、PASTE JOIN に対するフィルタープッシュダウンの利用を制限しました。 #88078 (Yarik Briukhovetskyi).
  • https://github.com/ClickHouse/ClickHouse/pull/84503 で導入された権限チェックに対し、評価を行う前に URI の正規化を適用します。#88089pufit)。
  • 新しいアナライザで ARRAY JOIN COLUMNS() がどのカラムにも一致しない場合に発生していた論理エラーを修正。 #88091 (xiaohuanlin).
  • "High ClickHouse memory usage" 警告を、ページキャッシュを除外するように修正。 #88092 (Azat Khuzhin).
  • MergeTree テーブルにカラム TTL が設定されている場合に発生しうるデータ破損を修正しました。 #88095 (Anton Popov)。
  • 外部データベース(PostgreSQL/SQLite/...)に不正なテーブルが接続されている状態で system.tables を読み込む際に発生しうる未処理例外を修正。 #88105 (Azat Khuzhin)。
  • 空のタプルを引数として呼び出した場合に mortonEncode および hilbertEncode 関数がクラッシュする不具合を修正しました。#88110 (xiaohuanlin).
  • クラスタ内に非アクティブなレプリカが存在する場合でも、ON CLUSTER クエリがより短い時間で完了するようになりました。 #88153 (alesapin).
  • DDL worker がレプリカの Set から古くなったホストをクリーンアップするようになりました。これにより ZooKeeper に保存されるメタデータの量が削減されます。 #88154 (alesapin).
  • cgroups を使用しない環境で ClickHouse を実行できない問題を修正しました(誤って cgroups が非同期メトリクスの必須要件になっていました)。 #88164 (Azat Khuzhin).
  • エラー発生時にディレクトリ移動操作を正しくロールバックできるようにしました。ルートだけでなく、実行中に変更されたすべての prefix.path オブジェクトを書き換える必要があります。 #88198 (Mikhail Artemenko).
  • ColumnLowCardinality における is_shared フラグの伝播を修正しました。これは、ハッシュ値がすでに計算されて ReverseIndex にキャッシュされた後で、新しい値がカラムに挿入された場合に、誤った GROUP BY の結果をもたらす可能性がありました。 #88213 (Nikita Taranov)。
  • ワークロード設定 max_cpu_share を修正しました。これにより、ワークロード設定 max_cpus が指定されていなくても使用できるようになりました。 #88217 (Neerav).
  • サブクエリを含む非常に重い mutation が prepare 段階でスタックしてしまう不具合を修正しました。これらの mutation は SYSTEM STOP MERGES で停止できるようになりました。 #88241 (alesapin).
  • これで相関サブクエリがオブジェクトストレージでも動作するようになりました。 #88290 (alesapin).
  • system.projections および system.data_skipping_indices にアクセス中は DataLake データベースの初期化を行わないようにしました。 #88330 (Azat Khuzhin)。
  • show_data_lake_catalogs_in_system_tables が明示的に有効化されている場合にのみ、データレイクのカタログが system のイントロスペクション用テーブルに表示されるようになりました。 #88341 (alesapin).
  • DatabaseReplicated が interserver_http_host 設定に正しく従うように修正しました。 #88378 (xiaohuanlin)。
  • 位置引数は、内部クエリ段階では妥当ではないため、PROJECTION を定義するコンテキストでは明示的に無効になりました。これにより #48604 が修正されました。 #88380 (Amos Bird)。
  • countMatches 関数が二乗時間の計算量になっていた問題を修正しました。 #88400 をクローズしました。 #88401Alexey Milovidov)。
  • KeeperMap テーブルに対する ALTER COLUMN ... COMMENT コマンドがレプリケートされ、Replicated データベースのメタデータにコミットされてすべてのレプリカに伝播されるようにしました。#88077 をクローズ。 #88408Eduard Karacharov)。
  • Database Replicated データベースにおける Materialized Views で、誤った循環依存が検出され、新しいレプリカをデータベースに追加できなくなっていた問題を修正しました。 #88423 (Nikolay Degterinsky).
  • group_by_overflow_modeany に設定されている場合のスパースなカラムの集計処理を修正しました。 #88440 (Eduard Karacharov)。
  • 複数の FULL JOIN USING 句と query_plan_use_logical_join_step=0 を併用した場合に「column not found」エラーが発生する問題を修正しました。#88103 をクローズしました。#88473Vladimir Cherkasov)。
  • ノード数が 10 を超える大規模クラスタでは、[941] 67c45db4-4df4-4879-87c5-25b8d1e0d414 &lt;Trace&gt;: RestoreCoordinationOnCluster The version of node /clickhouse/backups/restore-7c551a77-bd76-404c-bad0-3213618ac58e/stage/num_hosts changed (attempt #9), will try again というエラーにより、復元が失敗する確率が高くなります。num_hosts ノードが多数のホストによって同時に上書きされてしまいます。この修正により、試行回数を制御する設定が動的になりました。#87721 をクローズします。#88484Mikhail f. Shiryaev)。
  • この PR は 23.8 以前との互換性を確保するためだけのものです。互換性の問題はこの PR によって導入されました: https://github.com/ClickHouse/ClickHouse/pull/54240。この SQL は enable_analyzer=0 の場合に失敗します(23.8 より前では問題ありませんでした)。#88491 (JIaQi)。
  • 大きな値を DateTime に変換する際の accurateCast エラーメッセージで発生する UBSAN の整数オーバーフローを修正しました。 #88520 (xiaohuanlin).
  • タプル型に対する CoalescingMergeTree を修正しました。これにより #88469 がクローズされました。 #88526scanhex12)。
  • iceberg_format_version=1 に対する DELETE 操作を禁止しました。これにより #88444 がクローズされました。 #88532 (scanhex12).
  • このパッチでは、フォルダ階層の深さに依存せずに plain-rewritable ディスクを移動する操作の不具合を修正します。 #88586 (Mikhail Artemenko)。
  • *cluster 関数における SQL SECURITY DEFINER の動作を修正しました。 #88588 (Julian Maicher).
  • 内部の const PREWHERE カラムが同時に変更されることで発生し得るクラッシュを修正しました。 #88605 (Azat Khuzhin).
  • テキスト索引からの読み取りを修正し、use_skip_indexes_on_data_read および use_query_condition_cache 設定が有効な場合にクエリ条件キャッシュを利用できるようにしました。 #88660 (Anton Popov).
  • Poco::Net::HTTPChunkedStreamBuf::readFromDevice からスローされる Poco::TimeoutException 例外が原因で SIGABRT によるクラッシュが発生する問題を修正。 #88668 (Miсhael Stetsyuk)。
  • #88910 にバックポートされました: リカバリ後、Replicated データベースのレプリカが長時間にわたり Failed to marked query-0004647339 as finished (finished=No node, synced=No node) のようなメッセージを出力し続けてスタックした状態になることがありましたが、この問題は修正されました。 #88671 (Alexander Tokmakov)。
  • 設定を再読み込みした後に ClickHouse が初回接続を行う場合に、system.zookeeper_connection_log へ追記できない問題を修正。 #88728 (Antonio Andelic)。
  • date_time_overflow_behavior = 'saturate' を使用して DateTime64 を Date に変換する際、タイムゾーンを扱う場合に範囲外の値に対して誤った結果となる可能性があった不具合を修正しました。 #88737 (Manuel).
  • キャッシュを有効にした S3 テーブルエンジンで発生する「having zero bytes」エラーを修正する N 回目の試み。 #88740 (Kseniia Sumarokova).
  • loop テーブル関数に対する SELECT 時のアクセス検証を修正しました。 #88802 (pufit).
  • 非同期ロギングが失敗した際に例外を捕捉して、プログラムが異常終了しないようにしました。 #88814 (Raúl Marín).
  • #89060 にバックポート: 単一の引数で呼び出されたときに top_k が threshold パラメータを正しく反映するように修正。#88757 をクローズ。#88867Manuel)。
  • #88944 にバックポートされました: 関数 reverseUTF8 のバグを修正しました。以前のバージョンでは、長さ 4 の UTF-8 コードポイントのバイト列を誤って反転していました。これにより #88913 がクローズされます。 #88914Alexey Milovidov)。
  • #88980 にバックポート: SQL SECURITY DEFINER 付きでビューを作成する際に、SET DEFINER <current_user>:definer へのアクセス権を検査しないようにしました。#88968pufit)。
  • #89058 にバックポート済み: 部分的な QBit 読み取りの最適化により、pNullable の場合に戻り値の型から誤って Nullable が削除されてしまっていた L2DistanceTransposed(vec1, vec2, p) 内の LOGICAL_ERROR を修正しました。#88974Raufs Dunamalijevs)。
  • #89167 にバックポート済み: 不明なカタログタイプにより発生するクラッシュを修正。 #88819 を解決。 #88987scanhex12)。
  • #89028 にバックポート済み: スキップインデックスの解析で発生していたパフォーマンス低下を修正しました。#89004 (Anton Popov)。

ビルド/テスト/パッケージングの改善

  • postgres ライブラリのバージョン 18.0 を使用。 #87647 (Konstantin Bogdanov).
  • FreeBSD 向けに ICU を有効化。 #87891 (Raúl Marín).
  • 動的ディスパッチを SSE 4 ではなく SSE 4.2 に対して行っている場合には、SSE 4.2 を使用。 #88029 (Raúl Marín).
  • Speculative Store Bypass Safe が利用できない場合に NO_ARMV81_OR_HIGHER フラグを必須にしない。 #88051 (Konstantin Bogdanov).
  • ClickHouse が ENABLE_LIBFIU=OFF でビルドされている場合、failpoint 関連の関数は no-op(何もしない処理)となり、パフォーマンスに影響しなくなる。この場合、SYSTEM ENABLE/DISABLE FAILPOINT クエリは SUPPORT_IS_DISABLED エラーを返す。 #88184 (c-end).

ClickHouse リリース 25.9、2025-09-25

非互換の変更

  • IPv4/IPv6 に対する意味のない二項演算を無効化しました: IPv4/IPv6 と非整数型との加算 / 減算は無効になりました。以前は浮動小数点型との演算を許可し、一部の他の型(たとえば DateTime)では論理エラーを投げていました。 #86336 (Raúl Marín).
  • 設定 allow_dynamic_metadata_for_data_lakes を非推奨化しました。現在では、すべての Iceberg テーブルが、各クエリを実行する前にストレージから最新のテーブルスキーマを取得しようとします。 #86366 (Daniil Ivanik).
  • OUTER JOIN ... USING 句からの coalesced カラムの解決方法を、より一貫性があるように変更しました: 以前は、OUTER JOIN で USING カラムと修飾付きカラム (a, t1.a, t2.a) の両方を選択した場合、USING カラムが誤って t1.a に解決され、左側に一致がない右テーブルの行に対して 0/NULL を表示していました。現在では、USING 句内の識別子は常に coalesced カラムに解決され、修飾付き識別子は、クエリ内にどの識別子が存在しているかに関係なく、非 coalesced カラムに解決されます。たとえば: ```sql SELECT a, t1.a, t2.a FROM (SELECT 1 as a WHERE 0) t1 FULL JOIN (SELECT 2 as a) t2 USING (a) -- 変更前: a=0, t1.a=0, t2.a=2 (誤り - 'a' が t1.a に解決されている) -- 変更後: a=2, t1.a=0, t2.a=2 (正しい - 'a' は coalesced)。 #80848 (Vladimir Cherkasov).
  • レプリケーテッドテーブルの重複排除ウィンドウを 10000 まで拡大しました。これは後方互換性は保たれていますが、多数のテーブルが存在する状況では、この変更によって高いリソース消費が発生しうるシナリオが想定されます。 #86820 (Sema Checherinda).

新機能

  • NATS エンジンで新しい nats_streamnats_consumer の設定を指定することで、NATS JetStream を利用してメッセージを購読できるようになりました。 #84799 (Dmitry Novikov).
  • arrowFlight テーブル関数に認証および SSL のサポートを追加しました。#87120 (Vitaly Baranov)。
  • AWS がサポートする Intelligent-Tiering を指定できる storage_class_name という名前の新しいパラメータを S3 テーブルエンジンおよび s3 テーブル関数に追加しました。キー・バリュー形式と位置指定形式(非推奨)の両方をサポートします。 #87122 (alesapin)。
  • Iceberg テーブルエンジン用の ALTER UPDATE#86059 (scanhex12)。
  • SELECT 文で Iceberg メタデータファイルを取得できるように、system テーブル iceberg_metadata_log を追加。#86152 (scanhex12).
  • Iceberg および DeltaLake テーブルで、ストレージレベルの設定項目 disk によるカスタムディスク構成がサポートされるようになりました。 #86778 (scanhex12).
  • データレイクディスクで Azure をサポートしました。 #87173 (scanhex12).
  • Azure Blob Storage 上での Unity カタログをサポート。#80013Smita Kulkarni)。
  • Iceberg 書き込みで追加のフォーマット(ORCAvro)をサポートしました。これにより #86179 が解決されました。 #87277 (scanhex12)。
  • データベース レプリカに関する情報を保持する新しいシステムテーブル database_replicas を追加。 #83408 (Konstantin Morozov).
  • 一方の配列から他方の配列を集合として差し引く関数 arrayExcept を追加しました。 #82368 (Joanna Hulboj)。
  • 新しい system.aggregated_zookeeper_log テーブルを追加しました。このテーブルには、セッション ID、親パス、オペレーション種別ごとにグループ化された ZooKeeper オペレーションの統計情報(例: オペレーション数、平均レイテンシ、エラー数)が記録されており、定期的にディスクにフラッシュされます。 #85102 #87208 (Miсhael Stetsyuk)。
  • 新しい関数 isValidASCII を追加しました。入力文字列または FixedString が ASCII バイト(0x00~0x7F)のみから成る場合は 1 を返し、それ以外の場合は 0 を返します。#85377 をクローズしました。... #85786rajat mohan)。
  • ブール型設定は引数なしで指定できます(例:SET use_query_cache;)。これは値を true に設定することと同等です。#85800 (thraeka)。
  • 新しい設定オプション logger.startupLevellogger.shutdownLevel により、それぞれ ClickHouse の起動時およびシャットダウン時のログレベルを上書き設定できるようになりました。 #85967 (Lennard Eijsackers).
  • 集約関数 timeSeriesChangesToGrid および timeSeriesResetsToGridtimeSeriesRateToGrid と同様に動作し、開始タイムスタンプ、終了タイムスタンプ、ステップ、ルックバックウィンドウのパラメータに加えて、タイムスタンプと値の 2 つの引数を受け取りますが、各ウィンドウごとに少なくとも 1 サンプル(従来の 2 サンプルではなく)を必要とします。PromQL の changes/resets を計算し、パラメータで定義されたタイムグリッドの各タイムスタンプについて、指定されたウィンドウ内でサンプル値が変化または減少した回数をカウントします。戻り値の型は Array(Nullable(Float64)) です。 #86010 (Stephen Chi)。
  • 一時テーブルと同様の構文(CREATE TEMPORARY VIEW)を用いて一時ビューを作成できるようになりました。 #86432 (Aly Kafoury)。
  • CPU およびメモリ使用量に関する警告を system.warnings テーブルに追加。 #86838 (Bharat Nallan)。
  • Protobuf 入力で oneof インジケータをサポートしました。oneof の一部の存在を示すための特別なカラムを使用できます。メッセージに oneof が含まれていて、input_format_protobuf_oneof_presence が設定されている場合、ClickHouse はどの oneof フィールドが見つかったかを示すカラムを設定します。#82885Ilya Golshtein)。
  • jemalloc の内部ツールに基づくアロケーションプロファイリングを改善しました。グローバル jemalloc プロファイラは、jemalloc_enable_global_profiler 設定で有効化できるようになりました。サンプリングされたグローバルなアロケーションおよびデアロケーションは、jemalloc_collect_global_profile_samples_in_trace_log 設定を有効にすることで、JemallocSample 型として system.trace_log に保存できます。jemalloc プロファイリングは、jemalloc_enable_profiler SETTING を用いてクエリごとに有効化できるようになりました。system.trace_log へのサンプル保存は、jemalloc_collect_profile_samples_in_trace_log SETTING を用いてクエリ単位で制御できます。jemalloc をより新しいバージョンに更新しました。 #85438 (Antonio Andelic)。
  • Iceberg テーブルを DROP した際にファイルを削除するための新しい設定を追加しました。これにより #86211 がクローズされました。 #86501 (scanhex12)。

実験的機能

  • 反転テキスト索引を、RAM に収まりきらない規模のデータセットにもスケールするよう、ゼロから再設計しました。 #86485 (Anton Popov).
  • 結合の並べ替えで統計情報を使用するようになりました。この機能は allow_statistics_optimize = 1query_plan_optimize_join_order_limit = 10 を設定することで有効化できます。 #86822 (Han Fei).
  • alter table ... materialize statistics all 構文をサポートし、テーブルのすべての統計情報をマテリアライズできるようにしました。 #87197 (Han Fei).

パフォーマンスの向上

  • 読み取り時にスキップ索引を用いてデータパーツをフィルタリングし、不要な索引読み取りを削減できるようにしました。新しい設定 use_skip_indexes_on_data_read によって制御されます(デフォルトでは無効)。この変更は #75774 に対応するものです。また、#81021 と共通の基盤となる実装も含まれています。 #81526 (Amos Bird)。
  • query_plan_optimize_join_order_limit セtting によって制御される、JOIN を自動で並べ替えてパフォーマンスを向上させる JOIN order optimization を追加しました。なお、現時点での JOIN order optimization は統計情報のサポートが限定的であり、主にストレージエンジンからの行数推定に依存しています。より高度な統計情報の収集およびカーディナリティ推定は、今後のリリースで追加される予定です。アップグレード後に JOIN クエリで問題が発生した場合 は、一時的な回避策として SET query_plan_use_new_logical_join_step = 0 を設定して新しい実装を無効化し、問題を報告して調査にご協力ください。USING 句からの識別子解決に関する注意: OUTER JOIN ... USING 句における coalesced カラムの解決方法を、より一貫性のある動作に変更しました。以前は、OUTER JOIN において USING で指定したカラムと修飾付きカラム(a, t1.a, t2.a)の両方を選択した場合、USING カラムが誤って t1.a に解決され、左テーブルに対応する行がない右テーブルの行について 0/NULL が表示されていました。現在は、USING 句からの識別子は常に coalesced カラムに解決され、修飾付き識別子は、クエリ内に他にどの識別子が存在していても、非 coalesced カラムに解決されます。例: ```sql SELECT a, t1.a, t2.a FROM (SELECT 1 as a WHERE 0) t1 FULL JOIN (SELECT 2 as a) t2 USING (a) -- 変更前: a=0, t1.a=0, t2.a=2 (誤り - 'a' が t1.a に解決されている) -- 変更後: a=2, t1.a=0, t2.a=2 (正しい - 'a' は coalesced)。 #80848 (Vladimir Cherkasov).
  • データレイク向けの分散 INSERT SELECT#86783 (scanhex12).
  • func(primary_column) = 'xx'column in (xxx) といった条件に対する PREWHERE 最適化を改善しました。#85529 (李扬)。
  • JOIN の書き換えを実装しました。1. マッチした行またはマッチしなかった行に対してフィルタ条件が常に偽となる場合、LEFT ANY JOIN および RIGHT ANY JOINSEMI/ANTI JOIN に変換します。この最適化は、新しい設定 query_plan_convert_any_join_to_semi_or_anti_join によって制御されます。2. 片側のマッチしなかった行に対してフィルタ条件が常に偽となる場合、FULL ALL JOINLEFT ALL または RIGHT ALL JOIN に変換します。 #86028 (Dmitry Novik)。
  • 論理削除の実行後における vertical merge の性能を改善しました。 #86169 (Anton Popov).
  • LEFT/RIGHT join において非マッチの行が多数ある場合の HashJoin のパフォーマンスをわずかに最適化しました。 #86312 (Nikita Taranov)。
  • Radix sort:コンパイラが SIMD を利用し、より効率的にプリフェッチできるようにしました。Intel CPU の場合にのみソフトウェアプリフェッチを使用するため、dynamic dispatch を用いています。https://github.com/ClickHouse/ClickHouse/pull/77029 における @taiyang-li の作業を継続したものです。#86378Raúl Marín)。
  • 多数のパーツを含むテーブルに対する短いクエリの実行性能を改善しました(deque の代わりに devector を使用して MarkRanges を最適化)。#86933Azat Khuzhin)。
  • join モードにおけるパッチパーツ適用処理のパフォーマンスを改善しました。#87094 (Anton Popov).
  • query_condition_cache_selectivity_threshold という設定(デフォルト値: 1.0)を追加しました。この設定は、選択度が低い述語のスキャン結果を query condition cache への格納対象から除外します。これにより、キャッシュのヒット率が低下する代わりに、query condition cache のメモリ消費量を削減できます。 #86076 (zhongyuankai).
  • Iceberg への書き込み時のメモリ使用量を削減しました。 #86544 (scanhex12).

改良

  • 単一の挿入操作で Iceberg に複数のデータファイルを書き込めるようになりました。上限を制御するための新しい設定 iceberg_insert_max_rows_in_data_fileiceberg_insert_max_bytes_in_data_file を追加しました。 #86275 (scanhex12).
  • Delta Lake に挿入されるデータファイルに対して行数およびバイト数の上限を追加しました。delta_lake_insert_max_rows_in_data_file および delta_lake_insert_max_bytes_in_data_file の設定で制御できます。 #86357 (Kseniia Sumarokova)。
  • Iceberg 書き込み時のパーティションで利用できる型をさらにサポートしました。これにより #86206 がクローズされました。 #86298scanhex12)。
  • S3 のリトライポリシーを設定可能にし、config XML ファイルを変更した際に S3 ディスクの設定をホットリロードできるようにしました。 #82642 (RinChanNOW).
  • S3(Azure)Queue テーブルエンジンを改善し、ZooKeeper への接続が失われても重複を発生させることなく処理を継続できるようにしました。S3Queue の use_persistent_processing_nodes 設定を有効にする必要があります(ALTER TABLE MODIFY SETTING により変更可能)。#85995Kseniia Sumarokova)。
  • materialized view を作成する際に、TO 句の後ろでクエリパラメータを使用できるようになりました。例えば、CREATE MATERIALIZED VIEW mv TO {to_table:Identifier} AS SELECT * FROM src_table のように指定します。#84899 (Diskein)。
  • Kafka2 テーブルエンジンに誤った設定が指定された場合に表示されるユーザー向けの指示を、より明確になるよう改善しました。 #83701 (János Benjamin Antal).
  • Time 型に対してタイムゾーンを指定することはできなくなりました(そもそも意味がないためです)。 #84689 (Yarik Briukhovetskyi)。
  • best_effort モードでの Time/Time64 型のパースに関連するロジックを簡素化し、一部のバグを回避しました。 #84730 (Yarik Briukhovetskyi).
  • deltaLakeAzure と同様にクラスターモード対応の関数として deltaLakeAzureCluster 関数を追加し、deltaLakeCluster のエイリアスとして deltaLakeS3Cluster 関数を追加しました。 #85358 を解決しました。 #85547Smita Kulkarni)。
  • 通常のコピー操作に対してもバックアップ時と同様に azure_max_single_part_copy_size 設定を適用するようにしました。 #85767 (Ilya Golshtein).
  • S3 オブジェクトストレージで再試行可能なエラーが発生した場合に、S3 クライアントスレッドを減速させるようにしました。これにより、既存の設定 backup_slow_all_threads_after_retryable_s3_error が S3 ディスクにも適用され、より汎用的な名前 s3_slow_all_threads_after_retryable_error に変更されました。 #85918 (Julia Kartseva).
  • 設定項目 allow_experimental_variant/dynamic/json および enable_variant/dynamic/json を非推奨としてマークしました。現在は、これら 3 種類の型はすべて無条件に有効になっています。 #85934 (Pavel Kruglov).
  • http_handlers で、スキーマおよびホスト名:ポートを含む完全な URL 文字列(full_url ディレクティブ)によるフィルタリングをサポートしました。 #86155 (Azat Khuzhin).
  • 新しい設定 allow_experimental_delta_lake_writes を追加。#86180Kseniia Sumarokova)。
  • init.d スクリプトでの systemd の検出ロジックを修正し、「Install packages」チェックが失敗する問題を解消しました。 #86187 (Azat Khuzhin).
  • 新しい startup_scripts_failure_reason 次元メトリクスを追加しました。このメトリクスは、起動スクリプトの失敗につながるさまざまなエラーの種類を区別するために必要です。特にアラート用途では、一時的なエラー(例: MEMORY_LIMIT_EXCEEDEDKEEPER_EXCEPTION)と一時的ではないエラーを区別する必要があります。 #86202 (Miсhael Stetsyuk)。
  • Iceberg テーブルのパーティションで identity 関数を省略できるようにしました。 #86314 (scanhex12).
  • 特定のチャンネルに対してのみ JSON 形式でのログ出力を有効にできるようになりました。これを行うには、logger.formatting.channelsyslog/console/errorlog/log のいずれかに設定します。 #86331 (Azat Khuzhin)。
  • WHERE 句でネイティブな数値を使用できるようにしました。これらはすでに論理関数の引数としては使用可能でした。これにより、filter push-down や move-to-prewhere といった最適化が容易になります。#86390Nikolai Kochetov)。
  • メタデータが破損している Catalog に対して SYSTEM DROP REPLICA を実行した際に発生していたエラーを修正しました。 #86391 (Nikita Mikhaylov).
  • Azure ではアクセス権のプロビジョニングにかなり長い時間がかかる場合があるため、ディスクアクセスチェック(skip_access_check = 0)のために追加のリトライを行うようにしました。 #86419 (Alexander Tokmakov).
  • timeSeries*() 関数における staleness window を、左開・右閉の区間としました。 #86588 (Vitaly Baranov)。
  • FailedInternal*Query プロファイルイベントを追加しました。#86627 (Shane Andrade).
  • 設定ファイルで追加した、名前にドットを含むユーザーの処理を修正しました。 #86633 (Mikhail Koviazin)。
  • クエリのメモリ使用量用の非同期メトリクス(QueriesMemoryUsage および QueriesPeakMemoryUsage)を追加。 #86669 (Azat Khuzhin)。
  • clickhouse-benchmark --precise フラグを使用すると、QPS やその他のインターバルごとのメトリクスをより正確に計測・レポートできます。クエリの実行時間がレポート間隔 --delay D と同程度の場合でも、一貫した QPS を得るのに役立ちます。 #86684 (Sergei Trifonov)。
  • 一部のスレッド(merge/mutate、クエリ、materialized view、zookeeper クライアント)により高い/低い優先度を割り当てられるよう、Linux スレッドの nice 値を設定可能にしました。 #86703 (Miсhael Stetsyuk).
  • 競合状態が原因でマルチパートアップロード中に元の例外が失われた場合に発生する、誤解を招きやすい「specified upload does not exist」エラーを修正しました。 #86725 (Julia Kartseva).
  • EXPLAIN クエリにおけるクエリプランの説明文の長さを制限しました。EXPLAIN 以外のクエリについてはこの説明文を生成しないようにしました。query_plan_max_step_description_length という設定を追加しました。 #86741 (Nikolai Kochetov).
  • クエリプロファイラ(query_profiler_real_time_period_ns / query_profiler_cpu_time_period_ns)向けに、CANNOT_CREATE_TIMER を回避することを目的として、保留中のシグナルを調整できる機能を追加しました。さらに自己診断のために /proc/self/status から SigQ を収集するようにしました(ProcessSignalQueueSizeProcessSignalQueueLimit に近づいている場合、CANNOT_CREATE_TIMER エラーが発生する可能性が高くなります)。 #86760 (Azat Khuzhin)。
  • Keeper における RemoveRecursive リクエストのパフォーマンスを改善しました。 #86789 (Antonio Andelic).
  • JSON 型データの出力時に PrettyJSONEachRow で生成される余分な空白を削除しました。 #86819 (Pavel Kruglov).
  • Plain 書き換え可能ディスクでディレクトリが削除される際に、prefix.path の blob サイズを記録するようにしました。 #86908 (alesapin).
  • リモートの ClickHouse インスタンス(ClickHouse Cloud を含む)に対するパフォーマンステストをサポートするようになりました。使用例:tests/performance/scripts/perf.py tests/performance/math.xml --runs 10 --user &lt;username&gt; --password &lt;password&gt; --host &lt;hostname&gt; --port &lt;port&gt; --secure#86995Raufs Dunamalijevs)。
  • 大量(16MiB超)のメモリを割り当てることが分かっている一部の処理(ソート、非同期挿入、ファイルログ)で、メモリ制限が正しく守られるようにしました。 #87035 (Azat Khuzhin).
  • network_compression_method に設定された値がサポートされている汎用コーデックでない場合に、例外をスローします。 #87097 (Robert Schulze).
  • システムテーブル system.query_cache は、以前は共有エントリ、または同一のユーザーおよびロールに属する非共有エントリのみを返していましたが、現在は すべての クエリ結果キャッシュエントリを返すようになりました。非共有エントリは本来 クエリ結果 を公開しない設計であり、一方で system.query_cacheクエリ文字列 を返すだけなので問題ありません。これにより、このシステムテーブルの挙動は system.query_log により近いものになります。#87104Robert Schulze)。
  • parseDateTime 関数で短絡評価を有効にしました。 #87184 (Pavel Kruglov)。
  • system.parts_columns に新しいカラム statistics を追加。 #87259 (Han Fei).

バグ修正(公式安定版リリースにおけるユーザーに影響する不具合)

  • レプリケートされたデータベースおよび内部でレプリケーションされるテーブルに対しては、ALTER クエリの結果は発行元ノード上でのみ検証されます。これにより、すでにコミット済みの ALTER クエリが他のノードで停止してしまう状況が修正されます。 #83849 (János Benjamin Antal)。
  • BackgroundSchedulePool 内のタスクの種類ごとの数を制限しました。1 つの種類のタスクがすべてのスロットを占有し、他のタスクが飢餓状態になる状況を回避します。また、タスク同士が互いに待ち合うことによるデッドロックも防ぎます。これはサーバー設定 background_schedule_pool_max_parallel_tasks_per_type_ratio によって制御されます。 #84008 (Alexander Tokmakov)。
  • データベースのレプリカをリカバリする際に、テーブルが適切にシャットダウンされるようにしました。不適切なシャットダウンにより、データベースレプリカのリカバリ中に一部のテーブルエンジンで LOGICAL_ERROR が発生する可能性がありました。 #84744 (Antonio Andelic).
  • データベース名のタイプミス修正用ヒントを生成する際に権限を確認するようにしました。 #85371 (Dmitry Novik)。
    1. Hive カラムに対する LowCardinality のサポート 2. 仮想カラムより前に Hive カラムを埋める(https://github.com/ClickHouse/ClickHouse/pull/81040 に必要)3. Hive で空のフォーマットを指定した場合の LOGICAL_ERROR を修正 #85528 4. Hive のパーティションカラムのみが存在する場合のチェックを修正 5. すべての Hive カラムがスキーマで指定されていることを検証 6. Hive を用いた parallel_replicas_cluster の部分的な修正 7. Hive ユーティリティの extractKeyValuePairs で順序付きコンテナを使用(https://github.com/ClickHouse/ClickHouse/pull/81040 に必要)。#85538Arthur Passos)。
  • IN 関数の第 1 引数に対する不要な最適化が行われないようにし、配列マッピング使用時にエラーになることがあった問題を修正。#85546Yakov Olkhovskiy)。
  • parquet ファイルを書き込む際に、iceberg の source id と parquet 名の対応付けがスキーマに従って調整されていませんでした。この PR では、現在のスキーマではなく、各 iceberg データファイルに対応するスキーマを処理するようにしました。 #85829 (Daniil Ivanik).
  • ファイルオープンとは別にファイルサイズを読み取る処理を修正しました。これは、5.10 リリース以前の Linux カーネルに存在したバグへの対応として導入された https://github.com/ClickHouse/ClickHouse/pull/33372 に関連します。 #85837 (Konstantin Bogdanov)。
  • ClickHouse Keeper は、カーネルレベルで IPv6 が無効化されているシステム(例: ipv6.disable=1 の RHEL)でも起動に失敗しなくなりました。最初の IPv6 リスナーの起動に失敗した場合は、IPv4 リスナーへのフォールバックを試みるようになりました。 #85901 (jskong1124).
  • このPRは#77990をクローズします。globalJoin に TableFunctionRemote の並列レプリカ対応を追加しました。#85929zoomxi)。
  • orcschemareader::initializeifneeded() 内のヌルポインタ参照を修正。この PR は次の issue に対応します: #85292 ### ユーザー向け変更のドキュメント項目。#85951 (yanglongwei).
  • FROM 句内の相関サブクエリについて、外側のクエリのカラムを使用している場合にのみ許可するチェックを追加しました。#85469 を修正。#85402 を修正。#85966Dmitry Novik)。
  • 他のカラムの MATERIALIZED 式でサブカラムが使用されているカラムに対する ALTER UPDATE を修正しました。以前は、式内でサブカラムを使用している MATERIALIZED カラムが正しく更新されていませんでした。 #85985 (Pavel Kruglov).
  • PK またはパーティション式で使用されているサブカラムを含むカラムを変更できないようにしました。 #86005 (Pavel Kruglov).
  • DeltaLake ストレージにおいて、デフォルト以外のカラムマッピングモード使用時のサブカラム読み取りの不具合を修正しました。 #86064 (Kseniia Sumarokova)
  • Enum ヒントを含む JSON パスで誤ったデフォルト値が使用されていた問題を修正。 #86065 (Pavel Kruglov)。
  • DataLake hive カタログ URL の解析時に入力をサニタイズするよう修正。#86018 をクローズ。#86092rajat mohan)。
  • ファイルシステムキャッシュの動的リサイズ中に発生する論理エラーを修正。 #86122 および https://github.com/ClickHouse/clickhouse-core-incidents/issues/473 をクローズ。 #86130Kseniia Sumarokova)。
  • DatabaseReplicatedSettings において logs_to_keepNonZeroUInt64 を使用するようにしました。 #86142 (Tuan Pham Anh)。
  • テーブル(例: ReplacingMergeTree)を index_granularity_bytes = 0 という設定で作成していた場合、skip index を使用する FINAL クエリで例外が発生していました。この例外はすでに修正されています。 #86147 (Shankar Iyer).
  • UB を排除し、Iceberg のパーティション式の解析に関する問題を修正します。 #86166 (Daniil Ivanik).
  • 単一の INSERT ステートメント内で const ブロックと non-const ブロックが混在している場合にクラッシュが発生する不具合を修正。 #86230 (Azat Khuzhin)。
  • SQL からディスクを作成する際、デフォルトで /etc/metrika.xml の include を処理するようになりました。 #86232 (alekar).
  • String から JSON への変換における accurateCastOrNull/accurateCastOrDefault を修正。 #86240 (Pavel Kruglov).
  • iceberg エンジンで、'/' を含まないディレクトリを扱えるようにしました。 #86249 (scanhex12).
  • replaceRegex で、FixedString 型の haystack と空の needle の組み合わせで発生していたクラッシュを修正しました。 #86270 (Raúl Marín).
  • ALTER UPDATE Nullable(JSON) の実行時に発生していたクラッシュを修正。 #86281 (Pavel Kruglov).
  • system.tables で欠落していたカラム定義を修正。 #86295 (Raúl Marín)。
  • LowCardinality(Nullable(T)) から Dynamic への型キャストを修正。 #86365 (Pavel Kruglov).
  • DeltaLake への書き込み時に発生していた論理エラーを修正。#86175 をクローズ。#86367Kseniia Sumarokova)。
  • plain_rewritable disk で Azure Blob Storage から空の blob を読み込む際に発生する 416 The range specified is invalid for the current size of the resource. The range specified is invalid for the current size of the resource エラーを修正しました。 #86400 (Julia Kartseva).
  • GROUP BY Nullable(JSON) の不具合を修正。 #86410 (Pavel Kruglov).
  • materialized view に関する不具合を修正しました。特定の MV を一度作成して削除した後、同じ名前で再作成すると正しく動作しない場合がありました。 #86413 (Alexander Tokmakov)。
  • *cluster 関数から読み取る際、すべてのレプリカが利用不能な場合はエラーとするようになりました。 #86414 (Julian Maicher).
  • Buffer テーブルが原因で発生していた MergesMutationsMemoryTracking のメモリリークを修正し、Kafka などからストリーミングする際の query_views_log を修正しました。 #86422 (Azat Khuzhin).
  • エイリアスストレージで参照しているテーブルを削除した後の SHOW TABLES の動作を修正。 #86433 (RinChanNOW)。
  • send_chunk_header を有効にした状態で、HTTP プロトコル経由で UDF が呼び出された場合に chunk ヘッダーが欠落していた問題を修正。 #86469 (Vladimir Cherkasov)。
  • jemalloc のプロファイルフラッシュが有効になっている場合に発生する可能性のあるデッドロックを修正。 #86473 (Azat Khuzhin).
  • DeltaLake テーブルエンジンにおけるサブカラム読み取りの不具合を修正。Closes #86204. #86477 (Kseniia Sumarokova).
  • DDL タスク処理時の衝突を回避するために、ループバックホスト ID を適切に処理するようにしました。. #86479 (Tuan Pham Anh).
  • numeric/decimal 型のカラムを持つ Postgres データベースエンジンのテーブルにおける detach/attach の問題を修正しました。 #86480 (Julian Maicher)。
  • getSubcolumnType における未初期化メモリの使用を修正。 #86498 (Raúl Marín)。
  • 関数 searchAny および searchAll は、needle が空の状態で呼び出された場合、現在は true(いわゆる「すべてにマッチ」)を返すようになりました。以前は false を返していました。(issue #86300)。#86500Elmi Ahmadov)。
  • 最初のバケットに値がない場合に関数 timeSeriesResampleToGridWithStaleness() が正しく動作しない問題を修正しました。 #86507 (Vitaly Baranov)。
  • merge_tree_min_read_task_size を 0 に設定した場合に発生するクラッシュを修正。 #86527 (yanglongwei).
  • 読み取り時に各データファイルのフォーマットをテーブルの引数ではなく Iceberg メタデータから取得するように変更しました。 #86529 (Daniil Ivanik).
  • シャットダウン時のログフラッシュ中に発生する例外を無視して SIGSEGV を回避し、シャットダウンをより安全にしました。 #86546 (Azat Khuzhin).
  • サイズが 0 バイトのパートファイルを含むクエリで Backup データベースエンジンが例外をスローしていた問題を修正。 #86563 (Max Justus Spransy).
  • send_chunk_header が有効にされていて、HTTP プロトコル経由で UDF が呼び出された場合に chunk ヘッダーが欠落していた問題を修正。 #86606 (Vladimir Cherkasov).
  • keeper セッションの有効期限切れにより発生していた、S3Queue の論理エラー「Expected current processor to be equal to 」を修正。 #86615 (Kseniia Sumarokova).
  • INSERT とプルーニングにおける Null 値の扱いに関するバグを修正しました。これにより #86407 がクローズされました。 #86630 (scanhex12).
  • Iceberg メタデータキャッシュが無効な場合でも、ファイルシステムキャッシュを無効化しないようにしました。 #86635 (Daniil Ivanik).
  • Parquet リーダー v3 において発生していた 'Deadlock in Parquet::ReadManager (single-threaded)' エラーを修正。 #86644 (Michael Kolupaev).
  • ArrowFlight の listen_host での IPv6 サポートを修正しました。 #86664 (Vitaly Baranov)。
  • ArrowFlight ハンドラーのシャットダウン処理を修正。この PR は #86596 を修正します。#86665Vitaly Baranov)。
  • describe_compact_output=1 を有効にした分散クエリの問題を修正しました。 #86676 (Azat Khuzhin).
  • ウィンドウ定義の解析およびクエリパラメータの適用処理を修正。 #86720 (Azat Khuzhin).
  • PARTITION BY を指定してテーブルを作成する際に、パーティションのワイルドカードを使用していないにもかかわらず、以前(25.8 より前)のバージョンでは問題なく動作していたケースで例外 Partition strategy wildcard can not be used without a '_partition_id' wildcard. が発生していた問題を修正しました。 https://github.com/ClickHouse/clickhouse-private/issues/37567 をクローズしました。 #86748Kseniia Sumarokova)。
  • 並列クエリが単一のロックを取得しようとした際に発生する LogicalError を修正。#86751 (Pervakov Grigorii)。
  • RowBinary 入力フォーマットで JSON 共有データに NULL が書き込まれる問題を修正し、ColumnObject に追加の検証をいくつか導入。 #86812 (Pavel Kruglov).
  • 空の Tuple と LIMIT の組み合わせ時の順列処理の不具合を修正。 #86828 (Pavel Kruglov).
  • 永続 processing ノード用に個別の keeper ノードを使用しないよう修正しました。修正内容: https://github.com/ClickHouse/ClickHouse/pull/85995#86406 をクローズ。#86841Kseniia Sumarokova)。
  • Replicated データベースにおいて、TimeSeries エンジンテーブルが新しいレプリカの作成を妨げていた問題を修正。 #86845 (Nikolay Degterinsky).
  • 特定の Keeper ノードが存在しないタスクがある場合の system.distributed_ddl_queue に対するクエリ処理を修正しました。 #86848 (Antonio Andelic).
  • 解凍済みブロックの末尾でのシーク処理を修正。 #86906 (Pavel Kruglov)。
  • Iceberg Iterator の非同期実行中にスローされる例外を処理しました。 #86932 (Daniil Ivanik).
  • 大きな前処理済み XML 設定ファイルの保存処理を修正しました。 #86934 (c-end).
  • system.iceberg_metadata_log テーブルで date フィールドの値が正しく設定されない問題を修正。 #86961 (Daniil Ivanik).
  • WHERE 句付きの TTL が無限に再計算される不具合を修正しました。 #86965 (Anton Popov).
  • ROLLUP および CUBE 修飾子を使用した際に uniqExact 関数が誤った結果を返す可能性があった不具合を修正しました。 #87014 (Nikita Taranov).
  • parallel_replicas_for_cluster_functions 設定が 1 の場合に、url() テーブル関数でテーブルスキーマを解決できない問題を修正しました。 #87029 (Konstantin Bogdanov)。
  • PREWHERE の出力を複数のステップに分割した場合でも正しくキャストされるように修正しました。 #87040 (Antonio Andelic).
  • ON CLUSTER 句を伴う論理更新に関する不具合を修正しました。 #87043 (Anton Popov).
  • いくつかの集約関数状態における String 引数との互換性を修正。 #87049 (Pavel Kruglov)。
  • OpenAI から取得したモデル名が正しく渡されていなかった問題を修正しました。 #87100 (Kaushik Iska).
  • EmbeddedRocksDB: パスは user_files ディレクトリ配下でなければならない。 #87109 (Raúl Marín).
  • 25.1 より前のバージョンで作成された KeeperMap テーブルにおいて、DROP クエリ実行後も ZooKeeper にデータが残り続ける問題を修正。 #87112 (Nikolay Degterinsky).
  • Parquet 読み込み時の map および array フィールド ID の読み取りを修正。 #87136 (scanhex12)。
  • 遅延マテリアライゼーションにおいて、配列サイズのサブカラムを持つ配列の読み取りを修正。 #87139 (Pavel Kruglov).
  • Dynamic 型の引数を取る CASE 関数の不具合を修正。 #87177 (Pavel Kruglov).
  • CSV で空文字列から空配列を読み取る処理を修正。#87182 (Pavel Kruglov)。
  • 非相関な EXISTS で誤った結果が返る可能性がある問題を修正しました。これは https://github.com/ClickHouse/ClickHouse/pull/85481 で導入された execute_exists_as_scalar_subquery=1 により不正な動作をするようになっており、25.8 に影響していました。#86415 を修正します。 #87207Nikolai Kochetov)。
  • iceberg_metadata_log が設定されていない状態でユーザーが Iceberg メタデータのデバッグ情報を取得しようとした場合にエラーをスローするようにし、nullptr 参照アクセスを修正しました。 #87250 (Daniil Ivanik).

ビルド/テスト/パッケージングの改善

ClickHouse 25.8 LTS リリース, 2025-08-28

後方互換性のない変更

  • JSON 内で異なる型の値を含む配列に対して、名前のない Tuple の代わりに Array(Dynamic) を推論するように変更しました。以前の挙動を使用するには、設定 input_format_json_infer_array_of_dynamic_from_array_of_different_types を無効化してください。 #80859 (Pavel Kruglov).
  • 一貫性とシンプルさのために、S3 レイテンシメトリクスをヒストグラムに移行しました。 #82305 (Miсhael Stetsyuk).
  • ドットを含む識別子が複合識別子としてパースされるのを防ぐため、デフォルト式ではそのような識別子をバッククォートで囲むことを必須にしました。 #83162 (Pervakov Grigorii).
  • 遅延マテリアライゼーションは、アナライザ有効時(デフォルト)にのみ有効になるようにしました。これは、アナライザなしの場合の保守を避けるためであり、我々の経験では(例えば条件内で indexHint() を使用する場合など)いくつか問題があるためです。 #83791 (Igor Nikonov).
  • Parquet 出力フォーマットにおいて、Enum 型の値をデフォルトで、論理型 ENUM を持つ BYTE_ARRAY として書き出すようにしました。 #84169 (Pavel Kruglov).
  • MergeTree の設定 write_marks_for_substreams_in_compact_parts をデフォルトで有効化しました。これにより、新しく作成された Compact パーツからサブカラムを読み取る際のパフォーマンスが大幅に向上します。バージョン 25.5 未満のサーバーは、新しい Compact パーツを読み取ることができなくなります。 #84171 (Pavel Kruglov).
  • 以前の concurrent_threads_scheduler のデフォルト値は round_robin でしたが、単一スレッドクエリ(例: INSERT)が多数存在する状況では不公平であることが判明しました。この変更により、より安全な代替である fair_round_robin スケジューラがデフォルトになります。 #84747 (Sergei Trifonov).
  • ClickHouse は PostgreSQL 形式の heredoc 構文($tag$ string contents... $tag$、いわゆる dollar-quoted 文字列リテラル)をサポートしています。以前のバージョンではタグに対する制約が緩く、句読点や空白を含む任意の文字を使用できました。これは、ドル文字で始まる識別子との間でパースのあいまいさを引き起こします。一方 PostgreSQL では、タグには単語文字のみが許可されています。この問題を解決するため、heredoc のタグには単語文字のみを含むように制限しました。 #84731 をクローズします。 #84846 (Alexey Milovidov).
  • azureBlobStoragedeltaLakeAzureicebergAzure 関数は、AZURE 権限を正しく検証するように更新されました。すべてのクラスタ版関数(-Cluster 関数)は、対応する非クラスタ版に対して権限を検証するようになりました。加えて、icebergLocal および deltaLakeLocal 関数は FILE 権限チェックを強制するようになりました。 #84938 (Nikita Mikhaylov).
  • テーブルエンジンレベルの設定である allow_dynamic_metadata_for_data_lakes をデフォルトで有効化しました。 #85044 (Daniil Ivanik).
  • デフォルトで、JSON フォーマットにおいて 64 ビット整数を文字列としてクォートしないようにしました。 #74079 (Pavel Kruglov)

新機能

  • PromQL 方言の基本的なサポートが追加されました。これを使用するには、clickhouse-client で dialect='promql' を設定し、promql_table_name='X' という設定で TimeSeries テーブルを指定し、rate(ClickHouseProfileEvents_ReadCompressedBytes[1m])[5m:1m] のようなクエリを実行します。さらに、PromQL クエリを SQL でラップして SELECT * FROM prometheusQuery('up', ...); のように実行することもできます。現時点でサポートされているのは ratedeltaincrease の各関数のみです。単項/二項演算子には未対応です。HTTP API も未対応です。#75036Vitaly Baranov)。
  • AI による SQL 生成は、利用可能な場合には環境変数 ANTHROPIC_API_KEY および OPENAI_API_KEY から自動的にキーを取得して推論できるようになりました。これにより、この機能を設定不要(ゼロコンフィグ)で利用できるオプションが提供されます。 #83787 (Kaushik Iska).
  • ArrowFlight RPC プロトコルのサポートを実装しました。以下を追加しました: - 新しいテーブル関数 arrowflight#74184 (zakr600).
  • すべてのテーブルで _table 仮想カラムがサポートされるようになりました(Merge エンジンのテーブルだけではありません)。これは特に UNION ALL を使用するクエリで有用です。 #63665 (Xiaozhe Yu)。
  • 外部集約やソートに任意のストレージポリシー(S3 のようなオブジェクトストレージなど)を使用できるようにしました。 #84734 (Azat Khuzhin).
  • 明示的に指定された IAM ロールを用いた AWS S3 認証を実装しました。GCS 向けの OAuth を実装しました。これらの機能は最近まで ClickHouse Cloud でのみ利用可能でしたが、今回オープンソース化されました。オブジェクトストレージ向けの接続パラメータのシリアル化など、いくつかのインターフェースを統一しました。 #84011 (Alexey Milovidov).
  • Iceberg TableEngine 向けの position delete をサポートしました。 #83094 (Daniil Ivanik).
  • Iceberg の Equality Delete をサポート。 #85843 (Han Fei).
  • CREATE ステートメントに対する Iceberg 書き込みを追加。#83927 をクローズ。#83983Konstantin Vedernikov)。
  • 書き込み用 Glue カタログのサポートを追加しました。 #84136 (Konstantin Vedernikov).
  • 書き込み用の Iceberg REST カタログを追加。 #84684 (Konstantin Vedernikov)。
  • すべての Iceberg の position delete ファイルをデータファイルにマージします。これにより、Iceberg ストレージ内の Parquet ファイルの数とサイズを削減できます。構文: OPTIMIZE TABLE table_name#85250 (Konstantin Vedernikov)。
  • Iceberg テーブルに対する DROP TABLE をサポートしました(REST/Glue カタログからの削除とテーブルに関するメタデータの削除)。 #85395 (Konstantin Vedernikov)。
  • merge-on-read フォーマットの Iceberg テーブルに対する ALTER DELETE mutation をサポート。 #85549 (Konstantin Vedernikov).
  • DeltaLake への書き込みをサポートしました。#79603 をクローズしました。#85564 (Kseniia Sumarokova)。
  • テーブルエンジン DeltaLake で特定のスナップショットバージョンを読み取れるようにするための設定 delta_lake_snapshot_version を追加しました。 #85295 (Kseniia Sumarokova).
  • min-max プルーニングのために、メタデータ(マニフェストエントリ)に、より詳細な Iceberg 統計情報(カラムサイズ、下限値および上限値)を書き込むようにしました。 #85746 (Konstantin Vedernikov).
  • Iceberg で単純な型のカラムの追加・削除・変更をサポート。 #85769 (Konstantin Vedernikov).
  • Iceberg: version-hint ファイルへの書き込みをサポートしました。これにより #85097 がクローズされます。 #85130 (Konstantin Vedernikov)。
  • 一時ユーザーによって作成されたビューは、実際のユーザーのコピーを保存するようになり、一時ユーザーが削除されても無効化されなくなりました。 #84763 (pufit).
  • ベクトル類似度索引がバイナリ量子化を新たにサポートしました。バイナリ量子化によりメモリ消費量が大幅に削減され、距離計算が高速化されることでベクトル索引の構築プロセスも高速になります。また、既存の設定 vector_search_postfilter_multiplier は廃止され、より汎用的な設定 vector_search_index_fetch_multiplier に置き換えられました。 #85024 (Shankar Iyer).
  • s3 または s3Cluster テーブルエンジン/関数で key-value 形式の引数を指定できるようになりました。例えば、s3('url', CSV, structure = 'a Int32', compression_method = 'gzip') のように指定できます。 #85134 (Kseniia Sumarokova)。
  • Kafka のようなエンジンから受信したエラーメッセージを保持するための新しいシステムテーブル(「dead letter queue」)。 #68873 (Ilya Golshtein).
  • Replicated データベース向けに新しい SYSTEM RESTORE DATABASE REPLICA コマンドを追加しました。ReplicatedMergeTree における既存の restore 機能と同様に動作します。 #73100 (Konstantin Morozov).
  • PostgreSQL プロトコルで COPY コマンドがサポートされるようになりました。 #74344 (Konstantin Vedernikov)。
  • MySQL プロトコルに対応した C# クライアントを追加しました。これにより #83992 がクローズされました。 #84397 (Konstantin Vedernikov).
  • Hive パーティションスタイルでの読み取りおよび書き込みをサポートしました。 #76802 (Arthur Passos)。
  • zookeeper_connection_log システムテーブルを追加し、ZooKeeper 接続に関する履歴情報を保存するようにしました。 #79494 (János Benjamin Antal)。
  • サーバー設定 cpu_slot_preemption は、ワークロードに対してプリエンプティブな CPU スケジューリングを有効にし、ワークロード間で CPU 時間を max-min 公平に割り当てることを保証します。CPU スロットリング用の新しいワークロード設定 max_cpusmax_cpu_sharemax_burst_cpu_seconds が追加されました。詳細: https://clickhouse.com/docs/operations/workload-scheduling#cpu_scheduling#80879Sergei Trifonov)。
  • 設定されたクエリ数または時間のしきい値に達した後に TCP 接続を切断します。これにより、ロードバランサの背後にあるクラスタノード間で、より均一に接続が分散されるようになります。#68000 を解決。#81472Kenny Sun)。
  • Parallel replicas を使用するクエリで PROJECTION を利用できるようになりました。 #82659. #82807 (zoomxi).
  • DESCRIBE (SELECT ...) に加えて DESCRIBE SELECT もサポートします。 #82947 (Yarik Briukhovetskyi).
  • mysql_port および postgresql_port でセキュアな接続を必須にしました。 #82962 (tiandiwonder).
  • JSONExtractCaseInsensitive(および他の JSONExtract のバリアント)を使用して、大文字小文字を区別しない JSON キー検索を行えるようになりました。 #83770 (Alistair Evans).
  • system.completions テーブルを導入し、#81889 をクローズ。#83833 (|2ustam)。
  • 新しい関数 nowInBlock64 を追加しました。使用例:SELECT nowInBlock64(6)2025-07-29 17:09:37.775725 を返します。 #84178 (Halersson Paris)。
  • AzureBlobStorage に extra_credentials を追加し、client_id および tenant_id を用いて認証できるようになりました。 #84235 (Pablo Marcos).
  • DateTime 値を UUIDv7 に変換する関数 dateTimeToUUIDv7 を追加しました。使用例:SELECT dateTimeToUUIDv7(toDateTime('2025-08-15 18:57:56'))0198af18-8320-7a7d-abd3-358db23b9d5c を返します。 #84319 (samradovich)。
  • timeSeriesDerivToGrid および timeSeriesPredictLinearToGrid 集約関数で、指定された開始タイムスタンプ・終了タイムスタンプ・ステップで定義される時間グリッドにデータを再サンプリングし、それぞれ PromQL の deriv および predict_linear と同様の計算を行います。 #84328 (Stephen Chi).
  • 2 つの新しい TimeSeries 関数を追加しました: - timeSeriesRange(start_timestamp, end_timestamp, step)、- timeSeriesFromGrid(start_timestamp, end_timestamp, step, values)#85435Vitaly Baranov)。
  • 新しい構文 GRANT READ ON S3('s3://foo/.*') TO user が追加されました。 #84503 (pufit).
  • Hash を新しい出力フォーマットとして追加しました。結果のすべてのカラムおよび行に対して単一のハッシュ値を計算します。たとえば、データ転送がボトルネックとなるユースケースで、結果の「フィンガープリント」を計算するのに有用です。例: SELECT arrayJoin(['abc', 'def']), 42 FORMAT Hashe5f9e676db098fdb9530d2059d8c23ef を返します。 #84607 (Robert Schulze)。
  • Keeper の Multi クエリで任意のウォッチを設定できる機能を追加しました。 #84964 (Mikhail Artemenko).
  • clickhouse-benchmark ツールに、並列クエリ数を徐々に増加させるモードを有効にできる --max-concurrency オプションを追加しました。 #85623 (Sergei Trifonov)。
  • 部分集約済みメトリクスのサポートを追加。 #85328 (Mikhail Artemenko).

実験的機能

  • 相関サブクエリのサポートがデフォルトで有効になり、実験的機能ではなくなりました。 #85107 (Dmitry Novik).
  • Unity、Glue、REST、および Hive Metastore のデータレイクカタログが実験的機能からベータ版に昇格しました。 #85848 (Melvyn Peignon).
  • 論理更新と削除が実験的機能からベータ版に昇格しました。
  • ベクター類似度索引を用いた近似ベクター検索が GA になりました。 #85888 (Robert Schulze).
  • Ytsaurus テーブルエンジンおよびテーブル関数。 #77606 (MikhailBurdukov).
  • これまでは、テキスト索引データは複数のセグメントに分割されていました(デフォルトの各セグメントサイズは 256 MiB)。これはテキスト索引構築時のメモリ消費を抑える場合がありますが、その一方でディスク上の必要容量を増大させ、クエリの応答時間を延ばしていました。 #84590 (Elmi Ahmadov).

パフォーマンスの向上

  • 新しい Parquet リーダーの実装。従来より高速で、ページレベルのフィルタープッシュダウンと PREWHERE をサポートします。現在は実験的機能です。input_format_parquet_use_native_reader_v3 設定を有効にして使用します。#82789 (Michael Kolupaev)。
  • Azure Blob Storage 用の Azure ライブラリにおける公式 HTTP トランスポートを、独自実装の HTTP クライアントに置き換えました。このクライアント向けに、S3 の設定を反映した複数の設定項目を導入しました。Azure と S3 の両方に対して、かなり短い接続タイムアウトを導入しました。Azure プロファイルのイベントおよびメトリクスの可視性を改善しました。新しいクライアントはデフォルトで有効になっており、Azure Blob Storage 上でのコールドクエリのレイテンシが大幅に改善されます。以前の Curl クライアントは、azure_sdk_use_native_client=false を設定することで元に戻すことができます。 #83294 (alesapin)。以前の公式 Azure クライアント実装は、レイテンシのスパイクが 5 秒から数分に及ぶひどい状態だったため、本番環境には不適切でした。その問題のある実装はすでに廃止しており、この点について非常に誇りに思っています。
  • 索引をファイルサイズの昇順で処理します。最終的な索引の処理順序では、まず minmax 索引とベクター索引(それぞれ単純さと選択性の高さによる)を優先し、その後にその他の小さな索引を処理します。minmax / ベクター索引の中でも、より小さい索引が優先されます。 #84094 (Maruth Goyal).
  • MergeTree の設定 write_marks_for_substreams_in_compact_parts をデフォルトで有効にしました。これにより、新しく作成された Compact パーツからサブカラムを読み取る際のパフォーマンスが大幅に向上します。バージョンが 25.5 未満のサーバーは、新しい Compact パーツを読み取ることができません。 #84171 (Pavel Kruglov)。
  • azureBlobStorage テーブルエンジン: スロットル制限を回避するため、可能な場合にはマネージド ID の認証トークンをキャッシュして再利用するようにしました。 #79860 (Nick Blakely).
  • 結合の右側テーブルが結合キーのカラムによって関数的に決定される(すべての行で結合キーの値が一意である)場合、ALLLEFT/INNER JOIN は自動的に RightAny に変換されます。 #84010 (Nikita Taranov)。
  • サイズの大きなカラムを含む JOIN のメモリ消費を制限するために、max_joined_block_size_rows に加えて max_joined_block_size_bytes を追加しました。 #83869 (Nikolai Kochetov).
  • 新しいロジック(enable_producing_buckets_out_of_order_in_aggregation 設定で制御され、デフォルトで有効)が追加され、メモリ効率の高い集約処理中に一部のバケットを順不同で出力できるようになりました。一部の集約バケットのマージに他よりも著しく時間がかかる場合、イニシエータがその間にバケット ID が高いバケットを先にマージできるようにすることで、パフォーマンスが向上します。欠点としてはメモリ使用量が増加する可能性がありますが、それほど大きくはないはずです。#80179Nikita Taranov)。
  • optimize_rewrite_regexp_functions 設定(デフォルトで有効)を導入しました。これにより、特定の正規表現パターンが検出された場合に、オプティマイザーが replaceRegexpAllreplaceRegexpOne、および extract の一部の呼び出しを、より単純で効率的な形式に書き換えられるようになります。(issue #81981)。#81992Amos Bird)。
  • ハッシュ JOIN のメインループ外で max_joined_block_rows を処理するようにしました。ALL JOIN でのパフォーマンスがわずかに向上します。 #83216 (Nikolai Kochetov).
  • より細かい粒度の min-max 索引を優先的に処理するようにしました。#75381 をクローズしました。#83798 (Maruth Goyal).
  • DISTINCT ウィンドウ集約が線形時間で実行されるようにし、sumDistinct のバグを修正しました。#79792 をクローズしました。#52253 をクローズしました。#79859Nihal Z. Miaji)。
  • ベクトル類似度索引を使用するベクトル検索クエリは、ストレージ読み取りと CPU 使用量の削減により、完了までのレイテンシが低くなりました。 #83803 (Shankar Iyer).
  • 並列レプリカ間でのワークロード分散時のキャッシュ局所性を改善するための Rendezvous ハッシュ。 #82511 (Anton Ivashkin).
  • If コンビネータ用に addManyDefaults を実装し、これにより If コンビネータを用いる集約関数がより高速に動作するようになりました。 #83870 (Raúl Marín).
  • 複数の文字列または数値カラムで GROUP BY する場合に、シリアライズキーの計算を列指向で行うようにしました。 #83884 (李扬).
  • 並列レプリカ読み出しに対する索引解析の結果が空の範囲となる場合には、フルスキャンを行わないようにしました。 #84971 (Eduard Karacharov).
  • パフォーマンステストの安定性向上を狙い、-falign-functions=64 を試しました。 #83920 (Azat Khuzhin).
  • ブルームフィルター索引が、columnArray 型ではない場合の has([c1, c2, ...], column) のような条件にも使用されるようになりました。これにより、そのようなクエリの性能が向上し、IN 演算子を用いる場合と同程度の効率で実行できるようになります。 #83945 (Doron David)。
  • CompressedReadBufferBase::readCompressedData における不要な memcpy 関数呼び出しを削減しました。 #83986 (Raúl Marín)。
  • 一時データを削除して largestTriangleThreeBuckets を最適化しました。 #84479 (Alexey Milovidov).
  • コードを簡素化して文字列デシリアライズを最適化しました。#38564 をクローズします。 #84561Alexey Milovidov)。
  • 並列レプリカ用の最小タスクサイズの計算を修正しました。 #84752 (Nikita Taranov).
  • Join モードにおけるパッチパーツ適用のパフォーマンスを改善しました。 #85040 (Anton Popov).
  • ゼロバイトを削除しました。#85062 をクローズします。いくつかの小さなバグを修正しました。関数 structureToProtobufSchemastructureToCapnProtoSchema はゼロ終端バイトを正しく配置せず、代わりに改行を使用していました。この問題により出力から改行が欠落し、ゼロバイトに依存する他の関数(logTracedemangleextractURLParametertoStringCutToZeroencrypt / decrypt など)を使用した際にバッファオーバーフローを引き起こす可能性がありました。regexp_tree Dictionary レイアウトは、ゼロバイトを含む文字列の処理をサポートしていませんでした。formatRowNoNewline 関数は、Values フォーマット、または行末に改行を持たない他の任意のフォーマットで呼び出された場合、出力の最後の文字を誤って切り捨てていました。stem 関数には例外安全性の不具合があり、非常にまれなシナリオでメモリリークにつながる可能性がありました。initcap 関数は FixedString 引数に対して誤った動作をしていました。すなわち、ブロック内の前の文字列が単語文字で終わっている場合、文字列の先頭にある単語の開始位置を認識できていませんでした。Apache ORC フォーマットに存在したセキュリティ脆弱性を修正しました。これにより、初期化されていないメモリが読み出される可能性がありました。関数 replaceRegexpAll と、そのエイリアスである REGEXP_REPLACE の動作を変更しました。これらの関数は、^a*|a*$^|.* のように、直前のマッチが文字列全体を処理している場合であっても、文字列末尾で空マッチを行えるようになりました。これは JavaScript、Perl、Python、PHP、Ruby のセマンティクスに準拠しますが、PostgreSQL のセマンティクスとは異なります。多くの関数の実装を単純化し、最適化しました。いくつかの関数について、誤っていたドキュメントを修正しました。String カラムおよび String カラムを含む複合型に対する byteSize の出力が変更されたことに留意してください(空文字列 1 個あたり 9 バイトから 8 バイトへと変更されました)が、これは正常な挙動です。#85063Alexey Milovidov)。
  • 単一の行を返すためだけに定数をマテリアライズする場合、そのマテリアライズを最適化しました。 #85071 (Alexey Milovidov).
  • delta-kernel-rs バックエンドによるファイルの並列処理を改善。 #85642 (Azat Khuzhin).
  • 新しい設定 enable_add_distinct_to_in_subqueries が導入されました。有効にすると、ClickHouse は分散クエリにおける IN 句内のサブクエリに DISTINCT を自動的に追加します。これにより、分片間で転送される一時テーブルのサイズを大幅に削減し、ネットワーク効率を向上させることができます。注意:これはトレードオフであり、ネットワーク転送量は削減されますが、各ノードで追加のマージ(重複排除)処理が必要になります。ネットワーク転送がボトルネックとなっており、マージ処理のコストが許容できる場合にこの設定を有効にしてください。 #81908 (fhw12345).
  • 実行可能なユーザー定義関数におけるクエリのメモリトラッキングのオーバーヘッドを削減。 #83929 (Eduard Karacharov).
  • ストレージ DeltaLake において、内部の delta-kernel-rs フィルタリング(統計情報およびパーティションプルーニング)を実装。 #84006 (Kseniia Sumarokova).
  • オンザフライで更新されるカラム、またはより細かい粒度でパッチパーツによって更新されるカラムに依存するスキップインデックスの無効化を、よりきめ細かく制御するようにしました。現在は、スキップインデックスはオンザフライで行われるミューテーションやパッチパーツの影響を受けたパーツでのみ使用されません。以前は、これらのインデックスはすべてのパーツに対して無効化されていました。#84241Anton Popov)。
  • 暗号化された named collection 用の encrypted_buffer に必要最小限のメモリだけを割り当てるようにしました。 #84432 (Pablo Marcos).
  • 第一引数が定数配列(集合)、第二引数が索引付きカラム(部分集合)の場合にブルームフィルター索引(通常、ngram、token)を利用できるようサポートが改善され、より効率的にクエリを実行できるようになりました。 #84700 (Doron David)。
  • Keeper におけるストレージロックの競合を軽減。 #84732 (Antonio Andelic).
  • WHERE に対する read_in_order_use_virtual_row の不足していたサポートを追加しました。これにより、PREWHERE に完全にはプッシュダウンされなかったフィルタを含むクエリで、より多くのパーツを読み飛ばすことが可能になります。 #84835 (Nikolai Kochetov)。
  • 各データファイルごとにオブジェクトを明示的に保持することなく、Iceberg テーブル上のオブジェクトを非同期にイテレーションできるようにしました。 #85369 (Daniil Ivanik).
  • 非相関な EXISTS をスカラサブクエリとして実行するようにしました。これにより、スカラサブクエリキャッシュを利用したり、結果を定数畳み込みできるようになり、索引に対して有用です。互換性のため、新しい設定項目 execute_exists_as_scalar_subquery=1 を追加しました。 #85481 (Nikolai Kochetov).

改良

  • database_replicated 設定を追加し、DatabaseReplicatedSettings のデフォルト値を定義できるようにしました。Replicated データベースの CREATE クエリ内にその設定が指定されていない場合、この設定の値が使用されます。 #85127 (Tuan Pham Anh).
  • Web UI (play) のテーブル列をリサイズ可能にしました。 #84012 (Doron David).
  • iceberg_metadata_compression_method 設定により、圧縮された .metadata.json ファイルをサポートしました。すべての ClickHouse の圧縮方式をサポートします。これにより #84895 がクローズされました。 #85196 (Konstantin Vedernikov)。
  • EXPLAIN indexes = 1 の出力に、読み取る範囲の数を表示するようになりました。 #79938 (Christoph Wurm).
  • ORC 圧縮ブロックサイズを設定するための設定を導入し、Spark や Hive と整合させるためにデフォルト値を 64KB から 256KB に更新しました。 #80602 (李扬).
  • Wide パーツに columns_substreams.txt ファイルを追加し、そのパーツ内に保存されているすべてのサブストリームを記録・追跡できるようにしました。これにより、JSON や Dynamic 型におけるダイナミックストリームを把握するために、これらのカラムを一部読み出してダイナミックストリームの一覧を取得する必要がなくなります(たとえばカラムサイズを計算する場合など)。また、すべてのダイナミックストリームが system.parts_columns に反映されるようになりました。 #81091 (Pavel Kruglov).
  • 既定では機密データを非表示にするため、clickhouse format に CLI フラグ --show_secrets を追加しました。 #81524 (Nikolai Ryzhov).
  • S3 の読み取りおよび書き込みリクエストは、S3 リクエスト全体ではなく HTTP ソケットレベルで帯域制限されるようになり、max_remote_read_network_bandwidth_for_server および max_remote_write_network_bandwidth_for_server による帯域制限との問題を回避します。 #81837 (Sergei Trifonov)。
  • 同一カラムに対し、ウィンドウ関数の異なるウィンドウごとに異なる照合順序を使用できるようにしました。 #82877 (Yakov Olkhovskiy).
  • マージセレクタをシミュレート、可視化、比較できるツールを追加。 #71496 (Sergei Trifonov).
  • address_expression 引数でクラスターが指定されている場合に、並列レプリカを用いた remote* テーブル関数をサポートしました。また、#73295 も修正しました。 #82904 (Igor Nikonov)。
  • バックアップファイルを書き込む際のすべてのログメッセージを TRACE レベルに設定しました。 #82907 (Hans Krutzer).
  • 特殊な名前やコーデックを持つユーザー定義関数が、SQL フォーマッタによって一貫性のないフォーマットになる場合がありました。これにより #83092 がクローズされます。#83644Alexey Milovidov)。
  • JSON 型で Time 型および Time64 型を使用できるようになりました。 #83784 (Yarik Briukhovetskyi)。
  • 並列レプリカを用いた結合では、join logical step が使用されるようになりました。並列レプリカを使用する結合クエリで問題が発生した場合は、SET query_plan_use_new_logical_join_step=0 を設定してから Issue を報告してください。 #83801 (Vladimir Cherkasov).
  • 複数ノードでの cluster_function_process_archive_on_multiple_nodes の互換性の問題を修正。 #83968 (Kseniia Sumarokova).
  • S3Queue テーブルレベルでマテリアライズドビュー(MV)の挿入設定を変更できるようにしました。新たに S3Queue レベルの設定 min_insert_block_size_rows_for_materialized_viewsmin_insert_block_size_bytes_for_materialized_views を追加しました。デフォルトではプロファイルレベルの設定が使用され、S3Queue レベルの設定がそれらを上書きします。 #83971 (Kseniia Sumarokova)。
  • ミューテーションで影響を受けた行数の上限を示すプロファイルイベント MutationAffectedRowsUpperBound を追加しました。例えば、ALTER UPDATEALTER DELETE クエリにおいて条件を満たす行の総数などです。 #83978 (Anton Popov).
  • cgroup の情報(該当する場合、つまり memory_worker_use_cgroup が有効であり、cgroup が利用可能な場合)を使用して、メモリトラッカー(memory_worker_correct_memory_tracker)を調整するようにしました。 #83981 (Azat Khuzhin)。
  • MongoDB: 文字列から数値型への暗黙的な変換。以前は、ClickHouse テーブルの数値カラムに対して MongoDB ソースから文字列値が受信された場合、例外がスローされていました。現在では、エンジンが文字列から数値を自動的にパースしようとします。#81167 をクローズします。 #84069Kirill Nikiforov)。
  • Nullable な数値に対する Pretty フォーマットで、桁区切りをハイライト表示するようにしました。 #84070 (Alexey Milovidov).
  • Dashboard: ツールチップが上端でコンテナを越えて表示されなくなりました。 #84072 (Alexey Milovidov).
  • ダッシュボード上のドットの見栄えをわずかに向上させました。 #84074 (Alexey Milovidov).
  • Dashboard の favicon をわずかに改善しました。 #84076 (Alexey Milovidov).
  • Web UI: ブラウザにパスワードを保存させることができるようにしました。また、URL の値も記憶するようにしました。 #84087 (Alexey Milovidov).
  • apply_to_children 設定を使用して特定の Keeper ノードに追加の ACL を適用できるようにしました。 #84137 (Antonio Andelic).
  • MergeTree における Variant の "compact" 判別子シリアライゼーションの利用を修正しました。以前は、本来使用できる一部のケースで使用されていませんでした。 #84141 (Pavel Kruglov).
  • サーバー設定 logs_to_keep をレプリケートデータベースの設定に追加しました。これにより、レプリケートデータベースに対するデフォルトの logs_to_keep パラメータを変更できます。値を小さくすると ZNode の数(特に多くのデータベースが存在する場合)が減少し、値を大きくすると欠落しているレプリカが、より長い期間経過した後でも追いつけるようになります。 #84183 (Alexey Khatskevich)。
  • JSON 型の解析時に JSON キー内のドットをエスケープするための json_type_escape_dots_in_keys という設定を追加しました。この設定はデフォルトでは無効です。 #84207 (Pavel Kruglov)。
  • クローズされた接続から読み取らないようにするため、EOF を確認する前に接続がキャンセルされているかどうかをチェックするようにしました。#83893 を修正。#84227Raufs Dunamalijevs)。
  • Web UI におけるテキスト選択時の色合いをわずかに調整しました。違いが大きく現れるのは、ダークモードで選択されたテーブルセルの場合のみです。以前のバージョンでは、テキストと選択範囲の背景色とのコントラストが十分ではありませんでした。 #84258 (Alexey Milovidov).
  • 内部チェックを簡素化することで、クライアント接続向けのサーバーのシャットダウン処理を改善しました。 #84312 (Raufs Dunamalijevs).
  • デバッグ時にテストログレベルでも式ビジターのログが冗長になりすぎる可能性があるため、それらを無効化できるようにする設定 delta_lake_enable_expression_visitor_logging を追加しました。 #84315 (Kseniia Sumarokova).
  • cgroup レベルおよびシステム全体レベルのメトリクスが、現在はまとめて報告されます。cgroup レベルのメトリクスは CGroup<Metric> という名前で、OS レベルのメトリクス(procfs から収集されるもの)は OS<Metric> という名前です。 #84317 (Nikita Taranov).
  • Web UI のチャート表示を少し改善しました。大きな変更ではありませんが、以前より良くなっています。 #84326 (Alexey Milovidov).
  • Replicated データベースの設定 max_retries_before_automatic_recovery のデフォルト値を 10 に変更し、一部の状況でより迅速に復旧できるようにしました。 #84369 (Alexander Tokmakov)。
  • クエリパラメータ付き CREATE USER ステートメントのフォーマットを修正しました(例: CREATE USER {username:Identifier} IDENTIFIED WITH no_password)。 #84376 (Azat Khuzhin).
  • バックアップおよびリストア処理時に使用される S3 リトライのバックオフ戦略を構成するため、backup_restore_s3_retry_initial_backoff_msbackup_restore_s3_retry_max_backoff_msbackup_restore_s3_retry_jitter_factor を追加しました。 #84421 (Julia Kartseva).
  • S3Queue の ordered モードの修正: shutdown が呼び出された場合に、より早く終了するよう修正しました。 #84463 (Kseniia Sumarokova).
  • pyiceberg から読み取れるような iceberg への書き込みをサポートしました。 #84466 (Konstantin Vedernikov).
  • KeyValue ストレージのプライマリキー(例: EmbeddedRocksDB、KeeperMap)に対して IN / GLOBAL IN フィルタをプッシュダウンする際に、Set の値の型変換を許可するようにしました。 #84515 (Eduard Karacharov)。
  • chdig を 25.7.1 に更新。 #84521 (Azat Khuzhin)。
  • UDF 実行中に発生する低レベルエラーは、これまではさまざまなエラーコードが返されていましたが、現在はエラーコード UDF_EXECUTION_FAILED で失敗するように統一されました。 #84547 (Xu Jia)。
  • KeeperClient に get_acl コマンドを追加。 #84641 (Antonio Andelic)。
  • データレイクテーブルエンジンにスナップショットバージョンを追加しました。 #84659 (Pete Hampton).
  • ConcurrentBoundedQueue のサイズに関するディメンション付きメトリクスを追加しました。キュー種別(そのキューの用途)とキュー ID(そのキューの現在のインスタンスに対してランダムに生成される ID)をラベルとして持ちます。 #84675 (Miсhael Stetsyuk).
  • system.columns テーブルで、既存の name カラムのエイリアスとして column が利用できるようになりました。 #84695 (Yunchi Pang).
  • ローカルメタデータを持つディスクなどでパーツ探索の対象を制限するための新しい MergeTree 設定 search_orphaned_parts_drives#84710 (Ilya Golshtein).
  • Keeper に 4LW lgrq を追加し、受信リクエストのログ出力を切り替えられるようにしました。 #84719 (Antonio Andelic).
  • 外部認証の forward_headers を大文字小文字を区別せずに一致判定するようにしました。 #84737 (ingodwerust).
  • encrypt_decrypt ツールが暗号化された ZooKeeper への接続をサポートするようになりました。 #84764 (Roman Vasin)
  • system.errors テーブルにフォーマット文字列を格納するカラムを追加しました。このカラムは、アラートルールで同じエラータイプごとにグループ化するために必要です。 #84776 (Miсhael Stetsyuk).
  • clickhouse-format--hilite のエイリアスとして --highlight を受け付けるように更新しました。- clickhouse-client--highlight のエイリアスとして --hilite を受け付けるように更新しました。- この変更を反映するように clickhouse-format のドキュメントを更新しました。#84806 (Rishabh Bhardwaj)。
  • 複合型に対するフィールド ID 指定の Iceberg 読み取りを修正。 #84821 (Konstantin Vedernikov).
  • SlowDown などのエラーによって発生するリトライストームの際に、単一のリトライ可能なエラーが発生した時点ですべてのスレッドの処理を遅くすることで S3 への負荷を軽減する、新しい backup_slow_all_threads_after_retryable_s3_error SETTING を導入しました。 #84854 (Julia Kartseva).
  • レプリケーテッド DB における append 以外の RMV DDL では、古い一時テーブルを作成してリネームする処理をスキップするようにしました。 #84858 (Tuan Pham Anh)。
  • keeper_server.coordination_settings.latest_logs_cache_entry_count_threshold および keeper_server.coordination_settings.commit_logs_cache_entry_count_threshold を使用して、Keeper ログエントリキャッシュのサイズをエントリ数ベースで制限できるようにしました。 #84877 (Antonio Andelic).
  • サポート対象外のアーキテクチャでも simdjson を使用できるようにしました(従来は CANNOT_ALLOCATE_MEMORY エラーを引き起こしていました)。 #84966 (Azat Khuzhin).
  • 非同期ロギング: 制限値を調整可能にし、内部状態を確認するための機能を追加。 #85105 (Raúl Marín).
  • 削除対象となるすべてのオブジェクトをまとめて収集し、オブジェクトストレージの削除処理を1回の実行で行うようにしました。 #85316 (Mikhail Artemenko).
  • Iceberg の現在の positional delete file の実装では、すべてのデータをメモリ上に保持します。positional delete file が大きくなることはよくあるため、これはかなりコストが高くなり得ます。この実装では、Parquet delete file の最後の row-group のみをメモリ上に保持することで、コストを大幅に削減しています。#85329Konstantin Vedernikov)。
  • chdig: 画面に残る表示の不具合を修正し、エディタでクエリを編集した後に発生するクラッシュを修正、PATH 内で editor を検索するように変更、25.8.1 に更新。#85341Azat Khuzhin)。
  • 不足していた partition_columns_in_data_file を Azure の構成に追加。 #85373 (Arthur Passos)。
  • 関数 timeSeries*ToGrid でステップ 0 を許可しました。これは #75036 の一部です。#85390Vitaly Baranov)。
  • system.tables システムテーブルにデータレイクのテーブルを追加するかどうかを制御する show_data_lake_catalogs_in_system_tables フラグを追加。 #85384 を解決。 #85411 (Smita Kulkarni)。
  • remote_fs_zero_copy_zookeeper_path にマクロ展開のサポートを追加しました。 #85437 (Mikhail Koviazin).
  • clickhouse-client の AI の見た目が少し改善されました。 #85447 (Alexey Milovidov).
  • 既存のデプロイメントに対して trace_log.symbolize をデフォルトで有効化しました。 #85456 (Azat Khuzhin).
  • 複合識別子を含むより多くのケースに対応しました。特に、ARRAY JOIN と旧アナライザーとの互換性が改善されています。従来の挙動を維持するため、新しい設定項目 analyzer_compatibility_allow_compound_identifiers_in_unflatten_nested を導入しました。 #85492 (Nikolai Kochetov)。
  • system.columns のテーブルのカラムサイズを取得する際に UNKNOWN_DATABASE を無視するようにしました。 #85632 (Azat Khuzhin).
  • パッチパーツ内の非圧縮データサイズの合計に対する上限(テーブル設定 max_uncompressed_bytes_in_patches)を追加しました。これにより、論理更新の後に SELECT クエリの実行が大幅に低速化することを防ぐとともに、論理更新の不適切な利用を抑止します。 #85641 (Anton Popov).
  • GRANT READ/WRITE のソース種別および GRANT TABLE ENGINE のテーブルエンジンを識別できるようにするため、system.grantsparameter カラムを追加しました。 #85643 (MikhailBurdukov)。
  • パラメータ付きのカラム(例: Decimal(8))の後に続く CREATE DICTIONARY クエリ内のカラムで、末尾のカンマがあっても正しくパースされるよう修正しました。 #85586 をクローズ。 #85653Nikolay Degterinsky)。
  • 関数 nested が内部配列をサポートするようになりました。 #85719 (Nikolai Kochetov).
  • 外部ライブラリによって行われるすべてのアロケーションが、ClickHouse のメモリトラッカーで把握され、正しく計上されるようになりました。これにより、一部のクエリで報告されるメモリ使用量が「増加」したように見えたり、MEMORY_LIMIT_EXCEEDED によるエラーが発生したりする可能性があります。 #84082 (Nikita Mikhaylov).

バグ修正(公式安定版リリースにおけるユーザーに影響する不具合)

  • このPRでは、REST カタログ経由で Iceberg テーブルに対してクエリを実行する際のメタデータ解決処理を修正します。... #80562 (Saurabh Kumar Ojha).
  • DDLWorker および DatabaseReplicatedDDLWorker の markReplicasActive を修正しました。 #81395 (Tuan Pham Anh)。
  • パースに失敗した際の Dynamic カラムのロールバック処理を修正。#82169 (Pavel Kruglov)。
  • 関数 trim がすべて定数の引数で呼び出された場合、出力として定数文字列を生成するようになりました(バグ #78796)。#82900Robert Schulze)。
  • optimize_syntax_fuse_functions が有効な場合に発生する、重複したサブクエリに関する論理エラーを修正し、#75511 をクローズ。#83300Vladimir Cherkasov)。
  • WHERE ... IN (<subquery>) 句を含み、かつクエリ条件キャッシュ(use_query_condition_cache SETTING)が有効になっているクエリで、誤った結果が返されることがあった問題を修正しました。 #83445 (LB7666).
  • これまで gcs 関数の利用には特別な権限は不要でしたが、今後は利用時に GRANT READ ON S3 権限が付与されているかを確認するようになります。#70567 をクローズします。#83503pufit)。
  • s3Cluster() からレプリケートされた MergeTree テーブルへの INSERT SELECT 実行時に、利用不能なノードをスキップするようになりました。 #83676 (Igor Nikonov).
  • 実験的トランザクションで使用される MergeTree において、plain_rewritable / plain メタデータタイプへの追記書き込みが以前は単純に無視されていた問題を修正しました。 #83695 (Tuan Pham Anh)。
  • Avro schema registry の認証情報をマスクし、ユーザーやログからは表示されないようにしました。 #83713 (János Benjamin Antal).
  • add_minmax_index_for_numeric_columns=1 または add_minmax_index_for_string_columns=1 を指定して MergeTree テーブルを作成した場合に、その後の ALTER 操作で索引がマテリアライズされることで、新しいレプリカ上で Replicated データベースが正しく初期化されなくなる問題を修正しました。 #83751 (Nikolay Degterinsky)。
  • parquet writer が Decimal 型に対する統計情報 (min/max) を誤って出力していた問題を修正しました。 #83754 (Michael Kolupaev).
  • LowCardinality(Float32|Float64|BFloat16) 型における NaN 値のソート処理を修正。 #83786 (Pervakov Grigorii)。
  • バックアップからリストアする際に、definer user がバックアップに含まれていない場合があり、その結果バックアップ全体が無効になってしまう可能性がありました。これを修正するために、リストア中の対象テーブル作成時に行っていた権限チェックを延期し、実行時にのみチェックするようにしました。 #83818 (pufit).
  • 誤った INSERT 実行後に接続が切断状態のまま残っていたために発生していたクライアントのクラッシュを修正。 #83842 (Azat Khuzhin).
  • analyzer が有効な場合、remote テーブル関数の view(...) 引数内で任意のテーブルを参照できるようにしました。これにより #78717 および #79377 の問題を修正しました。#83844Dmitry Novik)。
  • jsoneachrowwithprogress における onprogress の呼び出しが、最終処理と同期して行われるようになりました。 #83879 (Sema Checherinda).
  • これにより #81303 がクローズされました。 #83892Konstantin Vedernikov)。
  • const 引数と非 const 引数が混在している colorSRGBToOKLCH/colorOKLCHToSRGB を修正。 #83906 (Azat Khuzhin).
  • RowBinary format における NULL 値を含む JSON パスの書き込みに関する不具合を修正。 #83923 (Pavel Kruglov).
  • Date から DateTime64 へのキャスト時に、2106-02-07 より大きい値がオーバーフローしていた問題を修正しました。 #83982 (Yarik Briukhovetskyi).
  • filesystem_prefetches_limit が(MergeTreePrefetchedReadPool からの場合だけでなく)常に適用されるようになりました。 #83999 (Azat Khuzhin).
  • MATERIALIZE COLUMN クエリにより checksums.txt に予期しないファイルが書き込まれ、最終的にデータパーツが detached 状態になってしまう稀なバグを修正しました。 #84007 (alesapin).
  • 不等号条件で JOIN を実行する際、一方のカラムが LowCardinality でもう一方が定数である場合に発生していた、Expected single dictionary argument for function という論理エラーを修正しました。#81779 をクローズしました。 #84019 (Alexey Milovidov)。
  • 構文ハイライトを有効にしたインタラクティブモードで clickhouse client を使用するとクラッシュする問題を修正しました。#84025 (Bharat Nallan)。
  • 再帰 CTE と組み合わせて query condition cache を使用した場合に誤った結果が返る問題を修正しました(issue #81506)。#84026zhongyuankai)。
  • パーツの定期的なリフレッシュ処理で例外を適切に処理するようにしました。 #84083 (Azat Khuzhin).
  • 等価比較の被演算子の型が異なる場合や、定数を参照している場合に、フィルタを JOIN 条件へマージする処理を修正しました。これにより #83432 を修正しました。 #84145Dmitry Novik)。
  • テーブルに PROJECTION が存在し、lightweight_mutation_projection_mode = 'rebuild' が設定されていて、ユーザーがテーブル内の任意のブロックからすべての行を削除する lightweight delete を実行した場合に、まれに発生する ClickHouse のクラッシュを修正しました。 #84158 (alesapin)。
  • バックグラウンドで動作するキャンセルチェック用スレッドによって発生していたデッドロックを修正。 #84203 (Antonio Andelic)。
  • 不正な WINDOW 定義に対して無限再帰的な解析が行われる問題を修正しました。#83131 を修正します。#84242Dmitry Novik)。
  • Bech32 のエンコーディングおよびデコーディングが誤った結果を生成していたバグを修正しました。このバグは、テストに使用していたアルゴリズムのオンライン実装にも同じ問題が存在していたため、当初は検出されませんでした。 #84257 (George Larionov).
  • array() 関数における空タプルの誤った構築方法を修正しました。これにより #84202 が解決されました。 #84297 (Amos Bird)。
  • parallel replicas を有効にした状態で、複数の INNER JOIN の後に RIGHT JOIN が続くクエリで発生する LOGICAL_ERROR を修正しました。このようなクエリでは parallel replicas を使用しないでください。#84299Vladimir Cherkasov)。
  • 以前は、set 索引が、グラニュールがフィルタを通過したかどうかを判定する際に Nullable カラムを考慮していませんでした(issue #75485)。#84305Elmi Ahmadov)。
  • ClickHouse は、テーブル型が小文字で指定されている Glue カタログからもテーブルを読み取れるようになりました。 #84316 (alesapin)。
  • JOIN またはサブクエリが存在する場合には、テーブル関数を対応する cluster 版に置き換えないでください。 #84335 (Konstantin Bogdanov).
  • IAccessStorage における logger の使用を修正。 #84365 (Konstantin Bogdanov).
  • テーブル内のすべてのカラムを更新する論理更新で発生していた論理エラーを修正しました。 #84380 (Anton Popov).
  • Codec DoubleDelta は、数値型のカラムにのみ適用できるようになりました。特に、FixedString カラムは DoubleDelta を使用して圧縮できなくなりました。(#80220 の修正)。 #84383 (Jimmy Aguilar Mena)。
  • MinMax 索引の評価時に、NaN 値との比較で正しい範囲条件が使用されていませんでした。 #84386 (Elmi Ahmadov).
  • 遅延マテリアライゼーションを使用した Variant カラムの読み取りを修正。 #84400 (Pavel Kruglov).
  • zoutofmemory をハードウェアエラーとして扱うようにしました。そうしないと論理エラーをスローします。詳しくは https://github.com/clickhouse/clickhouse-core-incidents/issues/877 を参照してください。 #84420 (Han Fei)。
  • no_password で作成されたユーザーが、サーバー設定 allow_no_password を 0 に変更した後にログインを試みた際にサーバーがクラッシュする不具合を修正しました。 #84426 (Shankar Iyer).
  • Keeper の changelog への順不同の書き込みを修正しました。以前は、changelog への書き込みが進行中の状態で、ロールバックにより出力先のファイルが同時に変更される可能性がありました。これにより、ログの不整合やデータ損失が発生するおそれがありました。 #84434 (Antonio Andelic).
  • テーブルからすべての有効期限 (TTL) が削除された場合、MergeTree は TTL に関連する処理を一切行わないようになりました。 #84441 (alesapin).
  • LIMIT を伴う並列分散 INSERT SELECT が許可されていましたが、本来は許可されるべきではなく、ターゲットテーブルでデータの重複を引き起こしていました。 #84477 (Igor Nikonov).
  • データレイクにおける仮想カラムを用いたファイルのプルーニングを修正。 #84520 (Kseniia Sumarokova).
  • rocksdb ストレージを使用する Keeper において、イテレータが破棄されていなかったことによるリークを修正しました。 #84523 (Azat Khuzhin).
  • ALTER MODIFY ORDER BY がソートキー内の有効期限 (TTL) カラムを検証していなかった不具合を修正しました。これにより、ALTER 処理時に ORDER BY 句で有効期限 (TTL) カラムが使用されている場合は正しく拒否されるようになり、テーブルの破損が発生する可能性を防ぎます。 #84536 (xiaohuanlin).
  • 互換性のため、25.5 より前のバージョンに対する allow_experimental_delta_kernel_rs の値を false に変更しました。 #84587 (Kseniia Sumarokova)。
  • マニフェストファイルからスキーマを取得するのをやめ、各スナップショットごとに関連するスキーマを独立して保存するようにしました。各データファイルに対して、そのファイルに対応するスナップショットから関連するスキーマを推論します。以前の動作では、status が existing のエントリを含むマニフェストファイルについて、Iceberg の仕様に違反していました。 #84588 (Daniil Ivanik)。
  • Keeper の設定 rotate_log_storage_interval = 0 によって ClickHouse がクラッシュする問題を修正しました。(issue #83975). #84637 (George Larionov).
  • S3Queue のロジックエラー「Table is already registered」を修正。#84433 をクローズ。https://github.com/ClickHouse/ClickHouse/pull/83530 の変更以降で発生していた不具合。#84677Kseniia Sumarokova)。
  • RefreshTask で 'view' から ZooKeeper を取得する際に 'mutex' をロックするように修正しました。 #84699 (Tuan Pham Anh).
  • 外部ソート使用時にレイジーカラムを使用すると発生する CORRUPTED_DATA エラーを修正しました。 #84738 (János Benjamin Antal).
  • ストレージ DeltaLake における delta-kernel 使用時のカラムプルーニングの問題を修正しました。#84543 をクローズしました。#84745Kseniia Sumarokova)。
  • DeltaLake ストレージの delta-kernel で認証情報を更新するように修正しました。 #84751 (Kseniia Sumarokova).
  • 接続トラブル発生後に不要な内部バックアップが開始される不具合を修正しました。 #84755 (Vitaly Baranov).
  • 遅延しているリモートソースに対してクエリを実行した際に、ベクターの範囲外アクセスが発生する可能性があった問題を修正しました。 #84820 (George Larionov).
  • ngram および no_op トークナイザーを使用した際に、空の入力トークンが原因で (実験的な) テキスト索引がクラッシュしなくなりました。 #84849 (Robert Schulze).
  • ReplacingMergeTree および CollapsingMergeTree エンジンを使用するテーブルに対する論理更新の不具合を修正しました。 #84851 (Anton Popov).
  • object queue エンジンを使用するテーブルで、すべての設定がテーブルメタデータに正しく保存されるように修正しました。 #84860 (Antonio Andelic).
  • Keeper が返すウォッチの合計数を修正。 #84890 (Antonio Andelic).
  • 25.7 より前のバージョンのサーバー上で作成された ReplicatedMergeTree エンジンを使用するテーブルに対する論理更新の問題を修正しました。 #84933 (Anton Popov)。
  • ALTER TABLE ... REPLACE PARTITION クエリを実行した後に、レプリケーションなしの MergeTree エンジンを使用するテーブルに対する論理更新が正しく動作しない問題を修正しました。 #84941 (Anton Popov).
  • クエリ内の真偽値リテラルに対するカラム名の生成を、"1"/"0" ではなく "true"/"false" を使用するように修正し、真偽値リテラルと整数リテラルとの間でカラム名が競合しないようにしました。 #84945 (xiaohuanlin).
  • バックグラウンドスケジュールプールおよび executor におけるメモリトラッキングのずれを修正。 #84946 (Azat Khuzhin).
  • Merge テーブルエンジンにおける、ソート順が不正確になる可能性のある問題を修正しました。 #85025 (Xiaozhe Yu)。
  • DiskEncrypted の未実装だった API を実装しました。 #85028 (Azat Khuzhin).
  • 分散クエリコンテキストで相関サブクエリが使用されている場合にクラッシュを回避するためのチェックを追加しました。#82205 を修正しました。#85030Dmitry Novik)。
  • Iceberg は、SELECT クエリ間で関連するスナップショットバージョンをキャッシュしようとせず、常にスナップショットを正しく解決するようになりました。以前の Iceberg スナップショットのキャッシュの試みは、タイムトラベル機能を用いた Iceberg テーブルの利用時に問題を引き起こしていました。 #85038 (Daniil Ivanik)。
  • AzureIteratorAsync における二重解放の不具合を修正。 #85064 (Nikita Taranov).
  • JWT で識別される USER を作成しようとしたときのエラーメッセージを改善。 #85072 (Konstantin Bogdanov).
  • ReplicatedMergeTree におけるパッチパーツのクリーンアップ処理を修正しました。以前は、パッチパーツを実体化するマージ済みまたはミューテート済みパーツが別のレプリカからダウンロードされるまで、論理更新の結果が一時的にレプリカ上に反映されない場合がありました。 #85121 (Anton Popov).
  • 型が異なる場合に mv で発生していた illegal_type_of_argument エラーを修正しました。 #85135 (Sema Checherinda).
  • delta-kernel 実装で発生していたセグメンテーションフォルトを修正。 #85160 (Kseniia Sumarokova)。
  • メタデータファイルの移動に長時間を要する場合のレプリケーテッドデータベースの復旧処理を修正しました。 #85177 (Tuan Pham Anh)。
  • additional_table_filters expression 設定内で IN (subquery) を含む場合に発生する Not-ready Set の問題を修正しました。 #85210 (Nikolai Kochetov).
  • SYSTEM DROP REPLICA クエリ中の不要な getStatus() 呼び出しを除去しました。バックグラウンドでテーブルが削除されている場合に Shutdown for storage is called 例外が投げられるケースを修正しました。 #85220 (Nikolay Degterinsky).
  • DeltaLake エンジンの delta-kernel 実装におけるレースコンディションを修正しました。 #85221 (Kseniia Sumarokova).
  • DeltaLake エンジンで delta-kernel を無効化した状態におけるパーティション化データの読み取りを修正しました。これは 25.7 で動作しなくなっていました(https://github.com/ClickHouse/ClickHouse/pull/81136)。#85223Kseniia Sumarokova)。
  • CREATE OR REPLACE および RENAME クエリに対し、抜けていたテーブル名の長さチェックを追加しました。 #85326 (Michael Kolupaev).
  • DEFINER が削除されている場合に、Replicated データベースの新しいレプリカで RMV を作成できない問題を修正しました。 #85327 (Nikolay Degterinsky).
  • 複合型の Iceberg への書き込み処理を修正。 #85330 (Konstantin Vedernikov).
  • 複合型に対する下限値および上限値の指定はサポートされていません。 #85332 (Konstantin Vedernikov).
  • オブジェクトストレージ関数から分散テーブルまたはリモートテーブル関数経由で読み取る際の論理エラーを修正。修正: #84658#85173#52022#85359alesapin)。
  • 壊れたプロジェクションを含むパーツのバックアップ処理を修正しました。 #85362 (Antonio Andelic).
  • 安定するまでのリリースでは、プロジェクションで _part_offset カラムを使用できないようにしました。 #85372 (Sema Checherinda).
  • JSON に対する ALTER UPDATE の実行中に発生するクラッシュおよびデータ破損を修正。 #85383 (Pavel Kruglov).
  • 順序を逆方向に読み取る最適化を利用する parallel replicas のクエリで、誤った結果が返される可能性がありました。 #85406 (Igor Nikonov).
  • String のデシリアライズ中に MEMORY_LIMIT_EXCEEDED が発生した場合に未定義動作(クラッシュ)が起こる可能性があった問題を修正しました。 #85440 (Azat Khuzhin).
  • 誤っていたメトリクス KafkaAssignedPartitions および KafkaConsumersWithAssignment を修正。 #85494 (Ilya Golshtein).
  • PREWHERE 句(明示的指定・自動適用のいずれの場合も)が使用されているときに、処理済みバイト数の統計値が過小に報告される問題を修正しました。 #85495 (Michael Kolupaev).
  • S3 リクエストレートのスローダウンに関する早期リターン条件を修正しました。再試行可能なエラーにより全スレッドが一時停止されている場合にスローダウン動作を有効にする条件として、s3_slow_all_threads_after_network_errorbackup_slow_all_threads_after_retryable_s3_error の両方が真であることを要求するのではなく、いずれか一方が真であればよいように変更しました。 #85505 (Julia Kartseva)。
  • このPRは、REST カタログ経由で Iceberg テーブルに対してクエリを実行する際のメタデータ解決処理の不具合を修正します。... #85531 (Saurabh Kumar Ojha).
  • log_comment または insert_deduplication_token の設定を変更する非同期 INSERT で、まれにクラッシュする不具合を修正しました。 #85540 (Anton Popov).
  • HTTP 経由で multipart/form-data を使用した場合、date_time_input_format のようなパラメータは無視されていました。 #85570 (Sema Checherinda).
  • icebergS3Cluster および icebergAzureCluster テーブル関数におけるシークレットのマスク処理を修正。 #85658 (MikhailBurdukov).
  • JSONExtract で JSON 数値を Decimal 型に変換する際に発生していた精度の損失を修正しました。これにより、JSON 内の数値はもとの小数表現どおりに保持され、浮動小数点による丸め誤差を回避できるようになりました。 #85665 (ssive7b).
  • DROP COLUMN の後に、同じ ALTER ステートメント内で COMMENT COLUMN IF EXISTS を使用した際に発生していた LOGICAL_ERROR を修正しました。IF EXISTS 句は、同一ステートメント内でカラムが削除されている場合に、コメント操作を正しくスキップするようになりました。#85688 (xiaohuanlin).
  • Delta Lake 用のキャッシュからの読み取り回数を修正。 #85704 (Kseniia Sumarokova).
  • 巨大な文字列を扱う際に発生する CoalescingMergeTree のセグメンテーションフォールトを修正しました。これにより #84582 がクローズされました。#85709Konstantin Vedernikov)。
  • iceberg 書き込み時にメタデータのタイムスタンプを更新するよう修正。 #85711 (Konstantin Vedernikov)。
  • distributed_depth を *Cluster 関数の指標として使用していたのは誤りであり、データ重複の原因となる可能性があります。代わりに client_info.collaborate_with_initiator を使用してください。 #85734 (Konstantin Bogdanov).
  • Spark は position delete ファイルを読み込めません。 #85762 (Konstantin Vedernikov).
  • send_logs_source_regexp を修正(#85105 の非同期ロギングのリファクタリング後に発生した問題)。 #85797 (Azat Khuzhin)。
  • MEMORY_LIMIT_EXCEEDED エラー発生時に update_field を使用する辞書で発生する可能性のあった不整合を修正しました。 #85807 (Azat Khuzhin).
  • Distributed 宛先テーブルに対する並列分散 INSERT SELECT で、WITH ステートメント由来のグローバル定数をサポートするようになりました。以前は、このクエリで Unknown expression identifier エラーがスローされることがありました。#85811 (Nikolai Kochetov)。
  • deltaLakeAzuredeltaLakeClustericebergS3Cluster および icebergAzureCluster の資格情報をマスクするようにしました。 #85889 (Julian Maicher)。
  • DatabaseReplicated を使用して CREATE ... AS (SELECT * FROM s3Cluster(...)) を実行した際に発生していた論理エラーを修正しました。 #85904 (Konstantin Bogdanov).
  • url() テーブル関数が送信する HTTP リクエストについて、非標準ポートへアクセスする際に Host ヘッダーにポート番号を正しく含めるよう修正しました。これにより、開発環境で一般的な、カスタムポート上で動作する MinIO などの S3 互換サービスに対して事前署名付き URL を使用する場合に発生していた認証エラーが解消されます。(Fixes #85898). #85921 (Tom Quist).
  • これにより、Unity Catalog は非 Delta テーブルの場合、異常なデータ型を含むスキーマを無視するようになりました。#85699 を修正。#85950alesapin)。
  • Iceberg のフィールドの null 許容性を修正。 #85977 (Konstantin Vedernikov).
  • Replicated データベースのリカバリ処理におけるバグを修正しました。テーブル名に % 記号が含まれている場合、リカバリ中に異なる名前でテーブルが再作成される可能性がありました。 #85987 (Alexander Tokmakov)。
  • 空の Memory テーブルを復元する際に BACKUP_ENTRY_NOT_FOUND エラーにより復元が失敗する問題を修正。#86012 (Julia Kartseva).
  • 分散テーブルに対する ALTER 実行時に sharding_key の検査を追加しました。これまでは、不正な ALTER によってテーブル定義が壊れ、サーバーの再起動が必要になることがありました。 #86015 (Nikolay Degterinsky).
  • 空の Iceberg 削除ファイルが作成されないようになりました。 #86061 (Konstantin Vedernikov).
  • 大きすぎる設定値によって S3Queue テーブルおよびレプリカの再起動が動作しなくなる問題を修正しました。 #86074 (Nikolay Degterinsky).

ビルド/テスト/パッケージングの改善

  • デフォルトで、S3 を用いたテストに暗号化ディスクを使用するようにしました。 #59898 (Nikita Mikhaylov).
  • インテグレーションテストでストリップされていないデバッグシンボルを取得するために、clickhouse バイナリを使用するようにしました。 #83779 (Mikhail f. Shiryaev).
  • 内部の libxml2 を 2.14.4 から 2.14.5 に更新しました。 #84230 (Robert Schulze).
  • 内部の curl を 8.14.0 から 8.15.0 に更新しました。 #84231 (Robert Schulze).
  • CI におけるキャッシュ用のメモリ使用量を削減し、エビクション動作に対するテストを改善しました。 #84676 (alesapin).

ClickHouse 25.7 リリース(2025-07-24)

後方互換性のない変更

  • extractKeyValuePairs 関数の変更: 新しい引数 unexpected_quoting_character_strategy を追加しました。これは、クォートされていないキーまたは値を読み取っているときに、予期せず quoting_character が見つかった場合の挙動を制御します。値として指定できるのは invalidacceptpromote のいずれかです。invalid はキーを破棄し、キー待ち状態に戻ります。accept はそれをキーの一部として扱います。promote は直前の文字を破棄し、クォートされたキーとしてのパースを開始します。加えて、クォートされた値をパースした後は、ペア区切り文字が見つかった場合にのみ次のキーをパースします。#80657 (Arthur Passos).
  • countMatches 関数でゼロバイト一致をサポートしました。従来の動作を維持したいユーザーは、設定 count_matches_stop_at_empty_match を有効にできます。#81676 (Elmi Ahmadov).
  • BACKUP の生成時に、専用のサーバー設定 (max_backup_bandwidth_for_servermax_mutations_bandwidth_for_servermax_merges_bandwidth_for_server) に加えて、ローカル用 (max_local_read_bandwidth_for_server および max_local_write_bandwidth_for_server) とリモート用 (max_remote_read_network_bandwidth_for_server および max_remote_write_network_bandwidth_for_server) のサーバー全体のスロットル機構を使用するようにしました。#81753 (Sergei Trifonov).
  • 挿入可能なカラムを持たないテーブルの作成を禁止しました。#81835 (Pervakov Grigorii).
  • アーカイブ内のファイル単位で cluster 関数の処理を並列化しました。以前のバージョンでは、アーカイブ全体(zip、tar、7z など)が 1 つの作業単位でした。新しい設定 cluster_function_process_archive_on_multiple_nodes を追加し、デフォルトは true です。true に設定すると、cluster 関数でアーカイブを処理する際のパフォーマンスが向上します。以前のバージョンでアーカイブ付きの cluster 関数を使用している場合、25.7+ へのアップグレード時の互換性とエラー回避のためには false に設定する必要があります。#82355 (Kseniia Sumarokova).
  • SYSTEM RESTART REPLICAS クエリが、Lazy データベース内のテーブルに対するアクセス権がない場合でもそれらのテーブルを起動させており、しかもそれらのテーブルが同時に drop されている最中に発生していました。注: 現在は、SYSTEM RESTART REPLICASSHOW TABLES の権限を持つデータベース内のレプリカのみを再起動します。これは自然な挙動です。#83321 (Alexey Milovidov).

新機能

  • MergeTree ファミリーのテーブルに対する論理更新のサポートを追加しました。論理更新は、新しい構文 UPDATE &lt;table&gt; SET col1 = val1, col2 = val2, ... WHERE &lt;condition&gt; を用いて実行できます。論理更新を利用した論理削除機能を実装しました。これは lightweight_delete_mode = 'lightweight_update' を設定することで有効化できます。 #82004 (Anton Popov)。
  • Iceberg のスキーマ進化で複合データ型をサポート。 #73714 (Konstantin Vedernikov).
  • Iceberg テーブルへの INSERT をサポートしました。 #82692 (Konstantin Vedernikov)。
  • Iceberg のデータファイルをフィールド ID で読み取れるようにしました。これにより Iceberg との互換性が向上します。メタデータ内のフィールドをリネームしても、基盤となる Parquet ファイル内の別名のフィールドへマッピングできます。これにより #83065 がクローズされました。 #83653Konstantin Vedernikov)。
  • ClickHouse で Iceberg 向けの圧縮 metadata.json ファイルがサポートされるようになりました。#70874 を修正しました。#81451alesapin)。
  • Glue カタログで TimestampTZ をサポートするようになりました。これにより #81654 がクローズされました。#83132Konstantin Vedernikov)。
  • AI を活用した SQL 生成機能を ClickHouse クライアントに追加しました。クエリの先頭に ?? を付けて入力することで、自然言語による記述から SQL クエリを生成できるようになりました。OpenAI および Anthropic のプロバイダーをサポートし、スキーマの自動検出に対応します。 #83314 (Kaushik Iska).
  • Geo 型を WKB 形式で出力する関数を追加しました。 #82935 (Konstantin Vedernikov).
  • ソース用に新しいアクセス種別 READWRITE を導入し、ソースに関連する従来のすべてのアクセス種別は非推奨になりました。これまでの GRANT S3 ON *.* TO user は、今後は GRANT READ, WRITE ON S3 TO user となります。これにより、ソースに対する READWRITE 権限を分離して付与することも可能になります。例: GRANT READ ON * TO user, GRANT WRITE ON S3 TO user。この機能は access_control_improvements.enable_read_write_grants という設定で制御され、デフォルトでは無効になっています。#73659 (pufit).
  • NumericIndexedVector: ビットスライスおよび Roaring Bitmap 圧縮を基盤とした新しいベクターデータ構造であり、構築・分析・要素単位の算術演算のための 20 以上の関数を備えています。ストレージ使用量を削減し、スパースデータに対する結合、フィルタおよび集約処理を高速化できます。#70582 および T. Xiong と Y. Wang による VLDB 2024 掲載論文 “Large-Scale Metric Computation in Online Controlled Experiment Platform” paper を実装しています。 #74193 (FriendLey)。
  • ワークロード設定 max_waiting_queries がサポートされるようになりました。クエリキューのサイズを制限するために使用できます。上限に達した場合、それ以降のすべてのクエリは SERVER_OVERLOADED エラーで失敗します。#81250Oleg Doronin)。
  • 金融関数を追加:financialInternalRateOfReturnExtended (XIRR)、financialInternalRateOfReturn (IRR)、financialNetPresentValueExtended (XNPV)、financialNetPresentValue (NPV)。#81599Joanna Hulboj)。
  • 2 つのポリゴンの交差を判定するための地理空間関数 polygonsIntersectCartesianpolygonsIntersectSpherical を追加しました。 #81882 (Paul Lamb)。
  • MergeTree ファミリーのテーブルで _part_granule_offset 仮想カラムをサポートしました。このカラムは、各データパーツ内で各行が属する granule/mark の 0 始まりのインデックスを示します。これは #79572 に対応するものです。#82341 (Amos Bird)。#82341 (Amos Bird)
  • sRGB 色空間と OkLCH 色空間の間で色を変換するための SQL 関数 colorSRGBToOkLCHcolorOkLCHToSRGB を追加しました。 #83679 (Fgrtue)。
  • CREATE USER クエリでユーザー名にパラメータを指定できるようになりました。 #81387 (Diskein).
  • system.formats テーブルに、HTTP コンテンツタイプやスキーマ推論の対応状況など、フォーマットに関する拡張情報が含まれるようになりました。 #81505 (Alexey Milovidov)。

実験的機能

  • テキスト索引を検索するための汎用ツールとして、searchAny および searchAll 関数を追加しました。 #80641 (Elmi Ahmadov).
  • テキスト索引で新しい split トークナイザーをサポートしました。 #81752 (Elmi Ahmadov).
  • text 索引のデフォルトの索引粒度の値を 64 に変更しました。これにより、社内ベンチマークにおける平均的なテストクエリの期待されるパフォーマンスが向上します。 #82162 (Jimmy Aguilar Mena).
  • 256 ビットのビットマップは、状態から出るラベルを順序付きで格納しますが、遷移先の状態はハッシュテーブル内に現れる順序でディスクに保存されます。そのため、ディスクから読み込む際に、ラベルが誤った次の状態を指してしまう可能性があります。 #82783 (Elmi Ahmadov).
  • テキスト索引における FST ツリーの blob に対して zstd 圧縮を有効化しました。 #83093 (Elmi Ahmadov).
  • ベクトル類似度索引をベータ版に昇格しました。ベクトル類似度索引を使用するには、有効化が必要なエイリアス設定 enable_vector_similarity_index を導入しました。 #83459 (Robert Schulze).
  • 実験的なゼロコピー・レプリケーションに関連する実験的な send_metadata ロジックを削除しました。これは一度も使用されておらず、このコードをサポートしている人もいませんでした。さらに、これに関連するテストも存在しなかったため、かなり前から壊れていた可能性が高いです。 #82508 (alesapin).
  • StorageKafka2system.kafka_consumers に統合しました。 #82652 (János Benjamin Antal).
  • (a < 1 and a > 0) or b = 3 のような複雑な CNF/DNF を、STATISTICS に基づいて推定するようにしました。 #82663 (Han Fei).

パフォーマンスの向上

  • 非同期ロギングを導入しました。ログを低速なデバイスに出力する場合でも、クエリが遅延しなくなりました。 #82516 (Raúl Marín)。キュー内に保持されるエントリ数に上限を設けました。 #83214 (Raúl Marín)。
  • Parallel distributed INSERT SELECT は、各 shard(分片)上で独立して INSERT SELECT が実行されるモードにおいて、デフォルトで有効になりました。parallel_distributed_insert_select SETTING を参照してください。 #83040 (Igor Nikonov).
  • 集約クエリに、Nullable ではないカラムに対する単一の count() 関数のみが含まれている場合、ハッシュテーブルの探索時に集約ロジックが完全にインライン化されます。これにより、集約状態を割り当てて維持する必要がなくなり、メモリ使用量と CPU オーバーヘッドが大幅に削減されます。これは部分的に #81982 に対処するものです。 #82104 (Amos Bird)。
  • HashJoin のパフォーマンスを改善しました。典型的なキーが 1 カラムのみの場合には、ハッシュマップに対する余分なループ処理を削除し、さらに null_map および join_mask が常に true または false である場合には、そのチェックを省略するようにしました。 #82308 (Nikita Taranov)。
  • -If コンビネータに対する軽微な最適化。 #78454 (李扬).
  • ベクトル類似度インデックスを使用するベクトル検索クエリは、ストレージの読み取り回数と CPU 使用量が削減されることで、より低レイテンシで完了します。 #79103 (Shankar Iyer).
  • filterPartsByQueryConditionCache においても merge_tree_min_{rows,bytes}_for_seek を考慮するようにし、索引によるフィルタリングを行う他のメソッドと整合するようにしました。#80312 (李扬)。
  • TOTALS ステップ以降のパイプライン処理をマルチスレッド化しました。 #80331 (UnamedRus).
  • Redis および KeeperMap ストレージのキーによるフィルタリングを修正。 #81833 (Pervakov Grigorii).
  • 新しい設定 min_joined_block_size_rowsmin_joined_block_size_bytes と同様。デフォルトは 65409)を追加し、JOIN の入力および出力ブロックに対する最小ブロックサイズ(行数)を制御できるようにしました(JOIN アルゴリズムが対応している場合)。小さいブロックはまとめて結合されます。 #81886 (Nikita Taranov)。
  • ATTACH PARTITION で全キャッシュがクリアされることはなくなりました。 #82377 (Alexey Milovidov).
  • 同値類を使用して冗長な JOIN 操作を削除することで、相関サブクエリ向けに生成されるプランを最適化します。すべての相関カラムに対して同値な式が存在する場合、query_plan_correlated_subqueries_use_substitution 設定が有効になっていれば、CROSS JOIN は生成されません。#82435Dmitry Novik)。
  • EXISTS 関数の引数として使用されている場合、相関サブクエリでは必要なカラムのみを読み取るようにしました。 #82443 (Dmitry Novik).
  • クエリ解析中のクエリツリーの比較をわずかに高速化しました。 #82617 (Nikolai Kochetov).
  • ProfileEventsCounter にアラインメントを追加し、フォールスシェアリングを減らしました。 #82697 (Jiebin Sun)。
  • #82308 で行われた null_mapJoinMask の最適化が、複数の OR 条件を含む JOIN のケースにも適用されました。また、KnownRowsHolder データ構造も最適化されました。#83041Nikita Taranov)。
  • フラグへの各アクセス時にハッシュを計算することを避けるため、JOIN フラグにはプレーンな std::vector<std::atomic_bool> を使用します。 #83043 (Nikita Taranov)。
  • HashJoinlazy 出力モードを使用している場合、結果カラム用のメモリを事前に確保しないようにしました。これは、特に一致件数が少ない場合には非効率的です。さらに、結合が完了した後であれば一致件数を正確に把握できるため、より精度の高い事前確保が可能です。#83304Nikita Taranov)。
  • パイプライン構築時のポートヘッダーでのメモリコピーを最小化しました。元のPRheymindによるものです。#83381Raúl Marín)。
  • RocksDB ストレージ使用時の clickhouse-keeper の起動を改善しました。 #83390 (Antonio Andelic).
  • 高い同時実行負荷がかかる状況でのロック競合を減らすため、ストレージスナップショットデータの作成中はロックを保持しないようにしました。 #83510 (Duc Canh Le).
  • パースエラーが発生しない場合にシリアライザを再利用することで、ProtobufSingle 入力形式のパフォーマンスを向上させました。 #83613 (Eduard Karacharov).
  • 短いクエリを高速化するためのパイプライン構築処理のパフォーマンスを改善しました。 #83631 (Raúl Marín).
  • 短いクエリを高速化するため、MergeTreeReadersChain::getSampleBlock を最適化しました。#83875Raúl Marín)。
  • 非同期リクエストによりデータカタログでのテーブル一覧表示を高速化。 #81084 (alesapin).
  • s3_slow_all_threads_after_network_error 設定が有効な場合、S3 のリトライ処理にジッターを導入しました。 #81849 (zoomxi)。

改良

  • 可読性を高めるために、括弧を複数の色で色分けして表示するようにしました。 #82538 (Konstantin Bogdanov).
  • LIKE/REGEXP パターンを入力しているときにメタ文字をハイライト表示するようにしました。これは既に clickhouse-formatclickhouse-client の echo 出力では対応済みでしたが、今回コマンドプロンプトでも行われるようになりました。#82871Alexey Milovidov)。
  • clickhouse-format 内およびクライアントの echo 出力でのハイライトは、コマンドラインプロンプトでのハイライトと同様に動作します。#82874 (Alexey Milovidov)。
  • plain_rewritable ディスクがデータベースメタデータ用のディスクとして利用できるようになりました。データベースディスクとしての利用をサポートするため、plain_rewritablemoveFilereplaceFile メソッドを実装しました。 #79424 (Tuan Pham Anh).
  • PostgreSQLMySQLDataLake データベースのバックアップを許可しました。これらのデータベースのバックアップでは、定義のみが保存され、中身のデータは保存されません。#79982Nikolay Degterinsky)。
  • 設定 allow_experimental_join_condition は、現在は常に許可されているため、廃止予定としてマークされました。 #80566 (Vladimir Cherkasov).
  • ClickHouse の非同期メトリクスに pressure メトリクスを追加しました。 #80779 (Xander Garbett).
  • マークキャッシュからのエビクションを追跡するためのメトリクス MarkCacheEvictedBytesMarkCacheEvictedMarksMarkCacheEvictedFiles を追加しました(issue #60989)。#80799Shivji Kumar Jha)。
  • Parquet の enum 型を、仕様で規定されているとおり byte array(バイト配列)として書き込めるようにしました。#81090 (Arthur Passos)。
  • DeltaLake テーブルエンジンの改善: delta-kernel-rs に ExpressionVisitor API が追加されており、この PR ではその API を実装し、パーティションカラムの式変換に適用しています(これにより、これまでコード内で使用していた、delta-kernel-rs における古く非推奨となっている方式を置き換えます)。将来的には、この ExpressionVisitor により、統計情報に基づくプルーニングや、DeltaLake 固有のいくつかの機能も実装できるようになります。さらに、この変更の目的は、DeltaLakeCluster テーブルエンジンでパーティションプルーニングをサポートすることです(構文解析された式の結果である ActionsDAG はシリアライズされ、データパスと一緒にイニシエータから送信されます。プルーニングに必要なこの種の情報は、データファイル一覧時のメタ情報としてのみ利用可能であり、その処理はイニシエータだけが行いますが、各読み取りサーバ上のデータに対して適用される必要があるためです)。 #81136 (Kseniia Sumarokova)。
  • 名前付きタプルのスーパータイプを導出する際に要素名を保持するようにしました。 #81345 (lgbo).
  • StorageKafka2 において、以前にコミットされたオフセットに依存しないよう、消費したメッセージを手動でカウントするようにしました。 #81662 (János Benjamin Antal).
  • clickhouse-keeper-utils を追加しました。ClickHouse Keeper データを管理および分析するための新しいコマンドラインツールです。このツールは、スナップショットおよびチェンジログからの状態のダンプ取得、チェンジログファイルの分析、特定のログ範囲の抽出をサポートします。 #81677 (Antonio Andelic).
  • 合計およびユーザーごとのネットワークスロットルはリセットされないようになり、max_network_bandwidth_for_all_usersmax_network_bandwidth_for_all_users の制限値が超過されることがなくなりました。 #81729 (Sergei Trifonov)。
  • 出力フォーマットとして GeoParquet 形式への書き込みをサポートしました。 #81784 (Konstantin Vedernikov).
  • 未完了のデータミューテーションの影響下にあるカラムの名前を変更してしまう場合は、RENAME COLUMN の ALTER ミューテーションを開始できないようにしました。 #81823 (Mikhail Artemenko)。
  • Connection ヘッダーは、接続を維持すべきだと判断できた時点で、ヘッダー群の最後に送信されるようになりました。 #81951 (Sema Checherinda).
  • listen_backlog(デフォルト 4096)に基づいて、TCP サーバーのキュー長(デフォルト 64)を調整するようにしました。 #82045 (Azat Khuzhin)。
  • max_local_read_bandwidth_for_servermax_local_write_bandwidth_for_server を、サーバーを再起動することなく動的に再読み込みできるようにしました。 #82083 (Kai Zhu).
  • TRUNCATE TABLE system.warnings を使用して system.warnings テーブルからすべての警告を削除できるようにしました。 #82087 (Vladimir Cherkasov)。
  • データレイククラスタ関数におけるパーティションプルーニングを修正。 #82131 (Kseniia Sumarokova).
  • DeltaLakeCluster テーブル関数でのパーティション化されたデータの読み取りを修正しました。この PR では cluster 関数群のプロトコルバージョンを引き上げ、イニシエーターからレプリカへ追加情報を送信できるようにしています。この追加情報には delta-kernel の transform 式が含まれており、パーティションカラム(および将来的には生成カラムなどの他の情報)をパースするために必要です。 #82132 (Kseniia Sumarokova)。
  • 関数 reinterpret は、T が固定長データ型である場合に Array(T) への変換をサポートするようになりました(issue #82621)。#83399Shankar Iyer)。
  • database Datalake が、よりわかりやすい例外をスローするようになりました。 #81211 を修正しました。 #82304alesapin)。
  • HashJoin::needUsedFlagsForPerRightTableRow から false を返すことで CROSS JOIN の動作を改善。 #82379 (lgbo).
  • map カラムの読み書きを Tuple の Array として行えるようにしました。 #82408 (MikhailBurdukov).
  • Rust クレートのライセンスを system.licenses に一覧できるようにしました。 #82440 (Raúl Marín)。
  • {uuid} のようなマクロを、S3Queue テーブルエンジンの keeper_path 設定項目で使用できるようになりました。 #82463 (Nikolay Degterinsky)。
  • Keeper の改善: バックグラウンドスレッドでディスク間の changelog ファイルを移動するようにしました。以前は、changelog を別のディスクへ移動する処理が完了するまで、Keeper 全体がブロックされていました。これにより、移動処理に時間がかかる場合(例: S3 ディスクへの移動)には、パフォーマンスの低下を招いていました。 #82485 (Antonio Andelic).
  • Keeper の改善: 新しい設定項目 keeper_server.cleanup_old_and_ignore_new_acl を追加しました。有効化すると、すべてのノードの ACL が消去され、新しいリクエストに対する ACL は無視されます。ノードから ACL を完全に削除することが目的の場合は、新しいスナップショットが作成されるまで、この設定を有効のままにしておくことが重要です。 #82496 (Antonio Andelic).
  • S3Queue テーブルエンジンを使用するテーブルでのストリーミングを無効化できる新しいサーバー設定 s3queue_disable_streaming を追加しました。この設定はサーバーを再起動せずに変更できます。 #82515 (Kseniia Sumarokova).
  • ファイルシステムキャッシュの動的リサイズ機能をリファクタリングし、イントロスペクションのためのログをさらに追加しました。 #82556 (Kseniia Sumarokova).
  • 設定ファイルがない場合でも、clickhouse-server はデフォルト設定と同様に PostgreSQL 用のポート 9005 をリッスンします。 #82633 (Alexey Milovidov).
  • ReplicatedMergeTree::executeMetadataAlter では、StorageID を取得し、DDLGuard を取得せずに IDatabase::alterTable を呼び出そうとします。この間に、問題となっているテーブルを別のテーブルと技術的には入れ替えることができるため、定義を取得すると誤ったテーブルの定義を取得してしまう可能性があります。これを回避するため、IDatabase::alterTable を呼び出そうとする際に UUID が一致するかどうかを確認するチェックを別途追加しました。#82666 (Nikolay Degterinsky)。
  • 読み取り専用のリモートディスクを使用するデータベースをアタッチする際は、DatabaseCatalog にテーブル UUID を手動で追加する必要があります。 #82670 (Tuan Pham Anh)。
  • NumericIndexedVectornan および inf を使用できないようにしました。これにより #82239 などが修正されました。 #82681Raufs Dunamalijevs)。
  • X-ClickHouse-Progress および X-ClickHouse-Summary ヘッダーのフォーマットでゼロ値を省略しないようにしました。 #82727 (Nikita Mikhaylov).
  • Keeper の改善: world:anyone ACL に対して特定の権限をサポート。 #82755 (Antonio Andelic).
  • SummingMergeTree テーブルで、合計対象として明示的に列挙されているカラムを対象とする RENAME COLUMNDROP COLUMN を許可しないようにしました。#81836 をクローズしました。#82821Alexey Milovidov)。
  • Decimal から Float32 への変換精度を改善しました。Decimal から BFloat16 への変換を実装しました。#82660 をクローズしました。 #82823Alexey Milovidov)。
  • Web UI のスクロールバーの見た目が少し良くなりました。 #82869 (Alexey Milovidov).
  • 組み込み設定を備えた clickhouse-server で、HTTP OPTIONS レスポンスを返すことにより Web UI を利用できるようになりました。 #82870 (Alexey Milovidov).
  • config 内のパスに対して追加の Keeper ACL を指定できるようになりました。特定のパスに追加の ACL を設定する場合は、config の zookeeper.path_acls の下に定義してください。 #82898 (Antonio Andelic).
  • ミューテーションのスナップショットは、可視パーツのスナップショットから構築されるようになりました。また、スナップショットで使用されるミューテーションカウンタは、含まれるミューテーションに基づいて再計算されます。 #82945 (Mikhail Artemenko).
  • Keeper がソフトメモリ制限により書き込みを拒否した場合に、ProfileEvent を追加するようにしました。 #82963 (Xander Garbett).
  • commit_timecommit_id のカラムを system.s3queue_log に追加。 #83016 (Kseniia Sumarokova).
  • 場合によっては、メトリクスに複数のディメンション(次元)が必要になることがあります。たとえば、単一のカウンタではなく、エラーコードごとに失敗したマージやミューテーションをカウントしたい場合です。そのために、この要件を満たす system.dimensional_metrics を導入し、最初のディメンション付きメトリクスとして failed_merges を追加しました。 #83030 (Miсhael Stetsyuk)。
  • ClickHouse クライアントで不明な設定に関する警告を集約し、サマリとしてログに記録するようにしました。 #83042 (Bharat Nallan)。
  • ClickHouse クライアントは、接続エラー発生時にローカルポート番号を報告するようになりました。 #83050 (Jianfei Hu)。
  • AsynchronousMetrics におけるエラー処理がわずかに改善されました。/sys/block ディレクトリが存在するがアクセスできない場合、サーバーはブロックデバイスの監視なしで起動します。#79229 をクローズしました。 #83115Alexey Milovidov)。
  • SystemLogs のシャットダウン順序を変更し、通常テーブルの後かつシステムテーブルの前に行うようにしました(以前は通常テーブルの前に行っていました)。 #83134 (Kseniia Sumarokova).
  • S3Queue のシャットダウン処理のログを追加しました。 #83163 (Kseniia Sumarokova).
  • Time および Time64MM:SSM:SSSSS 形式として解釈できるようになりました。 #83299 (Yarik Briukhovetskyi).
  • distributed_ddl_output_mode='*_only_active' の場合、max_replication_lag_to_enqueue を超えるレプリケーションラグを持つ新規またはリカバリ済みのレプリカを待たないようにしました。これにより、新しいレプリカが初期化またはリカバリ完了後にアクティブになったものの、初期化中に大量のレプリケーションログを蓄積していた場合に発生していた DDL task is not finished on some hosts を回避しやすくなります。あわせて、レプリケーションログが max_replication_lag_to_enqueue 未満になるまで待機する SYSTEM SYNC DATABASE REPLICA STRICT クエリも実装しました。#83302 (Alexander Tokmakov)。
  • 例外メッセージ内に過度に長い式処理の説明を出力しないようにしました。 #83164 をクローズ。 #83350Alexey Milovidov)。
  • パーツのプレフィックスおよびサフィックスを解析する機能を追加し、非定数カラムのカバレッジも検証できるようにしました。 #83377 (Mikhail Artemenko).
  • 名前付きコレクション使用時に、ODBC および JDBC 間のパラメータ名を統一しました。 #83410 (Andrey Zvonov).
  • ストレージのシャットダウン中に getStatusErrorCodes::ABORTED 例外をスローします。以前はこの結果、select クエリが失敗していましたが、現在は ErrorCodes::ABORTED 例外を捕捉して明示的に無視するようになりました。 #83435 (Miсhael Stetsyuk).
  • MergeParts エントリの part_log のプロファイルイベントに、UserTimeMicrosecondsSystemTimeMicrosecondsRealTimeMicroseconds などのプロセスリソースのメトリクスを追加。 #83460 (Vladimir Cherkasov)。
  • Keeper において、新しい種類のリクエストを可能にする create_if_not_existscheck_not_existsremove_recursive の各 feature flag をデフォルトで有効にしました。 #83488 (Antonio Andelic)。
  • サーバーのシャットダウン時にテーブルを停止する前に、S3(Azure など)Queue のストリーミングを停止するようになりました。 #83530 (Kseniia Sumarokova).
  • JSON入力フォーマットで Date / Date32 を整数値として扱えるようにしました。 #83597 (MikhailBurdukov)
  • 特定の状況での PROJECTION の読み込みおよび追加に関する例外メッセージを、より読みやすくしました。 #83728 (Robert Schulze).
  • clickhouse-server のバイナリのチェックサム整合性検証をスキップできる設定オプションを追加しました。 #83637 を解決します。 #83749Rafael Roquetto)。

バグ修正(公式安定版リリースにおけるユーザーに影響する不具合)

  • 誤って #79465 で変更されていた clickhouse-benchmark--reconnect オプションのデフォルト値を修正。 #82677Alexey Milovidov による)。
  • CREATE DICTIONARY のフォーマットの不整合を修正しました。#82105 をクローズ。#82829Alexey Milovidov)。
  • materialize 関数を含む有効期限 (TTL) のフォーマットの不整合を修正しました。#82828 をクローズしました。#82831Alexey Milovidov)。
  • INTO OUTFILE などの出力オプションを含むサブクエリに対する EXPLAIN AST のフォーマットの不整合を修正しました。#82826 をクローズ。#82840Alexey Milovidov)。
  • エイリアスが許可されていないコンテキストにおける、エイリアス付き括弧表現の書式の不整合を修正しました。#82836 をクローズ。#82837 をクローズ。#82867Alexey Milovidov)。
  • 集約関数の状態を IPv4 と乗算する際に、適切なエラーコードが返されるようにしました。 #82817 をクローズ。 #82818Alexey Milovidov)。
  • ファイルシステムキャッシュにおける「Having zero bytes but range is not finished」という論理エラーを修正。 #81868 (Kseniia Sumarokova).
  • TTL によって行が削除された場合に、それに依存しているアルゴリズム(例えば minmax_count_projection)の正しさを保証するため、min-max 索引を再計算します。これにより #77091 が解決されます。#77166 (Amos Bird)。
  • ORDER BY ... LIMIT BY ... LIMIT N を組み合わせたクエリにおいて、ORDER BY が PartialSorting として実行される場合、カウンター rows_before_limit_at_least は、ソート処理で消費された行数ではなく、LIMIT 句で処理された行数を反映するようになりました。 #78999 (Eduard Karacharov)。
  • オルタネーションを含み、先頭の選択肢がリテラルでない regexp を用いた token/ngram 索引でのフィルタリングにおいて発生していた、過剰な granule スキップを修正。 #79373 (Eduard Karacharov)。
  • <=> 演算子と Join ストレージにおける論理エラーを修正し、クエリが適切なエラーコードを返すようになりました。 #80165 (Vladimir Cherkasov)。
  • remote 関数ファミリーと併用した場合に loop 関数がクラッシュする不具合を修正しました。loop(remote(...)) において LIMIT 句が正しく適用されるようにしました。 #80299 (Julia Kartseva).
  • Unix エポック (1970-01-01) より前および最大日付 (2106-02-07 06:28:15) より後の日付を処理する際の to_utc_timestamp および from_utc_timestamp 関数の誤った動作を修正しました。これらの関数は、値をそれぞれエポック開始時刻と最大日付に正しく切り詰めるようになりました。 #80498 (Surya Kant Ranjan).
  • 一部のクエリを parallel replicas で実行した場合、initiator 側では順序付き読み取りの最適化を適用できる一方、リモートノード側では適用できないことがありました。その結果、parallel replicas のコーディネーター(initiator 上)とリモートノードで異なる読み取りモードが使用され、論理エラーが発生していました。 #80652 (Igor Nikonov)。
  • カラム型がNullableに変更された際のprojectionのmaterialize時に発生していた論理エラーを修正しました。 #80741 (Pavel Kruglov).
  • TTL 更新時に、TTL GROUP BY での有効期限 (TTL) の再計算が誤っていた問題を修正しました。 #81222 (Evgeniy Ulasik).
  • Parquet の Bloom フィルターが、WHERE function(key) IN (...) のような条件を WHERE key IN (...) であるかのように誤って扱っていた不具合を修正しました。 #81255 (Michael Kolupaev).
  • マージ処理中に例外が発生した際に Aggregator がクラッシュする可能性のあった問題を修正しました。 #81450 (Nikita Taranov).
  • InterpreterInsertQuery::extendQueryLogElemImpl を修正し、必要に応じてデータベース名およびテーブル名にバッククオートを追加するようにしました(例:名前に - のような特殊文字が含まれている場合)。 #81528 (Ilia Shvyrialkin).
  • 左辺引数が null でサブクエリ結果が Nullable ではない場合に、transform_null_in=1 設定時の IN の実行を修正。 #81584 (Pavel Kruglov).
  • 既存テーブルからの読み取り時に実行される default/materialize 式について、experimental/suspicious 型を検証しないようにしました。 #81618 (Pavel Kruglov).
  • TTL 式で dict が使用されている場合に、マージ処理中に "Context has expired" エラーが発生する問題を修正しました。 #81690 (Azat Khuzhin).
  • cast 関数の単調性を修正しました。 #81722 (zoomxi)。
  • スカラ相関サブクエリの処理中に必要なカラムが読み込まれない問題を修正しました。#81716 に対する修正です。#81805Dmitry Novik)。
  • 以前のバージョンでは、サーバーが /js へのリクエストに対して過剰なコンテンツを返していました。これにより #61890 が解決されました。#81895Alexey Milovidov)。
  • これまで、MongoDB テーブルエンジン定義では、host:port 引数にパスコンポーネントを含めることができましたが、そのパスコンポーネントは黙って無視されていました。MongoDB 連携機能では、そのようなテーブルのロードを拒否していました。この修正により、MongoDB エンジンの引数が 5 つある場合には、そのようなテーブルのロードを許可し、引数で指定されたデータベース名を使用しつつパスコンポーネントを無視するようにしました注意: この修正は、新規に作成されたテーブルや mongo テーブル関数を使用したクエリ、ならびに Dictionary のソースおよび named collection には適用されません。 #81942 (Vladimir Cherkasov)。
  • マージ中に例外が発生した場合に Aggregator がクラッシュする可能性があった問題を修正しました。 #82022 (Nikita Taranov)。
  • クエリで定数の別名カラムのみが使用されている場合のフィルタ解析を修正しました。 #79448 を修正。 #82037 (Dmitry Novik).
  • GROUP BY および SET の有効期限 (TTL) で同じカラムを指定した場合に発生する LOGICAL_ERROR と、その後のクラッシュを修正しました。 #82054 (Pablo Marcos)。
  • シークレットマスキング処理における S3 テーブル関数の引数検証を修正し、潜在的な LOGICAL_ERROR の発生を防止。#80620 をクローズ。#82056 (Vladimir Cherkasov)。
  • Iceberg のデータレースを修正。 #82088 (Azat Khuzhin).
  • DatabaseReplicated::getClusterImpl を修正しました。hosts の最初の要素(または複数の要素)が id == DROPPED_MARK であり、同じ分片に対する他の要素が存在しない場合、shards の最初の要素が空のベクタとなり、std::out_of_range が発生していました。 #82093 (Miсhael Stetsyuk)。
  • arraySimilarity におけるコピーペーストの誤りを修正し、UInt32 および Int32 の重みの使用を禁止。テストおよびドキュメントを更新。 #82103 (Mikhail f. Shiryaev)。
  • WHERE 句および IndexSet の条件下で arrayJoin を含むクエリにおいて発生していた Not found column エラーを修正しました。 #82113 (Nikolai Kochetov).
  • Glue カタログ統合のバグを修正。これにより、サブカラムの一部が Decimal 型であるネストしたデータ型のテーブル(例: map&lt;string, decimal(9, 2)&gt;)を ClickHouse が読み取れるようになった。#81301 を修正。#82114alesapin)。
  • SummingMergeTree において、25.5 で https://github.com/ClickHouse/ClickHouse/pull/79051 によって導入されたパフォーマンス低下を修正しました。#82130Pavel Kruglov)。
  • URI 経由で設定を渡した場合、最後の値のみが有効になります。 #82137 (Sema Checherinda).
  • Iceberg における「Context has expired」エラーを修正。 #82146 (Azat Khuzhin).
  • メモリ逼迫時のリモートクエリで発生しうるデッドロックを修正。 #82160 (Kirill).
  • numericIndexedVectorPointwiseAddnumericIndexedVectorPointwiseSubtractnumericIndexedVectorPointwiseMultiplynumericIndexedVectorPointwiseDivide 関数を大きな数値に対して適用した際にオーバーフローが発生していた問題を修正しました。 #82165 (Raufs Dunamalijevs)。
  • Materialized View が INSERT クエリを取りこぼす原因となっていたテーブル依存関係のバグを修正しました。 #82222 (Nikolay Degterinsky).
  • サジェスションスレッドとメインクライアントスレッド間で発生する可能性のあったデータレースを修正。 #82233 (Azat Khuzhin).
  • ClickHouse はスキーマ進化後でも Glue カタログから Iceberg テーブルを読み込めるようになりました。 #81272 を修正しました。 #82301 (alesapin)。
  • 非同期メトリクス用の設定 asynchronous_metrics_update_period_sasynchronous_heavy_metrics_update_period_s の検証を修正しました。 #82310 (Bharat Nallan)。
  • 複数の JOIN を含むクエリで matcher を解決する処理における論理エラーを修正し、#81969 をクローズしました。#82421Vladimir Cherkasov)。
  • AWS ECS トークンに有効期限を追加し、再読み込み可能にしました。 #82422 (Konstantin Bogdanov).
  • CASE 関数で NULL 引数が正しく処理されない不具合を修正しました。 #82436 (Yarik Briukhovetskyi)。
  • クライアント内のデータレース(グローバルコンテキストを使用しないようにすることで回避)および session_timezone のオーバーライドを修正しました。以前は、session_timezoneusers.xml/クライアントオプションで非空に設定され、クエリコンテキストでは空に設定されている場合、本来とは異なり users.xml の値が使用されていましたが、現在は常にクエリコンテキストがグローバルコンテキストより優先されます。 #82444 (Azat Khuzhin)。
  • 外部テーブルエンジンにおけるキャッシュバッファの境界アライメント無効化処理を修正しました。この処理は https://github.com/ClickHouse/ClickHouse/pull/81868 で正しく動作していませんでした。 #82493Kseniia Sumarokova)。
  • 型変換されたキーで key-value ストレージを JOIN した場合に発生していたクラッシュを修正しました。 #82497 (Pervakov Grigorii).
  • ログおよび query_log で named collection の値が隠されてしまう問題を修正。 #82405 をクローズ。 #82510 (Kseniia Sumarokova)。
  • セッション終了時のログ出力で、user_id が空になる場合にクラッシュする可能性があった問題を修正しました。 #82513 (Bharat Nallan).
  • Time のパース処理で msan の問題が発生する可能性があったケースを修正しました。この変更では次の Issue を修正しています: #82477#82514 (Yarik Briukhovetskyi)。
  • サーバーの処理がハングしないようにするため、threadpool_writer_pool_size をゼロに設定できないようにしました。 #82532 (Bharat Nallan)。
  • 相関付けられたカラムに対する ROW POLICY 式の解析中に発生する LOGICAL_ERROR を修正。 #82618 (Dmitry Novik)。
  • enable_shared_storage_snapshot_in_query = 1 の場合に、mergeTreeProjection テーブル関数で親メタデータを誤って使用していた不具合を修正しました。これは #82634 に対応する修正です。#82638Amos Bird)。
  • 関数 trim{Left,Right,Both} は、入力文字列型 "FixedString(N)" をサポートするようになりました。例えば、SELECT trimBoth(toFixedString('abc', 3), 'ac') が動作するようになりました。 #82691 (Robert Schulze).
  • AzureBlobStorage において、ネイティブコピーのために認証方法を比較する際に例外が発生した場合は、読み取りしてからコピーする(つまり非ネイティブコピー)処理にフォールバックするようコードを更新しました。 #82693 (Smita Kulkarni).
  • 空要素が含まれる場合の groupArraySample / groupArrayLast のデシリアライズ処理を修正しました(入力が空だった場合に、デシリアライズがバイナリデータの一部を読み飛ばしてしまう可能性があり、その結果、データ読み取り時の破損や TCP プロトコルでの UNKNOWN_PACKET_FROM_SERVER エラーを引き起こすおそれがありました)。数値型および日時型には影響しません。#82763Pedro Ferreira)。
  • 空の Memory テーブルのバックアップ処理を修正し、バックアップ復元が BACKUP_ENTRY_NOT_FOUND エラーで失敗していた問題を解消しました。 #82791 (Julia Kartseva).
  • union/intersect/except_default_mode の書き換え時の例外安全性を修正。#82664 を解決。#82820Alexey Milovidov)。
  • 非同期テーブルのロードジョブの数を追跡するようにしました。実行中のジョブが存在する場合は、TransactionLog::removeOldEntriestail_ptr を更新しないようにしました。 #82824 (Tuan Pham Anh)。
  • Iceberg におけるデータレースを修正。 #82841 (Azat Khuzhin).
  • 25.6 で導入された use_skip_indexes_if_final_exact_mode 最適化において、MergeTree エンジンの設定やデータ分布によっては、適切な候補範囲を選択できない場合がありました。この問題はすでに修正されています。 #82879 (Shankar Iyer).
  • SCRAM_SHA256_PASSWORD 型の AST から解析する際に認証データの salt が設定されるようにしました。 #82888 (Tuan Pham Anh).
  • キャッシュ機能を持たない Database 実装を使用している場合、対応するテーブルのメタデータは、カラムが返された後に削除され、参照が無効化されます。 #82939 (buyval01).
  • Merge ストレージを使用するテーブルとの JOIN 式を含むクエリに対するフィルタの書き換え処理を修正。#82092 を修正。#82950Dmitry Novik)。
  • QueryMetricLog で発生していた LOGICAL_ERROR「Mutex cannot be NULL」を修正。#82979Pablo Marcos)。
  • 可変長フォーマッタ(例:%M)とフォーマッタ %f を併用した場合に、関数 formatDateTime が誤った出力を行っていた問題を修正しました。 #83020 (Robert Schulze).
  • セカンダリクエリが常に VIEW からすべてのカラムを読み取る場合に、analyzer 有効化によって発生していたパフォーマンス低下の問題を修正しました。#81718 を修正します。#83036Dmitry Novik)。
  • 読み取り専用ディスク上でバックアップを復元する際に表示される誤解を招くエラーメッセージを修正。 #83051 (Julia Kartseva).
  • 依存関係を持たないテーブルの作成時には循環依存関係のチェックを行わないようにしました。これにより、https://github.com/ClickHouse/ClickHouse/pull/65405 によって導入された、数千のテーブルを作成するユースケースでのパフォーマンス低下が解消されます。#83077Pavel Kruglov)。
  • 負の Time 値が暗黙的にテーブルに読み込まれてしまう問題を修正し、ドキュメントの記述を分かりやすくしました。 #83091 (Yarik Briukhovetskyi).
  • lowCardinalityKeys 関数が共有 Dictionary の無関係なパーツを使用しないようになりました。 #83118 (Alexey Milovidov)。
  • Materialized Views におけるサブカラムの利用に関するリグレッションを修正しました。これにより次の問題が修正されます: #82784#83221 (Nikita Mikhaylov)。
  • 失敗した INSERT の後に接続が切断状態のまま残っていたためクライアントがクラッシュする問題を修正。 #83253 (Azat Khuzhin)。
  • 空のカラムを含むブロックのサイズを計算する際に発生していたクラッシュを修正しました。 #83271 (Raúl Marín).
  • UNION における Variant 型で発生する可能性のあるクラッシュを修正。 #83295 (Pavel Kruglov).
  • 未サポートの SYSTEM クエリに対して clickhouse-local が LOGICAL_ERROR を返していた問題を修正。 #83333 (Surya Kant Ranjan).
  • S3 クライアント向けの no_sign_request を修正しました。これは、S3 リクエストに署名しないように明示的に設定するために使用できます。エンドポイントベースの設定を使用して、特定のエンドポイントごとに定義することもできます。 #83379 (Antonio Andelic)。
  • CPU スケジューリングが有効な状態で負荷下で実行された場合に、設定 'max_threads=1' を指定したクエリでクラッシュが発生する可能性がある問題を修正しました。 #83387 (Fan Ziqi).
  • CTE 定義内で同名の別のテーブル式を参照している場合に発生する TOO_DEEP_SUBQUERIES 例外を修正。 #83413 (Dmitry Novik)。
  • REVOKE S3 ON system.* を実行した際に *.* に対する S3 権限まで誤って取り消されてしまう不具合を修正しました。この変更により #83417 が解決されました。 #83420 (pufit)。
  • クエリ間で async_read_counters を共有しないよう修正しました。 #83423 (Azat Khuzhin).
  • サブクエリに FINAL が含まれている場合は並列レプリカを無効にします。 #83455 (zoomxi).
  • role_cache_expiration_time_seconds 設定の構成時に発生する軽微な整数オーバーフロー問題を修正しました(issue #83374)。#83461wushap)。
  • https://github.com/ClickHouse/ClickHouse/pull/79963 で紛れ込んだバグを修正しました。ディファイナー付きの MV(マテリアライズドビュー)に挿入する際には、権限チェックはディファイナーに付与された権限を使用する必要があります。この修正により #79951 が解決されます。#83502pufit)。
  • Iceberg の配列要素および map 値と、それらのすべてのネストされたサブフィールドに対して、境界値に基づくファイルプルーニングを無効化しました。 #83520 (Daniil Ivanik).
  • 一時データストレージとして使用している場合に発生する可能性のある、ファイルキャッシュが初期化されていないことによるエラーを修正しました。 #83539 (Bharat Nallan)。
  • Keeper の修正: セッション終了時に ephemeral ノードが削除された際に total watch カウントが正しく更新されない問題を修正しました。 #83583 (Antonio Andelic)。
  • max_untracked_memory に関する誤ったメモリ管理を修正しました。 #83607 (Azat Khuzhin).
  • INSERT SELECTUNION ALL を組み合わせたクエリにおいて、一部の稀なケースでヌルポインタ参照が発生する可能性がありました。これにより #83618 が解決されました。 #83643 (Alexey Milovidov).
  • 論理エラーを引き起こす可能性があったため、max&#95;insert&#95;block&#95;size にゼロ値を設定することを禁止しました。 #83688 (Bharat Nallan)。
  • block_size_bytes=0 の場合に estimateCompressionRatio() で発生する無限ループを修正しました。 #83704 (Azat Khuzhin).
  • IndexUncompressedCacheBytes/IndexUncompressedCacheCells/IndexMarkCacheBytes/IndexMarkCacheFiles メトリクスを修正(以前は、Cache 接頭辞なしのメトリクスに含められていました)。 #83730 (Azat Khuzhin).
  • BackgroundSchedulePool のシャットダウン時に、タスク側からスレッドを join することが原因で発生し得た強制終了と、ユニットテストで発生していた可能性のあるハングを修正しました。 #83769 (Azat Khuzhin).
  • 名前の衝突が発生する場合でも、新しいアナライザが WITH 句内から外側のエイリアスを参照できるようにする後方互換性用の設定を導入しました。 #82700 を修正します。 #83797 (Dmitry Novik)。
  • ライブラリブリッジのクリーンアップ中のコンテキストの再帰的ロックが原因で、シャットダウン時に発生するデッドロックを修正。 #83824 (Azat Khuzhin).

ビルド/テスト/パッケージングの改善

  • ClickHouse の lexer 用に最小限の C ライブラリ(10 KB)をビルドしました。これは #80977 の対応に必要です。#81347Alexey Milovidov)。スタンドアロンの lexer 用テストを追加し、テストタグ fasttest-only を追加しました。#82472Yakov Olkhovskiy)。
  • Nix サブモジュールの input を検査するチェックを追加しました。#81691Konstantin Bogdanov)。
  • ローカルホスト上でインテグレーションテストを実行しようとした際に発生し得る一連の問題を修正しました。#82135Oleg Doronin)。
  • Mac および FreeBSD で SymbolIndex をコンパイルできるようにしました(ただし動作するのは ELF システムである Linux と FreeBSD のみです)。#82347Alexey Milovidov)。
  • Azure SDK を v1.15.0 に更新しました。#82747Smita Kulkarni)。
  • ビルドシステムに google-cloud-cpp の storage モジュールを追加しました。#82881Pablo Marcos)。
  • Docker Official Library の要件を満たすように、clickhouse-server 用の Dockerfile.ubuntu を変更しました。#83039Mikhail f. Shiryaev)。
  • curl clickhouse.com へのビルドのアップロード処理を修正するため、#83158 に対するフォローアップを行いました。#83463Mikhail f. Shiryaev)。
  • clickhouse/clickhouse-server および公式 clickhouse イメージに busybox バイナリとインストール用ツールを追加しました。#83735Mikhail f. Shiryaev)。
  • ClickHouse サーバーのホストを指定するための CLICKHOUSE_HOST 環境変数のサポートを追加し、既存の CLICKHOUSE_USER および CLICKHOUSE_PASSWORD 環境変数と一貫性を持たせました。これにより、クライアントや設定ファイルを直接変更することなく、より簡単に設定できるようになります。#83659Doron David)。

ClickHouse 25.6 リリース、2025-06-26

下位互換性のない変更

  • これまで、関数 countMatches は、パターンが空文字列を許容していても、最初の空マッチが発生した時点でカウントを停止していました。この問題を解消するために、countMatches は空マッチが発生した場合に 1 文字分進めて実行を継続するようになりました。従来の挙動を維持したいユーザーは、設定 count_matches_stop_at_empty_match を有効化してください。 #81676 (Elmi Ahmadov).
  • マイナー: サーバーの backup_threads および restore_threads の設定が 0 にならないように強制しました。 #80224 (Raúl Marín).
  • マイナー: String に対する bitNot が、内部メモリ表現としてヌル終端文字列を返すように修正しました。これはユーザーから見える挙動には影響しないはずですが、著者がこの変更を明示しておきたいとしています。 #80791 (Azat Khuzhin).

新機能

  • 新しいデータ型 Time ([H]HH:MM:SS) および Time64 ([H]HH:MM
    .fractional
    ) を追加し、これらと他のデータ型の間で利用する基本的なキャスト関数や補助関数を追加しました。既存の関数 toTime との互換性を保つための設定を追加し、設定 use_legacy_to_time は当面、従来の動作を維持するように構成されています。 #81217 (Yarik Briukhovetskyi). また、Time/Time64 間の比較をサポートしました。 #80327 (Yarik Briukhovetskyi).
  • 新しい CLI ツール chdig — ClickHouse 向けの TUI インターフェイス(top のような UI)で、ClickHouse の一部として追加されました。#79666Azat Khuzhin)。
  • Atomic および Ordinary データベースエンジンで disk 設定をサポートし、テーブルのメタデータファイルを保存するディスクを指定できるようにしました。 #80546 (Tuan Pham Anh)。これにより、外部ストレージ上のデータベースをアタッチできるようになります。
  • 新しい種類の MergeTree エンジン CoalescingMergeTree — バックグラウンドマージの際に、最初の非 NULL 値を採用します。これにより #78869 が解決されました。 #79344 (scanhex12)。
  • WKB("Well-Known Binary"、GIS アプリケーションで使用される、さまざまなジオメトリ型をバイナリでエンコードするフォーマット)を読み取る関数をサポートしました。#43941 を参照してください。#80139scanhex12)。
  • ワークロード向けにクエリ スロットのスケジューリングを追加しました。詳細は workload scheduling を参照してください。 #78415 (Sergei Trifonov)。
  • timeSeries* ヘルパー関数により、時系列データを扱う際のいくつかのユースケースを高速化できます: - 指定された開始タイムスタンプ、終了タイムスタンプ、およびステップに従ってデータを時間グリッドに再サンプリングする - PromQL 風の deltarateideltairate を計算する。 #80590 (Alexander Gololobov).
  • mapContainsValuesLike/mapContainsValues/mapExtractValuesLike 関数を追加し、map の値でフィルタリングできるようにするとともに、これらの関数をブルームフィルターベースの索引でもサポートしました。 #78171 (UnamedRus).
  • settings constraints で禁止する値の Set を指定できるようになりました。 #78499 (Bharat Nallan).
  • 単一のクエリ内のすべてのサブクエリで同じストレージスナップショットを共有できるようにする enable_shared_storage_snapshot_in_query 設定を追加しました。これにより、クエリ内で同じテーブルが複数回参照される場合でも、そのテーブルからの読み取りの一貫性が保証されます。#79471 (Amos Bird)。
  • JSONカラムをParquetに直接書き込み、ParquetからJSONカラムを直接読み取れるようになりました。 #79649 (Nihal Z. Miaji).
  • pointInPolygonMultiPolygon のサポートを追加しました。 #79773 (Nihal Z. Miaji).
  • deltaLakeLocal テーブル関数経由で、ローカルファイルシステムにマウントされた Delta テーブルをクエリできるようにしました。 #79781 (roykim98)。
  • String から DateTime への型変換時のパースモードを選択できる新しい設定項目 cast_string_to_date_time_mode を追加しました。#80210 (Pavel Kruglov)。たとえば、ベストエフォートモードに設定できます。
  • Bitcoin の Bech アルゴリズムを利用するための bech32Encode および bech32Decode 関数を追加しました(issue #40381)。#80239George Larionov)。
  • MergeTree のパーツ名を解析するための SQL 関数を追加しました。 #80573 (Mikhail Artemenko).
  • クエリで参照されるパーツを、それらが配置されているディスク名でフィルタリングできるよう、新しい仮想カラム _disk_name を導入しました。 #80650 (tanner-bruce).
  • 埋め込み Web ツールの一覧を表示するランディングページを追加しました。ブラウザー類似のユーザーエージェントでアクセスされた場合に表示されます。 #81129 (Alexey Milovidov).
  • arrayFirstarrayFirstIndexarrayLast および arrayLastIndex 関数は、フィルタ式によって返される NULL 値を除外するようになりました。以前のバージョンでは、Nullable 型のフィルタ結果はサポートされていませんでした。#81113 を修正。#81197Lennard Eijsackers)。
  • USE name の代わりに USE DATABASE name と記述できるようになりました。 #81307 (Yarik Briukhovetskyi)。
  • 利用可能なコーデックを確認できる新しい system テーブル system.codecs を追加しました。(issue #81525). #81600 (Jimmy Aguilar Mena).
  • lag および lead ウィンドウ関数のサポートを追加。 #9887 をクローズ。 #82108Dmitry Novik)。
  • 関数 tokens で、ログ向けの新しいトークナイザー split がサポートされるようになりました。 #80195 (Robert Schulze)。
  • clickhouse-local--database 引数のサポートを追加しました。既に作成済みのデータベースに切り替えることができます。これにより #44115 がクローズされます。 #81465 (Alexey Milovidov)。

実験的機能

  • ClickHouse Keeper を使用して Kafka2 に対して Kafka のリバランスに類似したロジックを実装しました。各レプリカに対して 2 種類のパーティションロック(恒久ロックと一時ロック)をサポートします。レプリカは可能な限り長く恒久ロックを保持しようとし、任意の時点でそのレプリカ上の恒久ロックは all_topic_partitions / active_replicas_count(ここで all_topic_partitions はすべてのパーティション数、active_replicas_count はアクティブなレプリカ数)を超えません。もしそれより多くなった場合、レプリカはいくつかのパーティションを解放します。一部のパーティションはレプリカによって一時的に保持されます。レプリカ上の一時ロックの最大数は動的に変化し、他のレプリカがいくつかのパーティションを恒久ロックとして取得できるようにします。一時ロックを更新する際、レプリカはいったんそれらをすべて解放し、別のパーティションを再度取得しようとします。#78726Daria Fomina)。
  • 実験的なテキスト索引の改良として、キーと値のペアによる明示的なパラメータ指定をサポートしました。現在サポートされているパラメータは、必須の tokenizer と、オプションの max_rows_per_postings_list および ngram_size の 2 つです。#80262Elmi Ahmadov)。
  • 以前は、セグメント ID をディスク上の (.gin_sid) ファイルを読み書きしてオンザフライで更新していたため、packed ストレージは全文索引でサポートされていませんでした。packed ストレージでは、コミットされていないファイルから値を読み出すことはサポートされておらず、これが問題の原因となっていました。現在はこの問題は解消されています。#80852Elmi Ahmadov)。
  • gin 型の実験的な索引(PostgreSQL ハッカーたちの内輪ネタなので気に入っていませんでした)は text に名称変更されました。既存の gin 型索引は引き続きロード可能ですが、検索で使用しようとすると例外をスローし(代わりに text 索引を提案します)、使用できません。#80855Robert Schulze)。

パフォーマンスの向上

  • 複数のプロジェクションによるフィルタリングをサポートし、パートレベルのフィルタリングに 1 つ以上のプロジェクションを使用できるようにしました。これにより #55525 が解決されます。これは、#78429 に続く、プロジェクション索引を実装するための第 2 段階の変更です。#80343Amos Bird)。
  • ファイルシステムキャッシュのデフォルトのキャッシュポリシーとして SLRU を使用するようにしました。 #75072 (Kseniia Sumarokova).
  • クエリパイプラインの Resize ステップで発生する競合状態を解消しました。 #77562 (Zhiguo Zhou).
  • ネットワーク接続に関連付けられた単一スレッドではなく、ブロックの圧縮/解凍およびシリアライズ/デシリアライズ処理をパイプラインスレッドにオフロードするオプションを導入しました。enable_parallel_blocks_marshalling 設定で制御できます。これにより、クエリの発行元ノードとリモートノード間で大量のデータを転送する分散クエリが高速化されます。 #78694 (Nikita Taranov).
  • ブルームフィルターの全タイプに対するパフォーマンス改善。OpenHouse カンファレンスの動画 #79800Delyan Kratunov)。
  • いずれか一方の Set が空の場合に、UniqExactSet::merge に高速パスを導入しました。また、LHS 側の Set が 2 レベルで RHS 側が 1 レベルの場合でも、RHS 側を 2 レベルに変換しないようにしました。 #79971 (Nikita Taranov)。
  • 2 レベルのハッシュテーブル使用時におけるメモリ再利用効率を改善し、ページフォールトを削減しました。これにより GROUP BY を高速化します。 #80245 (Jiebin Sun)。
  • クエリ条件キャッシュにおける不要な更新を避け、ロック競合を軽減しました。 #80247 (Jiebin Sun).
  • concatenateBlocks に対する軽微な最適化。並列ハッシュ結合にも有効である可能性があります。 #80328 (李扬).
  • 主キー範囲からマーク範囲を選択する際、主キーが関数でラップされていると二分探索を使用できませんでした。この PR はこの制限を緩和し、主キーが常に単調な関数チェーンでラップされている場合や、RPN に常に真となる要素が含まれている場合でも二分探索を適用できるようにします。#45536 をクローズします。#80597zoomxi)。
  • Kafka エンジンのシャットダウン速度を改善しました(複数の Kafka テーブルがある場合に発生していた余分な 3 秒の遅延を解消)。 #80796 (Azat Khuzhin).
  • Async inserts: メモリ使用量を削減し、INSERT クエリのパフォーマンスを向上。 #80972 (Raúl Marín).
  • ログテーブルが無効になっている場合はプロセッサのプロファイルを行わないようにしました。 #81256 (Raúl Marín)。これにより、非常に短いクエリの処理が高速になります。
  • ソースが要求される長さと完全に一致する場合の toFixedString の処理を高速化しました。 #81257 (Raúl Marín).
  • USER に制限がない場合は QUOTA の値を処理しないようにしました。 #81549 (Raúl Marín)。これにより、ごく短いクエリの実行が高速になります。
  • メモリトラッキングにおける性能退行を修正しました。 #81694 (Michael Kolupaev).
  • 分散クエリに対するシャーディングキー最適化を改善しました。 #78452 (fhw12345).
  • Parallel replicas: すべての読み取りタスクが他のレプリカに割り当てられている場合は、使用されていない低速なレプリカの完了を待たないようにしました。 #80199 (Igor Nikonov).
  • Parallel replicas では個別の接続タイムアウトが使用されるようになりました。parallel_replicas_connect_timeout_ms 設定を参照してください。以前は、connect_timeout_with_failover_ms および connect_timeout_with_failover_secure_ms 設定が parallel replicas クエリの接続タイムアウト値として使用されていました(デフォルトは 1 秒)。#80421Igor Nikonov)。
  • ジャーナリング対応のファイルシステムでは、mkdir はファイルシステムのジャーナルに書き込まれ、それがディスクに永続化されます。ディスクが遅い場合、この処理に時間がかかることがあります。これを reserve ロックのスコープ外に移動しました。 #81371 (Kseniia Sumarokova)。
  • 最初の読み取りクエリが実行されるまで Iceberg マニフェストファイルの読み込みを遅延するようにしました。 #81619 (Daniil Ivanik)。
  • 該当する場合、GLOBAL [NOT] IN 述語を PREWHERE 句に移動できるようにしました。 #79996 (Eduard Karacharov)。

改良

  • EXPLAIN SYNTAX は新しいアナライザーを使用するようになりました。クエリツリーから構築された AST を返します。クエリツリーを AST に変換する前に適用するパスの回数を制御するためのオプション query_tree_passes を追加しました。 #74536 (Vladimir Cherkasov)。
  • Native フォーマットにおいて Dynamic と JSON 向けのフラットなシリアル化を実装しました。これにより、Dynamic の shared variant や JSON の shared data のような特別な構造を使わずに、Dynamic および JSON データをシリアル化/デシリアライズできるようになります。このシリアル化は output_format_native_use_flattened_dynamic_and_json_serialization を設定することで有効にできます。また、このシリアル化は、さまざまな言語で実装されたクライアントにおいて、TCP プロトコル経由で Dynamic および JSON をより容易にサポートするために利用できます。 #80499 (Pavel Kruglov).
  • エラー AuthenticationRequired が発生した場合に S3 の認証情報を更新するようにしました。 #77353 (Vitaly Baranov).
  • system.asynchronous_metrics に Dictionary 関連のメトリクスを追加しました。DictionaryMaxUpdateDelay - Dictionary 更新遅延の最大値(秒)。DictionaryTotalFailedUpdates - 直近の正常なロード以降、すべての Dictionary で発生したエラーの総数。#78175 (Vlad).
  • 破損したテーブルを保存するために作成された可能性があるデータベースに関する警告を追加。 #78841 (János Benjamin Antal)。
  • S3QueueAzureQueue エンジンに _time 仮想カラムを追加しました。 #78926 (Anton Ivashkin)。
  • CPU 過負荷時の接続ドロップを制御する設定をホットリロードに対応しました。 #79052 (Alexey Katsman).
  • Azure Blob Storage 上のプレーンディスクに対して、system.tables で報告されるデータパスにコンテナープレフィックスを追加し、S3 および GCP と報告内容の一貫性を持たせました。#79241 (Julia Kartseva).
  • clickhouse-clientlocal で、param_<name>(アンダースコア)に加えて param-<name>(ダッシュ)形式のクエリパラメータも受け付けるようになりました。これによって #63093 が解決されました。 #79429Engel Danila)。
  • チェックサムを有効にしてローカルからリモートの S3 へデータをコピーする際の帯域幅割引について、詳細な警告メッセージを追加。 #79464 (VicoWu).
  • 以前は、input_format_parquet_max_block_size = 0(無効な値)を指定すると ClickHouse がハングしていましたが、この問題は修正されました。これにより #79394 がクローズされました。 #79601 (abashkeev)。
  • startup_scriptsthrow_on_error 設定を追加しました。throw_on_error が true の場合、すべてのクエリが正常に完了しない限りサーバーは起動しません。デフォルト値は throw_on_error が false で、従来どおりの動作が維持されます。 #79732 (Aleksandr Musorin).
  • 任意の種類の http_handlershttp_response_headers を追加できるようにしました。 #79975 (Andrey Zvonov).
  • 関数 reverseTuple データ型もサポートするようになりました。これにより #80053 がクローズされました。#80083flynn)。
  • #75817 を解決し、system.zookeeper テーブルから auxiliary_zookeepers データを取得できるようにしました。 #80146 (Nikolay Govorov)。
  • サーバーの TCP ソケットに関する非同期メトリクスを追加し、オブザーバビリティを向上させました。#80187 をクローズしました。 #80188Alexey Milovidov)。
  • anyLast_respect_nullsany_respect_nullsSimpleAggregateFunction としてサポートするようになりました。 #80219 (Diskein).
  • レプリケートされたデータベースに対する不要なadjustCreateQueryForBackup呼び出しを削除しました。 #80282 (Vitaly Baranov)。
  • clickhouse-local で、-- --config.value='abc' のように -- の後ろに続く追加オプションを、= 記号なしでも指定できるようにしました。#80292 をクローズしました。 #80293Alexey Milovidov)。
  • SHOW ... LIKE クエリ内のメタ文字を強調表示するようにしました。これにより #80275 が解決されました。#80297Alexey Milovidov)。
  • clickhouse-local で SQL UDF を永続化。以前に作成された関数は起動時にロードされます。これにより #80085 がクローズされました。 #80300 (Alexey Milovidov)。
  • 事前の DISTINCT ステップの EXPLAIN プランにおける説明を修正しました。 #80330 (UnamedRus).
  • ODBC/JDBC で名前付きコレクションを使用可能にしました。 #80334 (Andrey Zvonov).
  • 読み取り専用ディスクおよび故障ディスクの数のメトリクスを追加。DiskLocalCheckThread の開始時にインジケーターをログに記録します。 #80391 (VicoWu).
  • s3_plain_rewritable ストレージで PROJECTION をサポートしました。以前のバージョンでは、PROJECTION を参照する S3 内のメタデータオブジェクトは、移動されても更新されませんでした。#70258 をクローズ。#80393Sav)。
  • SYSTEM UNFREEZE コマンドは、読み取り専用ディスクおよび一度だけ書き込み可能なディスク上のパーツを検索しなくなりました。これにより #80430 が解決されました。 #80432Alexey Milovidov)。
  • マージされたパーツに関するログメッセージのレベルを下げました。 #80476 (Hans Krutzer).
  • Iceberg テーブルに対するパーティションプルーニングの既定動作を変更しました。 #80583 (Melvyn Peignon).
  • 索引検索アルゴリズムのオブザーバビリティ向上のために、2 つの新しい ProfileEvents IndexBinarySearchAlgorithmIndexGenericExclusionSearchAlgorithm を追加しました。 #80679 (Pablo Marcos)。
  • 古いカーネルでの MADV_POPULATE_WRITE の非サポートについては、ログに出力しないようにしました(ログを不要に汚さないため)。 #80704 (Robert Schulze).
  • TTL 式で Date32 および DateTime64 がサポートされるように追加されました。 #80710 (Andrey Zvonov).
  • max_merge_delayed_streams_for_parallel_write の互換性のための値を調整しました。 #80760 (Azat Khuzhin).
  • クラッシュを修正: デストラクタ内で一時ファイル(ディスク上に一時データをスピルするために使用)を削除しようとした際に例外がスローされると、プログラムが異常終了してしまう可能性がある問題を修正しました。 #80776 (Alexey Milovidov).
  • SYSTEM SYNC REPLICAIF EXISTS 修飾子を追加しました。 #80810 (Raúl Marín).
  • "Having zero bytes, but read range is not finished..." という内容の例外メッセージを拡張し、system.filesystem_cache に finished_download_time カラムを追加。#80849 (Kseniia Sumarokova).
  • indexes = 1 を指定して EXPLAIN を実行した場合、その出力に検索アルゴリズムのセクションを追加しました。そこには「binary search」または「generic exclusion search」のいずれかが表示されます。 #80881 (Pablo Marcos)。
  • 2024年初頭、新しいアナライザがデフォルトで有効になっていなかったため、MySQL ハンドラでは prefer_column_name_to_alias が true にハードコードされていました。現在は、ハードコードを解除できるようになりました。 #80916 (Yarik Briukhovetskyi).
  • system.iceberg_history には、glue や iceberg rest のようなカタログデータベースの履歴も表示されるようになりました。また、一貫性のために、system.iceberg_history 内の table_name および database_name カラムを、それぞれ tabledatabase に名称変更しました。 #80975 (alesapin).
  • merge テーブル関数で読み取り専用モードを許可し、その利用時に CREATE TEMPORARY TABLE 権限が不要になるようにしました。 #80981 (Miсhael Stetsyuk).
  • インメモリキャッシュの内部観測性を改善しました(これまで system.asynchronouse_metrics では不完全だったキャッシュ情報を system.metrics で公開)。インメモリキャッシュのサイズ(バイト単位)を dashboard.html に追加しました。VectorSimilarityIndexCacheSize / IcebergMetadataFilesCacheSizeVectorSimilarityIndexCacheBytes / IcebergMetadataFilesCacheBytes に名称変更しました。 #81023 (Azat Khuzhin)。
  • system.rocksdb から読み取る際に、RocksDB テーブルを格納できないエンジンを持つデータベースを無視するようにしました。 #81083 (Pervakov Grigorii).
  • clickhouse-local の設定ファイルで filesystem_cachesnamed_collections を利用可能にしました。 #81105 (Alexey Milovidov)。
  • INSERT クエリにおける PARTITION BY のシンタックスハイライトを修正しました。以前のバージョンでは、PARTITION BY がキーワードとしてハイライトされていませんでした。 #81106 (Alexey Milovidov)。
  • Web UI に小さな改善を 2 つ加えました。- CREATEINSERT のような出力を伴わないクエリを正しく処理するようにしました(つい最近まで、これらのクエリではスピナーが無限に回り続けていました)。- テーブルをダブルクリックした際に、先頭までスクロールするようにしました。 #81131 (Alexey Milovidov)。
  • MemoryResidentWithoutPageCache メトリクスは、ユーザースペースのページキャッシュを除いたサーバープロセスの物理メモリ使用量を、バイト単位で表します。これにより、ユーザースペースのページキャッシュが利用されている場合でも、実際のメモリ使用量をより正確に把握できます。ユーザースペースのページキャッシュが無効化されている場合、この値は MemoryResident と等しくなります。 #81233 (Jayme Bird)。
  • クライアント、ローカルサーバー、Keeper クライアント、および Disks アプリで手動で記録された例外を「ログ済み」としてマークし、同じ例外が二重にログ出力されないようにしました。 #81271 (Miсhael Stetsyuk).
  • use_skip_indexes_if_final および use_skip_indexes_if_final_exact_mode の既定値が True になりました。これにより、FINAL 句を含むクエリは(該当する場合)スキップ索引を使用してグラニュールを絞り込み、さらに一致する主キー範囲に対応する追加のグラニュールも読み取るようになります。以前の、近似的で厳密ではない結果を返す挙動を必要とするユーザーは、慎重に評価したうえで use_skip_indexes_if_final_exact_mode を FALSE に設定できます。#81331 (Shankar Iyer)。
  • Web UI で複数のクエリがある場合、カーソル位置のクエリが実行されます。 #80977 の継続対応です。 #81354 (Alexey Milovidov)。
  • この PR は、変換関数の単調性チェックにおける is_strict の実装上の問題を解決します。現在、一部の変換関数(toFloat64(UInt32)toDate(UInt8) など)が、本来は true を返すべきところで誤って is_strict を false と返しています。 #81359 (zoomxi)。
  • KeyCondition が連続した範囲に一致するかどうかをチェックする際、キーに非厳密な関数チェーンが適用されている場合は、Constraint::POINTConstraint::RANGE に変換する必要がある場合があります。たとえば、toDate(event_time) = '2025-06-03'event_time に対して次のような範囲を意味します: ['2025-06-03 00:00:00', '2025-06-04 00:00:00')。この PR により、この挙動が修正されました。 #81400 (zoomxi).
  • clickhouse/ch のエイリアスは、--host または --port が指定されている場合、clickhouse-local ではなく clickhouse-client を呼び出すようになりました。#79422 のフォローアップ。#65252 をクローズ。#81509Alexey Milovidov)。
  • Keeper の応答時間分布データが得られたので、メトリクス用のヒストグラムのバケットを調整できるようになりました。 #81516 (Miсhael Stetsyuk).
  • プロファイルイベント PageCacheReadBytes を追加しました。#81742 (Kseniia Sumarokova)。
  • ファイルシステムキャッシュの論理エラー「Having zero bytes but range is not finished」を修正。 #81868 (Kseniia Sumarokova).

バグ修正(公式安定版リリースにおけるユーザーに影響する不具合)

  • SELECT EXCEPT クエリを使用するパラメータ付きビューを修正。 #49447 を解決。 #57380 (Nikolay Degterinsky)。
  • Analyzer: JOIN でのカラム型の昇格後にカラムの PROJECTION 名を修正。#63345 をクローズ。#63519 (Dmitry Novik)。
  • analyzer_compatibility_join_using_top_level_identifier が有効な場合に、カラム名の競合が発生するケースでの論理エラーを修正しました。 #75676 (Vladimir Cherkasov)。
  • allow_push_predicate_ast_for_distributed_subqueries が有効な場合の、プッシュダウンされた述語における CTE の扱いを修正。#75647 および #79672 を修正。#77316Dmitry Novik)。
  • SYSTEM SYNC REPLICA LIGHTWEIGHT 'foo' が、指定したレプリカが存在しない場合でも成功を報告してしまう問題を修正しました。コマンドは、同期を試みる前に Keeper 内にレプリカが存在するかを正しく検証するようになりました。 #78405 (Jayme Bird).
  • ON CLUSTER クエリの CONSTRAINT セクションで currentDatabase 関数が使用されていた、非常に限定的なケースで発生していたクラッシュを修正しました。#78100 をクローズしました。#79070pufit)。
  • サーバー間クエリにおける外部ロールの伝達処理を修正。#79099Andrey Zvonov)。
  • SingleValueDataGeneric で Field の代わりに IColumn を使用するようにしました。これにより、Dynamic/Variant/JSON 型に対する argMax など一部の集約関数で誤った戻り値が返される問題が修正されました。 #79166 (Pavel Kruglov)。
  • Azure Blob Storage 向けの use_native_copy および allow_azure_native_copy 設定の適用を修正し、認証情報が一致する場合にのみネイティブコピーを使用するよう更新しました。これにより #78964 が解決されました。#79561 (Smita Kulkarni)。
  • このカラムが相関付けられているかどうかをチェックする際に、カラムの起源スコープが不明な場合に発生していた論理エラーを修正しました。#78183 を修正しました。#79451 を修正しました。#79727Dmitry Novik)。
  • ColumnConst と Analyzer を使用した grouping sets で誤った結果が返される問題を修正しました。 #79743 (Andrey Zvonov).
  • ローカルレプリカが古くなっている状態で分散テーブルを読み取る際に、ローカル分片の結果が重複する問題を修正しました。 #79761 (Eduard Karacharov).
  • 負の符号ビットを持つ NaN のソート順を修正しました。 #79847 (Pervakov Grigorii)。
  • GROUP BY ALL で GROUPING 句が考慮されなくなりました。 #79915 (Yarik Briukhovetskyi).
  • TopK / TopKWeighted 関数において、容量を使い切っていない場合でも過大な誤差を引き起こしていた、誤った状態のマージ処理を修正しました。#79939 (Joel Höner).
  • azure_blob_storage オブジェクトストレージでも readonly 設定が尊重されるようにしました。 #79954 (Julia Kartseva).
  • バックスラッシュでエスケープされた文字を含む match(column, '^…') を使用した際に発生していた、誤ったクエリ結果が返される問題およびメモリ不足によるクラッシュを修正しました。 #79969 (filimonov).
  • データレイクでの Hive パーティショニングを無効化。次の問題の一部を解決します: https://github.com/issues/assigned?issue=ClickHouse%7CClickHouse%7C79937#80005Daniil Ivanik)。
  • ラムダ式を含むスキップインデックスが適用されない問題を修正しました。これは、索引定義内の高レベル関数がクエリ内のものと完全に一致する場合に発生していました。 #80025 (Nikolai Kochetov).
  • レプリカがレプリケーションログから ATTACH_PART コマンドを実行してパーツをアタッチする際のメタデータバージョンを修正。 #80038 (Aleksei Filatov).
  • Executable User Defined Functions (eUDF) の名前は、他の関数と異なり system.query_log テーブルの used_functions カラムに追加されていませんでした。このPRでは、リクエストで eUDF が使用されていた場合に、その eUDF の名前が追加されるようにしました。 #80073 (Kyamran)。
  • Arrow フォーマットでの LowCardinality(FixedString) の論理エラーを修正しました。 #80156 (Pavel Kruglov).
  • Merge エンジンからのサブカラムの読み取りを修正。 #80158 (Pavel Kruglov).
  • KeyCondition における数値型の比較に関する不具合を修正しました。#80207 (Yarik Briukhovetskyi)。
  • 遅延マテリアライゼーションがプロジェクションを持つテーブルに対して適用された場合に発生する AMBIGUOUS_COLUMN_NAME を修正しました。 #80251 (Igor Nikonov).
  • 暗黙的なプロジェクション使用時に、LIKE 'ab_c%' のような文字列プレフィックスフィルタに対する COUNT の最適化が誤っていた不具合を修正。これにより #80250 が解決されます。 #80261 (Amos Bird)。
  • MongoDB ドキュメント内の入れ子になった数値フィールドが文字列として誤ってシリアライズされる問題を修正しました。MongoDB から読み込んだドキュメントに対する最大ネスト深度の制限を撤廃しました。 #80289 (Kirill Nikiforov).
  • Replicated データベースにおける RMT のメタデータ検査の厳密さを緩和しました。 #80296 をクローズしました。 #80298Nikolay Degterinsky)。
  • PostgreSQL ストレージ用の DateTime および DateTime64 のテキスト表現を修正しました。 #80301 (Yakov Olkhovskiy).
  • StripeLog テーブルでタイムゾーン付きの DateTime を許可しました。これにより #44120 が解決されました。#80304Alexey Milovidov)。
  • クエリプランのステップで行数が変化する場合は、非決定的関数を含む述語に対するフィルタのプッシュダウンを無効化しました。 #40273 を修正。 #80329Nikolai Kochetov)。
  • サブカラムを含むプロジェクションで発生する可能性のある論理エラーやクラッシュを修正。 #80333 (Pavel Kruglov).
  • ON 式が自明な等価条件でない場合に、logical JOIN のフィルタープッシュダウン最適化によって発生していた NOT_FOUND_COLUMN_IN_BLOCK エラーを修正しました。#79647#77848 を修正しました。#80360Nikolai Kochetov)。
  • パーティション化されたテーブルでキーを逆順に読み取る際に誤った結果が返される不具合を修正しました。これにより #79987 が修正されました。 #80448 (Amos Bird)。
  • Nullable キーを持ち、optimize_read_in_order が有効なテーブルで発生していた誤ったソート順を修正しました。 #80515 (Pervakov Grigorii).
  • SYSTEM STOP REPLICATED VIEW を使用して materialized view を一時停止していた場合に、リフレッシャブルmaterialized view の DROP が完了せずハングする問題を修正しました。 #80543 (Michael Kolupaev).
  • 定数タプルを含む分散クエリで発生する「Cannot find column」エラーを修正。 #80596 (Yakov Olkhovskiy).
  • join_use_nulls を使用する分散テーブルでの shardNum 関数を修正。 #80612 (János Benjamin Antal).
  • Merge エンジンで、一部のテーブルにのみ存在するカラムを読み込む際に誤った結果が返される問題を修正しました。 #80643 (Pavel Kruglov).
  • replxx のハングが原因となり得た SSH プロトコル違反を修正。 #80688 (Azat Khuzhin).
  • iceberg_history テーブル内のタイムスタンプが正しく記録されるようになりました。 #80711 (Melvyn Peignon).
  • Dictionary の登録に失敗した場合に発生する可能性があったクラッシュを修正(CREATE DICTIONARYCANNOT_SCHEDULE_TASK で失敗すると、Dictionary レジストリ内にダングリングポインタが残る可能性があり、その後のクラッシュにつながっていた問題を修正)。 #80714 (Azat Khuzhin).
  • オブジェクトストレージ向けテーブル関数における、要素が1つだけの enum グロブパターンの扱いを修正しました。 #80716 (Konstantin Bogdanov).
  • Tuple(Dynamic) と String を扱う比較関数の結果型が誤っていた問題を修正し、それにより発生していた論理エラーを解消しました。 #80728 (Pavel Kruglov).
  • Unity Catalog 向けにサポートされていなかったデータ型 timestamp_ntz を追加。#79535 および #79875 を修正。#80740alesapin)。
  • IN cte を含む分散クエリで発生する THERE_IS_NO_COLUMN エラーを修正しました(#75032)。#80757Nikolai Kochetov)。
  • 外部 ORDER BY においてファイル数が過剰になり、メモリ使用量が過大になる問題を修正。 #80777 (Azat Khuzhin).
  • このPRにより #80742 がクローズされる可能性があります。 #80783 (zoomxi)。
  • Kafka で、get_member_id() が NULL から std::string を生成していたためにクラッシュする不具合を修正しました(おそらくブローカーへの接続に失敗した場合にのみ発生していた問題です)。 #80793 (Azat Khuzhin)。
  • Kafka エンジンをシャットダウンする前に consumer の終了を正しく待機するよう修正しました(シャットダウン後にアクティブな consumer が残っていると、さまざまなデバッグアサーションが発火したり、テーブルが drop/detach された後もバックグラウンドで broker からデータを読み続けてしまう可能性があります)。 #80795 (Azat Khuzhin).
  • predicate-push-down 最適化が原因で発生していた NOT_FOUND_COLUMN_IN_BLOCK を修正。#80443 を解決。#80834Nikolai Kochetov)。
  • USING 句付き JOIN におけるテーブル関数内で、アスタリスク (*) マッチャーを解決する処理の論理的な誤りを修正しました。 #80894 (Vladimir Cherkasov).
  • Iceberg メタデータファイルキャッシュにおけるメモリ使用量の計上を修正。 #80904 (Azat Khuzhin).
  • Nullable なパーティションキー使用時の誤ったパーティショニングを修正。 #80913 (Pervakov Grigorii).
  • 分散クエリで述語プッシュダウン(allow_push_predicate_ast_for_distributed_subqueries=1)を有効にしている場合に、ソーステーブルがイニシエーターノード上に存在しないと発生していた Table does not exist エラーの問題を修正しました。 #77281#80915Nikolai Kochetov)。
  • 名前付きウィンドウを用いるネストされた関数の論理エラーを修正。 #80926 (Pervakov Grigorii).
  • Nullable および浮動小数点カラムに対する extremes の動作を修正。 #80970 (Pervakov Grigorii).
  • system.tables からのクエリ実行時に発生し得るクラッシュを修正(メモリプレッシャー時に発生する可能性が高い)。 #80976 (Azat Khuzhin).
  • ファイル拡張子から圧縮形式を判別するファイルに対する、truncate を伴う atomic rename 操作を修正しました。 #80979 (Pablo Marcos)。
  • ErrorCodes::getName を修正。 #81032 (RinChanNOW)。
  • Unity Catalog で、すべてのテーブルに対する権限がない場合にユーザーがテーブルを一覧表示できないバグを修正しました。この修正により、すべてのテーブルが正しく一覧表示され、アクセス制限されたテーブルを読み取ろうとすると例外がスローされます。 #81044 (alesapin).
  • SHOW TABLES クエリ実行時に、データレイクカタログからのエラーや予期しない応答を ClickHouse が無視するようになりました。これにより #79725 が修正されました。 #81046alesapin)。
  • JSONExtract および JSON 型の解析で、整数値からの DateTime64 の解析を修正しました。 #81050 (Pavel Kruglov).
  • スキーマ推論キャッシュに date_time_input_format 設定を反映するようにしました。 #81052 (Pavel Kruglov).
  • INSERT の実行開始後、カラムが送信される前にテーブルが DROP された場合にクラッシュが発生する不具合を修正。 #81053 (Azat Khuzhin).
  • quantileDeterministic における未初期化値の使用の問題を修正。 #81062 (Azat Khuzhin)。
  • metadatastoragefromdisk ディスクトランザクションでのハードリンク数の管理を修正し、テストを追加。 #81066 (Sema Checherinda).
  • 他の関数と異なり、ユーザー定義関数 (UDF) の名前が system.query_log テーブルに追加されていませんでした。このPRでは、リクエスト内でUDFが使用された場合に、そのUDF名を2つのカラム used_executable_user_defined_functions または used_sql_user_defined_functions のいずれかに追加するようにしました。 #81101 (Kyamran)。
  • HTTP プロトコル経由でテキストフォーマット(JSONValues など)を使用した INSERT 時に、Enum フィールドを省略した場合に発生する可能性があった Too large size ... passed to allocator エラーやクラッシュを修正しました。 #81145 (Anton Popov).
  • non-MT の MV にプッシュされる INSERT ブロック内のスパースなカラムで発生する LOGICAL_ERROR を修正。 #81161 (Azat Khuzhin).
  • distributed_product_mode_local=local とクロスレプリケーションを併用した場合に発生する Unknown table expression identifier エラーを修正。 #81162 (Nikolai Kochetov)。
  • Parquet ファイルに対してフィルタリングを行った後の行数を誤ってキャッシュしていた問題を修正しました。 #81184 (Michael Kolupaev).
  • 相対パスのキャッシュディレクトリを使用している場合の fs cache max_size_to_total_space 設定を修正しました。 #81237 (Kseniia Sumarokova).
  • Parquet 形式で const タプルまたは map を出力する際に clickhouse-local がクラッシュしていた問題を修正しました。 #81249 (Michael Kolupaev).
  • ネットワーク経由で受信した配列オフセットを検証するようにしました。 #81269 (Azat Khuzhin).
  • 空のテーブルを結合しウィンドウ関数を使用するクエリにおける特定のコーナーケースを修正しました。このバグにより並列ストリーム数が爆発的に増加し、その結果 OOM が発生していました。 #81299 (Alexander Gololobov)。
  • datalake の Cluster 関数(deltaLakeClustericebergCluster など)に対する修正: (1) 古い analyzer で Cluster 関数を使用した際に DataLakeConfiguration で発生しうるセグメンテーションフォールトを修正; (2) 重複して行われていたデータレイクメタデータ更新(余分なオブジェクトストレージリクエスト)を解消; (3) フォーマットが明示的に指定されていない場合の、オブジェクトストレージでの冗長な一覧取得を修正(これはすでに非クラスターデータレイクエンジンでは行われていたもの)。#81300Kseniia Sumarokova)。
  • force_restore_data フラグで失われた Keeper メタデータを復元できるようにしました。 #81324 (Raúl Marín).
  • delta-kernel における region エラーを修正。#79914 の不具合に対応。#81353Kseniia Sumarokova)。
  • divideOrNull に対する誤った JIT を無効化。 #81370 (Raúl Marín).
  • MergeTree テーブルでパーティションのカラム名が長い場合に発生する挿入エラーを修正しました。 #81390 (hy123q).
  • #81957 にバックポート済み。マージ中に例外が発生した場合に Aggregator がクラッシュする可能性がある問題を修正しました。#81450Nikita Taranov)。
  • 複数のマニフェストファイルの内容をメモリに保持しないようにしました。 #81470 (Daniil Ivanik).
  • バックグラウンドプール (background_.*pool_size) のシャットダウン時に発生する可能性のあるクラッシュを修正しました。 #81473 (Azat Khuzhin).
  • URL エンジンを使用してテーブルに書き込む際に Npy フォーマットで発生していた範囲外読み取りを修正しました。これにより #81356 が解決されます。#81502Alexey Milovidov)。
  • Web UI が NaN% を表示する可能性があります(JavaScript 特有の問題)。 #81507 (Alexey Milovidov)。
  • database_replicated_enforce_synchronous_settings=1 設定有効時の DatabaseReplicated の動作を修正しました。 #81564 (Azat Khuzhin)。
  • LowCardinality(Nullable(...)) 型のソート順を修正しました。 #81583 (Pervakov Grigorii)。
  • サーバーは、ソケットからリクエストを完全に読み込んでいない場合、HTTP 接続を保持すべきではありません。 #81595 (Sema Checherinda).
  • スカラーな相関サブクエリが、射影式の結果を Nullable として返すようにしました。相関サブクエリが空の結果セットを生成する場合の不具合を修正しました。 #81632 (Dmitry Novik)。
  • ReplicatedMergeTree に対する ATTACH 実行時に発生する Unexpected relative path for a deduplicated part を修正。 #81647 (Azat Khuzhin)。
  • クエリ設定 use_iceberg_partition_pruning は、クエリコンテキストではなくグローバルコンテキストを使用しているため、Iceberg ストレージに対しては反映されません。デフォルト値が true であるため致命的ではありませんが、この PR で修正されます。 #81673 (Han Fei).
  • #82128 にバックポート: TTL 式で dict を使用している場合のマージ中に発生する「Context has expired」エラーを修正。#81690 (Azat Khuzhin).
  • MergeTree の設定項目 merge_max_block_size が 0 ではない値であることを検証する処理を追加しました。 #81693 (Bharat Nallan).
  • ハングしてしまう DROP VIEW クエリに関する clickhouse-local の問題を修正しました。 #81705 (Bharat Nallan)。
  • 一部の場合における StorageRedis の JOIN を修正。 #81736 (Pervakov Grigorii)。
  • old analyzer が有効な状態で空の USING () を指定した場合に ConcurrentHashJoin がクラッシュする問題を修正。 #81754 (Nikita Taranov)。
  • Keeper の修正: ログ内に不正なエントリがある場合、新しいログをコミットしないようにブロックします。以前は、リーダーが一部のログを誤って適用しても、フォロワーがダイジェスト不一致を検出して処理を中断するにもかかわらず、新しいログのコミットを続行していました。 #81780 (Antonio Andelic).
  • スカラー相関付きサブクエリの処理中に必要なカラムが読み込まれない問題を修正しました。 #81716 を修正します。 #81805Dmitry Novik)。
  • 誰かが私たちのコードにKustoの記述を散在させていたので、整理しました。これにより #81643 がクローズされます。 #81885 (Alexey Milovidov)。
  • 以前のバージョンでは、/js へのリクエストに対してサーバーが過剰な量のコンテンツを返していました。これにより #61890 が解決されました。#81895Alexey Milovidov)。
  • 以前は、MongoDB テーブルエンジンの定義で host:port 引数にパスコンポーネントを含めることができましたが、このパスコンポーネントは暗黙的に無視されていました。MongoDB 連携機能では、そのようなテーブルの読み込みを拒否していました。この修正により、MongoDB エンジンが 5 つの引数を取る場合には、そのようなテーブルの読み込みを許可し、引数に含まれるデータベース名を使用したうえでパスコンポーネントを無視します注意: この修正は、新規に作成されたテーブルや mongo テーブル関数を用いたクエリ、Dictionary ソースおよび named collections には適用されません。#81942 (Vladimir Cherkasov)。
  • マージ処理中に例外が発生した際に Aggregator がクラッシュする可能性があった問題を修正しました。 #82022 (Nikita Taranov).
  • arraySimilarity におけるコピー&ペーストによる誤りを修正し、重みとしての UInt32 および Int32 の使用を禁止しました。テストとドキュメントを更新しました。 #82103 (Mikhail f. Shiryaev)。
  • サジェスチョンスレッドとメインクライアントスレッドの間で発生しうるデータレースを修正。 #82233 (Azat Khuzhin).

ビルド/テスト/パッケージングに関する改善

ClickHouse 25.5 リリース、2025-05-22

後方互換性のない変更

  • 関数 geoToH3 は、他の幾何関数と同様に、入力を (lat, lon, res) の順序で受け取るようになりました。以前と同じ順序 (lon, lat, res) を維持したいユーザーは、setting geotoh3_argument_order = 'lon_lat' を設定できます。#78852Pratima Patel)。
  • ファイルシステムキャッシュの設定項目 allow_dynamic_cache_resize を追加しました。デフォルトは false で、ファイルシステムキャッシュの動的リサイズを許可するかどうかを制御します。理由: 特定の環境(ClickHouse Cloud)では、すべてのスケーリングイベントはプロセスの再起動によって行われるため、この機能を明示的に無効化して動作をより厳密に制御し、安全策としたいためです。この PR は後方互換性のない変更としてマークされています。以前のバージョンでは、特別な設定なしに動的キャッシュリサイズがデフォルトで有効になっていたためです。#79148Kseniia Sumarokova)。
  • レガシー索引型 annoy および usearch のサポートを削除しました。これらは長い間スタブであり、レガシー索引を使用しようとするすべての試みは、いずれにせよエラーを返していました。まだ annoy および usearch の索引を保持している場合は、削除してください。#79802Robert Schulze)。
  • サーバー設定 format_alter_commands_with_parentheses を削除しました。この設定は 24.2 で導入され、デフォルトでは無効化されていましたが、25.2 でデフォルト有効化されました。新しいフォーマットをサポートしない LTS バージョンが存在しないため、この設定を削除できます。#79970János Benjamin Antal)。
  • DeltaLake ストレージの delta-kernel-rs 実装をデフォルトで有効化しました。#79541Kseniia Sumarokova)。
  • URL からの読み取りで複数回のリダイレクトが発生する場合、設定 enable_url_encoding はチェーン内のすべてのリダイレクトに対して正しく適用されます。#79563Shankar Iyer)。設定 enble_url_encoding のデフォルト値は、現在 false に設定されています。#80088Shankar Iyer)。

新機能

  • WHERE 句でスカラー相関サブクエリをサポートしました。#6697 をクローズ。#79600Dmitry Novik)。単純なケースにおいて、射影リストでの相関サブクエリをサポートしました。#79925Dmitry Novik)。#76078Dmitry Novik)。これで TPC-H テストスイートを 100% カバーできるようになりました。
  • ベクトル類似度索引を使用したベクトル検索機能が、これまでの実験的段階からベータ版になりました。 #80164 (Robert Schulze)。
  • Parquet フォーマットで geo データ型をサポートしました。これにより #75317 がクローズされました。#79777 (scanhex12).
  • インデックス作成および検索のために部分文字列を抽出する堅牢なアルゴリズム「sparse-ngrams」を計算するための新しい関数 sparseGramssparseGramsHashessparseGramsHashesUTF8sparseGramsUTF8 を追加しました。 #79517 (scanhex12)。
  • clickhouse-local(およびその短縮エイリアス名である ch)は、処理対象の入力データが存在する場合に、暗黙的な FROM table を使用するようになりました。これにより #65023 が解決されました。また、通常のファイルを処理する際に --input-format が指定されていない場合、clickhouse-local でフォーマットの自動判別が行われるようになりました。#79085Alexey Milovidov)。
  • stringBytesUniqstringBytesEntropy 関数を追加し、ランダムまたは暗号化されている可能性があるデータを検索できるようにしました。 #79350 (Sachin Kumar Singh)。
  • Base32 形式のエンコードおよびデコード用の関数を追加しました。 #79809 (Joanna Hulboj)。
  • getServerSetting および getMergeTreeSetting 関数を追加。#78318 をクローズ。#78439 (NamNguyenHoai)。
  • version-hint.text ファイルを活用するための新しい iceberg_enable_version_hint 設定を追加しました。#78594Arnaud Briche)。
  • LIKE キーワードでフィルタリングして、データベース内の特定のテーブルだけを TRUNCATE できるようになりました。 #78597 (Yarik Briukhovetskyi).
  • MergeTree ファミリーのテーブルで _part_starting_offset 仮想カラムをサポートしました。このカラムは、現在のパーツリストに基づいてクエリ時に計算される、それ以前のすべてのパーツにおける累積行数を表します。累積値はクエリ実行全体を通して保持され、パーツのプルーニング後も有効なままです。この動作をサポートするため、関連する内部ロジックをリファクタリングしました。#79417 (Amos Bird)。
  • 右辺の引数がゼロの場合に NULL を返す関数 divideOrNull, moduloOrNull, intDivOrNull, positiveModuloOrNull を追加。#78276 (kevinyhzou).
  • ClickHouse のベクター検索は、プリフィルタリングとポストフィルタリングの両方をサポートし、より細かく制御できる関連設定を提供するようになりました (issue #78161). #79854 (Shankar Iyer).
  • icebergHash 関数と icebergBucket 関数を追加しました。bucket transfom でパーティション化された Iceberg テーブルにおけるデータファイルのプルーニングをサポートします。#79262Daniil Ivanik)。

実験的機能

  • 新しい Time/Time64 データ型を追加しました: Time (HHH:MM:SS) と Time64 (HHH:MM:SS.&lt;fractional&gt;)、および他のデータ型と相互運用するためのいくつかの基本的なキャスト関数・関連関数を追加しました。また、キャスト関数で関数 toTime が必要になるため、既存の関数名 toTime を toTimeWithFixedDate に変更しました。 #75735 (Yarik Briukhovetskyi).
  • Iceberg データレイク向けの Hive metastore カタログを追加しました。 #77677 (scanhex12).
  • full_text 型の索引の名称を gin に変更しました。これは PostgreSQL や他のデータベースでより一般的な用語に従うものです。full_text 型の既存の索引は引き続き読み込み可能ですが、検索で使用しようとすると例外をスローし、その代わりに gin 索引の使用を提案します。 #79024 (Robert Schulze).

パフォーマンスの向上

  • Compact パーツ形式を変更し、各サブストリームごとにマークを保存して個々のサブカラムを読み取れるようにしました。古い Compact 形式は読み取りでは引き続きサポートされており、書き込みでも MergeTree の設定 write_marks_for_substreams_in_compact_parts を使用して有効化できます。compact パーツのストレージが変更されるため、より安全にアップグレードできるよう、デフォルトでは無効になっています。今後のいずれかのリリースでデフォルト有効になります。#77940Pavel Kruglov)。
  • サブカラムを含む条件式を PREWHERE 句に移動できるようにしました。 #79489 (Pavel Kruglov).
  • セカンダリインデックスの式を複数のグラニュールに対して同時に評価することで、高速化しました。 #64109 (Alexey Milovidov).
  • compile_expressions(通常の式フラグメント向けの JIT コンパイラ)をデフォルトで有効化しました。これにより、#51264#56386 および #66486 が解決されました。#79907Alexey Milovidov)。
  • 新しい設定 use_skip_indexes_in_final_exact_mode が追加されました。ReplacingMergeTree テーブルに対するクエリに FINAL 句が含まれている場合、スキップ索引に基づいてテーブル範囲のみを読み込むと、不正確な結果が返される可能性があります。この設定により、スキップ索引で返された主キー範囲と重複する新しいパーツを走査することで、正しい結果が返されることを保証します。無効化するには 0、有効化するには 1 を設定します。 #78350 (Shankar Iyer).
  • オブジェクトストレージクラスターのテーブル関数(例: s3Cluster)は、キャッシュの局所性を改善するため、コンシステントハッシュに基づいて読み取り対象のファイルをレプリカに割り当てるようになりました。 #77326 (Andrej Hoos).
  • S3Queue/AzureQueueINSERT の処理を並列実行できるようにし、パフォーマンスを改善しました(キュー設定 parallel_inserts=true で有効化可能)。これまでは S3Queue/AzureQueue はパイプラインの最初の部分(ダウンロード、パース)のみ並列化でき、INSERT は単一スレッドでした。また、INSERT がほぼ常にボトルネックとなっていました。現在では processing_threads_num に対してほぼ線形にスケールします。#77671Azat Khuzhin)。S3Queue/AzureQueue における max_processed_files_before_commit の上限適用がより公平になりました。#79363Azat Khuzhin)。
  • 右側テーブルのサイズがしきい値未満の場合に hash アルゴリズムへフォールバックするためのしきい値(parallel_hash_join_threshold 設定で制御)を導入しました。 #76185 (Nikita Taranov)。
  • 並列レプリカが有効な場合の読み取りタスクのサイズを決定する際に、レプリカ数を基準として使用するようにしました。これにより、読み取るデータ量がそれほど大きくない場合でも、レプリカ間での作業分散がより良好になります。 #78695 (Nikita Taranov)。
  • 分散集約の最終段階で uniqExact 状態を並列にマージできるようにしました。 #78703 (Nikita Taranov)。
  • キー付きの集約における uniqExact 状態の並列マージで発生し得るパフォーマンス低下を修正しました。 #78724 (Nikita Taranov)。
  • Azure Storage への List Blobs API 呼び出し回数を削減しました。 #78860 (Julia Kartseva).
  • 並列レプリカを使用した分散 INSERT SELECT のパフォーマンスを改善しました。 #79441 (Azat Khuzhin).
  • LogSeriesLimiter がインスタンス生成のたびにクリーンアップを行わないようにし、高い並行性のシナリオにおけるロック競合とパフォーマンス低下を回避しました。 #79864 (filimonov).
  • 単純な COUNT の最適化によりクエリを高速化しました。 #79945 (Raúl Marín).
  • 一部の Decimal 演算に対するインライン展開を改善しました。 #79999 (Konstantin Bogdanov).
  • input_format_parquet_bloom_filter_push_down のデフォルト値を true に設定しました。また、SETTINGS の変更履歴における誤りを修正しました。 #80058 (Alexey Milovidov)。
  • すべての行が削除されるパーツに対する ALTER ... DELETE mutation を最適化しました。このような場合、mutation を実行せず、元のパーツの代わりに空のパーツを作成するようになりました。#79307 (Anton Popov)。
  • 可能な場合、Compact パーツへの挿入時にブロックを余分にコピーしないようにしました。 #79536 (Pavel Kruglov).
  • 入力フォーマットで作成されるブロックのサイズをバイト単位で制限する設定 input_format_max_block_size_bytes を追加しました。行に大きな値が含まれる場合のデータインポート時の過剰なメモリ使用を抑制するのに役立ちます。 #79495 (Pavel Kruglov)。
  • スレッドおよび async_socket_for_remote/use_hedge_requests のガードページを削除しました。FiberStack における割り当て方式を mmap から aligned_alloc に変更しました。この変更により VMA が分割されるため、高負荷時には vm.max_map_count に到達する可能性があります。 #79147 (Sema Checherinda).
  • Parallel Replicas を用いた遅延マテリアライズ。 #79401 (Igor Nikonov).

改良

  • 設定 lightweight_deletes_sync = 0apply_mutations_on_fly = 1 を使用して、論理削除を動的に適用できるようにしました。 #79281 (Anton Popov).
  • 端末上で Pretty フォーマットのデータを表示している場合、後続のブロックが同じカラム幅を持つときは、カーソルを上に移動して前のブロックから続けて表示し、前のブロックと連結できるようになりました。これにより #79333 がクローズされました。この機能は新しい設定項目 output_format_pretty_glue_chunks で制御されます。 #79339 (Alexey Milovidov)。
  • isIPAddressInRange 関数を拡張し、StringIPv4IPv6Nullable(String)Nullable(IPv4)Nullable(IPv6) データ型をサポートするようにしました。 #78364 (YjyJeff)。
  • PostgreSQL エンジンのコネクションプーラー設定を動的に変更できるようになりました。 #78414 (Samay Sharma).
  • 通常の PROJECTION で _part_offset を指定可能にしました。これは PROJECTION 用インデックスを構築するための最初のステップです。#58224 と組み合わせて使用でき、#63207 の改善にも役立ちます。 #78429 (Amos Bird).
  • system.named_collections に新しいカラム(create_querysource)を追加しました。 #78179 をクローズしました。 #78582MikhailBurdukov)。
  • システムテーブル system.query_condition_cache に新しいフィールド condition を追加しました。このフィールドには、クエリ条件キャッシュのキーとして使用されるハッシュの元となるプレーンテキストの条件式が格納されます。 #78671 (Robert Schulze).
  • ベクトル類似度インデックスを BFloat16 カラム上でも作成できるようになりました。 #78850 (Robert Schulze)。
  • ベストエフォートの DateTime64 解析で、小数部を含む UNIX タイムスタンプをサポートするようになりました。 #78908 (Pavel Kruglov).
  • ストレージ DeltaLake の delta-kernel 実装において、カラムマッピングモードの不具合を修正し、スキーマ進化向けのテストを追加。 #78921 (Kseniia Sumarokova)。
  • Values フォーマットでの Variant カラムへの insert 時に、値の変換をより適切に行うよう改善しました。 #78923 (Pavel Kruglov).
  • tokens 関数が拡張され、追加の「tokenizer」引数およびその他の tokenizer 固有の引数を受け取れるようになりました。#79001Elmi Ahmadov)。
  • SHOW CLUSTER ステートメントは、引数で指定されたマクロ(存在する場合)を展開するようになりました。 #79006 (arf42)。
  • ハッシュ関数で、配列、タプル、マップ内の NULL がサポートされるようになりました(issues #48365 および #48623)。#79008Michael Kolupaev)。
  • cctz を 2025a に更新しました。 #79043 (Raúl Marín)。
  • UDF の stderr のデフォルト処理を "log_last" に変更。利便性が向上します。 #79066 (Alexey Milovidov).
  • Web UI でタブの取り消し(Undo)が可能になりました。これにより #71284 が解決されました。#79084Alexey Milovidov)。
  • recoverLostReplica の実行中に設定を削除するようにし、次の PR と同様の動作としました: https://github.com/ClickHouse/ClickHouse/pull/78637#79113 (Nikita Mikhaylov)。
  • Parquet インデックスのプルーニングをプロファイリングするためのプロファイルイベント ParquetReadRowGroupsParquetPrunedRowGroups を追加しました。 #79180 (flynn).
  • クラスタ上のデータベースに対する ALTER をサポート。 #79242 (Tuan Pham Anh).
  • QueryMetricLog の統計収集で取りこぼされた実行を明示的にスキップするようにし、そうしない場合にログが現在時刻に追いつくまで長時間かかってしまう問題を回避します。 #79257 (Mikhail Artemenko).
  • Arrow ベースのフォーマット読み取りに対する細かな最適化をいくつか行いました。 #79308 (Bharat Nallan).
  • allow_archive_path_syntax の設定が誤って experimental としてマークされていました。experimental な設定がデフォルトで有効になることを防ぐためのテストを追加しました。 #79320 (Alexey Milovidov).
  • ページキャッシュ設定をクエリごとに調整可能にしました。これは、実験をより高速に行えるようにするとともに、高スループットかつ低レイテンシーなクエリ向けにきめ細かいチューニングを行えるようにするためです。 #79337 (Alexey Milovidov).
  • 典型的な 64 ビットハッシュのように見える数値については、Pretty 形式で数値ヒントを出力しないようにしました。これにより #79334 が解決されました。#79338Alexey Milovidov)。
  • 高度なダッシュボード上のグラフの色は、対応するクエリのハッシュから計算されるようになりました。これにより、ダッシュボードをスクロールしている際にグラフを識別して見つけやすくなります。 #79341 (Alexey Milovidov).
  • 非同期メトリック FilesystemCacheCapacity を追加しました。cache 仮想ファイルシステムの総容量を表し、グローバルなインフラストラクチャ監視に役立ちます。 #79348 (Alexey Milovidov)。
  • system.parts へのアクセスを最適化し、要求された場合にのみカラム/索引のサイズを読み取るようにしました。 #79352 (Azat Khuzhin).
  • 'SHOW CLUSTER <name>' クエリに対して、すべてのフィールドではなく関連するフィールドのみを計算するようにしました。 #79368 (Tuan Pham Anh).
  • DatabaseCatalog 向けにストレージ設定を指定可能にしました。 #79407 (Kseniia Sumarokova).
  • DeltaLake でローカルストレージをサポートしました。 #79416 (Kseniia Sumarokova).
  • delta-kernel-rs を有効化するためのクエリレベルの設定 allow_experimental_delta_kernel_rs を追加しました。 #79418 (Kseniia Sumarokova).
  • Azure/S3 BLOB ストレージからの BLOB 一覧取得時に発生し得た無限ループを修正しました。 #79425 (Alexander Gololobov).
  • ファイルシステムキャッシュの設定 max_size_ratio_to_total_space を追加しました。 #79460 (Kseniia Sumarokova).
  • clickhouse-benchmarkreconnect オプションを再構成し、再接続回数に応じて 0、1、または N を値として指定できるようにしました。 #79465 (Sachin Kumar Singh).
  • 異なる plain_rewritable ディスク上にあるテーブルに対しても ALTER TABLE ... MOVE|REPLACE PARTITION が許可されるようになりました。 #79566 (Julia Kartseva)。
  • 参照ベクトルが Array(BFloat16) 型の場合にも、ベクトル類似度の索引が使用されるようになりました。 #79745 (Shankar Iyer).
  • last_error_message、last_error_trace、および query_id を system.error_log テーブルに追加。関連チケット #75816#79836Andrei Tinikov)。
  • クラッシュレポートの送信を既定で有効化しました。これはサーバーの設定ファイルで無効にできます。 #79838 (Alexey Milovidov).
  • システムテーブル system.functions に、各関数が初めて導入された ClickHouse のバージョンが表示されるようになりました。 #79839 (Robert Schulze)。
  • access_control_improvements.enable_user_name_access_type SETTING を追加しました。この SETTING により、https://github.com/ClickHouse/ClickHouse/pull/72246 で導入されたユーザー/ロールごとの厳密な権限付与を有効化/無効化できます。25.1 より古いレプリカを含むクラスターを使用している場合は、この SETTING を無効にすることを検討してください。#79842pufit)。
  • ASTSelectWithUnionQuery::clone() メソッドの適切な実装において、is_normalized フィールドも考慮されるようになりました。これにより #77569 の問題の解決に役立つ可能性があります。 #79909 (Nikita Mikhaylov)。
  • EXCEPT 演算子を含む一部のクエリにおける一貫性のない整形を修正しました。EXCEPT 演算子の左辺が * で終わる場合、整形後のクエリから括弧が失われ、その結果 EXCEPT 修飾子付きの * として解釈されてしまいます。これらのクエリは fuzzer によって検出されたものであり、実際に利用される可能性は低いと考えられます。この変更により #79950 がクローズされました。#79952Alexey Milovidov)。
  • JSON 型のパースを、バリアントのデシリアライズ順序をキャッシュすることでわずかに改善しました。 #79984 (Pavel Kruglov).
  • s3_slow_all_threads_after_network_error 設定を追加。 #80035 (Vitaly Baranov)。
  • マージ対象として選択されたパーツに関するログレベルが誤って Information レベルになっていました。#80061 をクローズしました。#80062Alexey Milovidov)。
  • trace-visualizer: ツールチップとステータスメッセージに runtime/share を追加。 #79040 (Sergei Trifonov).
  • trace-visualizer: ClickHouse サーバーからのデータ読み込みをサポートしました。 #79042 (Sergei Trifonov).
  • 失敗したマージに関するメトリクスを追加。 #79228 (Miсhael Stetsyuk).
  • clickhouse-benchmark は、最大反復回数が指定されている場合、その最大反復回数に対する割合を表示します。 #79346 (Alexey Milovidov).
  • system.parts テーブルの可視化ツールを追加。 #79437 (Sergei Trifonov).
  • クエリのレイテンシーを解析するためのツールを追加。 #79978 (Sergei Trifonov).

バグ修正(公式安定版リリースにおけるユーザーに影響する不具合)

  • パーツ内で欠落しているカラムの名称変更処理を修正。 #76346 (Anton Popov).
  • materialized view が開始されるタイミングが遅くなり、例えば、その materialized view にストリーミングする Kafka テーブルより後に開始してしまうことがありました。 #72123 (Ilya Golshtein).
  • analyzer 有効時の VIEW 作成における SELECT クエリの書き換えを修正。#75956 をクローズ。#76356Dmitry Novik)。
  • サーバーからの async_insert 設定の適用処理(apply_settings_from_server 経由)を修正(以前はクライアント側で Unknown packet 11 from server エラーが発生してしまっていた)。 #77578 (Azat Khuzhin).
  • Replicated データベースにおいて、新たに追加されたレプリカでリフレッシャブルmaterialized view が動作しない問題を修正しました。 #77774 (Michael Kolupaev).
  • リフレッシャブルmaterialized viewによりバックアップが壊れる不具合を修正しました。 #77893 (Michael Kolupaev).
  • transform において古い条件で誤ってスローされていた論理エラーを修正。 #78247 (Yarik Briukhovetskyi).
  • 一部のケースでアナライザ使用時にセカンダリ索引が適用されていなかった問題を修正しました。#65607 および #69373 を修正しました。 #78485 (Nikolai Kochetov)。
  • HTTP プロトコルで圧縮を有効にした場合の profile events(NetworkSendElapsedMicroseconds / NetworkSendBytes)のダンプ処理を修正しました(誤差がバッファサイズ(通常は約 1 MiB)を超えないようにしました)。 #78516 (Azat Khuzhin).
  • JOIN ... USING に ALIAS カラム が含まれている場合に LOGICAL_ERROR を発生させていたアナライザを修正し、適切なエラーを返すようにしました。 #78618 (Yakov Olkhovskiy).
  • analyzer を修正: SELECT に位置引数が含まれている場合に CREATE VIEW ... ON CLUSTER が失敗していた不具合を解消。 #78663 (Yakov Olkhovskiy)。
  • SELECT にスカラーサブクエリが含まれている場合に、スキーマを自動推論するテーブル関数への INSERT SELECT で発生する Block structure mismatch エラーを修正。 #78677 (Pervakov Grigorii)。
  • analyzer を修正: 分散テーブルに対して prefer_global_in_and_join=1 を有効にしている場合、SELECT クエリ内の in 関数が globalIn に置き換えられるようにしました。 #78749 (Yakov Olkhovskiy).
  • MongoDB エンジンを使用するテーブル、または mongodb テーブル関数を参照する複数種類の SELECT クエリを修正しました。対象には、WHERE 句内で定数値の暗黙的な型変換が行われるクエリ(例: WHERE datetime = '2025-03-10 00:00:00')や、LIMIT および GROUP BY を含むクエリが含まれます。以前は、これらのクエリが誤った結果を返す可能性がありました。 #78777 (Anton Popov).
  • 異なる JSON 型間の変換を修正しました。現在は、String への/からの変換を介した単純なキャストで行われます。パフォーマンスは低下しますが、結果は 100% 正確です。 #78807 (Pavel Kruglov)。
  • Dynamic 型から Interval 型への変換時の論理エラーを修正。 #78813 (Pavel Kruglov).
  • JSON パースエラー時のカラムのロールバック処理を修正。 #78836 (Pavel Kruglov).
  • JOIN において定数エイリアスカラムを使用した場合に発生する「bad cast」エラーを修正。 #78848 (Vladimir Cherkasov).
  • materialized view において、ビューと対象テーブルで型が異なるカラムに対する PREWHERE 句を許可しないようにしました。 #78889 (Pavel Kruglov).
  • Variantカラムの不正なバイナリデータを解析する際に発生する論理エラーを修正。 #78982 (Pavel Kruglov).
  • Parquet バッチサイズが 0 に設定されている場合は例外をスローするようにしました。以前は output_format_parquet_batch_size = 0 のとき、ClickHouse がハングしていましたが、この問題を修正しました。 #78991 (daryawessely).
  • コンパクトパーツにおける basic format を用いた variant discriminator のデシリアライズを修正しました。この問題は https://github.com/ClickHouse/ClickHouse/pull/55518 で導入されました。 #79000 (Pavel Kruglov)。
  • complex_key_ssd_cache 型の辞書は、ゼロ以下の block_size および write_buffer_size パラメータを拒否するようになりました(issue #78314)。#79028Elmi Ahmadov)。
  • SummingMergeTree で非集約カラムに対して Field を使用しないでください。SummingMergeTree で使用される Dynamic/Variant 型との組み合わせにより、予期しないエラーが発生する可能性があります。 #79051 (Pavel Kruglov).
  • analyzer においてヘッダーが異なる Distributed 宛先テーブルを使用する materialized view からの読み取りの問題を修正しました。#79059Pavel Kruglov)。
  • バッチ挿入を行うテーブルに対して arrayUnion() が余分な(誤った)値を返すバグを修正しました。#75057 を修正。#79079Peter Nguyen)。
  • OpenSSLInitializer 内のセグメンテーションフォルトを修正し、#79092 をクローズ。 #79097 (Konstantin Bogdanov).
  • S3 の ListObject に対して常に prefix を設定するようにしました。 #79114 (Azat Khuzhin).
  • バッチ挿入を行うテーブルで arrayUnion() が余分な(誤った)値を返していたバグを修正しました(#79157)。#79158Peter Nguyen)。
  • フィルタープッシュダウン後に発生する論理エラーを修正。 #79164 (Pervakov Grigorii)。
  • HTTP ベースのエンドポイントで使用される delta-kernel 実装を用いた DeltaLake テーブルエンジンの問題を修正し、NOSIGN を修正しました。 #78124 をクローズ。 #79203Kseniia Sumarokova)。
  • Keeper の修正: 失敗したマルチリクエストに対して watch が発火しないように修正しました。 #79247 (Antonio Andelic).
  • IN で Dynamic 型および JSON 型の使用を禁止しました。現在の IN の実装では、それらを使用すると不正確な結果につながる可能性があります。これらの型に対する IN の適切なサポートは複雑であり、将来対応が行われる可能性があります。#79282 (Pavel Kruglov)。
  • JSON 型解析時の重複パスチェックを修正。 #79317 (Pavel Kruglov)。
  • SecureStreamSocket の接続に関する問題を修正。 #79383 (Konstantin Bogdanov).
  • データを含む plain_rewritable ディスクの読み込みの不具合を修正。#79439Julia Kartseva)。
  • MergeTree の Wide パーツにおける動的サブカラム検出でクラッシュする問題を修正。 #79466 (Pavel Kruglov)。
  • テーブル名の長さは初回の CREATE クエリに対してのみ検証するようにしました。下位互換性の問題を避けるため、後続の CREATE については検証しません。 #79488 (Miсhael Stetsyuk).
  • スパースなカラムを持つテーブルで、複数のケースにおいて発生していた Block structure mismatch エラーを修正しました。 #79491 (Anton Popov)。
  • 「Logical Error: Can't set alias of * of Asterisk on alias」というエラーが発生する2つのケースを修正。#79505 (Raúl Marín).
  • Atomic データベースの名前変更時に誤ったパスを使用していた不具合を修正しました。 #79569 (Tuan Pham Anh).
  • JSON カラムを他のカラムと併用した ORDER BY の動作を修正。 #79591 (Pavel Kruglov).
  • use_hedged_requestsallow_experimental_parallel_reading_from_replicas が両方とも無効になっている場合に、remote からの読み取り時に結果が重複する問題を修正。 #79599 (Eduard Karacharov)。
  • Unity Catalog 使用時に delta-kernel 実装で発生するクラッシュを修正。 #79677 (Kseniia Sumarokova).
  • 自動検出クラスタ向けマクロの解決に対応しました。 #79696 (Anton Ivashkin).
  • 不正な page_cache_limits の設定を適切に処理するようにしました。 #79805 (Bharat Nallan).
  • 可変長の書式指定子(例:%W、曜日を表す MondayTuesday など)の後に複合書式指定子(複数の要素を一度に出力する書式指定子。例:%D、アメリカ式日付 05/04/25)が続く場合に誤った結果となっていた SQL 関数 formatDateTime の動作を修正しました。 #79835 (Robert Schulze)。
  • IcebergS3 は COUNT 関数の最適化をサポートしていますが、IcebergS3Cluster はサポートしていません。その結果、クラスターモードでの count() の結果がレプリカ数の倍数になる場合があります。 #79844 (wxybear)
  • 遅延マテリアライゼーションを使用しており、PROJECTION が適用されるまでクエリ実行にカラムが一切使用されない場合に発生する AMBIGUOUS_COLUMN_NAME エラーを修正しました。例: SELECT * FROM t ORDER BY rand() LIMIT 5。 #79926 (Igor Nikonov)。
  • クエリ CREATE DATABASE datalake ENGINE = DataLakeCatalog(\'http://catalog:8181\', \'admin\', \'password\') に含まれるパスワードをマスクしました。 #79941 (Han Fei).
  • JOIN USING でエイリアスを指定できるようになりました。カラム名が変更されている場合(例:ARRAY JOIN によるリネーム)に、このエイリアスを指定します。 #73707 を修正。 #79942Nikolai Kochetov)。
  • UNION を含む materialized view が新しいレプリカ上でも正しく動作するようにしました。 #80037 (Samay Sharma).
  • SQL 関数 parseDateTime の書式指定子 %e は、これまでは先頭をスペースでパディングした日(例: 3)のみを受け付けていましたが、現在は 1 桁の日(例: 3)も認識するようになりました。これにより、MySQL と互換性のある動作になります。以前の動作を保持したい場合は、設定 parsedatetime_e_requires_space_padding = 1 を有効にしてください。(issue #78243)。 #80057Robert Schulze)。
  • ClickHouse のログに出力されていた Cannot find 'kernel' in '[...]/memory.stat' という警告を修正しました(issue #77410)。 #80129Robert Schulze)。
  • スタックオーバーフローによるクラッシュを防ぐために、FunctionComparison 内でスタックサイズをチェックするようにしました。 #78208 (Julia Kartseva).
  • system.workloads からの SELECT クエリ実行時に発生するレースコンディションを修正。 #78743 (Sergei Trifonov)。
  • 修正: 分散クエリでの遅延マテリアライズを修正。 #78815 (Igor Nikonov).
  • Array(Bool) から Array(FixedString) への変換の不具合を修正。 #78863 (Nikita Taranov)
  • Parquet バージョンの選択をより分かりやすくしました。 #78818 (Michael Kolupaev).
  • ReservoirSampler の自己マージ処理を修正。 #79031 (Nikita Taranov).
  • クライアントコンテキスト内での挿入テーブルの格納を修正。 #79046 (Pervakov Grigorii).
  • AggregatingSortedAlgorithmSummingSortedAlgorithm のデータメンバーの破棄順序を修正しました。 #79056 (Nikita Taranov).
  • enable_user_name_access_typeDEFINER アクセスタイプに影響を与えないようにしました。 #80026 (pufit).
  • system データベースのメタデータが Keeper 上にある場合、system データベースへのクエリがハングすることがある問題を修正。 #79304 (Mikhail Artemenko)。

ビルド/テスト/パッケージングの改善

ClickHouse リリース 25.4(2025-04-22)

後方互換性のない変更

  • allow_materialized_view_with_bad_selectfalse の場合、materialized view のすべてのカラムがターゲットテーブルと一致しているかをチェックするようにしました。 #74481 (Christoph Wurm).
  • dateTrunc が負の Date/DateTime 引数で使用される場合の動作を修正しました。 #77622 (Yarik Briukhovetskyi).
  • レガシーな MongoDB 連携を削除しました。サーバー設定 use_legacy_mongodb_integration は廃止され、現在は何も行いません。 #77895 (Robert Schulze).
  • SummingMergeTree の検証ロジックを強化し、パーティションキーまたはソートキーで使用されているカラムでは集約をスキップするようにしました。 #78022 (Pervakov Grigorii).

新機能

  • ワークロード向けに CPU スロットスケジューリング機能を追加しました。詳細はドキュメントを参照してください。#77595Sergei Trifonov)。
  • --path コマンドライン引数を指定すると、clickhouse-local は再起動後もデータベースを保持するようになりました。これにより #50647 および #49947 が解決されました。#71722Alexey Milovidov)。
  • サーバーが過負荷状態にある場合、クエリを拒否します。この判断は、待機時間(OSCPUWaitMicroseconds)とビジー時間(OSCPUVirtualTimeMicroseconds)の比率に基づいて行われます。この比率が min_os_cpu_wait_time_ratio_to_throwmax_os_cpu_wait_time_ratio_to_throw の間にある場合(これらはクエリレベルの設定です)、クエリは一定の確率で破棄されます。 #63206 (Alexey Katsman)。
  • Iceberg のタイムトラベル: 特定のタイムスタンプ時点の状態として Iceberg テーブルをクエリできるようにするための設定を追加。 #71072 (Brett Hoerner). #77439 (Daniil Ivanik).
  • Iceberg メタデータ用のインメモリキャッシュ。クエリの高速化のために、マニフェストファイルとそのリスト、および metadata.json を保持します。 #77156 (Han Fei).
  • Azure Blob Storage 向けに DeltaLake テーブルエンジンをサポートしました。#68043 を修正しました。#74541Smita Kulkarni)。
  • デシリアライズされたベクトル類似度索引向けのインメモリキャッシュを追加しました。これにより、近似最近傍 (ANN) 検索クエリの繰り返し実行が高速化されます。新しいキャッシュのサイズは、サーバー設定 vector_similarity_index_cache_size および vector_similarity_index_cache_max_entries で制御されます。この機能は、従来のリリースにあったスキップ索引キャッシュ機能を置き換えます。#77905Shankar Iyer)。
  • DeltaLake でパーティションプルーニングをサポートしました。 #78486 (Kseniia Sumarokova).
  • 読み取り専用の MergeTree テーブルに対するバックグラウンドリフレッシュをサポートし、無制限の数の分散リーダーから更新可能テーブルへのクエリ実行を可能にします(ClickHouse ネイティブなデータレイク)。 #76467 (Alexey Milovidov).
  • データベースのメタデータファイルを保存するためにカスタムディスクを使用できるようになりました。現在はグローバルなサーバーレベルでのみ設定できます。 #77365 (Tuan Pham Anh)。
  • plain_rewritable ディスクで ALTER TABLE ... ATTACH|DETACH|MOVE|REPLACE PARTITION がサポートされました。 #77406 (Julia Kartseva).
  • Kafka テーブルエンジン向けに、SASL 構成および認証情報を指定するテーブル設定を追加しました。これにより、設定ファイルや名前付きコレクションを使用せずに、CREATE TABLE 文内で直接、Kafka および Kafka 互換システム向けの SASL ベース認証を構成できるようになります。 #78810 (Christoph Wurm)。
  • MergeTree テーブルに対して default_compression_codec を設定できるようになりました。これは、対象カラムについて CREATE クエリで圧縮コーデックが明示的に指定されていない場合に使用されます。これにより #42005 が解決されました。 #66394 (gvoelfin)。
  • クラスタ設定に bind_host 設定を追加し、ClickHouse が分散接続で特定のネットワークを使用できるようにしました。 #74741 (Todd Yocum)。
  • system.tables に新しいカラム parametrized_view_parameters を追加しました。 https://github.com/clickhouse/clickhouse/issues/66756 をクローズします。 #75112 (NamNguyenHoai).
  • データベースコメントの変更を許可します。Closes #73351 ### ユーザー向け変更に関するドキュメントエントリ。#75622 (NamNguyenHoai).
  • PostgreSQL 互換プロトコルでの SCRAM-SHA-256 認証サポート。 #76839 (scanhex12).
  • arrayLevenshteinDistancearrayLevenshteinDistanceWeightedarraySimilarity 関数を追加しました。 #77187 (Mikhail f. Shiryaev)。
  • 設定 parallel_distributed_insert_select が、ReplicatedMergeTree テーブルへの INSERT SELECT に対しても有効になりました(以前は Distributed テーブルが必要でした)。#78041 (Igor Nikonov)。
  • toInterval 関数を導入しました。この関数は value と unit の 2 つの引数を取り、値を指定した Interval 型に変換します。 #78723 (Andrew Davis)。
  • iceberg テーブル関数およびエンジンで、ルート metadata.json ファイルを特定するための、いくつかの便利な方法を追加しました。 #78455 をクローズしました。 #78475Daniil Ivanik)。
  • ClickHouse の SSH プロトコルでパスワードベース認証をサポート。 #78586 (Nikita Mikhaylov).

実験的機能

  • WHERE 句内の EXISTS 式の引数として相関サブクエリをサポート。#72459 をクローズ。#76078Dmitry Novik)。
  • 関数 sparseGrams および sparseGramsHashes に ASCII 版および UTF-8 版を追加。作成者: scanhex12#78176Pervakov Grigorii)。今後のバージョンで実装が変更される予定があるため、使用しないでください。

パフォーマンスの向上

  • ORDER BY および LIMIT の適用後にデータを読み込む lazy カラムにより、パフォーマンスを最適化しました。 #55518 (Xiaozhe Yu).
  • クエリ条件キャッシュがデフォルトで有効になりました。 #79080 (Alexey Milovidov)。
  • col->insertFrom() への呼び出しをデバーチャル化することで、JOIN 結果の構築を高速化しました。 #77350 (Alexander Gololobov).
  • 可能な場合には、フィルタクエリプランのステップにある等価条件を JOIN 条件にマージし、ハッシュテーブルのキーとして利用できるようにしました。 #78877 (Dmitry Novik).
  • JOIN キーが両方のパーツで PK のプレフィックスになっている場合、JOIN に動的分片を使用します。この最適化は query_plan_join_shard_by_pk_ranges 設定で有効化できます(デフォルトでは無効です)。 #74733 (Nikolai Kochetov)。
  • Iceberg のデータプルーニングで、カラムの下限値および上限値(境界値)に基づく処理をサポートしました。#77638 を修正しました。#78242alesapin)。
  • Iceberg 向けの簡易な count 最適化を実装しました。これにより、フィルターなしで count() を用いるクエリはより高速に実行されます。#77639 をクローズしました。#78090alesapin)。
  • max_merge_delayed_streams_for_parallel_write を使用して、マージ処理が並列にフラッシュできるカラム数を構成できるようにしました(これにより、S3 への垂直マージにおけるメモリ使用量がおよそ 1/25 まで削減されるはずです)。#77922Azat Khuzhin)。
  • キャッシュがマージなどで受動的に使用される場合は、filesystem_cache_prefer_bigger_buffer_size を無効にします。これにより、マージ時のメモリ消費量が削減されます。 #77898 (Kseniia Sumarokova).
  • 並列レプリカ機能が有効な場合、読み取りタスクのサイズを決定する際にレプリカ数を基準とするようにしました。これにより、読み取るデータ量がそれほど大きくない場合でも、レプリカ間でのワークロード分散が向上します。 #78695 (Nikita Taranov)。
  • ORC フォーマットで非同期 I/O プレフェッチをサポートし、リモート I/O レイテンシを隠すことで全体的なパフォーマンスを向上させます。 #70534 (李扬)。
  • 非同期挿入が使用するメモリを事前割り当てして、パフォーマンスを向上させました。 #74945 (Ilya Golshtein).
  • multiRead が利用可能な箇所では単一の get リクエストを使用しないようにすることで、レプリカ数の増加に伴い Keeper に大きな負荷を与える可能性があった Keeper へのリクエスト数を削減しました。 #56862 (Nikolay Degterinsky)。
  • Nullable 引数に対する関数実行の軽微な最適化。 #76489 (李扬).
  • arraySort の最適化。 #76850 (李扬)。
  • 同一パートのマークをマージし、一度にクエリ条件キャッシュに書き込むことで、ロック取得のオーバーヘッドを削減しました。 #77377 (zhongyuankai).
  • ブラケット展開が1つだけ含まれるクエリに対する s3Cluster のパフォーマンスを最適化しました。 #77686 (Tomáš Hromada).
  • 単一の Nullable または LowCardinality カラムに対する ORDER BY を最適化。 #77789 (李扬).
  • Native フォーマットのメモリ使用量を最適化。 #78442 (Azat Khuzhin).
  • 軽微な最適化:型キャストが必要な場合は、count(if(...))countIf に書き換えないようにしました。#78564 をクローズしました。#78565李扬)。
  • hasAll 関数で tokenbf_v1ngrambf_v1 のフルテキストスキップインデックスを利用できるようになりました。 #77662 (UnamedRus).
  • ベクトル類似性インデックスにより、メインメモリが最大で 2 倍まで過剰に確保されてしまう可能性がありました。この修正ではメモリ割り当て戦略を見直し、メモリ使用量を削減するとともに、ベクトル類似性インデックスキャッシュの効率を向上させています。(issue #78056). #78394 (Shankar Iyer).
  • system.metric_log テーブルに対してスキーマ種別を指定する schema_type 設定を導入しました。利用可能なスキーマは 3 種類あります。wide -- 現在のスキーマで、各メトリクス/イベントが個別のカラムに格納されます(個々のカラムを読む場合に最も高効率)、transposed -- system.asynchronous_metric_log に類似しており、メトリクス/イベントが行として格納されます。そして最も興味深いのが transposed_with_wide_view -- 内部テーブルは transposed スキーマで作成しつつ、クエリを内部テーブルに対するものへ変換する wide スキーマの VIEW もあわせて導入します。transposed_with_wide_view では、VIEW に対するサブ秒精度はサポートされておらず、event_time_microseconds は後方互換性のためのエイリアスにすぎません。 #78412 (alesapin)。

改良

  • Distributed クエリのクエリプランをシリアライズできるようになりました。新しい設定項目 serialize_query_plan が追加されています。有効化すると、Distributed テーブルからのクエリはリモートクエリ実行のためにシリアライズされたクエリプランを使用します。これにより TCP プロトコルに新しいパケットタイプが導入され、このパケットを処理できるようにするには、サーバーの設定に <process_query_plan_packet>true</process_query_plan_packet> を追加する必要があります。 #69652 (Nikolai Kochetov).
  • JSON 型およびサブカラムの VIEW からの読み取りをサポート。 #76903 (Pavel Kruglov).
  • ALTER DATABASE ... ON CLUSTER をサポートしました。 #79242 (Tuan Pham Anh).
  • リフレッシャブルmaterialized viewのリフレッシュ処理が system.query_log に記録されるようになりました。 #71333 (Michael Kolupaev)。
  • ユーザー定義関数 (UDF) は、その設定における新しい SETTING によって決定的 (deterministic) であるとマークできるようになりました。また、クエリキャッシュは、クエリ内で呼び出される UDF が決定的かどうかを確認するようになりました。この場合、クエリ結果がキャッシュされます。(Issue #59988). #77769 (Jimmy Aguilar Mena).
  • あらゆる種類のレプリケーテッドタスクに対してバックオフロジックを有効にしました。これにより、CPU 使用率、メモリ使用量、ログファイルサイズを削減できるようになります。max_postpone_time_for_failed_mutations_ms に類似した新しい設定 max_postpone_time_for_failed_replicated_fetches_msmax_postpone_time_for_failed_replicated_merges_msmax_postpone_time_for_failed_replicated_tasks_ms を追加しました。 #74576 (MikhailBurdukov).
  • system.errorsquery_id を追加。 #75815 をクローズ。 #76581Vladimir Baikov)。
  • UInt128 から IPv6 への変換をサポートしました。これにより、IPv6 に対する bitAnd 演算および算術演算が可能になり、その結果を IPv6 に再変換できるようになります。#76752 をクローズしました。これにより、IPv6 に対する bitAnd 演算の結果も IPv6 に再変換できるようになります。#57707 も参照してください。#76928Muzammil Abdul Rehman)。
  • デフォルトでは、Variant 型のテキスト形式において特別な Bool 値はパースされません。allow_special_bool_values_inside_variant 設定を使用して有効化できます。 #76974 (Pavel Kruglov)。
  • セッションレベルおよびサーバーレベルで、低い priority を持つクエリのタスク単位の待機時間を設定可能にしました。 #77013 (VicoWu).
  • JSON データ型の値に対する比較処理を実装しました。JSON オブジェクトを Map 型と同様に比較できるようになりました。 #77397 (Pavel Kruglov)。
  • system.kafka_consumers による権限管理のサポートを改善し、内部の librdkafka エラーを転送するようにしました(なお、このライブラリの出来は正直かなりひどいです)。 #77700 (Ilya Golshtein).
  • Buffer テーブルエンジンの設定の検証機能を追加しました。 #77840 (Pervakov Grigorii).
  • HDFS での pread を有効化または無効化できる設定 enable_hdfs_pread を追加しました。 #77885 (kevinyhzou).
  • ZooKeeper の multi 読み取りおよび書き込みリクエスト数向けのプロファイルイベントを追加しました。 #77888 (JackyWoo)。
  • disable_insertion_and_mutation が有効な場合でも、一時テーブルの作成および挿入を行えるようになりました。 #77901 (Xu Jia)。
  • max_insert_delayed_streams_for_parallel_write を 100 に減らしました。 #77919 (Azat Khuzhin).
  • yyy のような Joda 構文(Java の世界のものです)における年のパースを修正しました。 #77973 (李扬).
  • MergeTree テーブルのパーツのアタッチは、そのブロック順に実行されるようになりました。これは ReplacingMergeTree のような特殊なマージアルゴリズムにとって重要です。この変更により #71009 がクローズされました。 #77976 (Alexey Milovidov).
  • クエリマスキングルールで、マッチが発生した場合に LOGICAL_ERROR をスローできるようになりました。これにより、あらかじめ定義したパスワードがログのどこかに漏洩していないかを検出しやすくなります。 #78094 (Nikita Mikhaylov)。
  • MySQL との互換性を向上させるため、information_schema.tables にカラム index_length_column を追加しました。 #78119 (Paweł Zakrzewski).
  • TotalMergeFailuresNonAbortedMergeFailures という 2 つの新しいメトリックを導入。これらのメトリックは、短時間に多数のマージ失敗が発生するケースを検出するために必要です。 #78150 (Miсhael Stetsyuk).
  • キーが指定されていないパススタイルの場合の S3 URL のパース不具合を修正。 #78185 (Arthur Passos).
  • 非同期メトリクス BlockActiveTimeBlockDiscardTimeBlockWriteTimeBlockQueueTimeBlockReadTime で誤った値が報告される問題を修正しました(変更前は 1 秒が誤って 0.001 として報告されていました)。 #78211 (filimonov)。
  • StorageS3(Azure)Queue に対して materialized view へプッシュする際に発生するエラーについて、loading_retries で設定されたリトライ回数の上限が適用されるようにしました。これ以前は、そのようなエラーは無期限にリトライされていました。 #78313 (Kseniia Sumarokova).
  • DeltaLake の delta-kernel-rs 実装で、パフォーマンスと進捗バーの問題を修正。 #78368 (Kseniia Sumarokova).
  • ランタイムディスクで includefrom_envfrom_zk をサポートしました。#78177 をクローズ。#78470Kseniia Sumarokova)。
  • 長時間実行中のミューテーションに対して、system.warnings テーブルに動的な警告を追加しました。 #78658 (Bharat Nallan).
  • システムテーブル system.query_condition_cache にフィールド condition を追加しました。これは、クエリ条件キャッシュでキーとして使用されるハッシュの元となる、プレーンテキストの条件を保存します。#78671 (Robert Schulze).
  • Hive パーティションで空値を許可できるようにしました。 #78816 (Arthur Passos).
  • BFloat16 に対する IN 句の型変換を修正しました(つまり、SELECT toBFloat16(1) IN [1, 2, 3]; は今では 1 を返します)。#78754 をクローズしました。#78839Raufs Dunamalijevs)。
  • disk = ... が設定されている場合、MergeTree において他のディスク上のパーツをチェックしないようにしました。 #78855 (Azat Khuzhin).
  • system.query_log 内の used_data_type_families におけるデータ型が、正準名で記録されるようにしました。 #78972 (Kseniia Sumarokova).
  • recoverLostReplica 実行時の設定クリーンアップを、#78637 と同様の方法で行うようにしました。 #79113 (Nikita Mikhaylov).
  • INFILE のスキーマ推論に挿入カラムを使用できるようにしました。 #78490 (Pervakov Grigorii).

バグ修正(公式安定版リリースにおけるユーザーに影響する不具合)

  • 集約プロジェクションで count(Nullable) が使用されている場合の誤ったプロジェクション解析を修正しました。これにより #74495 が修正されます。この PR ではさらに、プロジェクションが使用される理由/使用されない理由を明確にするために、プロジェクション解析まわりのログをいくつか追加しています。#74498Amos Bird)。
  • DETACH PART 実行時に発生する Part <...> does not contain in snapshot of previous virtual parts. (PART_IS_TEMPORARILY_LOCKED) エラーを修正しました。 #76039 (Aleksei Filatov)。
  • アナライザでリテラルを含む式を持つスキップ索引が動作しない問題を修正し、索引の解析時に自明なキャストを削除しました。 #77229 (Pavel Kruglov).
  • close_session クエリパラメータが効かず、名前付きセッションが session_timeout 後にのみ閉じられていたバグを修正しました。 #77336 (Alexey Katsman).
  • Materialized Views がアタッチされていない NATS サーバーからのメッセージ受信を修正しました。 #77392 (Dmitry Novikov).
  • 空の FileLog から merge テーブル関数経由で読み取る際の論理エラーを修正し、#75575 をクローズしました。#77441Vladimir Cherkasov)。
  • 共有された variant からの Dynamic シリアライゼーションでデフォルトのフォーマット設定を使用するよう修正しました。 #77572 (Pavel Kruglov).
  • ローカルディスク上のテーブルデータパスの存在チェックを修正。 #77608 (Tuan Pham Anh).
  • 一部の型における定数値のリモート送信を修正。 #77634 (Pavel Kruglov)。
  • S3/AzureQueue において、有効期限切れのコンテキストが原因で発生していたクラッシュを修正。 #77720 (Kseniia Sumarokova).
  • RabbitMQ、Nats、Redis、AzureQueue のテーブルエンジンで認証情報が表示されないようにしました。 #77755 (Kseniia Sumarokova).
  • argMin/argMax における NaN の比較時の未定義動作を修正しました。 #77756 (Raúl Marín).
  • マージおよびミューテーションの処理が、書き込むブロックを生成しない場合でもキャンセルされたかどうかを定期的に確認するようにしました。 #77766 (János Benjamin Antal).
  • Replicated データベースで、新しく追加されたレプリカでは動作していなかったリフレッシャブルmaterialized view の問題を修正しました。 #77774 (Michael Kolupaev).
  • NOT_FOUND_COLUMN_IN_BLOCK エラー発生時にクラッシュが起きる可能性があった不具合を修正。 #77854 (Vladimir Cherkasov)。
  • データの投入中に S3/AzureQueue で発生していたクラッシュを修正しました。 #77878 (Bharat Nallan).
  • SSH サーバーでの履歴に対するファジー検索を無効化(skim ライブラリを必要とするため)。 #78002 (Azat Khuzhin)。
  • インデックスが設定されていないカラムに対するベクトル検索クエリについて、テーブル内の別のベクトルカラムにベクトル類似度索引が定義されている場合に誤った結果が返される問題を修正しました(Issue #77978)。#78069Shankar Iyer)。
  • "The requested output format is binary... Do you want to output it anyway? [y/N]" というプロンプトメッセージ内のごく小さな誤りを修正。 #78095 (Azat Khuzhin).
  • toStartOfInterval で origin 引数が 0 の場合に発生するバグを修正しました。 #78096 (Yarik Briukhovetskyi).
  • HTTP インターフェースで、空の session_id クエリパラメータを指定することを禁止しました。 #78098 (Alexey Katsman).
  • ALTER クエリの直後に実行された RENAME クエリが原因で Replicated データベースのメタデータが上書きされてしまう可能性があった問題を修正しました。 #78107 (Nikolay Degterinsky)。
  • NATS エンジンにおけるクラッシュを修正。 #78108 (Dmitry Novikov).
  • SSH 用組み込みクライアントでの history_file 作成を試みないようにしました(以前のバージョンでは作成は常に失敗していましたが、試行自体は行われていました)。 #78112 (Azat Khuzhin).
  • RENAME DATABASE または DROP TABLE クエリの実行後に system.detached_tables が誤った情報を表示していた問題を修正しました。 #78126 (Nikolay Degterinsky)。
  • Replicated データベースでテーブル数が多すぎる場合のチェックに関する不具合を、#77274 の変更後に発生していたものとして修正しました。あわせて、ReplicatedMergeTreeKeeperMap の場合に Keeper 内に管理対象外のノードが作成されるのを防ぐため、ストレージを作成する前にチェックを実行するようにしました。 #78127 (Nikolay Degterinsky)。
  • S3Queue メタデータの初期化が同時に行われた場合に発生する可能性があったクラッシュを修正しました。 #78131 (Azat Khuzhin).
  • groupArray* 関数は、これまで実行を試みていた Int 型の max_size 引数に 0 が指定された場合についても、すでに UInt 型で行われているのと同様に、BAD_ARGUMENTS エラーを返すようになりました。 #78140 (Eduard Karacharov).
  • ローカルテーブルが切り離される前に削除されていた場合に、失われたレプリカを復旧する際にクラッシュしないようにしました。 #78173 (Raúl Marín).
  • system.s3_queue_settings の "alterable" カラムが常に false を返していた不具合を修正。#78187 (Kseniia Sumarokova).
  • Azure アクセス署名がユーザーやログに表示されないようにマスクしました。 #78189 (Kseniia Sumarokova).
  • Wide パーツで接頭辞付きサブストリームのプリフェッチが正しく行われない問題を修正。 #78205 (Pavel Kruglov).
  • キー配列が LowCardinality(Nullable) 型の場合に mapFromArrays で発生していたクラッシュや誤った結果を修正しました。 #78240 (Eduard Karacharov)。
  • delta-kernel-rs の認証オプションを修正。 #78255 (Kseniia Sumarokova).
  • レプリカの disable_insertion_and_mutation が true の場合、Refreshable Materialized Views のタスクをスケジュールしないようにしました。タスクは挿入処理を伴うため、disable_insertion_and_mutation が true の場合は失敗します。 #78277 (Xu Jia).
  • Merge エンジンの背後にあるテーブルへのアクセスを検証するようにしました。 #78339 (Pervakov Grigorii)。
  • Distributed テーブルに対するクエリで、FINAL 修飾子が無視されることがありました。 #78428 (Yakov Olkhovskiy).
  • bitmapMin は、ビットマップが空の場合に uint32_max(入力型がそれより大きい場合には uint64_max)を返します。これは、空の roaring_bitmap に対する最小値の挙動と一致します。 #78444 (wxybear)。
  • distributed_aggregation_memory_efficient が有効な場合、FROM 句の読み取り直後におけるクエリ処理の並列化を無効化しました。これは論理エラーを引き起こす可能性があったためです。Closes #76934. #78500 (flynn).
  • max_streams_to_max_threads_ratio SETTING を適用した結果、計画されたストリーム数が 0 になってしまう場合でも、読み取り用に少なくとも 1 つのストリームが設定されるようになりました。 #78505 (Eduard Karacharov)。
  • ストレージ S3Queue で発生していた論理エラー「Cannot unregister: table uuid is not registered」を修正しました。 #78285 をクローズしました。 #78541Kseniia Sumarokova)。
  • ClickHouse は、cgroups v1 と v2 の両方が有効になっているシステムで、自身が属する cgroup v2 を判別できるようになりました。 #78566 (Grigory Korolev).
  • テーブルレベルの設定を指定して使用すると、-Cluster テーブル関数が失敗していました。 #78587 (Daniil Ivanik).
  • INSERT 時に ReplicatedMergeTree がトランザクションをサポートしていない場合のチェックを強化しました。 #78633 (Azat Khuzhin).
  • ATTACH 時にクエリ設定をクリーンアップするように修正しました。 #78637 (Raúl Marín).
  • iceberg_metadata_file_path に無効なパスが指定された場合にクラッシュする問題を修正しました。 #78688 (alesapin).
  • DeltaLake テーブルエンジンの delta-kernel-s 実装において、読み取りスキーマがテーブルスキーマと異なり、かつパーティションカラムが存在する場合に「カラムが見つかりません」エラーが発生する問題を修正しました。 #78690 (Kseniia Sumarokova).
  • 名前付きセッションをクローズするようにスケジュールした後(ただしタイムアウトが実際に発生する前)に、同じ名前で新しい名前付きセッションを作成すると、新しいセッションまで、最初のセッションがクローズされるはずだったタイミングでクローズされてしまう問題を修正しました。 #78698 (Alexey Katsman).
  • MongoDB エンジンを使用するテーブル、または mongodb テーブル関数から読み取るいくつかのタイプの SELECT クエリを修正しました。修正対象は、WHERE 句内で定数値が暗黙的に型変換されるクエリ(例: WHERE datetime = '2025-03-10 00:00:00')、および LIMITGROUP BY を含むクエリです。以前は誤った結果を返すことがありました。 #78777 (Anton Popov)。
  • CHECK TABLE 実行中でもテーブルのシャットダウンがブロックされないようにしました。 #78782 (Raúl Marín).
  • Keeper の修正: すべてのケースでエフェメラルカウントが正しく計算されるよう修正。 #78799 (Antonio Andelic).
  • view 以外のテーブル関数を使用した場合に StorageDistributed で発生する誤ったキャストを修正しました。#78464 をクローズしました。#78828Konstantin Bogdanov)。
  • tupleElement(*, 1) のフォーマットの一貫性を修正しました。#78639 をクローズしました。#78832Konstantin Bogdanov)。
  • ssd_cache 型の辞書は、0 または負の値の block_size および write_buffer_size パラメータを拒否するようになりました(issue #78314)。#78854Elmi Ahmadov)。
  • 異常終了後に ALTER を実行した場合に Refreshable MATERIALIZED VIEW がクラッシュする不具合を修正しました。 #78858 (Azat Khuzhin).
  • CSV フォーマットにおける不正な DateTime 値のパース処理を修正しました。 #78919 (Pavel Kruglov)。
  • Keeper の修正: 失敗した multi リクエストで watch が発火しないようにしました。 #79247 (Antonio Andelic)。
  • min-max 値が明示的に指定されているにもかかわらず NULL になっている場合に、Iceberg テーブルの読み取りに失敗していた問題を修正しました。そのような不正なファイルを生成していたのは Go Iceberg ライブラリであることが判明しました。Closes #78740. #78764 (flynn).

ビルド/テスト/パッケージングの改善

  • Rust において CPU ターゲットの機能を考慮し、すべてのクレートで LTO を有効化しました。 #78590 (Raúl Marín).

ClickHouse 25.3 LTS リリース、2025-03-20

後方互換性のない変更

  • レプリケートされたデータベースに対する TRUNCATE を禁止しました。 #76651 (Bharat Nallan).
  • 索引キャッシュをスキップする変更を元に戻しました。 #77447 (Nikita Mikhaylov).

新機能

  • JSON データ型が本番利用に対応しました。詳しくは https://jsonbench.com/ を参照してください。Dynamic および Variant データ型も本番利用に対応しました。#77785Alexey Milovidov)。
  • clickhouse-server 向けに SSH プロトコルを導入しました。これにより、任意の SSH クライアントを使用して ClickHouse に接続できるようになりました。その結果、次の issue がクローズされました: #74340#74989George Gamezardashvili)。
  • parallel replicas が有効な場合は、テーブル関数を対応する -Cluster 版に置き換えます。#65024 を修正します。#70659Konstantin Bogdanov)。
  • Userspace Page Cache の新しい実装により、OS のページキャッシュに依存せず、プロセス内メモリ上にデータをキャッシュできるようになります。これは、データがローカルファイルシステムキャッシュでバックされていないリモートの仮想ファイルシステム上に格納されている場合に有用です。 #70509 (Michael Kolupaev).
  • 同時実行クエリ間での CPU スロットの割り当て方法を制御するサーバー設定 concurrent_threads_scheduler を追加しました。round_robin(従来の挙動)または fair_round_robin を指定でき、INSERT と SELECT 間での CPU 割り当ての不公平さの問題に対処します。 #75949 (Sergei Trifonov)。
  • estimateCompressionRatio 集約関数を追加しました。 #70801#76661Tariq Almawash)。
  • 関数 arraySymmetricDifference を追加しました。複数の配列引数のうち、すべての引数に共通して含まれていない要素をすべて返します。例: SELECT arraySymmetricDifference([1, 2], [2, 3])[1, 3] を返します。(issue #61673)。#76231Filipp Abapolov)。
  • Iceberg 用 storage/table 関数の設定項目 iceberg_metadata_file_path により、読み込むメタデータファイルを明示的に指定できるようにしました。 #47412 を修正。 #77318 (alesapin)。
  • ブロックチェーンの実装、特に EVM ベースのシステムで一般的に使用される keccak256 ハッシュ関数を追加しました。 #76669 (Arnaud Briche).
  • 3 つの新しい関数を追加。icebergTruncate は仕様に準拠(https://iceberg.apache.org/spec/#truncate-transform-details)、toYearNumSinceEpoch および toMonthNumSinceEpoch を追加。Iceberg エンジンのパーティションプルーニングで truncate 変換をサポート。#77403alesapin)。
  • LowCardinality(Decimal) データ型をサポートしました #72256#72833zhanglistar)。
  • FilterTransformPassedRowsFilterTransformPassedBytes のプロファイルイベントでは、クエリ実行中にフィルタリングされた行数とバイト数が示されます。 #76662 (Onkar Deshpande).
  • ヒストグラム型メトリクスをサポートしました。インターフェースは Prometheus クライアントと非常によく似ており、値に対応するバケット内のカウンタをインクリメントするには、単に observe(value) を呼び出すだけです。ヒストグラムメトリクスは system.histogram_metrics を通じて公開されます。 #75736 (Miсhael Stetsyuk)。
  • 明示的な値に対して分岐できる非定数 CASE をサポート。 #77399 (Yarik Briukhovetskyi)。

実験的機能

  • AWS S3 およびローカルファイルシステム上の Delta Lake テーブルに対して、Unity Catalog のサポートを追加しました。#76988 (alesapin)。
  • Iceberg テーブル向けに AWS Glue サービスカタログとの実験的な連携機能を導入しました。#77257 (alesapin)。
  • 動的なクラスタの自動検出機能を追加しました。これにより、既存の node の自動検出機能が拡張されます。ClickHouse は、<multicluster_root_path> を使用して共通の ZooKeeper パス配下で新しい clusters を自動的に検出して登録できるようになりました。#76001 (Anton Ivashkin)。
  • 新しい設定 enable_replacing_merge_with_cleanup_for_min_age_to_force_merge により、設定可能なタイムアウト後にパーティション全体を自動的にクリーンアップマージできるようになりました。#76440 (Christoph Wurm)。

パフォーマンス改善

  • 繰り返し使用される条件によるクエリパフォーマンスを向上させるため、クエリ条件キャッシュを実装しました。条件を満たさないデータ範囲を、一時的なインデックスとしてメモリ上に保持します。後続のクエリはこのインデックスを利用します。 #67768 #69236 をクローズしました。 (zhongyuankai)
  • パーツ削除時にキャッシュからデータを積極的に削除するようにしました。データ量がそれより少ない場合でも、キャッシュが最大サイズまで成長しないようにします。 #76641 (Alexey Milovidov)
  • 算術計算で Int256 と UInt256 を clang の組み込み型 i256 に置き換え、パフォーマンスを向上させました #70502#73658 (李扬)
  • 一部のケース(例: 空の array カラム)では、データパーツに空ファイルが含まれることがあります。テーブルがメタデータとオブジェクトストレージが分離されたストレージ構成のディスク上にある場合、そのようなファイルについては空の blob の書き込みをスキップし、メタデータのみを保存できるようにしました。 #75860 (Alexander Gololobov)
  • Decimal32/Decimal64/DateTime64 に対する min/max のパフォーマンスを改善しました。 #76570 (李扬)
  • クエリコンパイル(compile_expressions 設定)は、マシンタイプを考慮するようになりました。これにより、そのようなクエリが大幅に高速化されます。 #76753 (ZhangLiStar)
  • arraySort を最適化しました。 #76850 (李扬)
  • マージなど、キャッシュが受動的に使用される場合には filesystem_cache_prefer_bigger_buffer_size を無効化しました。 #77898 (Kseniia Sumarokova)
  • 一部のコード箇所で preserve_most 属性を適用し、わずかにより良いコード生成を可能にしました。 #67778 (Nikita Taranov)
  • ClickHouse サーバーのシャットダウンを高速化しました(2.5 秒の遅延を除去)。 #76550 (Azat Khuzhin)
  • ReadBufferFromS3 およびその他のリモート読み取りバッファで不要なアロケーションを回避し、メモリ消費を半分に削減しました。 #76692 (Sema Checherinda)
  • zstd を 1.5.5 から 1.5.7 に更新しました。これにより、いくつかのパフォーマンス向上につながる可能性があります。 #77137 (Pradeep Chhetri)
  • Wide パーツ内の JSON カラムのプリフェッチ中のメモリ使用量を削減しました。これは、ClickHouse Cloud のような共有ストレージ上で ClickHouse を使用する場合に特に有効です。 #77640 (Pavel Kruglov)

改良

  • TRUNCATEINTO OUTFILE と共に使用される場合に、アトミックなリネームをサポートするようにしました。#70323 を解決します。#77181Onkar Deshpande)。
  • NaNinf を float 型の設定値として使用することはできなくなりました。そもそも妥当な使い方ではありませんでしたが。 #77546 (Yarik Briukhovetskyi).
  • compatibility 設定に関わらず、analyzer が無効になっている場合は parallel replicas をデフォルトで無効にするようにしました。この挙動は、parallel_replicas_only_with_analyzer を明示的に false に設定することで変更できます。 #77115 (Igor Nikonov).
  • クライアントリクエストのヘッダーから外部 HTTP 認証器に転送するヘッダーのリストを定義できるようになりました。 #77054 (inv2004).
  • タプル型カラム内のフィールドに対して、カラム名の大文字・小文字を区別しないマッチングを正しく扱うようにしました。 https://github.com/apache/incubator-gluten/issues/8324 をクローズ。 #73780 (李扬)。
  • Codec Gorilla のパラメータは、常に .sql ファイル内のテーブルメタデータに保存されるようになりました。これにより次の issue が解決されました: #70072#74814Nikita Mikhaylov)。
  • 特定のデータレイク向けにパース処理を強化しました(Sequence ID のパース: マニフェストファイル内のシーケンス識別子をパースする機能を追加、Avro メタデータのパース: 将来の拡張が容易になるよう Avro メタデータパーサーを再設計)。 #75010 (Daniil Ivanik)。
  • system.opentelemetry_span_log テーブルのデフォルト ORDER BY から trace_id を除外しました。 #75907 (Azat Khuzhin).
  • 暗号化(encrypted_by 属性)は、任意の設定ファイル(config.xml、users.xml、入れ子になった設定ファイル)に適用できるようになりました。これまでは、トップレベルの config.xml ファイルに対してのみ有効でした。 #75911 (Mikhail Gorshkov).
  • system.warnings テーブルを改善し、追加・更新・削除が可能な動的な警告メッセージを追加できるようにしました。 #76029 (Bharat Nallan).
  • このPRでは、すべての DROP 操作を順序として先に記述する必要があるため、ALTER USER user1 ADD PROFILES a, DROP ALL PROFILES というクエリは実行できなくなりました。 #76242 (pufit).
  • SYNC REPLICA に対するさまざまな強化(エラーメッセージの改善、テストの充実、サニティチェックの追加)。 #76307 (Azat Khuzhin)。
  • バックアップ時に Access Denied が発生して S3 へのマルチパートコピーが失敗した場合に、正しいフォールバック処理を行うようにしました。バケット間で異なるクレデンシャルを使用してバックアップを行う場合、マルチパートコピーで Access Denied エラーが発生することがあります。 #76515 (Antonio Andelic).
  • librdkafka(ひどい代物)をバージョン 2.8.0(代物の質は特に良くなってはいない)にアップグレードし、Kafka テーブルのシャットダウンシーケンスを改善して、テーブル削除時およびサーバー再起動時の遅延を低減しました。engine=Kafka は、テーブルが削除されたときにコンシューマグループから明示的に離脱しなくなりました。その代わり、コンシューマは非アクティブな状態が session_timeout_ms(デフォルト: 45 秒)続いた後に自動的に削除されるまで、グループに留まります。 #76621filimonov)。
  • S3 リクエスト設定の検証処理を修正。 #76658 (Vitaly Baranov)。
  • server_settingssettings のようなシステムテーブルには、default 値用のカラムがあり便利です。これらを merge_tree_settings および replicated_merge_tree_settings にも追加しました。 #76942 (Diego Nieto).
  • CurrentMetrics::QueryPreempted と同様のロジックを持つ ProfileEvents::QueryPreempted を追加しました。 #77015 (VicoWu)。
  • 以前は、Replicated データベースがクエリで指定された認証情報をログに出力してしまうことがありました。この問題は修正されました。これにより次の問題が解決されます: #77123#77133Nikita Mikhaylov)。
  • plain_rewritable disk に対して ALTER TABLE DROP PARTITION が利用できるようになりました。 #77138 (Julia Kartseva).
  • バックアップ/リストア用の設定 allow_s3_native_copy は、現在は次の 3 つの値をサポートするようになりました: - False - S3 ネイティブコピーは使用されません。 - True(従来のデフォルト)- ClickHouse は最初に S3 ネイティブコピーを試行し、失敗した場合は読み取り+書き込み方式にフォールバックします。 - 'auto'(新しいデフォルト)- ClickHouse は最初にソースとデスティネーションの認証情報を比較します。同一であれば、まず S3 ネイティブコピーを試行し、その後読み取り+書き込み方式にフォールバックする場合があります。異なる場合は、最初から読み取り+書き込み方式を使用します。 #77401 (Vitaly Baranov)。
  • Delta Lake テーブルエンジンの Delta カーネルで AWS セッショントークンおよび環境認証情報の利用をサポートしました。 #77661 (Kseniia Sumarokova).

バグ修正(公式安定版リリースにおけるユーザーに影響する不具合)

  • 非同期分散 INSERT で保留中バッチの処理中にハングする問題(No such file or directory などにより発生)を修正。 #72939 (Azat Khuzhin)。
  • INDEX 分析中の日時変換を改善し、暗黙的な Date から DateTime への変換に対して飽和動作を強制するようにしました。これにより、日時の範囲制限が原因で発生し得た INDEX 分析結果の不正確さが解消されます。この変更により #73307 を修正しました。また、デフォルト値である date_time_overflow_behavior = 'ignore' 設定時における明示的な toDateTime 変換の動作も修正しました。#73326Amos Bird)。
  • UUID とテーブル名の間のレースコンディションに起因するさまざまなバグを修正しました(たとえば、RENAMERESTART REPLICA のレースコンディションが解消されます。同時に RENAMESYSTEM RESTART REPLICA を実行した場合に、誤ったレプリカを再起動してしまったり、あるいはテーブルの一つが Table X is being restarted 状態のまま取り残されてしまう可能性がありました)。 #76308 (Azat Khuzhin).
  • 非同期インサートを有効にし、ブロックサイズが不揃いな状態で insert into ... from file ... を実行した際、最初のブロックサイズが async_max_size 未満で 2 番目のブロックサイズが async_max_size を超える場合、2 番目のブロックがインサートされずにデータ損失が発生する問題を修正。2 番目のブロックのデータは squashing に残留したままとなっていました。 #76343 (Han Fei).
  • system.data_skipping_indices においてフィールド名 'marks' を 'marks_bytes' に変更しました。 #76374 (Robert Schulze).
  • 動的ファイルシステムキャッシュのリサイズ時に、削除処理中に予期しないエラーが発生した際の処理を修正しました。 #76466 (Kseniia Sumarokova).
  • 並列ハッシュにおける used_flag の初期化を修正しました。これによりサーバーがクラッシュする可能性がありました。 #76580 (Nikita Taranov).
  • PROJECTION 内で defaultProfiles 関数を呼び出した際に発生する論理エラーを修正。 #76627 (pufit).
  • Web UI でブラウザによる対話的な Basic 認証を要求しないようにしました。#76319 をクローズします。#76637Alexey Milovidov)。
  • 分散テーブルからブール値リテラルを SELECT した際に発生する THERE_IS_NO_COLUMN 例外を修正。 #76656 (Yakov Olkhovskiy).
  • テーブルディレクトリ内のサブパスが、より適切な方法で選択されるようになりました。 #76681 (Daniil Ivanik).
  • サブカラムを含む主キー (PK) を持つテーブルを ALTER した後に発生するエラー Not found column in block を修正しました。https://github.com/ClickHouse/ClickHouse/pull/72644 適用後は、https://github.com/ClickHouse/ClickHouse/pull/74403 が必要です。#76686Nikolai Kochetov)。
  • NULL ショートサーキットのパフォーマンステストを追加し、バグを修正しました。 #76708 (李扬).
  • 出力の書き込みバッファをファイナライズする前にフラッシュするようにしました。いくつかの出力フォーマット(例: JSONEachRowWithProgressRowOutputFormat)のファイナライズ時に発生していた LOGICAL_ERROR を修正しました。 #76726 (Antonio Andelic)。
  • MongoDBのバイナリUUIDへの対応を追加しました(#74452) - テーブル関数使用時のMongoDBへのWHEREプッシュダウンを修正しました(#72210) - MongoDBのバイナリUUIDはClickHouseのUUIDにのみ変換されるように、MongoDBとClickHouse間の型マッピングを変更しました。これにより、将来のあいまいさや予期せぬ動作を防ぐことができます。- 後方互換性を維持したまま、OIDのマッピングを修正しました。#76762Kirill Nikiforov)。
  • JSON サブカラムのプレフィックス並列デシリアライズにおける例外処理を修正。#76809 (Pavel Kruglov)。
  • 負の整数に対する lgamma 関数の動作を修正。 #76840 (Ilya Kataev).
  • 明示的に定義された primary key に対する reverse key analysis を修正しました。#76654 と同様の問題です。 #76846 (Amos Bird)。
  • JSON フォーマットでの Bool 値の Pretty 表示を修正しました。 #76905 (Pavel Kruglov).
  • 非同期挿入中にエラーが発生した際、不正な JSON カラムのロールバック処理によりクラッシュする可能性があった問題を修正しました。 #76908 (Pavel Kruglov).
  • 以前は、multiIf がプランニング時と本実行時で異なる型のカラムを返す場合がありました。これにより、C++ の観点から未定義動作を引き起こすコードが生成されていました。 #76914 (Nikita Taranov)。
  • MergeTree における定数 Nullable キーのシリアライズ処理が誤っていた問題を修正しました。これにより #76939 が修正されます。 #76985 (Amos Bird)。
  • BFloat16 値のソート処理を修正しました。この修正により #75487 がクローズされます。さらに #75669 もクローズされます。 #77000Alexey Milovidov)。
  • パーツ整合性チェックで一時的なサブカラムをスキップするチェックを追加することで、Variant サブカラムを含む JSON のバグを修正しました。 #72187#77034Smita Kulkarni)。
  • Values フォーマットで Template をパースする際の型不一致によりクラッシュする問題を修正。 #77071 (Pavel Kruglov)。
  • EmbeddedRocksDB テーブルの主キーにサブカラムを含めて作成できないようにしました。以前はそのようなテーブルを作成できましたが、SELECT クエリが失敗していました。 #77074 (Pavel Kruglov)。
  • 述語をリモート側にプッシュダウンする際にリテラル型が考慮されていなかったため、分散クエリで不正な比較が行われていた問題を修正。 #77093 (Duc Canh Le).
  • 例外により Kafka テーブル作成時にクラッシュする問題を修正。 #77121 (Pavel Kruglov).
  • Kafka および RabbitMQ エンジンで JSON およびサブカラムのサポートを追加しました。 #77122 (Pavel Kruglov).
  • MacOS での例外スタックのアンワインド処理を修正。#77126Eduard Karacharov)。
  • getSubcolumn 関数における 'null' サブカラムの読み取りを修正。 #77163 (Pavel Kruglov).
  • Array 型および未サポート関数での bloom filter 索引の不具合を修正。 #77271 (Pavel Kruglov).
  • テーブル数に関する制限は、初回の CREATE クエリ実行時にのみチェックするようにしました。 #77274 (Nikolay Degterinsky).
  • バグではありません: SELECT toBFloat16(-0.0) == toBFloat16(0.0) は、これまで false を返していましたが、現在は正しく true を返すようになりました。これにより、Float32 および Float64 と挙動が一貫するようになりました。 #77290 (Shankar Iyer).
  • デバッグビルドでクラッシュを引き起こす可能性がある、未初期化の key_index 変数への誤った参照が行われる不具合を修正しました(この未初期化参照は、後続のコードが例外をスローする可能性が高いため、リリースビルドでは問題になりません)。 ### ユーザー向け変更に関するドキュメントのエントリ。 #77305 (wxybear).
  • Bool 値を持つパーティションの名前付けを修正しました。これは https://github.com/ClickHouse/ClickHouse/pull/74533 によって不正な状態になっていました。 #77319 (Pavel Kruglov)。
  • 内部に Nullable 要素を含むタプルと文字列の比較の不具合を修正しました。例えば、この変更より前は、タプル (1, null) と文字列 '(1,null)' の比較でエラーが発生していました。別の例として、Nullable カラムである a を含むタプル (1, a) と文字列 '(1, 2)' の比較も同様です。この変更により、これらの問題が解消されました。 #77323 (Alexey Katsman).
  • ObjectStorageQueueSource で発生していたクラッシュを修正しました。この不具合は https://github.com/ClickHouse/ClickHouse/pull/76358 で導入されました。 #77325 (Pavel Kruglov)。
  • input と併用した場合の async_insert を修正。 #77340 (Azat Khuzhin).
  • Fix: WITH FILL が、ソートカラムがプランナーによって削除された場合に NOT_FOUND_COLUMN_IN_BLOCK で失敗する可能性がある問題を修正。INTERPOLATE 式に対して計算される DAG の不整合に関連する同様の問題も修正。 #77343 (Yakov Olkhovskiy)。
  • 無効な AST ノードに対するエイリアス設定まわりで発生していた複数の LOGICAL_ERROR を修正しました。 #77445 (Raúl Marín).
  • filesystem cache の実装において、ファイルセグメントの書き込み中のエラー処理の不具合を修正しました。 #77471 (Kseniia Sumarokova).
  • カタログから提供される適切なメタデータファイルを DatabaseIceberg が使用するようにしました。#75187 をクローズ。#77486 (Kseniia Sumarokova)。
  • query cache は UDF を非決定的であるものと仮定するようになりました。これに伴い、UDF を含むクエリの結果はキャッシュされなくなりました。以前は、ユーザーが非決定的な UDF を定義した場合でも、その結果が誤ってキャッシュされてしまうことがありました(issue #77553)。#77633Jimmy Aguilar Mena)。
  • enable_filesystem_cache_log SETTING が有効な場合にのみ動作していた system.filesystem_cache_log の問題を修正。 #77650 (Kseniia Sumarokova).
  • defaultRoles 関数を PROJECTION 内で呼び出した場合に発生する論理エラーを修正しました。#76627 に対するフォローアップです。#77667pufit)。
  • 関数 arrayResize の第2引数として Nullable 型を指定することは、現在は許可されていません。これまでは、第2引数が Nullable の場合に、エラーが発生したり誤った結果が返されたりする可能性がありました。(issue #48398). #77724 (Manish Gill).
  • 書き込み対象のブロックが一切生成されない場合でも、マージおよびミューテーションがキャンセルされたかどうかを定期的に確認するようにしました。 #77766 (János Benjamin Antal)。

ビルド/テスト/パッケージング関連の改善

ClickHouse 25.2 リリース, 2025-02-27

後方互換性のない変更

  • async_load_databases をデフォルトで完全に有効化しました(config.xml をアップグレードしていないインストールでも同様です)。#74772Azat Khuzhin)。
  • JSONCompactEachRowWithProgressJSONCompactStringsEachRowWithProgress フォーマットを追加しました。#69989 の継続です。JSONCompactWithNamesJSONCompactWithNamesAndTypes は今後 "totals" を出力しません。これは実装上の誤りだったと考えられます。#75037Alexey Milovidov)。
  • ALTER コマンドの一覧の曖昧さをなくすため、format_alter_operations_with_parentheses のデフォルト値を true に変更しました(https://github.com/ClickHouse/ClickHouse/pull/59532 を参照)。これにより 24.3 より前のクラスターとのレプリケーションは動作しなくなります。古いリリースを使用しているクラスターをアップグレードする場合は、サーバー設定でこの設定を無効にするか、先に 24.3 にアップグレードしてください。#75302Raúl Marín)。
  • 正規表現を使用してログメッセージをフィルタリングする機能を削除しました。実装にデータレースがあったため、削除する必要がありました。#75577János Benjamin Antal)。
  • min_chunk_bytes_for_parallel_parsing 設定は、もはや 0 を指定できなくなりました。これにより #71110 が修正されます。#75239Nikita Mikhaylov)。
  • キャッシュ設定内の設定を検証するようにしました。存在しない設定はこれまでは無視されていましたが、今後はエラーをスローし、設定から削除する必要があります。#75452Kseniia Sumarokova)。

新機能

  • Nullable(JSON) をサポートしました。#73556 (Pavel Kruglov).
  • DEFAULT および MATERIALIZED 式でサブカラムをサポートしました。#74403 (Pavel Kruglov).
  • output_format_parquet_write_bloom_filter 設定(デフォルトで有効)を使用した Parquet のブルームフィルター書き込みをサポートしました。#71681 (Michael Kolupaev).
  • Web UI に対話的なデータベースナビゲーション機能が追加されました。#75777 (Alexey Milovidov).
  • ストレージポリシーで読み取り専用ディスクと読み書き可能ディスクを組み合わせて使用できるようになりました(複数ボリュームまたは複数ディスクとして構成可能)。これによりボリューム全体からデータを読み取ることができ、挿入は書き込み可能なディスクが優先されます(いわゆる Copy-on-Write のストレージポリシー)。#75862 (Azat Khuzhin).
  • 新しい Database エンジン DatabaseBackup が追加され、バックアップからテーブル/データベースを即座にアタッチできるようになりました。#75725 (Maksim Kita).
  • Postgres ワイヤプロトコルでのプリペアドステートメントをサポートしました。#75035 (scanhex12).
  • データベースレイヤーなしで ATTACH テーブルできる機能を追加しました。これは Web、S3 などの外部仮想ファイルシステム上の MergeTree テーブルに対して有用です。#75788 (Azat Khuzhin).
  • 2 つの文字列の一部同士を比較する新しい文字列比較関数 compareSubstrings を追加しました。例: SELECT compareSubstrings('Saxony', 'Anglo-Saxon', 0, 6, 5) AS result は「文字列 'Saxon' と 'Anglo-Saxon' について、最初の文字列ではオフセット 0、2 番目の文字列ではオフセット 5 から、それぞれ 6 バイト分を辞書順で比較する」という意味です。#74070 (lgbo).
  • 新しい関数 initialQueryStartTime が追加されました。現在のクエリの開始時刻を返します。この値は、分散クエリ中はすべての分片で同一です。#75087 (Roman Lomonosov).
  • MySQL 向けに、named collection を用いた SSL 認証をサポートしました。#59111 をクローズしました。#59452 (Nikolay Degterinsky).

実験的機能

  • 新しい設定 enable_adaptive_memory_spill_scheduler を追加しました。この設定により、同一クエリ内の複数の Grace JOIN が合計のメモリ使用量を監視し、MEMORY_LIMIT_EXCEEDED を防ぐために外部ストレージへのスピルを適応的にトリガーできるようになります。 #72728 (lgbo).
  • 新しい実験的な Kafka テーブルエンジンが Keeper の機能フラグを完全に尊重するようにしました。 #76004 (János Benjamin Antal).
  • ライセンス上の問題により v24.10 で削除されていた (Intel) QPL コーデックを復元しました。 #76021 (Konstantin Bogdanov).
  • HDFS との統合で、dfs.client.use.datanode.hostname 構成オプションのサポートを追加しました。 #74635 (Mikhail Tiukavkin).

パフォーマンスの改善

  • S3 上の Wide パーツにおける JSON カラム全体の読み取りパフォーマンスを改善しました。サブカラム接頭辞のデシリアライズ用プリフェッチの追加、デシリアライズ済み接頭辞のキャッシュ、サブカラム接頭辞の並列デシリアライズにより実現しています。これにより、SELECT data FROM table のようなクエリでは S3 からの JSON カラム読み取りが 4 倍、SELECT data FROM table LIMIT 10 のようなクエリでは約 10 倍高速になります。#74827 (Pavel Kruglov).
  • max_rows_in_join = max_bytes_in_join = 0 の場合に parallel_hash 内で発生していた不要な競合を修正しました。#75155 (Nikita Taranov).
  • オプティマイザにより結合の左右が入れ替えられた場合に、ConcurrentHashJoin で事前確保が二重に行われていた問題を修正しました。#75149 (Nikita Taranov).
  • 一部の JOIN シナリオでのわずかな改善として、出力行数を事前計算し、その分のメモリを予約するようにしました。#75376 (Alexander Gololobov).
  • WHERE a < b AND b < c AND c < 5 のようなクエリに対して、新しい比較条件(a < 5 AND b < 5)を推論してフィルタリング能力を向上させることができるようにしました。#73164 (Shichao Jin).
  • Keeper の改善: パフォーマンス向上のため、インメモリストレージへコミットする際のダイジェスト計算を無効化しました。これは keeper_server.digest_enabled_on_commit 設定で有効化できます。リクエストの前処理時には引き続きダイジェストが計算されます。#75490 (Antonio Andelic).
  • 可能な場合に、JOIN の ON 句からフィルタ式をプッシュダウンするようにしました。#75536 (Vladimir Cherkasov).
  • MergeTree において、カラムおよび索引のサイズを遅延評価するようにしました。#75938 (Pavel Kruglov).
  • MATERIALIZE TTL において ttl_only_drop_parts を再び尊重するようにしました。TTL を再計算してパーツを空のパーツに置き換えることで削除するため、必要なカラムのみを読み取ります。#72751 (Andrey Zvonov).
  • plain_rewritable メタデータファイル向けの書き込みバッファサイズを削減しました。#75758 (Julia Kartseva).
  • 一部のウィンドウ関数でメモリ使用量を削減しました。#65647 (lgbo).
  • parquet Bloom フィルタと min/max 索引を同時に評価するようにしました。これは x = 3 or x > 5 かつ data = [1, 2, 4, 5] のようなケースを正しくサポートするために必要です。#71383 (Arthur Passos).
  • Executable ストレージに渡されたクエリは、もはやシングルスレッド実行に限定されません。#70084 (yawnt).
  • ALTER TABLE FETCH PARTITION においてパーツを並列にフェッチするようにしました(スレッドプールのサイズは max_fetch_partition_thread_pool_size で制御されます)。#74978 (Azat Khuzhin).
  • indexHint 関数を用いた述語を PREWHERE に移動できるようにしました。#74987 (Anton Popov).

改良

  • LowCardinality カラムのメモリ内サイズの計算を修正しました。 #74688 (Nikita Taranov).
  • processors_profile_log テーブルに、30 日の有効期限 (TTL) を持つデフォルト設定が適用されました。 #66139 (Ilya Yatsishin).
  • クラスタ設定で分片に名前を設定できるようにしました。 #72276 (MikhailBurdukov).
  • Prometheus remote write レスポンスの成功ステータスコードを 200/OK から 204/NoContent に変更しました。 #74170 (Michael Dempsey).
  • max_remote_read_network_bandwidth_for_servemax_remote_write_network_bandwidth_for_server を、サーバーを再起動せずに動的に再読み込みできるようにしました。#74206 (Kai Zhu)。
  • バックアップの作成時に、チェックサムの計算に blob パスを使用できるようにしました。 #74729 (Vitaly Baranov).
  • system.query_cache にクエリ ID カラムを追加しました(#68205 を解決)。#74982NamHoaiNguyen)。
  • ALTER TABLE ... FREEZE ... クエリを、KILL QUERY またはタイムアウト値(max_execution_time)による自動処理でキャンセルできるようになりました。 #75016 (Kirill).
  • groupUniqArrayArrayMapSimpleAggregateFunction としてサポートする機能を追加しました。 #75034 (Miel Donkers)。
  • データベースエンジン Iceberg でカタログの認証情報設定を非表示にしました。 #74559 をクローズしました。 #75080Kseniia Sumarokova)。
  • intExp2 / intExp10: 未定義だった動作を明確化:引数が小さすぎる場合は 0 を返し、大きすぎる場合は 18446744073709551615 を返し、NaN の場合は例外をスローします。 #75312 (Vitaly Baranov).
  • DatabaseIceberg のカタログ設定で s3.endpoint をネイティブにサポートしました。 #74558 をクローズしました。 #75375 (Kseniia Sumarokova)。
  • ユーザーが SYSTEM DROP REPLICA を実行する際に十分な権限を持っていない場合、黙って失敗するのではなくエラーを報告するようにしました。 #75377 (Bharat Nallan).
  • いずれかのシステムログがフラッシュに失敗した回数を示す ProfileEvent を追加しました。 #75466 (Alexey Milovidov)。
  • 復号および解凍処理に対するチェックと追加のログ出力を追加しました。 #75471 (Vitaly Baranov).
  • parseTimeDelta 関数でマイクロ記号(U+00B5)のサポートを追加しました。これにより、マイクロ記号(U+00B5)とギリシャ文字 μ(U+03BC)の両方がマイクロ秒の有効な表現として認識され、ClickHouse の動作が Go の実装と一致します(time.go を参照 および time/format.go)。 #75472 (Vitaly Orlov)。
  • サーバー側の設定 (send_settings_to_client) を、クライアント側の設定 (apply_settings_from_server) に置き換えました。この設定は、クライアント側コード(例: INSERT データのパース処理やクエリ出力の整形)が、サーバーの users.xml およびユーザープロファイルに定義された設定を使用すべきかどうかを制御します。これを無効にすると、クライアントのコマンドライン、セッション、およびクエリからの設定のみが使用されます。これはネイティブクライアントにのみ適用され(例: HTTP には適用されません)、またクエリ処理の大部分(サーバー側で実行される部分)には適用されない点に注意してください。 #75478 (Michael Kolupaev).
  • 構文エラーに対するエラーメッセージを改善しました。これまでは、クエリが大きすぎて、長さが制限を超えるトークンが非常に長い文字列リテラルだった場合、その非常に長いトークンの 2 つの例に挟まれて、本来の原因に関するメッセージが途中で失われていました。UTF-8 文字を含むクエリがエラーメッセージ内で不正に切り詰められる問題を修正しました。クエリ断片が過剰に引用符で囲まれてしまう問題を修正しました。これにより #75473 がクローズされました。#75561Alexey Milovidov)。
  • ストレージ S3(Azure)Queue に profile events を追加しました。 #75618 (Kseniia Sumarokova).
  • 互換性維持のため、サーバーからクライアントへの設定送信 (send_settings_to_client=false) を無効化しました(この機能は、利便性向上のため、後にクライアント側の設定として再実装される予定です)。 #75648 (Michael Kolupaev).
  • バックグラウンドスレッドで定期的に読み取られる複数のソースからの情報を用いて内部メモリトラッカーを補正するための設定 memory_worker_correct_memory_tracker を追加しました。 #75714 (Antonio Andelic).
  • system.processes にカラム normalized_query_hash を追加しました。注意: normalizedQueryHash 関数を使えばその場で容易に計算できますが、今後の変更に備えるために必要です。 #75756 (Alexey Milovidov).
  • system.tables をクエリしても、もはや存在しないデータベース上に作成された Merge テーブルがあっても例外は発生しません。複雑な処理を行うことを許可していないため、Hive テーブルから getTotalRows メソッドを削除しました。 #75772 (Alexey Milovidov).
  • バックアップの start_timeend_time をマイクロ秒単位で保存するようにしました。 #75929 (Aleksandr Musorin).
  • RSS による補正が行われない内部グローバルメモリトラッカーの値を示す MemoryTrackingUncorrected メトリクスを追加しました。 #75935 (Antonio Andelic).
  • PostgreSQLMySQL のテーブル関数で、localhost:1234/handle のようなエンドポイントをパースできるようにしました。これにより、https://github.com/ClickHouse/ClickHouse/pull/52503 で導入されたリグレッション(退行バグ)を修正しました。 #75944 (Nikita Mikhaylov)。
  • サーバー設定 throw_on_unknown_workload を追加しました。この設定により、workload 設定に未知の値が指定されたクエリに対する動作を選択できます。無制限なアクセスを許可する(デフォルト)か、RESOURCE_ACCESS_DENIED エラーをスローするかを切り替えられます。すべてのクエリでワークロードスケジューリングを利用させたい場合に役立ちます。 #75999 (Sergei Trifonov)。
  • 不要な場合には、ARRAY JOIN 内でサブカラムを getSubcolumn に書き換えないようにしました。 #76018 (Pavel Kruglov).
  • テーブル読み込み時のコーディネーションエラーを再試行するようにしました。 #76020 (Alexander Tokmakov).
  • SYSTEM FLUSH LOGS で個々のログをフラッシュできるようになりました。 #76132 (Raúl Marín).
  • /binary サーバーのページを改良しました。Morton 曲線の代わりに Hilbert 曲線を使用します。正方形内に 512 MB 分のアドレスを表示し、これにより正方形全体がより隙間なく埋まるようにしました(以前のバージョンでは、アドレスは正方形の半分しか埋めていませんでした)。アドレスの色付けを、関数名ではなくライブラリ名に基づいて行うようにしました。表示領域外にも、より余裕をもってスクロールできるようにしました。 #76192 (Alexey Milovidov)。
  • TOO_MANY_SIMULTANEOUS_QUERIES エラーが発生した場合に、ON CLUSTER クエリを再試行するようにしました。 #76352 (Patrick Galbraith).
  • サーバーの CPU の相対的な不足度合いを算出する CPUOverload 非同期メトリクスを追加。 #76404 (Alexey Milovidov).
  • output_format_pretty_max_rows のデフォルト値を 10000 から 1000 に変更しました。使い勝手の観点から、この方が望ましいと考えています。 #76407 (Alexey Milovidov).

バグ修正(公式安定版リリースにおけるユーザーに影響する不具合)

  • クエリの解釈中に発生した例外を、クエリで指定されたカスタムフォーマットで整形するよう修正しました。これまでのバージョンでは、例外はクエリで指定されたフォーマットではなくデフォルトフォーマットで整形されていました。これにより #55422 が解決されます。 #74994 (Alexey Milovidov)。
  • SQLite の型マッピングを修正し、整数型を int64、浮動小数点型を float64 に対応付け。 #73853 (Joanna Hulboj)。
  • 親スコープからの識別子の解決を修正しました。WITH 句内の式に対してエイリアスを使用できるようにしました。#58994 を修正。#62946 を修正。#63239 を修正。#65233 を修正。#71659 を修正。#71828 を修正。#68749 を修正。#66143Dmitry Novik)。
  • negate 関数の単調性を修正しました。以前のバージョンでは、x が主キーである場合にクエリ select * from a where -x = -42; を実行すると、誤った結果が返されることがありました。 #71440 (Michael Kolupaev).
  • arrayIntersect における空のタプルの処理を修正しました。これにより #72578 を修正しています。#72581Amos Bird)。
  • JSON サブオブジェクトのサブカラムの読み取りで誤ったプレフィックスが使用されていた問題を修正。 #73182 (Pavel Kruglov).
  • クライアントとサーバー間の通信で Native フォーマットの設定が正しく伝播されるように修正しました。 #73924 (Pavel Kruglov).
  • 一部のストレージで未サポートの型を検出するようにしました。 #74218 (Pavel Kruglov)。
  • macOS 上の PostgreSQL インターフェイス経由で実行した INSERT INTO SELECT クエリにより発生していたクラッシュを修正しました(issue #72938)。 #74231Artem Yurov)。
  • レプリケーテッドデータベース内の初期化されていない max_log_ptr を修正しました。 #74336 (Konstantin Morozov).
  • interval 型の挿入時に発生していたクラッシュを修正しました(issue #74299)。#74478NamHoaiNguyen)。
  • 定数 JSON リテラルの整形処理を修正しました。これまで、別のサーバーにクエリを送信する際に構文エラーが発生する可能性がありました。 #74533 (Pavel Kruglov).
  • 暗黙的な PROJECTION が有効な場合に、定数パーティション式を使用した CREATE クエリが不正になる問題を修正しました。これにより #74596 が修正されます。#74634Amos Bird)。
  • INSERT が例外で終了した後に、接続が壊れたまま残ることがないようにしました。 #74740 (Azat Khuzhin).
  • 中間状態のままになっていた接続を再利用しないように修正しました。 #74749 (Azat Khuzhin).
  • JSON 型宣言をパースする際、型名が大文字でない場合にクラッシュする問題を修正。 #74784 (Pavel Kruglov).
  • Keeper: 接続が確立される前に切断されていた場合に発生する logical_error を修正。 #74844 (Michael Kolupaev).
  • AzureBlobStorage を使用しているテーブルが存在する場合にサーバーが起動できない問題を修正しました。テーブルは Azure へのリクエストを送信することなく読み込まれます。 #74880 (Alexey Katsman).
  • BACKUP および RESTORE 操作において、query_log 内の used_privilegesmissing_privileges フィールドが記録されない問題を修正。 #74887 (Alexey Katsman).
  • HDFS の select リクエスト中に SASL エラーが発生した場合に Kerberos チケットをリフレッシュするようにしました。 #74930 (inv2004).
  • startup_scripts 内の Replicated データベースへのクエリを修正。 #74942 (Azat Khuzhin).
  • JOIN ON 句で NULL セーフな比較が使用されている場合に、型エイリアスが付けられた式に起因する問題を修正しました。 #74970 (Vladimir Cherkasov)。
  • remove 操作が失敗した場合に、part の状態を deleting から outdated にロールバックするようにしました。 #74985 (Sema Checherinda).
  • 以前のバージョンでは、スカラーサブクエリが存在する場合、データフォーマットの初期化中に(サブクエリの処理から蓄積された)進捗の書き込みを開始しており、これは HTTP ヘッダーが書き出される前に行われていました。その結果、X-ClickHouse-QueryId や X-ClickHouse-Format などの HTTP ヘッダーや Content-Type が失われていました。 #74991 (Alexey Milovidov).
  • database_replicated_allow_replicated_engine_arguments=0 設定時の CREATE TABLE AS... クエリを修正しました。 #75000 (Bharat Nallan).
  • INSERT 実行時の例外発生後にクライアント側の接続が異常な状態のまま残る問題を修正。 #75030 (Azat Khuzhin).
  • PSQL レプリケーション中の未捕捉例外により発生していたクラッシュの問題を修正。 #75062 (Azat Khuzhin)。
  • SASL により任意の RPC 呼び出しが失敗する可能性があり、この修正により、krb5 チケットの有効期限が切れている場合に呼び出しを再実行できるようになりました。 #75063 (inv2004).
  • 設定 optimize_function_to_subcolumns が有効な場合の ArrayMapNullable(..) カラムに対する索引(プライマリおよびセカンダリ)の扱いを修正しました。以前は、これらのカラムに対する索引が無視されることがありました。 #75081 (Anton Popov).
  • inner テーブルを持つ materialized view を作成する際には、flatten_nested を無効化するようにしました。このようにフラット化されたカラムは使用できないためです。 #75085 (Christoph Wurm)。
  • forwarded_for フィールド内の一部の IPv6 アドレス(::ffff:1.1.1.1 など)が誤って解釈され、その結果、例外とともにクライアント接続が切断される問題を修正。 #75133 (Yakov Olkhovskiy).
  • LowCardinality の Nullable データ型に対する NULL セーフな JOIN の処理を修正しました。以前は、IS NOT DISTINCT FROM<=>a IS NULL AND b IS NULL OR a == b のような NULL セーフな比較を伴う JOIN の ON 句が、LowCardinality カラムで正しく動作していませんでした。 #75143 (Vladimir Cherkasov).
  • NumRowsCache の total_number_of_rows をカウントする際に key_condition が指定されていないことを検証するようにしました。 #75164 (Daniil Ivanik).
  • 新しいアナライザーで、未使用の補間を含むクエリの問題を修正しました。 #75173 (János Benjamin Antal).
  • INSERT と CTE の併用時にクラッシュを引き起こすバグを修正。 #75188 (Shichao Jin).
  • Keeper の修正:ログのロールバック時に、破損した changelog に書き込まないようにしました。#75197 (Antonio Andelic)。
  • 適切な箇所では BFloat16 をスーパータイプとして使用するようにしました。これにより次の issue がクローズされました: #74404#75236Nikita Mikhaylov)。
  • any_join_distinct_right_table_keys と JOIN 句の ON 条件での OR を併用した場合に、結合結果で予期しないデフォルト値が発生していた問題を修正。 #75262 (Vladimir Cherkasov).
  • azureblobstorage テーブルエンジンの認証情報をマスクするよう修正しました。 #75319 (Garrett Thomas).
  • PostgreSQL、MySQL、SQLite などの外部データベースに対して、ClickHouse が誤ってフィルタープッシュダウンを行ってしまうことがある問題を修正しました。これにより、次の issue が解決されました: #71423#75320Nikita Mikhaylov)。
  • Protobuf 形式での出力中に、並行して SYSTEM DROP FORMAT SCHEMA CACHE クエリが実行されると発生しうる Protobuf スキーマキャッシュのクラッシュを修正しました。 #75357 (Pavel Kruglov)。
  • HAVING からのフィルタが並列レプリカでプッシュダウンされる場合に発生し得る、論理エラーまたは未初期化メモリ使用の問題を修正しました。 #75363 (Vladimir Cherkasov)。
  • icebergS3icebergAzure テーブル関数およびテーブルエンジンで機密情報を非表示にしました。 #75378 (Kseniia Sumarokova).
  • 計算結果として空文字列となるトリム文字を指定した TRIM 関数が、正しく処理されるようになりました。例:SELECT TRIM(LEADING concat('') FROM 'foo')(Issue #69922)。#75399Manish Gill)。
  • IOutputFormat のデータレースを修正。 #75448 (Pavel Kruglov)。
  • 分散テーブル上での JOIN で Array 型の JSON サブカラムを使用した際に発生する可能性のある、Elements ... and ... of Nested data structure ... (Array columns) have different array sizes というエラーを修正しました。 #75512 (Pavel Kruglov).
  • CODEC(ZSTD, DoubleDelta) 使用時に発生するデータ破損を修正しました。#70031 をクローズ。#75548Konstantin Bogdanov)。
  • allow_feature_tier と compatibility MergeTree 設定の相互作用を修正しました。 #75635 (Raúl Marín).
  • ファイルが再試行された際に、system.s3queue_log 内の processed_rows の値が誤って記録される問題を修正。#75666 (Kseniia Sumarokova)。
  • materialized view が URL エンジンに書き込みを行う際に接続障害が発生した場合、materialized_views_ignore_errors の設定が正しく適用されるようにしました。 #75679 (Christoph Wurm).
  • 異なる型のカラム間で複数の非同期の RENAME クエリ(alter_sync = 0)を実行した後に、MergeTree テーブルから読み取る際にまれに発生していたクラッシュを修正しました。#75693 (Anton Popov)。
  • 一部の UNION ALL を含むクエリで発生していた Block structure mismatch in QueryPipeline stream エラーを修正。#75715 (Nikolai Kochetov)。
  • PK カラムを ALTER MODIFY した際に、その PK を持つ PROJECTION を再構築するようにしました。以前は、PROJECTION の PK に使用されているカラムを ALTER MODIFY した後の SELECT 時に CANNOT_READ_ALL_DATA エラーが発生する可能性がありました。 #75720 (Pavel Kruglov).
  • スカラーサブクエリに対する ARRAY JOIN の結果が analyzer 使用時に誤っていた問題を修正しました。 #75732 (Nikolai Kochetov).
  • DistinctSortedStreamTransform におけるヌルポインタ参照を修正しました。 #75734 (Nikita Taranov)。
  • allow_suspicious_ttl_expressions の挙動を修正しました。 #75771 (Aleksei Filatov)。
  • 関数 translate における未初期化メモリの読み取りを修正しました。これにより #75592 が解決されました。 #75794 (Alexey Milovidov)。
  • Native フォーマットにおいて、JSON 文字列のフォーマットにフォーマット設定が伝播されるようにしました。 #75832 (Pavel Kruglov).
  • v24.12 において結合アルゴリズムとして parallel hash をデフォルトで有効化したことを、設定変更履歴に記録しました。これにより、互換性レベルに v24.12 より古いバージョンが設定されている場合、ClickHouse は引き続き非 parallel hash アルゴリズムを用いて結合を実行します。 #75870 (Robert Schulze).
  • 暗黙的に追加された min-max インデックスを持つテーブルを新しいテーブルにコピーできない問題を修正しました(issue #75677)。#75877Smita Kulkarni)。
  • clickhouse-library-bridge はファイルシステムから任意のライブラリを開くことができるため、その性質上、分離された環境内でのみ実行するのが安全です。clickhouse-server の近くで実行された際の脆弱性を防ぐため、設定で指定された場所にあるライブラリのみをパスとして許可するよう制限します。この脆弱性は Arseniy Dugin によって ClickHouse Bug Bounty Program を通じて発見されました。#75954Alexey Milovidov)。
  • いくつかのメタデータのシリアライゼーションに JSON を使用していましたが、これは誤りでした。JSON は、ゼロバイトを含む文字列リテラル内のバイナリデータをサポートしないためです。SQL クエリにはバイナリデータや不正な UTF-8 を含めることができるので、メタデータファイル側でもこれをサポートする必要があります。同時に、ClickHouse の JSONEachRow などのフォーマットは、バイナリデータの完全なラウンドトリップを優先し、JSON 標準からあえて逸脱することでこの問題を回避しています。その背景については、こちらを参照してください: https://github.com/ClickHouse/ClickHouse/pull/73668#issuecomment-2560501790。解決策は、Poco::JSON ライブラリを ClickHouse における JSON 形式のシリアライゼーションと一貫させることです。これにより #73668 がクローズされます。 #75963 (Alexey Milovidov)。
  • ストレージ S3Queue におけるコミット上限チェックを修正。 #76104 (Kseniia Sumarokova)。
  • 自動索引(add_minmax_index_for_numeric_columns/add_minmax_index_for_string_columns)を有効にした MergeTree テーブルの ATTACH を修正。 #76139 (Azat Khuzhin).
  • ジョブの親スレッドのスタックトレース(enable_job_stack_trace 設定)が出力されない問題を修正しました。また、enable_job_stack_trace 設定がスレッドに正しく伝播されず、その結果スタックトレースの内容が常にこの設定を反映しない場合がある問題を修正しました。 #76191 (Yakov Olkhovskiy).
  • ALTER RENAME に対して誤って CREATE USER 権限を要求していた権限チェックを修正しました。#74372 をクローズしました。 #76241pufit)。
  • ビッグエンディアンアーキテクチャ上で FixedString を使用する reinterpretAs を修正。 #76253 (Azat Khuzhin).
  • S3Queue における論理エラー「Expected current processor to be equal to for bucket 」を修正しました。 #76358 (Kseniia Sumarokova).
  • Memory データベースにおける ALTER のデッドロックを修正。 #76359 (Azat Khuzhin).
  • WHERE 句の条件に pointInPolygon 関数が含まれている場合の索引解析における論理エラーを修正しました。 #76360 (Anton Popov)。
  • シグナルハンドラー内の潜在的に危険な呼び出しを修正。 #76549 (Yakov Olkhovskiy).
  • PartsSplitter における逆順キーのサポートを修正しました。これにより #73400 が修正されました。#73418 (Amos Bird)。

ビルド/テスト/パッケージングの改善

  • ARM および Intel Mac の両方で HDFS のビルドをサポート。#74244 (Yan Xin).
  • Darwin 向けクロスコンパイル時に ICU と GRPC を有効化。#75922 (Raúl Marín).
  • 組み込み LLVM をバージョン 19 に更新。#75148 (Konstantin Bogdanov).
  • Docker イメージでデフォルトユーザーのネットワークアクセスを無効化。#75259 (Mikhail f. Shiryaev). すべての clickhouse-server 関連の処理を 1 つの関数にまとめ、entrypoint.sh でデフォルトバイナリを起動する場合にのみ実行されるように変更。長らく先送りされていた改善で、#50724 で提案されていたもの。users.xml から値を取得するためのスイッチ --usersclickhouse-extract-from-config に追加。#75643 (Mikhail f. Shiryaev).
  • バイナリから約 20 MB のデッドコードを削除。#76226 (Alexey Milovidov).

ClickHouse 25.1 リリース, 2025-01-28

下位互換性のない変更

  • JSONEachRowWithProgress は、進捗が発生するたびに進捗情報を書き出すようになりました。以前のバージョンでは、進捗は結果の各ブロックごとにしか表示されず、ほとんど役に立ちませんでした。進捗の表示方法を変更し、ゼロ値は表示しないようにしました。これにより #70800 が解決されました。 #73834 (Alexey Milovidov).
  • Merge テーブルは、基になるテーブル群の構造を、それらのカラムの和集合を取り、共通の型を導出することで統一するようになりました。これにより #64864 が解決されました。特定のケースでは、この変更は下位互換性がない可能性があります。一例として、テーブル間に共通の型が存在しないが、先頭のテーブルの型への変換は依然として可能なケースが挙げられます(UInt64 と Int64、あるいは任意の数値型と String の組み合わせなど)。以前の挙動に戻したい場合は、merge_table_max_tables_to_look_for_schema_inference1 に設定するか、compatibility24.12 以前に設定してください。 #73956 (Alexey Milovidov).
  • Parquet 出力フォーマットは、Date および DateTime カラムを、生の数値として書き出すのではなく、Parquet がサポートする日付/時刻型に変換するようになりました。DateTimeDateTime64(3)(以前は UInt32)になりました。output_format_parquet_datetime_as_uint32 を設定すると、以前の挙動に戻せます。DateDate32(以前は UInt16)になります。 #70950 (Michael Kolupaev).
  • 既定では、ORDER BY および less/greater/equal/etc といった比較関数で、JSON / Object / AggregateFunction のような比較不能な型は許可されなくなりました。 #73276 (Pavel Kruglov).
  • 廃止予定だった MaterializedMySQL データベースエンジンは削除され、利用できなくなりました。 #73879 (Alexey Milovidov).
  • mysql dictionary ソースは、もはや SHOW TABLE STATUS クエリを実行しなくなりました。これは、最近の MySQL バージョンおよび InnoDB テーブルでは、このクエリが何の有用な情報も提供しないためです。これにより #72636 が解決されました。この変更は下位互換性がありますが、気付いてもらえるようにこのカテゴリに含めています。 #73914 (Alexey Milovidov).
  • CHECK TABLE クエリには、新たに個別の CHECK 権限が必要になりました。以前のバージョンでは、これらのクエリを実行するには SHOW TABLES 権限だけで十分でした。しかし、CHECK TABLE クエリは高負荷になり得るうえ、SELECT クエリ向けの通常のクエリ複雑性制限はこれには適用されませんでした。そのため、DoS の可能性につながっていました。 #74471 (Alexey Milovidov).
  • 関数 h3ToGeo() は、結果を(幾何関数における標準的な順序である)(lat, lon) の順で返すようになりました。従来の (lon, lat) の結果順序を維持したいユーザーは、h3togeo_lon_lat_result_order = true を設定してください。 #74719 (Manish Gill).
  • 新しい MongoDB ドライバーがデフォルトになりました。従来のドライバーを引き続き使用したいユーザーは、サーバー設定 use_legacy_mongodb_integration を true に設定してください。 #73359 (Robert Schulze).

新機能

  • SELECT クエリ送信直後、その実行中に、未完了(バックグラウンドプロセスでまだマテリアライズされていない)のミューテーションを即時に適用できるようになりました。apply_mutations_on_fly を設定することで有効化できます。 #74877 (Anton Popov).
  • Iceberg テーブルで、時間ベースの変換パーティション操作に対するパーティションプルーニングを実装しました。 #72044 (Daniil Ivanik)。
  • MergeTree のソートキーおよびスキップ索引でサブカラムをサポートしました。 #72644 (Pavel Kruglov).
  • Apache Arrow/Parquet/ORC からの HALF_FLOAT 値の読み取りをサポートしました(Float32 として読み込みます)。これにより #72960 がクローズされました。IEEE-754 の half float は BFloat16 と同じではないことに注意してください。#73835 をクローズしました。#73836Alexey Milovidov)。
  • system.trace_log テーブルに、シンボル化されたスタックトレースを格納する 2 つの新しいカラム symbolslines が追加されます。これにより、プロファイル情報の収集とエクスポートが容易になります。これは trace_log 内のサーバー設定値 symbolize によって制御され、デフォルトで有効になっています。 #73896 (Alexey Milovidov)。
  • テーブル内でオートインクリメントの連番を生成するために使用できる新しい関数 generateSerialID を追加しました。kazalika による #64310 の継続対応です。これにより #62485 がクローズされました。#73950Alexey Milovidov)。
  • DDL クエリに対して、query1 PARALLEL WITH query2 PARALLEL WITH query3 ... PARALLEL WITH queryN という構文を追加しました。これは、クエリ {query1, query2, ... queryN} を互いに並列実行できる(かつ、その方が望ましい)ことを意味します。#73983Vitaly Baranov)。
  • デシリアライズ済みのスキッピング索引グラニュール用のインメモリキャッシュを追加しました。これにより、スキッピング索引を使用する繰り返しクエリの実行が高速化されます。新しいキャッシュのサイズは、サーバー設定 skipping_index_cache_sizeskipping_index_cache_max_entries によって制御されます。このキャッシュ追加の主な動機はベクトル類似度索引であり、これらは今回の変更によって大幅に高速化されました。 #70102 (Robert Schulze).
  • 現在、組み込みの Web UI では、クエリ実行中に進行状況バーが表示されます。そこからクエリをキャンセルできます。合計レコード数と、速度に関する詳細な情報を表示します。データが到着し次第、テーブルをインクリメンタルにレンダリングできます。HTTP 圧縮を有効化しました。テーブルのレンダリングが高速になりました。テーブルヘッダーが固定表示(スティッキー)になりました。セルを選択し、矢印キーで移動できるようになりました。選択したセルのアウトラインによってセルが小さくなってしまう問題を修正しました。セルはマウスホバーでは拡大されず、選択時のみ拡大されるようになりました。受信データのレンダリングをいつ停止するかの判断は、サーバー側ではなくクライアント側で行われます。数値の桁区切りをハイライト表示します。全体的なデザインが刷新され、より大胆になりました。サーバーへ到達可能かどうかと認証情報の正しさを確認し、サーバーバージョンと稼働時間を表示します。クラウドアイコンは、Safari を含むあらゆるフォントで輪郭表示されます。ネストされたデータ型内の大きな整数も、より適切にレンダリングされます。inf/nan を正しく表示します。カラムヘッダーにマウスオーバーすると、そのデータ型を表示します。 #74204 (Alexey Milovidov)。
  • MergeTree によって管理されるカラムに対して、設定 add_minmax_index_for_numeric_columns(数値カラム用)および add_minmax_index_for_string_columns(文字列カラム用)を使用し、デフォルトで min-max(スキップ)索引を作成できる機能を追加しました。現時点ではどちらの設定も無効化されているため、まだ動作の変更はありません。 #74266 (Smita Kulkarni)。
  • system.query_log、ネイティブプロトコルの ClientInfo、およびサーバーログに script_query_numberscript_line_number フィールドを追加しました。これにより #67542 がクローズされました。この機能の立ち上げに先立って貢献した #68133 での pinsvin00 の働きに感謝します。 #74477Alexey Milovidov)。
  • パターン内の最長のイベントチェーンに対して、一致したイベントのタイムスタンプを返す集約関数 sequenceMatchEvents を追加しました。 #72349 (UnamedRus)。
  • 関数 arrayNormalizedGini を追加。 #72823 (flynn)。
  • DateTime64 に対するマイナス演算子のサポートを追加し、DateTime64 同士および DateTime との減算を可能にしました。 #74482 (Li Yin)。

実験的機能

パフォーマンスの向上

  • 関数 indexHint を最適化しました。これにより、関数 indexHint の引数としてのみ使用されているカラムはテーブルから読み出されなくなりました。 #74314 (Anton Popov)。もし indexHint 関数がエンタープライズ向けデータアーキテクチャの中核を成しているのであれば、この最適化は大きな助けになるでしょう。
  • parallel_hash JOIN アルゴリズムに対する max_joined_block_size_rows 設定の計算をより正確にしました。これにより、hash アルゴリズムと比較してメモリ消費量が増加してしまうことを避けられます。#74630Nikita Taranov)。
  • MergingAggregated ステップに対して、クエリプランレベルでの述語プッシュダウン最適化をサポートしました。これにより、analyzer を使用する一部のクエリのパフォーマンスが向上します。#74073 (Nikolai Kochetov)。
  • parallel_hash JOIN アルゴリズムの probe フェーズから、左テーブルのブロックをハッシュで分割する処理が削除されました。 #73089 (Nikita Taranov).
  • RowBinary 入力形式を最適化。#63805 をクローズしました。#65059Pavel Kruglov)。
  • optimize_on_insert が有効な場合、レベル 1 のパーツとして書き込みます。これにより、新しく書き込まれたパーツに対する FINAL 付きクエリに複数の最適化を適用できるようになります。 #73132 (Anton Popov)。
  • 一部の低レベルな最適化により、文字列のデシリアライズ処理を高速化しました。 #65948 (Nikita Taranov).
  • マージ処理などでレコード間の等値比較を行う際、まず値が異なる可能性が最も高いカラムから行の比較を開始するようにしました。 #63780 (UnamedRus).
  • 右側の結合テーブルをキーで再ランク付けし、grace hash join のパフォーマンスを向上。 #72237 (kevinyhzou).
  • arrayROCAUCarrayAUCPR が曲線全体に対する部分面積を計算できるようにし、その計算を巨大なデータセットに対して並列化できるようにしました。 #72904 (Emmanuel).
  • 多数のアイドル状態のスレッドを生成しないようにしました。 #72920 (Guo Wangyang).
  • テーブル関数で波括弧による展開のみを行う場合には、BLOB ストレージのキーを列挙しないようにしました。#73333 をクローズしました。#73518 (Konstantin Bogdanov).
  • Nullable 引数に対して実行される関数の短絡評価を最適化。 #73820 (李扬).
  • 非関数カラムには maskedExecute を適用しないようにし、ショートサーキット実行のパフォーマンスを改善しました。 #73965 (lgbo).
  • Kafka/NATS/RabbitMQ/FileLog の入力フォーマットでのヘッダー自動検出を無効化し、パフォーマンスを向上させました。 #74006 (Azat Khuzhin)。
  • GROUPING SETS を用いた集計の後に、より高い並列度でパイプラインを実行するようにしました。 #74082 (Nikita Taranov).
  • MergeTreeReadPool におけるクリティカルセクションの範囲を縮小しました。 #74202 (Guo Wangyang).
  • Parallel replicas のパフォーマンスを改善しました。parallel replicas プロトコルに関係しないパケットについては、クエリのイニシエーター側でのデシリアライズが、常にパイプラインスレッド内で行われるようになりました。以前は、パイプラインのスケジューリングを担当するスレッドで実行されることがあり、その結果、イニシエーターの応答性が低下し、パイプライン実行が遅延する可能性がありました。#74398 (Igor Nikonov)。
  • Keeper における大規模な複数リクエストのパフォーマンスを改善。 #74849 (Antonio Andelic)。
  • ログラッパーを値として扱い、ヒープに割り当てないようにしました。 #74034 (Mikhail Artemenko).
  • MySQL および Postgres の Dictionary レプリカへの接続をバックグラウンドで再接続し、対応する Dictionary へのリクエストが遅延しないようにしました。 #71101 (Yakov Olkhovskiy).
  • Parallel replicas 機能では、レプリカ選択を改善するためにレプリカの可用性に関する過去の情報を利用していましたが、接続できない場合にレプリカのエラー数が更新されていませんでした。この PR により、レプリカが利用不能な場合にはエラー数が更新されるようになりました。 #72666 (zoomxi)。
  • マージ処理中にスキップ索引の作成を抑制する MergeTree の設定 materialize_skip_indexes_on_merge を追加しました。これにより、スキップ索引がいつ作成されるかを ALTER TABLE [..] MATERIALIZE INDEX [...] を通じて明示的に制御できます。スキップ索引の構築コストが高い場合(例: ベクター類似度索引)に有用です。 #74401 (Robert Schulze)。
  • Storage(S3/Azure)Queue における Keeper へのリクエストを最適化しました。 #74410 (Kseniia Sumarokova). #74538 (Kseniia Sumarokova).
  • デフォルトで並列レプリカを最大 1000 個まで使用可能になりました。 #74504 (Konstantin Bogdanov).
  • S3 ディスクからの読み取り時の HTTP セッション再利用を改善 (#72401)。 #74548 (Julian Maicher)。

改良

  • 暗黙的な ENGINE を持つ CREATE TABLE クエリで SETTINGS が利用可能になり、ENGINE の設定とクエリ設定を混在して指定できるようになりました。 #73120 (Raúl Marín).
  • use_hive_partitioning をデフォルトで有効にします。 #71636 (Yarik Briukhovetskyi)。
  • 異なるパラメータを持つ JSON 型間での CAST および ALTER をサポートしました。 #72303 (Pavel Kruglov).
  • JSONカラム値の等値比較をサポートしました。 #72991 (Pavel Kruglov).
  • JSON サブカラムを含む識別子のフォーマットを改善し、不要なバッククォートが付かないようにしました。 #73085 (Pavel Kruglov).
  • インタラクティブなメトリクス表示を改善しました。並列レプリカからのメトリクスがすべて表示されない不具合を修正しました。メトリクスは最新の更新時刻が新しい順、その後名前の辞書順で表示します。古くなったメトリクス(stale)は表示しません。 #71631 (Julia Kartseva).
  • JSON 出力フォーマットをデフォルトで整形表示するようにしました。これを制御するための新しい設定 output_format_json_pretty_print を追加し、デフォルトで有効化しました。 #72148 (Pavel Kruglov).
  • LowCardinality(UUID) をデフォルトで許可するようにしました。これは ClickHouse Cloud のお客様の間で実用的であることが確認されています。 #73826 (Alexey Milovidov)。
  • インストール中のメッセージを改善しました。 #73827 (Alexey Milovidov).
  • ClickHouse Cloud のパスワードリセット時のメッセージを改善。 #73831 (Alexey Milovidov).
  • ファイルへの追記を行えない File テーブルのエラーメッセージを改善。 #73832 (Alexey Milovidov).
  • ユーザーが誤ってターミナルでバイナリ形式(Native、Parquet、Avro など)の出力を要求した場合に、確認を求めるようにしました。これにより #59524 がクローズされました。 #73833Alexey Milovidov)。
  • ターミナル上での可読性を高めるため、Pretty および Vertical フォーマットで末尾の空白をハイライト表示するようにしました。この動作は output_format_pretty_highlight_trailing_spaces 設定で制御されます。最初の実装は #72996 にて Braden Burns によって行われました。#71590 をクローズします。#73847Alexey Milovidov)。
  • clickhouse-clientclickhouse-local は、標準入力がファイルからリダイレクトされている場合、その圧縮形式を自動検出します。これにより #70865 がクローズされました。#73848Alexey Milovidov)。
  • Pretty 形式では、長すぎるカラム名をデフォルトで切り詰めるようにしました。これは output_format_pretty_max_column_name_width_cut_tooutput_format_pretty_max_column_name_width_min_chars_to_cut の設定で制御できます。これは #66502 における tanmaydatta の作業の継続です。#65968 をクローズします。#73851Alexey Milovidov)。
  • Pretty フォーマットをさらに見やすくしました。直前のブロックの出力からあまり時間が経っていない場合は、ブロックをまとめて表示します。これは新しい設定 output_format_pretty_squash_consecutive_ms(デフォルト 50 ms)および output_format_pretty_squash_max_wait_ms(デフォルト 1000 ms)で制御されます。#49537 の継続です。この変更により #49153 がクローズされました。#73852Alexey Milovidov)。
  • 現在マージ中のソースパーツ数を示すメトリクスを追加しました。これにより #70809 がクローズされました。 #73868 (Alexey Milovidov)。
  • 出力先がターミナルの場合、Vertical フォーマットでカラムをハイライト表示します。これは output_format_pretty_color 設定で無効化できます。 #73898 (Alexey Milovidov)。
  • MySQL 互換性を拡張し、mysqlsh(Oracle 製の高機能な MySQL CLI)が ClickHouse に接続できるレベルまで高まりました。これはテストの実施を容易にするために必要な改善です。 #73912 (Alexey Milovidov).
  • Pretty フォーマットで、テーブルセル内に複数行のフィールドを描画できるようになり、可読性が向上します。これはデフォルトで有効になっており、output_format_pretty_multiline_fields 設定で制御できます。#64094 における Volodyachan の作業の継続です。この変更により #56912 がクローズされました。#74032Alexey Milovidov)。
  • ブラウザー上で動作する JavaScript から X-ClickHouse HTTP ヘッダーを参照できるようにしました。これによりアプリケーションの開発がより容易になります。 #74180 (Alexey Milovidov).
  • JSONEachRowWithProgress フォーマットには、メタデータ付きのイベントに加えて、合計値および極値も含まれるようになりました。さらに、rows_before_limit_at_leastrows_before_aggregation も含まれます。このフォーマットは、部分的な結果の後に例外が発生した場合でも、例外を正しく出力します。進捗情報には経過ナノ秒が含まれるようになりました。終了時に最終の進捗イベントが 1 回発行されます。クエリ実行中の進捗情報は、interactive_delay 設定の値より高い頻度では出力されません。 #74181 (Alexey Milovidov)。
  • Play UI 上で砂時計アイコンがスムーズに回転するようになりました。 #74182 (Alexey Milovidov).
  • HTTP レスポンスが圧縮されている場合でも、パケットは到着し次第すぐに送信します。これにより、ブラウザは進捗通知用のパケットと圧縮データの両方を受信できるようになります。 #74201 (Alexey Milovidov)。
  • 出力レコード数が N = output_format_pretty_max_rows を超える場合、先頭の N 行だけを表示する代わりに、出力テーブルを途中で分割し、先頭から N/2 行と末尾から N/2 行を表示します。#64200 の継続です。これにより #59502 がクローズされます。#73929Alexey Milovidov)。
  • ハッシュ結合アルゴリズムが有効な場合に、より汎用的な結合計画アルゴリズムを使用可能にしました。 #71926 (János Benjamin Antal)。
  • DateTime64 型カラムに対して bloom_filter インデックスを作成できるようになりました。 #66416 (Yutong Xiao).
  • min_age_to_force_merge_secondsmin_age_to_force_merge_on_partition_only が両方とも有効な場合、パーツのマージ処理は最大バイト数制限を無視します。 #73656 (Kai Zhu)。
  • トレーサビリティ向上のために、OpenTelemetry スパンログテーブルに HTTP ヘッダーを追加しました。#70516 (jonymohajanGmail)。
  • orc 形式のファイルを書き込む際に、常に GMT タイムゾーンではなく、任意のタイムゾーンを指定して使用できるようにしました。 #70615 (kevinyhzou).
  • クラウド間でバックアップを書き込む際に、I/O スケジューリング設定を考慮するようにしました。 #71093 (János Benjamin Antal).
  • system.asynchronous_metricsmetric カラムのエイリアスである name を追加。 #71164 (megao).
  • 歴史的な理由により、クエリ ALTER TABLE MOVE PARTITION TO TABLE は専用の ALTER_MOVE_PARTITION 権限ではなく、SELECTALTER DELETE 権限をチェックしていました。この PR で、このアクセス種別を利用するようにしました。互換性のため、SELECTALTER DELETE が付与されている場合には、この権限も暗黙的に付与されますが、この動作は将来のリリースで廃止される予定です。#16403 をクローズしました。#71632pufit)。
  • ソートキー内のカラムをマテリアライズしようとした際にソート順が乱れてしまうのを許容するのではなく、例外をスローするようにしました。 #71891 (Peter Nguyen).
  • EXPLAIN QUERY TREE にシークレットを表示しないようにしました。#72025 (Yakov Olkhovskiy).
  • "native" リーダーで Parquet の整数論理型をサポートしました。 #72105 (Arthur Passos).
  • デフォルトユーザーにパスワードが必要な場合、ブラウザーで対話的に認証情報を要求するようにしました。以前のバージョンではサーバーは HTTP 403 を返していましたが、現在では HTTP 401 を返します。 #72198 (Alexey Milovidov)。
  • アクセス種別 CREATE_USERALTER_USERDROP_USERCREATE_ROLEALTER_ROLEDROP_ROLE をグローバルなものからパラメーター付きのものに変更しました。これにより、アクセス管理に関する権限を、より細かい粒度で付与できるようになりました。#72246 (pufit)。
  • system.mutationslatest_fail_error_code_name カラムを追加しました。スタックした mutation に関する新しいメトリクスを導入し、クラウドで発生したエラーのグラフを構築するためにこのカラムが必要です。また、必要に応じて、ノイズの少ない新しいアラートを追加できるようにします。 #72398 (Miсhael Stetsyuk)。
  • ATTACH PARTITION クエリでのメモリアロケーション量を削減しました。 #72583 (Konstantin Morozov).
  • max_bytes_before_external_sort の制限がクエリ全体のメモリ消費量に依存するように変更しました(以前は 1 つのソートスレッドあたりのソートブロック内のバイト数を基準としていましたが、現在は max_bytes_before_external_group_by と同じ意味を持ち、全スレッドを通したクエリ全体のメモリ使用量に対する総量制限となります)。さらに、ディスク上のブロックサイズを制御するための設定 min_external_sort_block_bytes を追加しました。 #72598 (Azat Khuzhin)。
  • trace collector が課すメモリ制限を無視するようにしました。 #72606 (Azat Khuzhin).
  • サーバー設定 dictionaries_lazy_loadwait_dictionaries_load_at_startupsystem.server_settings に追加しました #72664 (Christoph Wurm)。
  • BACKUP/RESTORE クエリの一部として指定できる設定の一覧に max_backup_bandwidth を追加しました。 #72665 (Christoph Wurm)。
  • ReplicatedMergeTree エンジンで出現するレプリカパーツに対するログレベルを引き下げ、レプリケーション構成のクラスターで生成されるログ量を抑えました。 #72876 (mor-akamai).
  • 選言(OR 条件)における共通式の抽出を改善しました。すべての選言項に共通部分式が存在しない場合でも、結果のフィルタ式を簡略化できるようにしました。#71537 の継続です。#73271 (Dmitry Novik)。
  • ストレージ S3Queue/AzureQueue において、設定を指定せずに作成されたテーブルにも設定を追加できるようになりました。 #73283 (Kseniia Sumarokova).
  • least および greatest 関数が NULL 引数を、常に NULL を返して処理するか(true の場合)、無視して処理するか(false の場合)を制御する設定 least_greatest_legacy_null_behavior(デフォルト: false)を導入しました。 #73344 (Robert Schulze).
  • ObjectStorageQueueMetadata のクリーンアップスレッドで Keeper のマルチリクエストを使用するようになりました。 #73357 (Antonio Andelic)。
  • ClickHouse が cgroup の制御下で実行されている場合でも、システム負荷、プロセススケジューリング、メモリなどに関連するシステム全体の非同期メトリクスを引き続き収集します。これらは、ClickHouse がホスト上で多くのリソースを消費している唯一のプロセスである場合に、有用な指標となる可能性があります。 #73369 (Nikita Taranov)。
  • ストレージ S3Queue で、24.6 以前に作成された古い順序付きテーブルを、バケットを用いた新しい構造へ移行できるようにしました。 #73467 (Kseniia Sumarokova).
  • 既存の system.s3queue と同様の system.azure_queue を追加しました。 #73477 (Kseniia Sumarokova).
  • 関数 parseDateTime64(およびそのバリアント)は、1970年以前 / 2106年以降の日付の入力値に対して正しい結果を返すようになりました。例: SELECT parseDateTime64InJodaSyntax('2200-01-01 00:00:00.000', 'yyyy-MM-dd HH:mm:ss.SSS')#73594 (zhanglistar)。
  • ユーザーから報告されていた clickhouse-disks の使い勝手に関するいくつかの問題に対処しました。#67136 をクローズしました。#73616Daniil Ivanik)。
  • storage S3(Azure)Queue でのコミット設定を変更できるようにしました。(コミット設定は max_processed_files_before_commitmax_processed_rows_before_commitmax_processed_bytes_before_commitmax_processing_time_sec_before_commit です)。 #73635 (Kseniia Sumarokova).
  • ストレージ S3(Azure)Queue において、コミット制限 SETTINGS と比較できるように、ソース間の進捗状況を集約できるようにしました。 #73641 (Kseniia Sumarokova).
  • BACKUP/RESTORE クエリでコア設定をサポートしました。 #73650 (Vitaly Baranov)。
  • Parquet 出力時に output_format_compression_level が考慮されるようになりました。 #73651 (Arthur Passos).
  • Apache Arrow の fixed_size_list をサポート対象外の型として扱うのではなく、Array として読み込めるようにしました。 #73654 (Julian Meyers).
  • 2つのバックアップエンジン Memory(バックアップを現在のユーザーセッション内に保持)と Null(バックアップをどこにも保持しないテスト用)を追加。#73690Vitaly Baranov)。
  • concurrent_threads_soft_limit_numconcurrent_threads_soft_limit_num_ratio_to_cores をサーバーの再起動なしに変更可能になりました。 #73713 (Sergei Trifonov)。
  • formatReadable 関数で拡張数値型(Decimal やビッグ整数)をサポートしました。 #73765 (Raúl Marín)。
  • Postgres のワイヤプロトコル互換で TLS をサポート。 #73812 (scanhex12).
  • 関数 isIPv4String は、正しい形式の IPv4 アドレスの後ろにゼロバイトが続いている場合に true を返していましたが、この場合には false を返すべきでした。#65387 の継続対応です。#73946Alexey Milovidov)。
  • MySQL ワイヤープロトコルにおけるエラーコードを MySQL と互換性を持たせました。 #56831 の継続対応です。 #50957 をクローズします。 #73948Alexey Milovidov)。
  • INNOT IN などの演算子で使用される列挙型リテラルを列挙型に対して検証し、リテラルが有効な列挙型値でない場合は例外をスローするための設定 validate_enum_literals_in_opearators を追加しました。 #73985 (Vladimir Cherkasov)。
  • Storage S3(Azure)Queue で、コミット設定で定義された単一バッチ内のすべてのファイルを、単一の Keeper トランザクションでコミットするようにしました。 #73991 (Kseniia Sumarokova).
  • 実行可能UDFおよび辞書のヘッダー検出を無効化しました(Function 'X': wrong result, expected Y row(s), actual Y-1 という誤結果が発生する可能性がありました)。 #73992 (Azat Khuzhin).
  • EXPLAIN PLANdistributed オプションを追加しました。これにより、EXPLAIN distributed=1 ... ではリモートプランが ReadFromParallelRemote* ステップに付加されるようになりました。#73994 (Nikolai Kochetov)。
  • Dynamic 引数に対する not/xor の戻り値型を正しくしました。 #74013 (Pavel Kruglov).
  • テーブル作成後でも add_implicit_sign_column_constraint_for_collapsing_engine を変更できるようにしました。 #74014 (Christoph Wurm).
  • materialized view の SELECT クエリでサブカラムをサポートしました。 #74030 (Pavel Kruglov).
  • clickhouse-client でカスタムプロンプトを設定する簡単な方法が 3 つ用意されました。1. コマンドラインパラメータ --prompt を使う方法、2. 設定ファイル内の <prompt>[...]</prompt>settings から設定する方法、3. 同じく設定ファイル内の接続ごとの設定 <connections_credentials><prompt>[...]</prompt></connections_credentials> から行う方法です。 #74168 (Christoph Wurm)。
  • ClickHouse Client でポート 9440 への接続時にセキュア接続かどうかを自動検出するようにしました。 #74212 (Christoph Wurm).
  • http_handlers でユーザー名だけでユーザーを認証できるようにしました(以前はパスワードの入力も必要でした)。 #74221 (Azat Khuzhin).
  • 代替クエリ言語である PRQL と KQL へのサポートが、実験的機能としてマークされました。これらを使用するには、allow_experimental_prql_dialect = 1 および allow_experimental_kusto_dialect = 1 の SETTING を指定します。 #74224 (Robert Schulze)。
  • より多くの集約関数でデフォルトの Enum 型を返せるようになりました。 #74272 (Raúl Marín).
  • OPTIMIZE TABLE で、既存のキーワード FINAL の代替としてキーワード FORCE を指定できるようになりました。 #74342 (Robert Schulze)。
  • サーバーのシャットダウンに時間がかかりすぎる場合にアラートをトリガーするために必要となる IsServerShuttingDown メトリクスを追加しました。 #74429 (Miсhael Stetsyuk).
  • EXPLAIN に Iceberg テーブルの名前を追加しました。 #74485 (alekseev-maksim).
  • 旧アナライザー使用時に RECURSIVE CTE を利用した場合、より適切なエラーメッセージを表示するようにしました。 #74523 (Raúl Marín).
  • system.errors に拡張エラーメッセージを表示できるようにしました。 #74574 (Vitaly Baranov).
  • clickhouse-keeper とのクライアント通信でパスワードを使用できるようにしました。サーバーおよびクライアントに対して適切なSSL設定を行っている場合、この機能の有用性はそれほど高くありませんが、一部のケースでは依然として有用です。パスワードは16文字を超えることはできません。Keeper Auth モデルとは関連していない機能です。 #74673 (alesapin).
  • config reloader のエラーコードを追加。 #74746 (Garrett Thomas).
  • MySQL および PostgreSQL のテーブル関数とエンジンにおいて、IPv6 アドレスのサポートを追加しました。 #74796 (Mikhail Koviazin).
  • divideDecimal に対してショートサーキット最適化を実装しました。 #74280 を修正。 #74843Kevin Mingtarja)。
  • 起動スクリプト内でUSERを定義できるようになりました。 #74894 (pufit).
  • Azure SAS トークンのサポートを追加しました。 #72959 (Azat Khuzhin).

バグ修正(公式安定版リリースにおけるユーザーに影響する不具合)

  • 圧縮コーデックがサポートしている場合にのみ Parquet の圧縮レベルを設定するようにしました。 #74659 (Arthur Passos).
  • 修飾子付きの照合ロケールを使用した場合にエラーが発生していた退行バグを修正しました。例えば、SELECT arrayJoin(['kk 50', 'KK 01', ' KK 2', ' KK 3', 'kk 1', 'x9y99', 'x9y100']) item ORDER BY item ASC COLLATE 'tr-u-kn-true-ka-shifted が正常に動作するようになりました。#73544Robert Schulze)。
  • keeper-client で SEQUENTIAL ノードを作成できなかった不具合を修正。 #64177 (Duc Canh Le).
  • position 関数群における文字数カウントの誤りを修正。 #71003 (思维).
  • アクセスエンティティに対する RESTORE 操作で、一部の権限取り消しが正しく処理されていなかったため、本来よりも多くの権限を要求していました。この PR で問題を修正します。#71853 をクローズします。#71958pufit)。
  • ALTER TABLE REPLACE/MOVE PARTITION FROM/TO TABLE 実行後に処理が一時的に停止してしまう問題を解消しました。バックグラウンドタスクのスケジューリングに使用される設定を正しく取得するようにしました。 #72024 (Aleksei Filatov).
  • 一部の入力および出力フォーマット(例: Parquet、Arrow)における空タプルの処理を修正。 #72616 (Michael Kolupaev).
  • ワイルドカードを含むデータベース/テーブルに対するカラムレベルの GRANT SELECT/INSERT 文は、今後はエラーを返すようになりました。 #72646 (Johann Gan).
  • 対象のアクセスエンティティに暗黙的な権限付与があるために REVOKE ALL ON *.* を実行できない場合がある問題を修正。 #72872 (pufit).
  • formatDateTime スカラー関数での正のタイムゾーンのフォーマットを修正。 #73091 (ollidraese).
  • PROXYv1 経由での接続時に auth_use_forwarded_address が設定されている場合、送信元ポートが正しく反映されるよう修正しました。これまではプロキシのポートが誤って使用されていました。currentQueryID() 関数を追加しました。 #73095 (Yakov Olkhovskiy).
  • TCPHandler から NativeWriter にフォーマット設定を伝播させ、output_format_native_write_json_as_string のような設定が正しく適用されるようにしました。 #73179 (Pavel Kruglov).
  • StorageObjectStorageQueue で発生していたクラッシュを修正。 #73274 (Kseniia Sumarokova).
  • サーバーのシャットダウン中にまれに発生するリフレッシャブルmaterialized viewのクラッシュを修正。 #73323 (Michael Kolupaev).
  • formatDateTime 関数の %f プレースホルダは、小数点以下の秒を常に 6 桁で出力するようになりました。これにより、MySQL の DATE_FORMAT 関数と互換性のある動作になります。以前の動作は、formatdatetime_f_prints_scale_number_of_digits = 1 設定を使用することで復元できます。 #73324 (ollidraese)。
  • S3 ストレージおよびテーブル関数からの読み取り時における _etag カラムによるフィルタリングを修正しました。 #73353 (Anton Popov).
  • 旧アナライザー使用時に、JOIN ON 式内で IN (subquery) が使用されると発生していた Not-ready Set is passed as the second argument for function 'in' エラーを修正。 #73382 (Nikolai Kochetov)。
  • Dynamic および JSON カラムに対する squash 処理の準備ロジックを修正しました。以前は、型/パスの上限にまだ達していない場合でも、一部のケースで共有バリアント/共有データに新しい型が挿入されてしまうことがありました。 #73388 (Pavel Kruglov)。
  • 型のバイナリデコード時にサイズの破損をチェックし、過大なメモリアロケーションを防止しました。 #73390 (Pavel Kruglov).
  • parallel replicas を有効にした single-replica クラスターからの読み取り時に発生する論理エラーを修正しました。 #73403 (Michael Kolupaev).
  • ZooKeeper および旧バージョンの Keeper 使用時の ObjectStorageQueue の不具合を修正。 #73420 (Antonio Andelic)。
  • デフォルトで Hive パーティショニングを有効にするために必要な修正を実装しました。 #73479 (Yarik Briukhovetskyi).
  • ベクトル類似性索引作成時のデータレースを修正。 #73517 (Antonio Andelic).
  • Dictionary のソースに誤ったデータを持つ関数が含まれている場合に発生していたセグメンテーションフォールトを修正。 #73535 (Yarik Briukhovetskyi).
  • storage S3(Azure)Queue における挿入失敗時の再試行処理を修正。#70951 をクローズ。#73546Kseniia Sumarokova)。
  • LowCardinality 要素を含むタプルに対して、optimize_functions_to_subcolumns 設定が有効な場合に発生することがあった tupleElement 関数のエラーを修正しました。 #73548 (Anton Popov)。
  • 範囲指定が後続する enum グロブのパースを修正。#73473 を修正。#73569Konstantin Bogdanov)。
  • 非レプリケートテーブルに対するサブクエリ内で parallel_replicas_for_non_replicated_merge_tree が無視されていた問題を修正しました。 #73584 (Igor Nikonov).
  • タスクをスケジュールできない場合に std::logical_error 例外がスローされる不具合を修正しました。この問題はストレステスト中に発見されました。 #73629 (Alexander Gololobov)。
  • 分散クエリに対して誤った処理ステージが適用されることによる論理エラーを回避するため、EXPLAIN SYNTAX でクエリを解釈しないようにしました。#65205 を修正。#73634Dmitry Novik)。
  • Dynamic カラムで発生しうるデータ不整合を修正しました。Nested columns sizes are inconsistent with local_discriminators column size という論理エラーが発生する可能性のある問題を修正しました。 #73644 (Pavel Kruglov).
  • FINALSAMPLE を含むクエリで発生する NOT_FOUND_COLUMN_IN_BLOCK エラーを修正しました。CollapsingMergeTree に対する FINAL 付きの SELECT 文で誤った結果となる問題を修正し、FINAL の最適化を有効化しました。 #73682 (Anton Popov).
  • LIMIT BY COLUMNS で発生していたクラッシュを修正。 #73686 (Raúl Marín).
  • 通常の PROJECTION の使用が強制されており、クエリが定義済みの PROJECTION と完全に一致しているにもかかわらず、その PROJECTION が選択されずにエラーが発生する不具合を修正しました。 #73700 (Shichao Jin).
  • Dynamic/Object 構造のデシリアライズ処理を修正しました。これが原因で CANNOT_READ_ALL_DATA 例外が発生する可能性がありました。 #73767 (Pavel Kruglov).
  • バックアップからパーツを復元する際に metadata_version.txt をスキップします。 #73768 (Vitaly Baranov).
  • LIKE と組み合わせた Enum への CAST 時に発生していたセグメンテーションフォルトを修正しました。 #73775 (zhanglistar).
  • ディスクとして動作しない S3 Express バケットの不具合を修正しました。 #73777 (Sameer Tamsekar).
  • CollapsingMergeTree テーブルで、無効な sign カラム値を持つ行もマージできるようにしました。 #73864 (Christoph Wurm).
  • オフラインのレプリカが存在する状態で DDL をクエリするとエラーになる問題を修正。 #73876 (Tuan Pham Anh).
  • ネストされたタプルのフィールド名として 'keys', 'values' が明示的に指定されていない Map を作成できてしまうことが原因で、map() 型同士の比較がまれに失敗する問題を修正しました。 #73878 (Yakov Olkhovskiy).
  • GROUP BY ALL 句を解決する際にウィンドウ関数を無視するようにしました。これにより #73501 を修正しました。#73916Dmitry Novik)。
  • 暗黙的な権限の扱いを修正(以前はワイルドカードとして扱われていた)。 #73932 (Azat Khuzhin).
  • ネストされた Map の作成時における高いメモリ使用量を修正。 #73982 (Pavel Kruglov)。
  • 空キーを含むネストされた JSON のパースを修正。 #73993 (Pavel Kruglov).
  • Fix: 別のエイリアスから参照されており、かつ逆順で選択された場合に、そのエイリアスが PROJECTION に追加されないことがある問題を修正。 #74033 (Yakov Olkhovskiy).
  • Azure 用の plain_rewritable ディスクの初期化時に発生する "object not found" エラーを無視するようにしました。 #74059 (Julia Kartseva).
  • enum 型および空テーブルに対する anyanyLast の挙動の不具合を修正。 #74061 (Joanna Hulboj)。
  • ユーザーが Kafka テーブルエンジンでキーワード引数を指定した場合に発生する不具合を修正しました。 #74064 (Yarik Briukhovetskyi)。
  • Storage S3Queue の設定で、プレフィックス s3queue_ 付きと無しの間で変更する際の問題を修正しました。 #74075 (Kseniia Sumarokova).
  • allow_push_predicate_ast_for_distributed_subqueries という設定を追加しました。これにより、analyzer を用いた分散クエリに対して AST ベースの述語プッシュダウンが有効になります。これは、クエリプランのシリアライズに対応した分散クエリがサポートされるまでの一時的な対応策です。#66878 #69472 #65638 #68030 #73718 をクローズしました。#74085Nikolai Kochetov)。
  • #73095 の変更以降、forwarded_for フィールドにポートが含まれることがあり、その結果ポート付きのホスト名を解決できなくなる問題を修正しました。#74116 (Yakov Olkhovskiy)。
  • ALTER TABLE (DROP STATISTICS ...) (DROP STATISTICS ...) の誤ったフォーマットを修正しました。 #74126 (Han Fei).
  • Issue #66112 を修正。 #74128 (Anton Ivashkin)。
  • CREATE TABLE でテーブルエンジンとして Loop を使用することはできなくなりました。以前はこの組み合わせによりセグメンテーションフォルトが発生していました。 #74137 (Yarik Briukhovetskyi)。
  • PostgreSQL および SQLite のテーブル関数に対する SQL インジェクションを防ぐためのセキュリティ上の問題を修正しました。 #74144 (Pablo Marcos)。
  • 圧縮された Memory エンジンのテーブルからサブカラムを読み取る際に発生するクラッシュを修正。#74009 を修正。 #74161Nikita Taranov)。
  • system.detached_tables へのクエリで無限ループが発生する問題を修正しました。 #74190 (Konstantin Morozov).
  • s3queue でファイルを失敗としてマークする際の論理エラーを修正。 #74216 (Kseniia Sumarokova).
  • ベースバックアップからの RESTORE におけるネイティブコピー設定(allow_s3_native_copy/allow_azure_native_copy)を修正しました。 #74286 (Azat Khuzhin).
  • データベース内の detached テーブル数が max_block_size の倍数となる場合に発生していた不具合を修正しました。 #74289 (Konstantin Morozov)。
  • ソースと宛先で認証情報が異なる場合の ObjectStorage(例:S3)経由のコピー処理を修正しました。 #74331 (Azat Khuzhin)。
  • GCS のネイティブコピーにおける「JSON API の Rewrite メソッドを使用する」設定の検出を修正しました。 #74338 (Azat Khuzhin).
  • BackgroundMergesAndMutationsPoolSize の誤った計算を修正しました(誤って実際の値の 2 倍として計算されていました)。#74509 (alesapin)。
  • Cluster Discovery を有効にした際に Keeper の watch がリークしていた不具合を修正。 #74521 (RinChanNOW).
  • UBSan によって報告されたメモリアラインメントに関する問題を修正しました。 #74512#74534Arthur Passos)。
  • テーブル作成時における KeeperMap の並行クリーンアップ処理を修正。 #74568 (Antonio Andelic).
  • EXCEPT または INTERSECT が存在する場合、正しいクエリ結果を維持するために、サブクエリ内で未使用の PROJECTION カラムを削除しないようにしました。#73930 を修正しました。#66465 を修正しました。#74577Dmitry Novik)。
  • Tuple カラムを持ち、スパースシリアライゼーションが有効になっているテーブル間での INSERT SELECT クエリの不具合を修正しました。 #74698 (Anton Popov).
  • 関数 right が const の負のオフセットに対して誤って動作していました。 #74701 (Daniil Ivanik).
  • クライアント側での不正な伸長処理が原因で gzip 圧縮データの挿入が失敗することがある問題を修正。 #74707 (siyuan).
  • ワイルドカードを含む権限付与に対する部分的な取り消しにより、想定より多くの権限が取り消されることがありました。#74263 をクローズしました。#74751pufit)。
  • Keeper: ディスク上のログエントリの読み取りを修正。 #74785 (Antonio Andelic).
  • SYSTEM REFRESH/START/STOP VIEW の権限チェックを修正しました。特定の VIEW に対するクエリを実行する際に *.* への GRANT を持っている必要はなくなり、その VIEW への権限だけがあれば十分です。 #74789 (Alexander Tokmakov)。
  • hasColumnInTable 関数がエイリアスカラムを考慮していなかった問題を修正し、エイリアスカラムにも対応するようにしました。 #74841 (Bharat Nallan).
  • Azure Blob Storage 上にあり空のカラムを含むテーブルのデータパーツマージ処理中に発生する FILE_DOESNT_EXIST エラーを修正。 #74892 (Julia Kartseva).
  • 一時テーブルとの結合時のプロジェクション列名を修正し、#68872 をクローズしました。 #74897Vladimir Cherkasov)。

ビルド/テスト/パッケージングの改善

  • 汎用インストールスクリプトが、macOS 上でもインストールを促すようになりました。 #74339 (Alexey Milovidov).