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

Cloud 向け v25.12 の変更履歴

後方互換性を損なう変更

データ型の変更

  • Geometry 型を導入しました。この型について WKB および WKT フォーマットの読み取りをサポートします。以前のバージョンでは Geometry 型は String のエイリアスでしたが、現在は完全な機能を備えた独立した型になりました。 #83344 (Konstantin Vedernikov)。
  • 非推奨だった Object 型を削除しました。 #85718 (Pavel Kruglov)。
  • MergeTree テーブルの Wide データパーツにおける Variant 型サブカラムのために作成されるファイル名をエスケープするようにしました。この変更により、Variant/Dynamic/JSON データ型を持つ既存テーブルとの互換性が失われます。この変更は、Variant 内で特殊文字を含む型(たとえば、\ を含む特定のタイムゾーンを持つ DateTime など)の保存時に発生していた問題を修正します。エスケープは、MergeTree の SETTING escape_variant_subcolumn_filenames を変更することで無効にできます(互換性を維持するには、MergeTree の設定でこの SETTING を無効化するか、アップグレード前のバージョンに compatibility SETTING を設定してください)。#69590 を解決します。 #87300 (Pavel Kruglov)。

クエリおよび関数の変更

  • ALTER MODIFY COLUMN は、Nullable なカラムを non-nullable 型に変換する際に、明示的な DEFAULT の指定が必須になりました。以前は、そのような ALTERcannot convert null to not null エラーで行き詰まる可能性がありましたが、現在は NULL がカラムのデフォルト式で置き換えられます。#5985 を解決します。 #84770Vladimir Cherkasov)。
  • 設定 allow_not_comparable_types_in_order_by / allow_not_comparable_types_in_comparison_functions を削除しました。ORDER BY 句や比較関数で比較不可能な型を許可すると、論理的なエラーや予期しない結果につながる可能性があります。#90028 を解決します。 #90527Pavel Kruglov)。
  • 関数 bitShiftLeft および bitShiftRight を修正し、型のサイズとちょうど同じだけシフトが行われた場合には、0 または空値を返すようにしました。 #91943Pablo Marcos)。
  • Ngram tokenizer は、設定された長さ N 未満の ngram を返さないようになりました。Text Search は、検索トークンが空の場合には行を返しません。 #89757George Larionov)。

ストレージと索引の変更

  • 廃止された LIVE VIEW 機能を削除しました。LIVE VIEW を使用している場合、新しいバージョンへのアップグレードはできません。 #88706 (Alexey Milovidov).
  • 共有オブジェクトストレージパス上に複数の plain-rewritable ディスクを作成することを禁止しました。これは、異なるメタデータストレージトランザクションが衝突した際に、挙動が未定義となる可能性があるためです。 #89038 (Mikhail Artemenko).
  • 特殊な MergeTree テーブル(ReplacingMergeTreeCollapsingMergeTree など)について、ORDER BY キーが空の状態で作成することを禁止しました。これらのテーブルではマージ動作が未定義となるためです。どうしてもそのようなテーブルを作成する必要がある場合は、allow_suspicious_primary_key 設定を有効にしてください。 #91569 (Anton Popov).
  • 暗黙の索引に関して、複数の修正を行いました。表示または保存されるスキーマ(Keeper メタデータ)には、add_minmax_index_for_numeric_columnsadd_minmax_index_for_string_columns のような設定によって作成される暗黙の索引は含まれなくなります。これにより、古いリリースのレプリカが存在する状態で、新しいバージョンで ReplicatedMergeTree テーブルを作成または更新すると、メタデータエラーが発生する可能性があります。 #91429 (Raúl Marín).

設定および構成の変更

  • クライアントが例外をより確実にパースできるように、HTTP の結果レスポンスに対する例外のタグ付けをサポートしました。#75175 を解決します。設定 http_write_exception_in_output_format は、フォーマット間の一貫性のためデフォルトでは無効になっています。#88818Kaviraj Kanagaraj)。
  • Kafka ストレージの SASL 設定の優先順位を修正しました。CREATE TABLE クエリで指定されたテーブルレベルの SASL 設定が、設定ファイル内のコンシューマー/プロデューサー固有の設定を正しく上書きするようになりました。#89401János Benjamin Antal)。
  • ACME 構成パラメータ refresh_certificates_task_intervalrefresh_certificates_task_interval_seconds に、refresh_certificates_beforerefresh_certificates_before_seconds に名称変更しました。refresh_certificates_task_interval_seconds パラメータは、秒単位の値を受け取るようになりました。#92211Konstantin Bogdanov)。
  • プロジェクションで無効化された位置指定引数を、後方互換性のない変更としてマークしました。加えて、プロジェクション内に位置指定引数が存在する場合でも、安全に ClickHouse クラスタをアップグレードできるようにするための設定 enable_positional_arguments_for_projections を導入しました。#92007Dmitry Novik)。

クライアントの変更

  • receive_timeout によってクエリがタイムアウトした場合に、clickhouse-client が非ゼロの終了コード (159 - TIMEOUT_EXCEEDED) を返すように更新しました。以前は、タイムアウト時にも終了コード 0 (成功) を返していたため、スクリプトや自動化処理でタイムアウトによる失敗を検出することが困難でした。 #91432 (Sav)

統計フォーマットの変更

  • カラムを String から Nullable(String)ALTER COLUMN する場合、データ自体に対する mutation は行われません。ただし、uniq 集約関数は異なるデータ構造を使用します。nullable なカラムの場合は、ネストされた uniq 集約器を持つ AggregateFunctionNull を使用します。AggregateFunctionNull は追加の bool フラグをシリアライズします。このため、統計ファイルとの互換性が失われます。統計フォーマットは変更されており、古いフォーマットの統計が存在するとサーバーがクラッシュします。例外を回避するには、統計を再生成するために ALTER TABLE [db.]table MATERIALIZE STATISTICS ALL を実行してください。#90311Han Fei)。

その他の互換性破壊的変更

  • 要素サイズに揃っていないサイズのデータを圧縮する際に発生する Fatal エラーを修正しました(T64 コーデック)。#89282 を解決しました。#89432yanglongwei)。

新機能

Functions

  • ユーザーのなりすましをサポートする新しい SQL ステートメント EXECUTE AS を追加しました。#39048 を解決。#70775Shankar)。
  • 配列内の必要な次元数を展開し、Tuple カラム内のポインタを入れ替える flipCoordinates 関数を追加しました。#79469 を解決。#79634Sachin Kumar Singh)。
  • IS NOT DISTINCT FROM (<=>) 演算子を強化しました。逆の IS DISTINCT FROM をサポートし、異なる型の互換性のある数値オペランド(例: Nullable(UInt32)Nullable(Int64))をサポートしました。#87581yanglongwei)。
  • cume_dist ウィンドウ関数のサポートを追加しました。#86920 を修正。#88102Manuel)。
  • geometry 型に対して面積と周長を計算する関数を追加しました。#89047Konstantin Vedernikov)。
  • 属性が指定された値と等しい Dictionary のキーを返す dictGetKeys 関数を実装しました。クエリ単位の逆引きキャッシュを使用しており、max_reverse_dictionary_lookup_cache_size_bytes setting によって調整され、繰り返し検索を高速化します。#89197Nihal Z. Miaji)。
  • 配列 arr から elem と等しいすべての要素を削除する arrayRemove(arr, elem) のサポートを追加しました。#52099 を解決。#89585tiwarysaurav)。
  • 平均を計算する midpoint スカラー関数を導入しました。#89029 を解決。#89679simonmichal)。
  • 新しい argAndMin および argAndMax 関数を使用して、引数と、その引数に対応する最小値または最大値の両方を取得できるようになりました。#89884AbdAlRahman Gad)。
  • #73900 および #38775 の一部として、HMAC(algorithm, message, key) SQL 関数を追加しました。#90837Mikhail f. Shiryaev)。
  • 第 1 引数が定数配列の場合に、has() 関数がプライマリキーとデータスキッピングインデックスを使用できるようにサポートを追加しました。#90980 をクローズ。#91023Nihal Z. Miaji)。

システムテーブル

  • Unicode 文字とそのプロパティの一覧を含む system.unicode テーブルを追加しました。#80055 をクローズしました。#80857wxybear)。
  • shared_merge_tree_outdated_parts に類似した新しいシステムテーブル shared_merge_tree_condemned_parts を追加しました。このテーブルは、PartsKillerThread によって削除予定のパーツを一覧します。(Smita Kulkarni)。

テーブルエンジンとストレージ

  • Prometheus HTTP Query API の一部をサポートしました。有効化するには、設定ファイルの <prometheus> セクションに query_api タイプのルールを追加します。サポートされるハンドラーは /api/v1/query_range/api/v1/query です。#86132Nikita Mikhaylov)。
  • ユーザーは、これまでのファイルを保持または削除するオプションに加えて、処理済みファイルを移動またはタグ付けするように S3/Azure Queue テーブルを設定できるようになりました。#72944 を解決します。#86907Murat Khairulin)。
  • マージ後の Wide パーツにおける動的サブカラム数を、データ型で指定されたパラメータに関係なく制限できるようにするため、新しい MergeTree の設定 merge_max_dynamic_subcolumns_in_wide_part を追加しました。#87646Pavel Kruglov)。
  • Microsoft OneLake カタログとの連携を追加しました。#89366Konstantin Vedernikov)。
  • 一時テーブルに対して CREATE OR REPLACE 構文をサポートしました。#35888 をクローズします。#89450Aleksandr Musorin)。
  • MergeTree テーブルに対して direct(ネストされたループ)JOIN をサポートしました。使用するには、設定で唯一のオプションとして指定します: join_algorithm = 'direct'#89920Vladimir Cherkasov)。
  • この PR では、ALTER TABLE ... ADD PROJECTION に新たに追加された WITH SETTINGS 句を通じて利用可能な、プロジェクションレベルの設定を導入します。これらの設定により、プロジェクションはプロジェクション単位で、特定の MergeTree ストレージパラメータ(例: index_granularity, index_granularity_bytes)を上書きできるようになります。#90158Amos Bird)。

Iceberg とデータレイク

  • Iceberg に対する CREATE 操作での ORDER BY のサポートおよび INSERT 時のソートをサポート。#89916 を解決。#90141Konstantin Vedernikov)。

SQL とクエリの機能

  • 集約関数 windowFunnel にオプション allow_reentry を追加しました。strict_order とともに有効化すると、ファネル解析を停止する代わりに順序に違反するイベントを無視します。これにより、リフレッシュを伴うユーザージャーニー (A->A->B) や戻る操作を伴うユーザージャーニー (A->B->A->C) を扱う際に、コンバージョン率を過少報告せずに済みます。#86916Lee ChaeRok)。
  • テキスト索引の構築時に、新しい引数 preprocessor を指定できるようになりました。この引数は、トークン化の前に各ドキュメントを変換するための任意の式です。#88272Jimmy Aguilar Mena)。
  • テーブルの一部(割合)を選択するために、LIMIT および OFFSET で小数値を指定できるようになりました。#81892 をクローズ。#88755Ahmed Gouda)。
  • 出力パスが存在しない場合の INTO OUTFILE のエラーを防ぐために、親ディレクトリを自動的に作成する設定 into_outfile_create_parent_directories を追加しました。#88610 を解決。#88795Saksham)。
  • JSON 型に対する INSERT/型キャスト時に、入力 JSON を JSON 型の明示的な型付きパスへキャストできない場合の例外を無効にするための設定 type_json_skip_invalid_typed_paths を追加しました。代わりに、その型付きパスの null 値/ゼロ値にフォールバックします。#86917 をクローズ。#89886Max Justus Spransy)。

クライアントおよび CLI の機能

  • 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)。
  • --login を使用して、Cloud クレデンシャルで ClickHouse Cloud インスタンスにアクセスできるようになりました。#89261 (Krishna Mannem)。
  • Web UI にダウンロードボタンが追加されました。UI で一部のみが表示されている場合でも、結果全体をダウンロードします。#89768 (Alexey Milovidov)。

サーバー構成と監視

  • X-ClickHouse-Progress および X-ClickHouse-Summarymemory_usage フィールドを追加しました。これにより、クエリのメモリ使用量をクライアント側でリアルタイムに収集できます。 #88393 (Christoph Wurm)。
  • プロファイルイベントを使用しない場合に、クライアント側のネットワークトラフィックを削減できるようにする send_profile_events SETTING を追加しました。 #89588 (Kaviraj Kanagaraj)。

Keeper

入出力フォーマット

  • 新しい入出力フォーマット Buffers を実装しました。このフォーマットは Native に似ていますが、Native と異なり、カラム名、カラム型、追加のメタデータを保存しません。#84017 をクローズしました。#91156Nihal Z. Miaji)。
  • Dremio およびコマンド形式のディスクリプタを要求するその他の Arrow Flight サーバーをサポートするために、arrow_flight_request_descriptor_type 設定を追加しました。#89523 を修正しました。#89826Shreyas Ganesh)。
  • メッセージペイロードをパースする前にエンベロープヘッダーのバイト(例: AWS Glue Schema Registry の 19 バイトのプレフィックス)をスキップできるようにするため、Kafka テーブルエンジンに kafka_schema_registry_skip_bytes 設定を追加しました。#89621Taras Polishchuk)。

その他の新機能

  • Cluster テーブル関数でのファイル並列読み込み時のストリーム数を制御するための設定 max_streams_for_files_processing_in_cluster_functions を追加。#90223 をクローズ。#91323Pavel Kruglov)。
  • クエリごとに近接パーツデータのバックグラウンドでのダウンロードを無効化できるようにした。#89524 を修正。#89668tanner-bruce)。
  • ClickHouse の新しいプラットフォームとして e2k (Elbrus-2000) を実験的にサポート。#90159Ramil Sattarov)。

実験的機能

  • ACME プロバイダからの TLS 証明書取得をサポートしました。RFC 8555#66315Konstantin Bogdanov)。
  • 設定 automatic_parallel_replicas_mode で制御される、並列レプリカを用いてクエリを自動実行するための新しいロジックを導入しました。#87541Nikita Taranov)。
  • フルテキスト検索は、以前の実験的段階からプライベートプレビューに移行しました。#88928Robert Schulze)。
  • Alias を実験的機能に移動し、allow_experimental_alias_table_engine=1 で有効化できるようにしました。#89712Kai Zhu)。

パフォーマンスの向上

クエリの実行と最適化

  • クエリが行制限に達した場合は早期に失敗させるようにしました。#61872 を解決。#62804Sean Haynes)。
  • クエリプラン内の未使用カラムを削除する最適化を追加しました。#75152 を解決。#76487János Benjamin Antal)。
  • ConstantNode における大きな値に対する最適化を行いました。#72880 をクローズ。#81104Yakov Olkhovskiy)。
  • キャッシュミスを最小化するため、ハッシュテーブル反復中にキーを先読みするようにしました。#84708lgbo)。
  • コードの単純化と選択アルゴリズムの調整により、LZ4 の伸長速度を改善しました。#88360Raúl Marín)。
  • JOIN および ARRAY JOIN において、遅延カラムレプリケーションを実装しました。Sparse や Replicated のような特殊なカラム表現を、一部の出力フォーマットでフルカラムへ変換することを避けます。これにより、メモリ内での不要なデータコピーを回避します。#88752Pavel Kruglov)。
  • 動的ディスパッチを用いて、論理関数に対して高度な SIMD 演算を使用するようにしました。#90432Raúl Marín)。
  • 結果カラムを不要にゼロ初期化しないことで、JIT 関数の実行パフォーマンスを改善しました。#90449Raúl Marín)。
  • 動的ディスパッチにより、T64 の伸長処理を高速化しました。#90610Raúl Marín)。
  • 動的ディスパッチにより、(WHERE 句内での)カラムから bool への変換を高速化しました。#91203Raúl Marín)。
  • 動的ディスパッチにより、単一の数値ブロックのソートを高速化しました。#91213Raúl Marín)。

JOIN の最適化

  • RIGHT および FULL JOIN が ConcurrentHashJoin を使用するようになりました。これにより、これらの種類の JOIN はより高い並列度で実行されます。RIGHT および FULL JOIN のさまざまなケースで、最大 2 倍の高速化が見込めます。#78027 を解決しました。#78462Yarik Briukhovetskyi)。
  • 一部のケースでは、ANY LEFT JOIN または ANY RIGHT JOINALL INNER JOIN に書き換えられるようになりました。#89403Dmitry Novik)。
  • ANTI JOIN に対する JOIN ランタイムフィルタをサポートしました。また、ロック競合を減らすためにランタイムフィルタの実装をリファクタリングしました。#89710Dmitry Novik)。
  • 後続のステップで活用できるよう、LEFT / INNER JOIN 演算において左テーブルからの読み取り順序を維持できるようにしました。#89815Vladimir Cherkasov)。

MergeTree とストレージの最適化

  • 10K 以上のパーツを持つテーブルで、パーティションプルーニングが多い SELECT クエリを最大 8 倍まで高速化。#85535James Morrison)。
  • クエリが集約状態(小さい整数による GROUP BY)に固定ハッシュマップを使用する場合、ClickHouse はクエリを高速化するために集約状態を並列にマージするようになりました。#63666 を解決。#87366Jianfei Hu)。
  • Parquet reader v3 をデフォルトで有効化。#88827Michael Kolupaev)。
  • optimize_read_in_orderquery_plan_optimize_lazy_materialization を同時に利用してクエリを高速化可能に。#88767 を解決。#88866Manuel)。
  • DISTINCT を含むクエリで集約 PROJECTION を使用。#86925 をクローズ。#88894Nihal Z. Miaji)。
  • 入力のソート順が LIMIT BY キーと一致する場合に、ストリーミング LIMIT BY transform を実行。#88969Eduard Karacharov)。
  • Nullable 型のカラムに対するスパースシリアライゼーションをサポート。#88999Amos Bird)。
  • MergeTree reader のインプレースフィルタリングを最適化。#87119 を解決。#90630Xiaozhe Yu)。
  • 選択されたマージ候補の幅を削減するための追加のヒューリスティックを導入。#91163Mikhail Artemenko)。

索引およびテキスト検索の最適化

  • ClickHouse は、ANDOR が混在したフィルター条件を持つ WHERE 句に対してスキップ索引を用いた索引解析を行うようになりました。これまでは、スキップ索引を利用するには WHERE 句がフィルター条件の連言 (AND) である必要がありました。この機能は新しい use_skip_indexes_for_disjunctions 設定(デフォルト: on)で制御されます。#87781 (Shankar Iyer).
  • likeequalshas などの関数を含む述語について、テキスト索引から構築された追加の事前フィルターを活用することでフィルタリングのパフォーマンスを向上させました。この最適化は query_plan_text_index_add_hint 設定で有効化されます。#88550 (Anton Popov).
  • Dictionary ブロックのキャッシュと、バイナリサーチの代わりにトークン検索にハッシュテーブルを使用することで、テキスト索引のパフォーマンスを改善しました。#88786 (Elmi Ahmadov).
  • ポスティングリストはデータサイズが最も大きいため、それらをキャッシュすることで連続実行時のパフォーマンスが向上します。#88912 (Elmi Ahmadov).
  • 可能なキー値の事前計算済み集合に対して高速な検索を行うことで、繰り返し実行される逆向き Dictionary ルックアップを最適化しました。#7968 をクローズしました。#88971 (Nihal Z. Miaji).
  • スキップ索引と動的しきい値フィルターを使用して、処理される行数を大幅に削減することで ORDER BY...LIMIT N クエリを最適化しました。#89835 (Shankar Iyer).
  • 大きな minmax 索引(数百万グラニュール)が存在する場合、索引解析のレイテンシの低減が期待できます。#90428 (Shankar Iyer).

集約の最適化

  • AggregateFunctionHistogram を、points 配列の末尾部分のみをソートし、単調な入力に対してはソートをスキップすることで最適化し、およそ 10% の高速化を達成しました。 #85760 (MakarDev).
  • HashSetTable::merge のオーバーヘッドを削減することで、一部の countDistinct 演算をわずかに高速化しました。 #89727 (Raúl Marín).
  • topK のパフォーマンスと挙動を改善しました。 #90091 (Raúl Marín).
  • Decimal 型の比較演算のパフォーマンスを改善しました。#28192 を解決しました。 #90153 (Konstantin Bogdanov).

S3 とバックアップの最適化

  • S3 はキー名プレフィックスに基づいて内部的にオブジェクトをパーティション分割し、パーティションごとの高いリクエストレートに自動的にスケールできるようになっています。この変更により、2 つの新しい BACKUP 設定 data_file_name_generatordata_file_name_prefix_length が導入されました。data_file_name_generator=checksum の場合、バックアップデータファイルはその内容のハッシュを用いた名前で保存されます。#88418 (Julia Kartseva)。
  • グロブパターンで作成された S3 テーブルに対して _path フィルタ値をプッシュダウンすることでクエリパフォーマンスを改善し、S3 の listing 操作を回避できるようにしました。s3_path_filter_limit 設定で制御されます。#91165 (Eduard Karacharov)。

データレイクの最適化

  • 分散実行: タスクをファイル単位ではなく行グループ ID 単位でより適切に分割。#87508 (Konstantin Vedernikov).
  • Paimon 関数でのパーティションプルーニングをサポート。#90253 (JIaQi Tang).

改善

クエリの最適化と実行

  • レプリケーテッド MergeTree テーブルに障害のあるディスクが存在していても FETCH PARTITION が行えるようになりました。 #58663 (Duc Canh Le)。
  • ジオメトリを h3 の六角形セルで充填できる h3PolygonToCells 関数を追加しました。これにより #33991 が解決されます。 #66262Zacharias Knudsen)。
  • すべての DDL ON CLUSTER クエリは、アクセス権限の検証をより正確に行うため、元のクエリを実行したユーザーのコンテキストで実行されるようになりました。 #71334 (pufit).
  • ALTER TABLE ... FREEZE クエリの処理を並列化しました。 #71743 (Kirill)。
  • IN の第 2 引数に非定数を使用できるようになりました。第 2 引数としてタプルも指定できます。 #77906 (Yarik Briukhovetskyi)。
  • この PR により、通常のプロジェクションをセカンダリ索引として使用できるようになります。有効にすると、特定のクエリ述語を利用してプロジェクションのパーツから読み出し、PREWHERE ステージで行を効率的にフィルタリングするためのビットマップを生成できます。 #81021 (Amos Bird)。
  • より良い一貫性保証のため、enable_shared_storage_snapshot_in_query をデフォルトで有効化しました。 #82634 (Alexey Milovidov).
  • UNION は、必要に応じて Variant を使用して型を統一するようになりました。#82772 を解決しました。#83246Mithun p)。
  • 内部クエリ(dictionaries、リフレッシャブルmaterialized view などによって内部的に実行されるもの)をログ出力し、system.query_log に新しい is_internal カラムを追加しました。 #83277 (Miсhael Stetsyuk).
  • ALIAS カラム(式を一切使用せずに物理カラムを単に参照するカラム)への INSERT を許可します。#80060 をクローズします。#84154Shaurya Mohan)。
  • clickhouse-client で、SELECT を含む CREATE OR REPLACE TABLE クエリに対して、進行状況バー、ログ、およびパフォーマンス統計情報を表示できるようになりました。#38416 を解決しました。#87247Diskein)。
  • ハッシュ関数で JSON 型および Dynamic 型をサポートしました。#87734 を解決。 #87791Pavel Kruglov)。
  • query_plan_optimize_join_order_limit のデフォルト値が 10 に変更されました。 #89312 (Alexey Milovidov)。
  • 最適化オプション enable_lazy_columns_replication がデフォルトで有効になり、JOIN 時のメモリ使用量が削減されます。 #89316 (Alexey Milovidov).
  • allow_statistics_optimize 設定をデフォルトで有効化し、JOIN のオプティマイザーがカラム統計情報を使用するようにしました。 #89332 (Alexey Milovidov).
  • create_table_empty_primary_key_by_default をデフォルトで有効化しました。これによりユーザビリティが向上します。 #89333 (Alexey Milovidov).
  • enable_time_time64_type 設定がデフォルトで有効になりました。 #89345 (Yarik Briukhovetskyi)。
  • allow_special_serialization_kinds_in_output_formats 設定をデフォルトで有効化しました。 #89402 (Pavel Kruglov).
  • Shared Catalog を通じて実行されるクエリでは ON CLUSTER 句を無視するようにしました。(Nikolay Degterinsky)。
  • Shared Catalog で ALTER DATABASE MODIFY COMMENT が利用できるようになりました。(Nikolay Degterinsky).
  • Shared データベースにおける SharedSet/SharedJoin で CREATE OR REPLACE をサポートしました。(Tuan Pham Anh)。
  • SharedMergeTree で SYNC REPLICA を実行する際に、他のクエリの完了を待たないようにしました。 (Raúl Marín)。

Storage and MergeTree improvements

  • S3 内の BLOB に関連付けられているすべてのタグを含む新しい仮想カラム _tags (Map(String, String)) を追加しました。これにより #72945 が解決されました。 #77773Zicong Qu)。
  • パーツが重複排除されたことを示すエラーメッセージを追加しました。 #80264Aleksandr Musorin)。
  • OpenSSL 3.5.4 を使用するようにしました。 #81389Konstantin Bogdanov)。
  • bcrypt 認証用のキャッシュを追加しました。 #87115Nikolay Degterinsky)。
  • Parquet のタイムゾーンなしタイムスタンプ(isAdjustedToUTC=false)は、これまでの DateTime64(...) ではなく、DateTime64(..., 'UTC') として読み込まれるようになりました。 #87872Michael Kolupaev)。
  • SQL で定義されたロールを、users.xml で定義されたユーザーに付与できるようになりました。 #88139c-end)。
  • FINAL クエリで使用されるスキップ索引が、主キーの一部であるカラム上にある場合、他のパーツで主キーの交差を確認する追加ステップは不要であり、実行されなくなりました。 #85897 を解決しました。 #88368Shankar Iyer)。
  • disable_insertion_and_mutation が有効な場合でも、リモートテーブルおよびデータレイクテーブルへの挿入が許可されるようになりました。 #88549Alexander Tokmakov)。
  • テーブルレベルの統計情報をキャッシュし、2 つの設定を追加しました: MergeTree の設定 refresh_statistics_interval とセッション設定 use_statistics_cache#88670Han Fei)。
  • 変更処理中に索引をどのように扱うかを制御するための MergeTree 設定 alter_column_secondary_index_mode を追加しました。指定可能な値: throw、drop、rebuild、compatibility。 #77797 をクローズしました。 #89335Raúl Marín)。
  • パーツ向けにテーブル単位の ColumnsDescription キャッシュを導入し、多数のパーツと多数のカラムを含むテーブルでのメモリ使用量を削減しました。 #89352Azat Khuzhin)。

システムテーブルとモニタリング

  • サーバーおよび Keeper 向けに、Keeper リクエストの実行ステージの所要時間を計測する複数のヒストグラムメトリクスを追加。#88158 (Miсhael Stetsyuk).
  • system.columns に新しいカラム統計を追加し、このテーブル上で構築されている統計の種類を示すようにしました。#89086 (Han Fei).
  • HTTP インターフェイスは、クエリ結果キャッシュが使用されている場合に Age および Expires ヘッダーを返します。新しいプロファイルイベント QueryCacheAgeSecondsQueryCacheReadRowsQueryCacheReadBytesQueryCacheWrittenRowsQueryCacheWrittenBytes を導入。#89759 (Alexey Milovidov).
  • Web UI にテーブルプロパティを表示。行数またはバイト数をクリックすると、system.tables からのクエリが表示されます。#89771 (Alexey Milovidov).
  • system.error_log テーブルに last_error_timelast_error_messagelast_error_query_idlast_error_trace フィールドを追加。#89879 (Narasimha Pakeer).
  • system.part_logs に重複排除ブロック ID を保存。#89928 (Sema Checherinda).
  • check_query_single_value_result のデフォルト値を true から false に変更。これにより、CHECK TABLE は集約結果ではなく、パーツごとの詳細な結果を返すようになります。#90150 (Robert Schulze).
  • 診断性向上のため、system.mutations に新しいカラム parts_in_progress_names を追加。#90155 (Shaohua Wang).
  • バックグラウンドジョブのインサイト取得を改善するため、system.background_schedule_pool{,_log} を導入。#91157 (Azat Khuzhin).
  • プロファイルイベント FailedInitialQuery および FailedInitialSelectQuery を追加。#91172 (RinChanNOW).
  • ダングリングパーツのメトリクス用に、system.tables に 3 つのカラムを追加。Han Fei).
  • distributed_cache_client.connection_pool_size の値をメトリクスとして公開。Francesco Ciocchetti).

クライアントとUIの改善

  • ページャー動作中でも、Ctrl+C を押すことでクエリをキャンセルできるようになりました。#80778 を解決しました。#88935 (Grigorii Sokolik)。
  • Web UI のテーブルでは、値が負の場合でもバーが表示されるようになりました。#89016 (Alexey Milovidov)。
  • 先頭が空白文字のクエリは履歴に保存されなくなりました。#89116 (Konstantin Bogdanov)。
  • 対話モードの clickhouse-client および clickhouse-local では、カーソル下にある識別子と同じ名前を持つコマンドライン上の識別子がハイライト表示されるようになりました。#89689 (Alexey Milovidov)。
  • Web UI のクエリ入力用テキストエリアのリサイズハンドルが全幅になりました。#89457 (Alexey Milovidov)。
  • Web UI の型ヒントがテーブルヘッダーにはみ出さないようになりました。#89753 (Alexey Milovidov)。
  • Web UI のクエリエディタで、選択中の行を Ctrl+/(Mac では Cmd+/)で素早くコメントアウト/コメント解除できるようになりました。#91160 (Samuel K.)。
  • XDG Base Directory のパスから ClickHouse Client の設定を読み込めるようになりました。#89882 を解決しました。#90306 (Wujun Jiang)。

S3 とクラウドストレージの改善

  • エンドポイントでリージョンが指定されていない場合に、S3 用のオプトインが必要な AWS リージョンを自動的に使用できるようにしました。#88930 (Andrey Zvonov)。
  • S3 の再パーティショニングが発生した場合でもバックアップが確実に成功するよう、25.6 ではデフォルトの s3_retry_attempts を 500 に設定しました。#89051 (Nikita Mikhaylov)。
  • STS エンドポイントとやり取りする S3 クレデンシャルをキャッシュし、異なる関数呼び出し間で再利用できるようにしました。#89734 (Antonio Andelic)。
  • 事前署名付き URL が S3 で動作するようになりました。#65032 をクローズしました。#90827 (Yarik Briukhovetskyi)。

データレイクの改善

  • deltaLake テーブル関数で、delta_lake_snapshot_start_versiondelta_lake_snapshot_end_version 設定を用いた Delta Lake CDF の読み取りをサポート。#90431Kseniia Sumarokova)。
  • SELECT との一貫性のため、INSERT INTO テーブル関数でのストレージ設定をサポート。#89386 をクローズ。#91707Kseniia Sumarokova)。
  • データレイクに対する TRUNCATE クエリについて、何もせずに黙って成功させるのではなく、「not implemented」エラーをスローするように変更。#86604 をクローズ。#91713Kseniia Sumarokova)。

Kafka の改善

  • kafka_compression_codeckafka_compression_level 設定を使用して、Kafka プロデューサーの圧縮方式を指定できるようになりました。#89073János Benjamin Antal)。
  • 調整可能な Kafka テーブルエンジンの設定として kafka_consumer_reschedule_ms を追加しました。#89204 を解決します。#90112Jeremy Aguilon)。

Keeper の改善

  • Keeper における append リクエストのバッチにバイトサイズの上限を追加しました。上限は keeper_server.coordination_settings.max_requests_append_bytes_size で制御されます。#90342 (Antonio Andelic)。
  • ハンドシェイク中に keeper-server 側でのチェックを追加し、last_zxid_seen (client によって提供される) > last_processed_zxid の場合にクライアントを拒否するようにしました。#90016 (Miсhael Stetsyuk)。
  • S3Queue のクリーンアップ時の RemoveRecursive Keeper リクエストに対して、より小さいノード数の上限を使用するようにしました。#90201 (Antonio Andelic)。

入出力フォーマットの改善

  • 論理型 UUID を持つ FixedString(16) で表現されている場合の Parquet における UUID サポートを追加しました。#74484 (alekseev-maksim)。
  • hasAnyTokens 関数および hasAllTokens 関数への入力として、文字列配列をサポートしました。#89124 (Elmi Ahmadov)。
  • Pretty フォーマットで、名前付きタプルが Pretty JSON として表示されるようになりました。これにより #65022 がクローズされました。#91779 (Mostafa Mohamed Salah)。
  • CapnProto メッセージサイズ上限を追加しました。format_capn_proto_max_message_size で変更できます。#91888 (Antonio Andelic)。

テキスト索引の改善

  • テキスト索引が ReplacingMergeTree テーブルでも動作するようになりました。#90908 (Elmi Ahmadov).
  • PREWHERE で反転インデックスを使用できるようにしました。#89975 を解決しました。#89977 (Peng Jian).
  • Ngrams tokenizer を ngram_length = 1 でビルドできるようになりました。#91529 (George Larionov).
  • テキスト索引のデシリアライズ済みヘッダー用のキャッシュを導入し、I/O を削減してクエリ性能を向上させました。#89513 (Elmi Ahmadov).

その他の改善

  • サイズ制限を検証する際に、max_binary_string_size ではなく max_binary_array_size 設定を使うように、ArrayMap のバイナリデシリアライズを修正しました。#88744 (Raufs Dunamalijevs).
  • システムメモリが 5GB 未満の場合は、デフォルトで実行ファイルを mlock しないようにしました。#89751 (Alexey Milovidov).
  • system.metric_log テーブルで、min_bytes_for_wide_partvertical_merge_algorithm_min_bytes_to_activate を 128MB に設定することで、マージ時のメモリ使用量を削減しました。#89811 (filimonov).
  • S3 ライブラリが XML レスポンスをパースする際に、ネットワークエラーをリトライするようにしました。#90216 (Sema Checherinda).
  • ガードレールの制限値に近づいたときの警告メッセージを更新し、現在値と例外発生時の値を表示するようにしました。#90438 (Nikita Fomichev).
  • system.filesystem_cache テーブルで、すべてのキャッシュ状態を 1 つの chunk にまとめるのではなく、chunk をストリーミングするようにしました。#90508 (Kseniia Sumarokova).
  • ベクトル類似度索引キャッシュ内のエントリが、テーブルパーツが削除されたり新しいパーツに置き換えられたりしたときに削除されるようになりました。#90750 (Shankar Iyer).
  • 認証前に返される HTTP エラーレスポンスで ClickHouse サーバーバージョンを公開しないようにしました。#91003 (filimonov).
  • FINAL 処理の後で行ポリシーと PREWHERE 条件を適用できるように、新しい設定 apply_row_policy_after_finalapply_prewhere_after_final を追加しました。#90986 を修正しました。#91065 (Yarik Briukhovetskyi).
  • tupleElement で JSON 型をサポートしました。#81630 をクローズしました。#91327 (Pavel Kruglov).
  • タプル要素アクセスで負のインデックス(例: tuple.-1)をサポートしました。#91665 (Amos Bird).
  • Array から QBit へのキャスト時に暗黙の型変換を許可しました。#91846 (Raufs Dunamalijevs).
  • system.blob_storage_log に新しいカラム elapsed_time_microseconds を追加しました。#92322 (Alexey Milovidov).
  • Shared データベースにおけるテーブル削除の遅延時間を制御できる新しい設定 database_shared_drop_table_delay_seconds を追加しました。(Nikolay Degterinsky).
  • 名前付きコレクション用の暗号化キーを遅延ロードするようにしました。(Pablo Marcos).
  • 分散キャッシュで、バッファー単位でクライアントキャッシュを無効化できるようにしました。(Kseniia Sumarokova).
  • 分散キャッシュ接続に共通の上限値を追加しました。(Kseniia Sumarokova).

バグ修正

注記

このセクションでは、重要なバグ修正のうち主なもののみを取り上げています。このリリースにおけるすべてのバグ修正の一覧については、完全な変更履歴を参照してください。

クエリ実行に関する修正

  • 分散マージ集約で複数のリモート分片が関与する場合の rows_before_limit_at_least の不正な値を修正しました。#63511 (Amos Bird).
  • INSERT INTO ... SELECT クエリの後に 0 rows in set が表示される問題を修正しました。#47800 をクローズ。 #79462 (Engel Danila).
  • 定数引数およびショートサーキット評価を伴う multiIf を修正しました。#72714 をクローズ。 #84546 (Yakov Olkhovskiy).
  • サブクエリ制約を持つテーブルに対して SELECT を実行した際に発生する LogicalError を修正しました。#84190 を解決。 #85575 (Pervakov Grigorii).
  • query_plan_optimize_join_order_limit > 1 の場合の CROSS JOIN の並び替えにおける論理エラーを修正しました。#89409 をクローズ。 #88286 (Vladimir Cherkasov).
  • 右テーブルのキーがユニークな場合に OR 条件付きの JOIN で誤った結果になる問題を修正しました。#89391 を解決。 #89512 (Vladimir Cherkasov).
  • 重複カラムを伴う full_sorting_merge join における論理エラーを修正しました。#86957 を解決。 #89495 (Vladimir Cherkasov).
  • 重複カラムを伴う JOIN で発生しうる "Invalid number of rows in Chunk" エラーを修正しました。#89411 を解決。 #90053 (Vladimir Cherkasov).
  • parallel replicas 有効時、分散テーブルを用いた RIGHT JOIN で重複データが発生する問題を修正しました。#90806 (zoomxi).
  • join_use_nulls と複数の JOIN、さらに CROSS JOIN を組み合わせた場合の論理エラーを修正しました。#91853 (Vladimir Cherkasov).

データ型と JSON の修正

  • 一部のケースにおいて、名前にドットを含むカラムからサブカラムを読み取る処理を修正しました。次の問題を解決します: #81261#82058#88169#87205Pavel Kruglov)。
  • JSON 内の Float と Bool が混在した配列の読み取りを修正しました。以前はそのようなデータを挿入すると例外が発生していました。#88008Pavel Kruglov)。
  • LowCardinality(Nullable(T)) から Dynamic へのキャストを修正しました。#86365Pavel Kruglov)。
  • 高度な JSON 共有データのシリアル化処理において、パスおよびそのサブカラムの読み取り時に発生しうる論理エラーを修正しました。#89805 をクローズしました。#89819Pavel Kruglov)。
  • データ型のバイナリデシリアル化で発生しうるスタックオーバーフローを修正しました。#88710 をクローズしました。#89822Pavel Kruglov)。
  • JSON 内の共有データおよび動的パスの状態が不整合になりうる問題を修正しました。この問題は論理エラーや予期しない結果につながる可能性がありました。#90816Pavel Kruglov)。
  • Summing/Aggregating/Coalescing MergeTree における JSON カラムのマージ処理を修正しました。#91151Pavel Kruglov)。

MergeTree とストレージの修正

  • 有効期限 (TTL) によるカラムの早期削除が原因で発生していた複数の問題を修正しました。 #88002 を解決します。 #88860 (Amos Bird).
  • 主キーが逆順の場合に min(PK) / max(PK) の結果が誤っていた問題を修正しました。これは #83619 を修正します。 #88796 (Amos Bird).
  • 主キーが降順にソートされている場合に、JOIN 最適化で誤った分片処理が行われる問題を修正しました。 #88512 を解決します。 #88794 (Amos Bird).
  • PROJECTION の索引の読み取り経路におけるレースコンディションを修正しました。 #89497 を解決します。 #89762 (Peng Jian).
  • deduplicate_merge_projection_mode='ignore' を使用している場合に、有効期限 (TTL) により空になったパーツと、非空の PROJECTION を含むパーツのマージ処理が誤っていた問題を修正しました。 #89430 を解決します。 #89458 (Amos Bird).
  • コンパクトなパーツに対して一部の ALTER クエリを実行した後に発生しうる TOO_MANY_MARKS エラーを修正しました。 #91980 (alesapin).

Parquet およびフォーマットの修正

  • input_format_parquet_local_file_min_bytes_for_seek が 0 に設定されている場合に Parquet リーダーで発生していたセグメンテーションフォルトを修正しました。#78456 を解決。#88784 (Animesh)。
  • Parquet writer において、created_by 文字列を正しいフォーマットで出力するようにしました。#87735 (Michael Kolupaev)。
  • ネイティブ writer を用いた単一スレッド書き込み時に、Parquet 書き込みで元の順序が保持されない問題を修正しました。#90126 (Arthur Passos)。
  • DICTIONARY_V2 でエンコードされ、NULL 値のみを含む文字列カラムを読み込む際の ORC リーダーのバグを修正しました。#91889 (Peng Jian)。
  • ORC フォーマットから Date および DateTime64 型を読み込む際に発生していたオーバーフローを修正しました。#70976 をクローズ。#91572 (Yarik Briukhovetskyi)。

Iceberg とデータレイクの修正

  • icebergS3Cluster プロトコルを修正し、iceberg クラスタ関数でスキーマ進化、位置削除および等価削除をサポートするようになりました。#88287 を解決しました。#88919Yang Jiang)。
  • glue カタログを使用している場合に、timestamp カラムを含む iceberg テーブルで発生する JSON の例外を修正しました。#90210 を解決しました。#90209Alsu Giliazova)。
  • manifest ファイルでソート順が指定されていない場合、ClickHouse が iceberg に対して read-in-order 最適化を使用しないようになりました。#89178 を修正しました。#90304alesapin)。

関数の修正

  • 関数 reverseUTF8 のバグを修正しました。以前のバージョンでは、長さ 4 の UTF-8 コードポイントのバイト列を誤って反転していました。これにより #88913 がクローズされました。 #88914 (Alexey Milovidov)。
  • cramersVcramersVBiasCorrectedtheilsUcontingency において誤った結果を引き起こしていた φ二乗の計算を修正しました。 #87831 (Nihal Z. Miaji)。
  • top_k が単一引数で呼び出された際に、しきい値(threshold)パラメータを正しく考慮するよう修正しました。これにより #88757 がクローズされました。 #88867 (Manuel)。
  • countIf(*) の引数が切り捨てられる問題を修正しました。これにより #89372 がクローズされました。 #89373 (Manuel)。
  • trimltrimrtrim 関数が 2 つの引数で動作しない問題を修正しました。これにより #90170 がクローズされました。 #90305 (Nihal Z. Miaji)。
  • 空配列と isNull 関数を併用した場合に arrayFilter 関数が動作しない問題を修正しました。これにより #73849 がクローズされました。 #91105 (Nihal Z. Miaji)。

メモリおよびクラッシュの修正

  • IN 内での ARRAY JOIN を含むリモートクエリ実行時、enable_lazy_columns_replication 設定有効時に発生しうるクラッシュを修正しました。#90361#89997Pavel Kruglov)。
  • 誤った破棄順序が原因で、サーバーのクリーンシャットダウン中に発生していたクラッシュを修正しました。#82420#90076Nikita Mikhaylov)。
  • 集約関数の状態に LowCardinality(String) のカラムのシリアライズされた値が含まれている場合に発生するクラッシュを修正しました。#89550Pavel Kruglov)。
  • 不正な形式の分片ディレクトリ名を解析する際に StorageDistributed で発生するクラッシュを修正しました。#90243Aleksandr Musorin)。
  • userspace page cache が有効な場合に発生していた誤ったメモリ制限エラーを修正しました。#91361Michael Kolupaev)。
  • MEMORY_LIMIT_EXCEEDED の後に集約関数で発生しうるクラッシュを修正しました。#92390Azat Khuzhin)。
  • ハッシュ結合の結果生成におけるメモリ使用量のトラッキングを改善しました。#89560Azat Khuzhin)。

セキュリティとアクセスに関する修正

  • 存在しないロールを持つユーザーから clusterAllReplicas を実行しようとした際に発生する ACCESS_ENTITY_NOT_FOUND エラーを修正。#87670 を解決。#89068pufit)。
  • 対象ホストとして localhost を指定した remote テーブル関数が使用される場合の ALTER UPDATE クエリに対するアクセス権検証を修正。#90761pufit)。
  • 部分的な revoke に対するワイルドカード grant のチェックを修正。#90922pufit)。
  • ワイルドカード revoke と組み合わせたグローバル grant の処理を修正。#90928pufit)。

Replicated データベースの修正

  • リカバリ後に、Replicated データベースのレプリカが長時間にわたって Failed to marked query-0004647339 as finished のようなメッセージを出力し続けて進まなくなることがありましたが、修正されました。 #88671 (Alexander Tokmakov)。
  • シャットダウン処理とバックグラウンドの INSERT の競合状態により Distributed で発生していた use-after-free を修正しました。#88640 を解決します。 #89136 (Azat Khuzhin)。
  • リフレッシャブルmaterialized view:リフレッシュ中にソーステーブルが完全に DROP された場合にまれに発生していたサーバークラッシュを修正しました。 #89203 (Michael Kolupaev)。

Keeper の修正

  • ローテーション時に changelog が正しくリネームされなかった場合に、Keeper の起動時における changelog の読み取り処理が失敗していた問題を修正。#89496 (Antonio Andelic).

その他の主な修正

  • スキップ索引を解析する際のパフォーマンス低下を修正しました。 #89004 (Anton Popov).
  • 25.8 へのスムーズなアップグレードを妨げていた Hive パーティショニングの非互換性を修正しました。 #90202 (Kseniia Sumarokova).
  • nan/inf により無限に続いていた WITH FILL クエリを修正しました。 #69261 を解決しました。 #90255Konstantin Bogdanov)。
  • Time および Time64 は、DateTime および DateTime64 からの変換時にタイムゾーンを正しく考慮するようになりました。#89896 をクローズしました。#90310Yarik Briukhovetskyi)。
  • SELECT クエリでクエリ条件キャッシュが有効な場合に、論理更新後に誤ったクエリ結果が返される可能性があった問題を修正しました(#90176)。 #90204Anton Popov)。
  • インメモリでの String 集約状態のシリアライズ互換性を修正。 #90880 (Antonio Andelic).
  • Nested かつ LowCardinality なカラムに対する SummingMergeTree の集約を修正しました。 #90927 (Ivan Babrou)。
  • system.view_refreshesNo macro 'replica' in config エラーで失敗する問題を修正しました。 #92203 (Michael Kolupaev).
  • Shared Catalog を使用する MV に対して、カラムを間接的に追加する ALTER クエリのレプリケーションを修正しました。 (Nikolay Degterinsky).
  • 失敗した MV コミットによって Shared Catalog の状態適用処理がハングする不具合を修正しました。 (Nikolay Degterinsky)
  • Shared Catalog を使用するセカンダリレプリカ上での ALTER における設定制約のチェックを修正しました。(Nikolay Degterinsky)
  • SharedCatalog へのマイグレーション時にデータベースコメントが保持されるようになりました。 (Alexander Tokmakov).
  • Shared Catalog でセカンダリーレプリカ上の materialized view が置き換えられてしまう問題を修正しました。 (Nikolay Degterinsky)
  • system.distributed_cache_usage カウンターを修正しました。(Kseniia Sumarokova)。
  • Shared Catalog で ILLEGAL_COLUMN 例外により CREATE に失敗したテーブルに対し、DROP が進行しなくなる問題を修正しました。(Nikolay Degterinsky
  • Replicated データベースにおいて、SharedSet/SharedJoin での CREATE OR REPLACE を無効化しました。(Tuan Pham Anh)
  • 共有データベースでの RMV リフレッシュ時に発生する UNFINISHED 例外を修正。(Nikolay Degterinsky)。
  • Shared データベースで TABLE_ALREADY_EXISTS エラーにより発生していたクラッシュを修正しました。 (Nikolay Degterinsky).
  • Shared Catalog 内で不正な CREATE クエリを持つテーブルのマイグレーションを修正しました。 (Nikolay Degterinsky)。
  • getStatus で常にメモリ上の仮想パーツを使用するようにしました。(Mikhail Artemenko)。
  • 起動時に Shared catalog state アプリケーションにリトライ機能を追加しました。 (Nikolay Degterinsky).
  • テーブル作成中に例外が発生した後、DROP DATABASE がハングしたままになる問題を修正しました。(Nikolay Degterinsky
  • 分散キャッシュのロジックエラーを修正しました。 (Kseniia Sumarokova).
  • 分散キャッシュで誤ったエラーが発生する問題を修正しました。(Kseniia Sumarokova)
  • Shared Catalog の ~TemporaryLockForUUIDDirectory で発生する LOGICAL_ERROR を修正。(Nikolay Degterinsky)。
  • データベース名の変更後にメタデータキャッシュが誤った依存関係を返してしまう問題を修正しました。 (Nikolay Degterinsky).
  • Shared Catalog: セカンダリーレプリカ上で大きなテーブルを DROP する際に発生していた問題を修正しました。 (Raúl Marín).
  • Distributed cache:processWriteRequest の論理エラーを修正。(Kseniia Sumarokova)。
  • セカンダリのレプリカ上での MV の ALTER 操作に対するチェックを削除しました。(Nikolay Degterinsky).