目次
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).
- N-gramトークナイザーは、設定された長さ N 未満の N-gram を返さなくなります。検索トークンが空の場合、テキスト検索では行が返されなくなります。 #89757 (George Larionov).
StringからNullable(String)へALTER COLUMNしても、データに対するmutationは実行されません。ただし、uniq集約関数ではデータ構造が異なります。nullable なカラムでは、ネストされた uniq アグリゲータを持つAggregateFunctionNullが使用されます。AggregateFunctionNullは追加の真偽値フラグをシリアライズするため、統計ファイルとの互換性が失われます。修正として、シリアライゼーション時に nullable カラムかどうかを記録するフラグが追加されました。統計のフォーマットが変更されたため、古いフォーマットの統計が存在するとサーバーで障害が発生する可能性があります。この PR #90904 ではこのクラッシュを修正し、既存の統計がレガシーフォーマットを使用している場合は例外を送出します。例外を回避するには、ALTER TABLE table MATERIALIZE STATISTICS ALLを実行して統計を再生成する必要があります。#90311 (Han Fei).- 設定
allow_not_comparable_types_in_order_by/allow_not_comparable_types_in_comparison_functionsを削除しました。比較不可能な型を ORDER BY や比較関数で許可すると、論理エラーや予期しない結果を招く可能性があります。#90028 を修正しました。#90527 (Pavel Kruglov). - 設定
check_query_single_value_resultのデフォルト値がtrueからfalseに変更されました。これにより、CHECK TABLEは集計結果 (1 = 正常、0 = エラー検出) ではなく、各パートの詳細な結果を返すようになります。従来の動作と比べると、こちらのほうがユーザーの意図により沿っていると考えられます。#91009 (Robert Schulze). - 暗黙的な索引まわりに複数の修正を加えました。表示される、または保存されるスキーマ (Keeper メタデータ) には、
add_minmax_index_for_numeric_columnsやadd_minmax_index_for_string_columnsの設定によって作成されるものなど、暗黙的な索引は含まれません。このため、新しいバージョンで ReplicatedMergeTree テーブルを作成または更新する際に、古い release のレプリカが存在すると、メタデータエラーが発生する可能性があります。そのような場合は、クラスターのアップグレードが完全に完了するまで、古いレプリカに DDL 文を送信してください。 #91429 (Raúl Marín). receive_timeoutによってクエリがタイムアウトした場合、clickhouse-client が非ゼロの終了コード (159 - TIMEOUT_EXCEEDED) を返すようになりました。以前は、タイムアウト時でも終了コード 0 (成功) が返されていたため、スクリプトや自動化処理でタイムアウトによる失敗を検出しづらくなっていました。#91432 (Sav).- これらのテーブルではマージ動作が未定義のため、空の
ORDER BYキーを持つ特殊なMergeTreeテーブル (ReplacingMergeTree、CollapsingMergeTreeなど) は作成できなくなりました。引き続きそのようなテーブルを作成する必要がある場合は、allow_suspicious_primary_key設定を有効にしてください。 #91569 (Anton Popov). - 型のサイズとちょうど同じ分だけシフトした場合に、関数
bitShiftLeftとbitShiftRightが 0 または空の値を返すように修正しました。#91943 (Pablo Marcos). - #88380 の続報です。この PR では、プロジェクションで位置引数が無効化されたことを後方互換性のない変更としています。さらに、プロジェクションに位置引数が含まれている場合でも ClickHouse クラスターを安全にアップグレードできるよう、
enable_positional_arguments_for_projections設定が導入されています。 #92007 (Dmitry Novik). - JSON の高度な共有データをデフォルトで有効にしました。この変更以降、25.8 より前のバージョンへのダウングレードはできなくなります。これらのバージョンでは、JSONカラムを含む新しいデータパーツを読み取れないためです。安全にアップグレードするには、
compatibility設定を以前のバージョンに設定するか、MergeTree 設定dynamic_serialization_version='v2', object_serialization_version='v2'を設定することを推奨します。#92511 (Pavel Kruglov).
新機能
- ユーザーは、従来のファイルを保持または削除するオプションに加えて、処理済みファイルを移動したりタグ付けしたりできるよう、S3/Azure Queueテーブルを設定できるようになりました。#72944 を解決しました。#86907 (Murat Khairulin) 。
- S3/Azure Queue ストレージに設定
commit_on_selectを追加 (処理済みデータをコミットする必要があるかどうか、およびafter_processingアクションを適用するかどうかを定義) 。デフォルト値はfalseです。select 時のアタッチ済み mv のチェックを修正しました。#91450 (Kseniia Sumarokova). - XRay を使用して実行時にインストルメンテーションを追加し、本番環境での問題のデバッグや決定論的プロファイリングを可能にします。#74249 を解決しました。#89173 (Pablo Marcos) 。
INで、定数ではない第2引数を使用できるようになりました。第2引数として Tuple もサポートされます。#77906 (Yarik Briukhovetskyi) 。- Geometry型の面積と周長を計算する関数。#89047 (Konstantin Vedernikov).
- 属性が指定した値に等しい辞書キーを返す
dictGetKeys関数を実装しました。クエリ単位の逆ルックアップ cache を使用し、max_reverse_dictionary_lookup_cache_size_bytes設定で調整することで、繰り返し行うルックアップを高速化します。#89197 (Nihal Z. Miaji). - 入力JSONをJSON型の明示的な型付きパスにCASTできない場合に、JSON型への挿入や型変換で例外を発生させないための設定
type_json_skip_invalid_typed_pathsを追加しました。型付きパスのnull値またはゼロ値にフォールバックします。 #89886 (Max Justus Spransy). - MergeTreeテーブルで
direct(ネストループ) joinをサポートしました。使用するには、設定でこの値のみを指定します:join_algorithm = 'direct'。 #89920 (Vladimir Cherkasov) 。 - Iceberg に対する
CREATE操作でのORDER BYと、INSERT時のソートをサポートしました。#89916 を解決します。#90141 (Konstantin Vedernikov) 。 ALTER TABLE ... ADD PROJECTIONで、新しいWITH SETTINGS句を介して指定できるプロジェクションレベルの設定が導入されました。これらの設定により、プロジェクションごとに特定の MergeTree ストレージパラメーター (例:index_granularity、index_granularity_bytes) を上書きできるようになります。#90158 (Amos Bird) 。- #73900 および #38775 の一環として、
HMAC(algorithm, message, key)SQL関数を追加しました。#90837 (Mikhail f. Shiryaev) 。 - 第1引数が定数Arrayの場合に、
has関数で主キーおよびデータスキッピングインデックスを使用できるようにしました。#90980 をクローズしました。#91023 (Nihal Z. Miaji). - 新しい入出力フォーマット
Buffersを実装しました。このフォーマットはNativeに似ていますが、Nativeとは異なり、カラム名、カラム型、追加のメタデータは保存しません。#84017 をクローズしました。#91156 (Nihal Z. Miaji). - Cluster table function でファイルを並列に読み込む際のストリーム数を制御する設定
max_streams_for_files_processing_in_cluster_functionsを追加しました。#90223 をクローズします。#91323 (Pavel Kruglov). - 行レベルセキュリティ用のデータマスキング (ClickHouse Cloudでのみ利用可能) 。clickhouse-clientでこれをサポートするため、データマスキングポリシー用のパーサーを追加しました。#90552 (pufit).
windowFunnel集約関数にallow_reentryオプションを追加しました。strict_orderと併用して有効にすると、順序に違反するイベントがあってもファネル分析を停止せず、それらのイベントを無視します。これにより、再読み込みを含むユーザージャーニー (A->A->B) や戻る操作を伴う遷移 (A->B->A->C) でも、コンバージョン率を過少に見積もることなく扱えるようになります。#86916 (Lee ChaeRok)。- zookeeper と Keeper の互換性: STATISTICS 付き CREATE。 #88797 (Konstantin Vedernikov).
- ClickHouse Keeper で ZooKeeper の永続ウォッチをサポート。第2弾: https://github.com/ClickHouse/ClickHouse/pull/78207. #88813 (Konstantin Vedernikov).
- ミューテーション中に索引をどのように扱うかを制御するための MergeTree 設定
alter_column_secondary_index_modeを追加しました。設定可能な値: throw、drop、rebuild、compatibility。 #77797 をクローズ。 #89335 (Raúl Marín)。 TimeおよびTime64データ型が本番環境で使用可能になったため、設定enable_time_time64_typeはデフォルトで有効化されました。#89345 (Yarik Briukhovetskyi).deltaLakeテーブル関数と設定delta_lake_snapshot_start_version、delta_lake_snapshot_end_versionを使用した Delta Lake の CDF の読み取りをサポートしました。CDF (Change Data Feed。Delta テーブルのバージョン間における行レベルのデータ変更 (insert、update、delete など) を自動的に取得してクエリできる機能) は、DeltaLake ではdelta.enableChangeDataFeedによって有効になります。データとあわせて提供されるカラムは_change_type、_commit_version、_commit_timestampです。#90431 (Kseniia Sumarokova).- タプル要素へのアクセスで負のインデックス (例:
tuple.-1) をサポートしました。 #91665 (Amos Bird).
実験的機能
- テキスト索引フォーマット v3 を導入し、ベータに昇格しました。
automatic_parallel_replicas_mode設定で制御される新しいロジックを導入し、並列レプリカを使用してクエリを自動実行できるようにしました。通常の単一ノード実行時には、ClickHouse が後のプランニング段階で考慮される統計情報を収集します。その統計情報から並列レプリカの利用が有効と見込まれる場合、ClickHouse は対象のクエリを並列レプリカで自動的に実行します。現在サポートされているクエリの範囲はまだかなり限定的です。#87541 (Nikita Taranov).--loginを使用して、Cloud 認証情報で ClickHouse Cloud インスタンスにアクセスできるようにしました。#89261 (Krishna Mannem).AggregateFunctionカラムを持つテーブルへのINSERTクエリを改善するため、セッションレベル設定aggregate_function_input_formatを追加しました。これにより、シリアライズされた状態、生の値、または配列としてデータを挿入できます。#88088 (Punith Nandyappa Subashchandra).
パフォーマンス改善
- スキップ索引と動的しきい値フィルターを使用して
ORDER BY...LIMIT Nクエリを最適化し、処理する行数を大幅に削減しました。 #89835 (Shankar Iyer). - ClickHouse は、
ANDとORが混在して結合されたフィルタ条件を含む WHERE 句に対する索引解析で、スキップ索引を使用するようになりました。以前は、スキップ索引を利用するには、WHERE 句がフィルタ条件の連言 (AND) である必要がありました。この機能は、新しい設定use_skip_indexes_for_disjunctions(デフォルト: on) で制御できます。 (issue #75228) 。#87781 (Shankar Iyer). - LEFT/INNER JOIN 演算で、左側のテーブルから順序どおりに読み進めることをサポートし、その順序を後続のステップで利用できるようになりました。設定
query_plan_read_in_order_through_joinで無効にできます。また、LEFT/INNER JOIN での読み取り最適化において仮想行もサポートしました (設定read_in_order_use_virtual_rowを参照) 。#89815 (Vladimir Cherkasov) 。 - 制限値を引き上げることで、遅延マテリアライズドカラムのパフォーマンスを改善しました。#90309 (Nikolai Kochetov) 。
- 大規模な
minmax索引 (数百万のグラニュール) が存在する場合、索引解析のレイテンシが低下します。#90428 (Shankar Iyer). - INNER JOIN向けに、シンプルな DPsize の JOIN 順序最適化アルゴリズムを実装しました。使用するアルゴリズムとその適用順序は、新しい実験的な設定で制御できます。たとえば、
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). - hash table の反復処理中にキーを prefetch し、cache ミスを最小限に抑えます。 #84708 (lgbo).
- points 配列の末尾部分のみをソートし、単調な入力ではソートをスキップすることで、
histogram集約関数を最適化し、約10%の高速化を実現しました。 #85760 (MakarDev). - テキスト索引から構築した追加のプレフィルターを活用することで、
like、equals、hasなどの関数を含む述語のフィルタリング性能を向上させました。この最適化は、query_plan_text_index_add_hint設定で有効になります。Mapデータ型のカラムに対するテキスト索引の活用も改善しました。#88550 (Anton Popov). - 事前計算済みの可能なキー値の集合に対してより高速にルックアップすることで、繰り返し行われる逆方向の Dictionary ルックアップを最適化しました。#7968 をクローズしました。#88971 (Nihal Z. Miaji).
topK集約関数のパフォーマンスと挙動を改善しました。#90091 (Raúl Marín).Decimalの比較演算のパフォーマンスを向上しました。#28192 を修正しました。#90153 (Konstantin Bogdanov)。- https://github.com/ClickHouse/ClickHouse/pull/84423 に続き、Apache Paimon 関数でパーティションプルーニングをサポートしました。#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). - glob パターンで作成された S3 テーブルに対し、
_pathフィルター値をプッシュダウンすることでクエリ性能を改善し、S3 のリスト取得操作を回避できるようになりました。s3_path_filter_limit設定で制御されます。#91165 (Eduard Karacharov). - 動的ディスパッチにより、WHERE句内でのカラムから bool への変換を高速化しました。#91203 (Raúl Marín) 。
- 動的ディスパッチにより、単一の数値ブロックのソートを高速化しました。 #91213 (Raúl Marín) 。
- クエリプラン内の未使用カラムを削除する最適化を追加しました。#75152 を修正しました。#76487 (János Benjamin Antal).
query_plan_optimize_join_order_limitのデフォルト値が10に変更されました。#89312 (Alexey Milovidov) 。- デフォルトで設定
allow_statistics_optimizeを有効化し、JOIN オプティマイザがカラム STATISTICS を使用するようにしました。#89332 (Alexey Milovidov) 。 ANTIJOINでもJOINランタイムフィルタをサポートしました。あわせて、ロック競合を減らすため、ランタイムフィルタの実装もリファクタリングしました。#89710 (Dmitry Novik) 。min_bytes_for_wide_partとvertical_merge_algorithm_min_bytes_to_activateを 128MB に設定することで、system.metric_logテーブルのマージ時のメモリ使用量を削減します (デフォルトで有効) 。#89811 (filimonov).- PREWHERE で転置索引を使用可能にしました。#89975 を解決しました。#89977 (Peng Jian).
- GCS でのパフォーマンスを向上させるため、GCP OAuth を使用している場合は S3 プロバイダーを追加しないようにしました。 #91706 (Antonio Andelic).
改善
- クエリで行ポリシーを
FINALの後にのみ適用できるようにする新しい設定apply_row_policy_after_finalが追加されました。これにより、行ポリシーを使用する ReplacingMergeTree の動作がより正確になります。#90986 を修正しました。#91065 (Yarik Briukhovetskyi). Prettyフォーマットでは、名前付きタプルが Pretty JSON として表示されるようになりました。これにより、#65022 が解決されました。#91779 (Mostafa Mohamed Salah).system.error_logテーブルに、last_error_time、last_error_message、last_error_query_id、last_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). - part が重複排除された場合のエラーメッセージを追加しました。 #80264 (Aleksandr Musorin).
- Kafkaテーブルに対する materialized view のターゲットテーブルを表示するため、
system.kafka_consumersにdependenciesおよびmissing_dependenciesカラムを追加しました。KafkaMVNotReadyカウンターを追加しました。#85346 (Ilya Golshtein). - これで、remote およびネイティブプロトコルを使用した挿入でも、テーブルのデフォルト式が正しく機能するようになりました。#87972 をクローズします。#88540 (Pervakov Grigorii).
PSI_*_*の非同期メトリクス収集を無効にできるようになりました。#88557 (MikhailBurdukov).Nullable型のカラムに対するスパースシリアライゼーションのサポートが追加されました。これは #44539 の続きです。#88999 (Amos Bird).plain-rewritableディスクには独自の実装とレイアウトがあります。通常のplainディスクをベースにしないようにします。#89807 (Mikhail Artemenko).- HTTP の例外には、終端のゼロ chunk が含まれないようにしました。 #89998 (Kaviraj Kanagaraj).
- ハンドシェイク時に Keeper サーバー側のチェックを追加し、
last_zxid_seen(クライアントが提供) > last_processed_zxidの場合はクライアントを拒否するようにしました。これにより、クライアントが遅延しているレプリカに再接続した際に古いデータを読み取ってしまうことを防ぎます。#90016 (Miсhael Stetsyuk). - 新しいデータを待つ間にコンシューマーがスリープする時間を調整できるよう、調整可能な
Kafkaテーブルエンジン設定kafka_consumer_reschedule_msを追加しました。#89204 を修正しました。#90112 (Jeremy Aguilon) 。 - 診断性を向上させるため、
system.mutationsに新しいカラムparts_in_progress_namesを追加しました。#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 を解決します。#90306 (Wujun Jiang)。 - Keeper の append リクエストのバッチに対するバイトサイズの上限を追加しました。上限は
keeper_server.coordination_settings.max_requests_append_bytes_sizeで制御されます。#90342 (Antonio Andelic). - Iceberg でパーティション数が過大になるのを防ぐ設定を追加しました。#90365 (Konstantin Vedernikov) 。
- ガードレールの上限に近づいた際の警告メッセージを更新し、現在値とthrow値を表示するようにしました。 #90438 (Nikita Fomichev).
system.filesystem_cacheテーブルでは、cache の状態全体を含む単一の chunk を作成する代わりに、chunk をストリーミングするようになりました。ファイルシステムキャッシュの状態の読み取りは、cache が大きい場合に時間がかかり、大量のメモリを消費する可能性があるため、大規模なデプロイメントではストリーミングが不可欠です。#90508 (Kseniia Sumarokova).- Hive パーティション化における不適切な例外メッセージを修正しました。スペースが 1 つ抜けていました。#90685 (Alexey Milovidov).
- ベクトル類似度索引キャッシュ内のエントリは、テーブルのパーツが削除された場合や、新しいパーツに置き換えられた場合に削除されるようになりました。これまでは、これらは cache のエビクション時に遅れて消去されるだけでした。 #90750 (Shankar Iyer).
- chdig (ClickHouse向けのコマンドライン診断ツール) を v25.12.1 に更新しました。#91394 (Azat Khuzhin) 。
- これで、事前署名付きURLがS3で利用できるようになりました。#65032 をクローズ。#90827 (Yarik Briukhovetskyi).
- テキスト索引が
ReplacingMergeTreeテーブルでも利用できるようになりました。#90908 (Elmi Ahmadov) 。 - 認証前に返されるHTTPエラーレスポンスに ClickHouse server のバージョンが含まれないようにしました。 #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). FailedInitialQueryおよびFailedInitialSelectQueryのプロファイルイベントを追加しました。#91172 (RinChanNOW).- 多数のサブカラムを持つ JSON カラムでカラムのサンプルを読み取る際、スレッドプールを無条件に使用するのではなく、
merge_tree_use_prefixes_deserialization_thread_pool設定を尊重するようにして、起こり得たスレッドプールの枯渇を修正しました。#91208 (Raufs Dunamalijevs). tupleElementでJSON型をサポート。 #81630 をクローズ。 #91327 (Pavel Kruglov) 。- ユーザー空間のページキャッシュが有効な場合に、メモリ制限エラーが誤って発生する問題を修正しました。 #91361 (Michael Kolupaev).
- N-gramトークナイザーは、ngram_length = 1 でも作成できるようになりました。#91529 (George Larionov) 。
SELECTと同様に、INSERT INTO FUNCTIONでも関数内でストレージ設定をサポートするようになりました。#89386 をクローズしました。#91707 (Kseniia Sumarokova).- データレイクに対するTRUNCATEクエリで、何もせず黙って終了するのではなく、“not implemented” をスローするようにしました。#86604 をクローズしました。#91713 (Kseniia Sumarokova).
DB::Exception: apache::thrift::transport::TTransportException: MaxMessageSize reachedの発生を回避するため、Parquet v3 reader の最大メッセージサイズを設定しました。#91737 (Arthur Passos).- 設定
insert_select_deduplicateを追加しました。これにより、INSERT SELECT の際に挿入の重複排除をどのように扱うかが、より明確になります。一般に、このようなクエリでは重複排除はできませんが、テーブルが変更されておらず、結果がソートされていれば、再試行時に重複排除を行うことが可能です。同じソースであることは追跡できませんでしたが、SELECT クエリの結果がソートされているかどうかは確認できます。実際には、これを一般的なケースで確認するのは非常に難しいことがわかりましたが、ORDER BY ALLを使う単純なケースであれば容易です。現時点では、ここのロジックは実際には壊れています。重複排除を試みていますが、ほとんどの場合、SELECT が異なるデータを返すため、ブロック間の重複を検出できません。 #91830 (Sema Checherinda). ArrayをQBitにキャストする際の暗黙的な型変換が許可されました。これにより、整数配列および浮動小数点配列を、明示的な型キャストなしでQBitカラムに直接挿入できるようになりました。#91846 (Raufs Dunamalijevs).CapnProtoメッセージのサイズ上限を追加しました。これはformat_capn_proto_max_message_sizeで変更できます。#91888 (Antonio Andelic) 。- クエリのみを追跡するよう、mark cache メトリクスを調整しました (#83415 以降、
MarkCacheHits/MarkCacheMissesはマージでも更新されるようになっていましたが、この PR でこの挙動を元に戻します) 。#91910 (Azat Khuzhin) 。 - ローカル接続で
client_info.interfaceがTCPに設定されてしまう問題を修正しました。 #91933 (Konstantin Bogdanov) 。 - ACME クライアント設定の
refresh_certificates_task_intervalパラメータで、秒単位の値が必要になりました。#92211 (Konstantin Bogdanov). system.*_log用のパーツイベントをsystem.part_logに記録。 #92217 (Azat Khuzhin).
バグ修正 (公式の安定版リリースでユーザーに影響する不具合)
TimeおよびTime64データ型のスーパータイプに関連する PREWHERE のいくつかのバグを修正しました。#84544 を解消しました。#84715 (Yarik Briukhovetskyi) 。- カスタム設定が反映されるよう、使用前に
DNSResolverを初期化するようにしました。#76296 を修正しました。#81302 (Zhigao Hong)。 - 一部のケースで、名前にドットを含むカラムからサブカラムを読み取れない不具合を修正しました。#81261、#82058、#88169 を解決します。#87205 (Pavel Kruglov) 。
- GenerateRandom エンジンで、リテラルでないパラメータ使用時にクラッシュする問題を修正し、LOGICAL_ERROR ではなく、明確なメッセージ付きで BAD_ARGUMENTS を返すようにしました。 #88157 (Shafi Ahmed).
UNIONがある場合に、未使用のプロジェクションカラムが削除される不具合を修正しました。#88180 を修正。 #88350 (Sema Checherinda).- 主キーが降順でソートされている場合に、
JOIN最適化で分片処理が正しく行われない問題を修正しました。#88512 を解決します。#88794 (Amos Bird). - s3queue_keeper_fault_injection_probablility を再度有効にし、問題を修正しました。 #88800 (Kseniia Sumarokova).
- 有効期限 (TTL) でのカラムの早すぎる削除が原因で発生していた複数の問題を修正しました。#88002 を解決します。#88860 (Amos Bird)。
- temporary_files_buffer_size が 0 に設定されている場合に例外をスローするようにしました。#88900 を修正します。#88917 (Vladimir Cherkasov).
- 述語に
NULL定数が含まれる場合に、Setの索引解析中に発生していたBad getエラーを修正しました。#84856 および #82974 に対応しています。#89429 (Nikolai Kochetov). Cannot add subcolumn X.Y: column with this name already existsを修正しました。#89599 を解決しました。#89602 (Azat Khuzhin).theilsU関数およびcontingency関数で誤った結果が返される不具合を修正しました。#89760 (Nihal Z. Miaji) 。- Alias の安定性に関する問題を修正: SharedDatabaseCatalog での StrictnessLevel を修正し、参照先がエイリアスでもあることを禁止し、追加のインターフェイス (getSerializationHints、supportsReplication、getStoragePolicy、totalBytesUncompressed、lifetimeRows、lifetimeBytes、storesDataOnDisk、tryLockForShare、lockForShare) を実装しました。#89106 を解決します。#89812 (Kai Zhu).
IN内でARRAY JOINを使用するリモートクエリにおいて、enable_lazy_columns_replication設定が有効な場合に発生する可能性のあるクラッシュを修正しました。#90361 を解決します。#89997 (Pavel Kruglov).analyzer_compatibility_join_using_top_level_identifierを複数の JOIN で使用した際に発生し得る論理エラーを修正しました。#90010 (Vladimir Cherkasov) 。- 一部のケースで、テキストフォーマット内の
Stringsから不正なDateTime64値が推論される不具合を修正しました。#89368 を解決しました。#90013 (Pavel Kruglov). - 集約状態やその他の入力元からデータをデシリアライズする際に、サイズをチェックする。 #90031 (Raúl Marín).
- コールドボリュームで有効期限 (TTL) による drop merge を有効にするため、ボリュームの特性に応じてパーツ範囲を分割しました。このパッチ以降、max TTL < now のパーツはコールドストレージから削除されます。このアルゴリズムがスケジュールするのは 単一パーツの drop のみです。#90059 (Mikhail Artemenko).
- Kafkaテーブルが設定
kafka_handle_error_mode = 'dead_letter_queue'を指定して作成されており、かつテーブルsystem.dead_letter_queueが構成されていない場合、サーバーがクラッシュする可能性がありました。この挙動は修正されました。#87573 を解決します。#90064 (Nikita Mikhaylov) 。 ARRAY JOINの使用時に、enable_lazy_columns_replication設定が有効になっている場合の insert 中に発生する可能性があるColumn with Array type is not represented by ColumnArray column: Replicatedエラーを修正しました。#90066 (Pavel Kruglov).- 破棄順序の誤りにより、サーバーの正常なシャットダウン時にクラッシュする問題を修正しました。#82420 を解決しました。#90076 (Nikita Mikhaylov).
- 大きなstep sizeを使用した際の
numbersシステムテーブルにおける論理エラーと剰余演算のバグを修正。#83398 をクローズ。#90123 (Nihal Z. Miaji). - ネイティブライターを使用したシングルスレッドでの Parquet 書き込み時に、元の順序が保持されない問題を修正しました。https://github.com/ClickHouse/ClickHouse/pull/64424/files を部分的に差し戻すものです。#90126 (Arthur Passos).
- LIMIT/OFFSET 式に定数ノード最適化を適用しないようにしました。#89607 を修正しました。#90156 (Yakov Olkhovskiy).
- 25.8 でスムーズなアップグレードを妨げていた hive パーティション化の非互換性を修正しました (アップグレード時のエラー
All hive partitioning columns must be present in the schemaを解消) 。#90202 (Kseniia Sumarokova) 。 - Glue カタログの使用時に、timestamp カラムを持つ Iceberg テーブルで発生する JSON Exception を修正しました。#90210 を解決しました。#90209 (Alsu Giliazova).
- part に含まれる行数が index_granularity より少ない場合に発生する、MergeTreeReaderIndex の行数不一致を修正します。#89691 を解決します。#90254 (Peng Jian) 。
nan/infによる無限状態が発生するWITH FILLクエリを修正。 #69261 を解決。 #90255 (Konstantin Bogdanov).- JOIN ON に残余条件がある場合に
query_plan_use_logical_join_step=0で発生する ‘カラムが見つかりません’ エラーを修正しました。#88635 を解消します。#90279 (Vladimir Cherkasov). - 集計プロジェクション最適化における一部のクエリを修正しました。#90288 (János Benjamin Antal).
- compact パーツ内の JSON からサブカラムを読み取る際に
CANNOT_READ_ALL_DATAエラーが発生する可能性のあった不具合を修正しました。#90264 を修正。#90302 (Pavel Kruglov). - これにより、Iceberg のマニフェストファイルに sort order が指定されていない場合、またはテーブルの default_sort_order と一致しない場合、ClickHouse は Iceberg に対して read-in-order 最適化を使用しなくなりました。#89178 を修正しました。#90304 (alesapin).
- Time および Time64 が、DateTime および DateTime64 からの変換時にタイムゾーンを正しく反映するようになりました (DateTime[64] としてユーザーに表示される場合と同じタイムゾーンで時刻が表示される必要があります) 。 #89896 をクローズしました。 #90310 (Yarik Briukhovetskyi).
SELECT CAST(CAST(now(), 'Time'), 'Time64')が誤った結果を返していた不具合を修正しました。#88349 をクローズしました。#90324 (Yarik Briukhovetskyi).- randomStringUTF8 における整数オーバーフローで発生するクラッシュを修正しました。#90326 (Michael Kolupaev) 。
multicluster_root_pathを使用するマルチクラスター構成での Cluster Discovery の更新を修正し、ZooKeeper の更新の遅延や更新漏れを防止しました。#90341 (RinChanNOW).- 存在しない JSON path に対する prewhere で、index_granularity_bytes=0 の場合に発生する可能性がある論理エラーを修正しました。#86924 を解決します。#90375 (Pavel Kruglov).
L2DistanceTransposedで、精度引数が有効範囲を超えた場合にクラッシュする不具合を修正しました。#90401 をクローズしました。#90405 (Raufs Dunamalijevs).Array(Dynamic)引数を持つarrayUnionにおける潜在的な論理エラーを修正しました。#90270 を解決します。#90409 (Pavel Kruglov) 。- 1 回の ALTER で同じ Nested カラムの名前変更と変更を同時に行う際に発生する可能性のある論理エラーを修正しました。#90406 を解決します。#90412 (Pavel Kruglov).
- HTTPパラメータから JSON/Dynamic/Variant の値をパースする際の不具合を修正。#88925 を解決。#90430 (Pavel Kruglov).
- Hiveのパーティション化で、静的な
KeyValuePairExtractorにより、ファイルの同時読み取り時にデータ破損やクラッシュを引き起こしていた競合状態を修正しました。 #90474 (Paresh Joshi). - 配列の参照ベクトル (デフォルトでは
Array(Float64))) を、要素型がFloat64以外 (Float32、BFloat16) のQBitカラムで使用した際に、L2DistanceTransposedの距離計算が誤っていた問題を修正しました。この関数は、参照ベクトルをQBitの要素型に合うよう自動的にキャストするようになりました。#89976 を修正します。#90485 (Raufs Dunamalijevs). - 負の引数を指定した
toDateTimeOrNullが NULL を返すバグを修正しました。 #90490 (Yarik Briukhovetskyi) 。 ArrowフォーマットでLowCardinality(Bool/Date32)を出力する際に発生する可能性がある論理エラーを修正しました。#83883 を解決します。#90505 (Pavel Kruglov).- 一部の無効な入力に対して IPv4 パース関数 (例:
IPv4StringToNumOrDefault) が不正な値を返していた問題を修正しました。#90544 を解決します。#87583 を解決します。#90545 (Michael Kolupaev). - ローカルホストのチェック中にアドレス解決に失敗した場合に
markReplicasActiveを再試行するようにしました: DDLTask で self host check 中に例外が発生した場合は、警告ログを出力します。DDLWorker::markReplicasActive では、ローカルホストが見つからず、かつクラスターに host ID が存在する場合、再試行のために例外をスローします。#90556 (Tuan Pham Anh). equals関数でまれに発生するケースが原因の論理エラーを修正しました。#88142 をクローズします。#90557 (Nihal Z. Miaji).test_ssh/test.py::test_paramiko_passwordで発生する thread sanitizer のクラッシュを修正する見込みです。#90612 (Govind R Nair) 。- const の非文字列カラムを使用した際に
concatWithSeparator関数で発生する論理エラーを修正しました。#90596 をクローズしました。#90655 (Nihal Z. Miaji). INTO OUTFILEのフォーマットの不具合を修正しました。#90207。#90656 (Azat Khuzhin).- サブクエリを含む mutation を
allow_statistics_optimize=1で実行した際に起こり得るクラッシュを修正しました。#90626 を解決します。#90664 (Azat Khuzhin). LIMIT BYでGROUP BYに含まれないカラムを使用した場合に、GROUP BYと併用されるLIMIT BYのアナライザによる検証を修正し、NOT_FOUND_COLUMN_IN_BLOCKではなく正しいNOT_AN_AGGREGATEエラーが生成されるようにしました。#89713 をクローズしました。#90665 (xiaohuanlin).- パーティションキーで
LowCardinalityカラムを使用した際の型変換エラーを修正しました。#89412 をクローズしました。#90666 (xiaohuanlin). - 非決定論的関数 (例:
shardNum()) の定数畳み込みで生成された定数を含むフィルタ条件を持つクエリで、query condition cache が誤って使用される可能性がある問題を修正しました。 #90692 (Eduard Karacharov). - JOIN ON 句で EXISTS 関数を含むクエリに対するセグメンテーションフォルトを修正しました。これにより、クエリは
INVALID_JOIN_ON_EXPRESSIONエラーを返すだけになりました。#90698 をクローズしました。#90719 (Vladimir Cherkasov). - テーブルを一切含まないデフォルトデータベースを使用する際に AccessRightsElement で発生していた Logical error: ‘Inconsistent AST formatting’ を修正しました。#90742 (Pablo Marcos).
- ターゲットホストに
localhostを指定してremotetable function を使用した場合の、ALTER UPDATEqueries のアクセス検証を修正しました。#90761 (pufit). - named collections の非表示シークレットが
display_secrets_in_show_and_selectおよびformat_display_secrets_in_show_and_selectに依存するよう修正しました。#90765 (Pablo Marcos) 。 enable_shared_storage_snapshot_in_queryを無効化しました (メモリリークの原因となるため) 。 #90770 (Azat Khuzhin).- 並列レプリカが有効な場合に、分散テーブルを使用するRIGHT JOINで重複データが発生する問題を修正しました。#90806 (zoomxi).
- 論理エラーや予期しない結果を引き起こす可能性がある、JSON 内の共有データと動的パスの不整合な状態を修正しました。#90816 (Pavel Kruglov) 。
- SharedCatalog (クラウド専用機能) で、CSE 内の
dictGet()と Dictionary 名を含む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).
NestedLowCardinalityカラムでのSummingMergeTreeの集計を修正しました。#90927 (Ivan Babrou).- ワイルドカード権限の取り消し時におけるグローバル権限の処理を修正
CREATE USERなどのグローバルレベルの権限が、ワイルドカード権限を取り消す際に誤って一部取り消されてしまう問題を修正しました。 #90928 (pufit). - Azure でのブロブ一覧取得時に発生する可能性のある無限ループを修正しました。 #90947 (Julia Kartseva).
- 過剰な Buffer のフラッシュを修正 (CPU を浪費し、大量のログを出力する問題) 。#91000 (Azat Khuzhin) 。
- … adaptive_write_buffer_initial_size が 0 に設定されないようにしました。 #91001 (Pedro Ferreira).
write_marks_for_substreams_in_compact_partsが無効な compact パーツでサブオブジェクトを読み取る際、パスが shared data と動的パスの両方に存在する可能性がある場合に発生する JSON のバグを修正しました。#91014 (Pavel Kruglov).- 引数なしで dictGet を使用した CTE で発生する std::out_of_range を修正しました。#91027 をクローズしました。#91022 (Pavel Kruglov) 。
- ミューテーションにおいて、マテリアライズドカラムから動的サブカラムを読み取る際の不具合を修正しました。#90653 をクローズします。#91040 (Pavel Kruglov) 。
- 空の配列と
isNull関数を使用した場合にarrayFilter関数が正しく動作しない問題を修正しました。#73849 をクローズしました。#91105 (Nihal Z. Miaji). - テーブルのいずれかのカラムが空のTupleカラムである場合に
ARRAY JOINで発生する論理エラーを修正しました。#90801 をクローズします。#91123 (Nihal Z. Miaji). - 古いパーツにおいて、alter add column で追加されたカラムの遅延マテリアライゼーションを修正しました。 #91142 (Pavel Kruglov).
- Summing/Aggregating/Coalescing MergeTree における JSON カラムのマージを修正しました。以前は、データパーツへの書き込み時に想定外の動的パスが生じる可能性がありました。#91151 (Pavel Kruglov) 。
- セグメンテーションフォルトの原因となる可能性があった、compact パーツへの書き込み時の動的構造の不整合を修正しました。#91152 (Pavel Kruglov) 。
- 科学表記におけるサブノーマル浮動小数点値のパースを修正しました。#78903 をクローズします。#91162 (Nihal Z. Miaji).
- 暗黙的なスキーマを持つソースを含むサブクエリからの INSERT SELECT で、誤ったスキーマ推論が行われる問題を修正しました。 #91204 (Pervakov Grigorii).
- https://github.com/clickhouse/clickhouse/issues/91206 を修正しました。統計情報付きのテーブルを作成してデータを書き込み、その後統計情報を 1 つ削除すると、再度読み込んだ際にクラッシュしていました。これは、シリアライズ時とデシリアライズ時で統計情報の型が同じであると仮定していたためです。この修正では、現在のメタデータにシリアライズ済みの統計情報が含まれているかどうかを確認し、含まれていない場合はモックの統計情報を作成して、それを読み飛ばすためだけにデシリアライズします。 #91227 (Han Fei).
- JSON/Dynamic と LowCardinality の Tuple を含む CoalescingMergeTree カラムへの挿入の不具合を修正しました。#91215 をクローズします。 #91270 (Pavel Kruglov).
- SYSTEM DROP FILESYSTEM CACHE ON CLUSTER の不具合を修正しました。#91304 (Anton Ivashkin) 。
- 論理エラー “Bad cast from type DB::ColumnSparse to DB::ColumnNullable” が発生する可能性がある問題を修正しました。#91284 をクローズしました。#91309 (Pavel Kruglov) 。
- 悪意を持って細工されたバイトストリームがネストされた QBit 型としてデシリアライズされた際に発生するクラッシュを修正しました。これは本来起こりえないはずですが、悪用されるとサーバーをクラッシュさせる可能性がありました。 #91313 (Raufs Dunamalijevs).
- Replicated database で、引数が空の Alias table を修正しました。 #91378 を解決しました。 #91382 (Kai Zhu).
- 現在、この設定は false になっているため、非同期 INSERT キューがリモートサーバーにフラッシュされる際、ユーザーに対する設定が True の場合でも、INSERT は常に同期的に行われます。 #91386 (Mikhail f. Shiryaev).
- マージアルゴリズムのヘッダーからスパースカラムを削除。#91377 を修正。#91396 (Pavel Kruglov) 。
- 25.8 における hive パーティション化の不具合を修正しました。この不具合により、例外
A hive partitioned file can't contain only partition columnsが誤って送出される可能性がありました。#91403 (Kseniia Sumarokova). - 辞書型が Hierarchy をサポートしているにもかかわらず、
HIERARCHICALなカラムが存在しない場合に、NULLが原因でdictGetDescendantsがクラッシュする不具合を修正しました。#92026 をクローズ。#92121 をクローズ。#91420 (Nihal Z. Miaji). - ラムダおよび非定数のタプル引数を使用した際に、
IN関数がクラッシュする不具合を修正しました。#91379 をクローズしました。#91446 (Nihal Z. Miaji). - MaterializedView から、未対応のストレージへの insert によってトリガーされる並列書き込みの問題を修正しました。#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 をクローズしました。#91524 (Nihal Z. Miaji).- ORCフォーマットでDateおよびDateTime64型を読み込む際に発生するオーバーフローを修正しました。#70976 をクローズしました。#91572 (Yarik Briukhovetskyi).
- Object Storageテーブルエンジンに対するALTERを禁止しました。たとえば、Object Storageエンジンはプロジェクションをサポートしていないため、ALTER ADD PROJECTION によってサーバーを再起動できなくなる可能性がありました。 #91573 (Nikolay Degterinsky).
- 非定数の参照ベクトル (たとえば、テーブルから取得したもの) を使用した際に
L2DistanceTransposedが誤った結果を返す問題を修正しました。#91517。#91593 (Raufs Dunamalijevs) 。 - ディスパッチ段階で、FALSE 条件の JOIN が
LOGICAL_ERRORを返してしまうバグを修正しました。#91173 をクローズしました。#91598 (Yarik Briukhovetskyi). - 「additional filter」を伴う join におけるメモリ使用量の増加を修正し、#91011 をクローズしました。#91664 (Vladimir Cherkasov).
- ビュー使用時かつ並列レプリカが有効な場合のJOINクエリを修正しました。#91813 (Igor Nikonov) 。
- Delta Lake 設定
delta_lake_snapshot_versionを修正しました。これは、以前に snapshot version を使用していた場合、table engine (table function ではない) で値 -1 (無効) を指定すると、誤った結果を返す可能性があった問題です。#87676 をクローズしました。#91818 (Kseniia Sumarokova) 。 - RecursiveCTEChunkGenerator の LOGICAL_ERROR を修正。#91827 (Pablo Marcos) 。
- FINAL および PREWHERE を使用するクエリで発生するブロック構造の不一致を修正しました。 #91847 (Antonio Andelic).
join_use_nulls、複数の join と cross join に関する論理エラーを修正しました。#91853 (Vladimir Cherkasov).- https://github.com/ClickHouse/ClickHouse/pull/90816 で修正されたバグにより発生し得た、共有データ内に重複した path や動的 path が含まれる JSON を修復するメカニズムを追加しました。#91886 (Pavel Kruglov) 。
- ORC リーダーが、DICTIONARY_V2 でエンコードされ、NULL 値しか含まない文字列カラムを読み込む際のバグを修正しました。#91889 (Peng Jian) 。
- 読み取り時に破損したパーツやクラッシュを引き起こす可能性があった、Tuple カラム内のスパースなサブストリームと Nullable なサブストリーム間のシリアライゼーションの不整合を修正しました。これは https://github.com/ClickHouse/ClickHouse/pull/91851 への対応です。@Algunenano private repo の stress test がこれで修正されるか、確認をお願いできますか? @CurtizJ こちらもご確認いただけると助かります。ありがとうございます。 #91932 (Amos Bird).
- 通常の書き換え可能ディスクでバックアップを作成する際に
Directory '{}' does not exist (LOGICAL_ERROR)が発生する問題を修正しました。#91935 (Julia Kartseva) 。 - named collections を使用して MongoDB に接続する際に発生するクラッシュを防止しました。#91959 (Antonio Andelic).
- 一部の
ALTERクエリの実行後にcompact パーツで発生することがあった”TOO_MANY_MARKS”エラーを修正。 #91980 (alesapin). - https://github.com/clickhouse/clickhouse/issues/87417 をクローズしました。v1 フォーマットの書き込みスキーマに誤りがあり、必須項目である “added_snapshot_id” の型は “null, long” ではなく “long” であるべきでした。これは Spark などの他システムとの互換性がないため不具合となっていました。これらのマニフェストファイルを混在させると、この不具合が発生します。#92078 (Han Fei).
- 以前のバージョンでスタイルが誤っていた
readWKTとreadWKBの名前を修正しました。 #92094 (Alexey Milovidov). midpoint関数の多数の論理エラー、オーバーフロー、機能上の不具合を修正しました。#91816 をクローズしました。#92102 (Nihal Z. Miaji).- スパースエンコーディングで特定のサブカラム (例: 文字列サイズ) を読み取る際に生じる可能性があった誤った結果を修正しました。#92156 (Pavel Kruglov) 。
- エラー
No macro 'replica' in configによってsystem.view_refreshesが失敗する不具合を修正しました。 #92203 (Michael Kolupaev). - フォーマット内の UDF の置換を修正しました。 #92210 (Raúl Marín) 。
ddlworker::markreplicasactiveで、アクティブなホストが見つからず、かつremote_serversに host_ids がある場合、例外を送出する代わりに警告ログを出力するようにしました。 #92223 (Tuan Pham Anh).IN、NOT IN演算子を括弧で囲むようにしました。#85075 を修正しました。#92225 (Mikhail f. Shiryaev).- KeeperMap テーブルおよび Memory テーブルのバックアップに関する不具合を修正しました。これら 2 つのエンジンのいずれかを使用するテーブルで、
max_compress_block_sizeが0に設定されている場合、バックアップの作成時にクラッシュが発生する可能性がありました。#92237 (Antonio Andelic). - LogエンジンでStringデータと
.sizeサブカラムの両方を読み取る際に発生するクラッシュを修正しました。これにより、#89909 を修正します。これには、#92290 の一部のコミットも含まれています。#92341 (Amos Bird) 。 caseWithExpression関数の引数でNothing型を使用したことにより発生していた論理エラーを修正しました。#85354 をクローズしました。#92351 (Nihal Z. Miaji).- MEMORY_LIMIT_EXCEEDED の後に集約関数で起こり得るクラッシュを修正しました。 #92390 (Azat Khuzhin).
ビルド/テスト/パッケージングの改善
- CI で
clang-21を使用するようにしました。 #87074 (Konstantin Bogdanov). - クロスコンパイル時に cmake からダウンロードしないようにしました。 #90506 (Raúl Marín).
ClickHouse リリース 25.11 (2025-11-27)
後方互換性を持たない変更
- 非推奨の
Object型を削除しました。#85718 (Pavel Kruglov)。 - 廃止された
LIVE VIEW機能を削除しました。LIVE VIEWを使用している場合、新バージョンへのアップグレードはできません。#88706 (Alexey Milovidov)。 - 以前のバージョンでは、
Geometry型はStringの alias でしたが、現在は完全な機能を備えた型になっています。#83344 (scanhex12)。 - MergeTree テーブルの wide パーツで、
Variant型の subcolumn 用に作成されるファイル名をエスケープするようにしました。この変更により、Variant/Dynamic/JSON data types を持つ古いテーブルとの互換性は失われます。これにより、Variant 内で特殊記号を含む型 (たとえば\を含む特定の timezone を持つ DateTime など) を保存できるようになります。エスケープは、MergeTree settingescape_variant_subcolumn_filenamesを変更することで無効化できます (互換性を維持するには、アップグレード前に MergeTree の設定でこの setting を無効にするか、compatibilitysetting を以前のバージョンに設定してください) 。#69590 を解決しました。#87300 (Pavel Kruglov)。 Stringdata type でwith_size_streamシリアライゼーションフォーマットをデフォルトで有効にしました。この変更自体には後方互換性がありますが、新しいシリアライゼーションフォーマットは 25.10 以降でしかサポートされないため、25.10 より前のバージョンにはダウングレードできません。25.9 以前へダウングレードできる状態を維持したい場合は、server configuration のmerge_treeセクションでserialization_info_versionをbasic、string_serialization_versionをsingle_streamに設定してください。#89329 (Alexey Milovidov)。- クライアントが例外をより確実に parse できるよう、HTTP results response に対する例外のタグ付けをサポートしました。#75175 を解決しました。setting
http_write_exception_in_output_formatは、フォーマット間の一貫性を保つため、デフォルトで無効になっています。#88818 (Kaviraj Kanagaraj)。既存の動作を壊すものではない想定ですが (最悪でも例外メッセージに奇妙な文字列が追加される程度です) 、注意喚起のため、changelog のカテゴリとして “Backward Incompatible Change” を使うのは依然として妥当です (例外メッセージをどのような雑なスクリプトが parse しているかわからないためです) 。 - shared object storage path 上に複数の
plain-rewritableディスクを作成することを禁止しました。異なる metadata storage transaction が衝突した際に、未定義の動作を引き起こす可能性があるためです。#89038 (Mikhail Artemenko)。 - Kafka storage の SASL setting の優先順位を修正しました。CREATE TABLE queries で指定したテーブルレベルの SASL setting が、configuration files 内の consumer/producer 固有の setting を正しく上書きするようになりました。#89401 (János Benjamin Antal)。
- Parquet の timezone なし timestamps (isAdjustedToUTC=false) は、DateTime64(…) ではなく DateTime64(…, ‘UTC’) として読み込まれるようになりました。これは、そのような UTC timestamp を文字列に変換した際に、正しいローカル時刻の表現が得られるため、従来よりも誤りが少ないためです。従来の動作に戻したい場合は、
input_format_parquet_local_time_as_utc = 0を使用してください。#87469 を解決しました。#87872 (Michael Kolupaev)。 T64codec に小さな改善を加えました。圧縮要素サイズに整合しない data types は受け付けなくなり、これによって発生していたバグを防止します。#89282 を解決しました。#89432 (yanglongwei)。
新機能
Geometry型を導入しました。この型でWKBおよびWKTフォーマットの読み取りをサポートしました。以前のバージョンでは、Geometry型はStringのエイリアスでしたが、現在は完全な機能を持つ型になっています。#83344 (scanhex12).- ユーザーの権限借用をサポートする新しいSQLステートメント
EXECUTE ASを追加しました。#39048 を解決します。#70775 (Shankar). - Naive Bayes と N-gram を用いてテキストを分類する
naiveBayesClassifier関数を追加。 #88677 (Nihal Z. Miaji). - テーブルの一部を選択できるよう、
LIMITとOFFSETで小数値をサポートしました。#81892 をクローズしました。#88755 (Ahmed Gouda). - Microsoft OneLake カタログ向け ClickHouse サブシステム。 #89366 (scanhex12).
- 配列内の必要な数の次元をアンラップし、Tuple カラム内のポインタを入れ替える
flipCoordinates関数を追加しました。#79469 を修正しました。#79634 (Sachin 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-ProgressとX-ClickHouse-Summaryにmemory_usageフィールドを追加しました。これにより、クライアント側でクエリのメモリ使用量をリアルタイムで収集できるようになりました。 #88393 (Christoph Wurm).INTO OUTFILE向けに、親ディレクトリを自動作成する設定into_outfile_create_parent_directoriesを追加しました。これにより、出力先のパスが存在しない場合のエラーを防止できます。クエリ結果を入れ子になったディレクトリに書き込むワークフローが簡素化されます。#88610 を解決します。#88795 (Saksham).- 一時テーブルで
CREATE OR REPLACE構文をサポート。#35888 をクローズ。#89450 (Aleksandr Musorin). - 配列
arrからelemに等しいすべての要素を削除するarrayRemoveをサポートしました。これは Postgres との互換性のためにのみ必要なもので、ClickHouse にはすでに、はるかに強力なarrayFilter関数があります。#52099 を解決しました。#89585 (tiwarysaurav). - 平均を計算する
midpointスカラー関数を導入しました。#89029 を解決しました。#89679 (simonmichal). - Web UI にダウンロードボタンが追加されました。UI に一部しか表示されていない場合でも、結果全体をダウンロードできます。#89768 (Alexey Milovidov) 。
- コマンド形式のディスクリプタを必要とする Dremio やその他の Arrow Flight サーバーをサポートするために、
arrow_flight_request_descriptor_type設定を追加しました。#89523 を実装しています。#89826 (Shreyas Ganesh). - 対応する極値とその引数を返す新しい集約関数
argAndMinおよびargAndMax。以前のバージョンでも、引数にタプルを使用することで同様のことが可能でした。#89884 (AbdAlRahman Gad). - Parquet チェックサムの書き込みと検証に関する設定。 #79012 (Michael Kolupaev).
- メッセージのペイロードをパースする前にエンベロープのヘッダーバイト (例: AWS Glue Schema Registry の 19 バイトのプレフィックス) をスキップするための
kafka_schema_registry_skip_bytes設定が、Kafka テーブルエンジンに追加されました。これにより、メタデータヘッダーを付加するスキーマレジストリから、ClickHouse がメッセージを取り込めるようになります。#89621 (Taras Polishchuk). - ジオメトリを H3 の六角形で埋めることができる
h3PolygonToCells関数を追加しました。#33991 を解決します。#66262 (Zacharias Knudsen) 。 - S3 内のブロブに関連付けられたすべてのタグを含む新しい仮想カラム
_tags(Map(String, String)) を追加しました (注: ブロブにタグがまったくない場合、追加のリクエストは発生しません) 。#72945 を解決します。#77773 (Zicong Qu).
実験的機能
- Let’s Encrypt などの ACME プロバイダーからの TLS 証明書取得 (RFC 8555) をサポートしました。これにより、分散クラスターで TLS を自動構成できます。#66315 (Konstantin Bogdanov)。
- Prometheus HTTP Query API の一部をサポートしました。これを有効にするには、設定ファイルの
<prometheus>セクションに、typequery_apiのルールを追加してください。サポートされるハンドラーは/api/v1/query_rangeと/api/v1/queryです。#86132 (Nikita Mikhaylov)。 - 全文検索は、これまでの experimental 段階からベータになりました。#88928 (Robert Schulze)。
Aliasは experimental 扱いになり、allow_experimental_alias_table_engine = 1で有効化できます。#89712 (Kai Zhu)。
パフォーマンス改善
- Parquet リーダー v3 はデフォルトで有効です。 #88827 (Michael Kolupaev) 。
- 分散実行: タスクをファイル単位ではなく、行グループ ID 単位で分割するように改善しました。 #87508 (scanhex12).
RIGHTおよびFULLJOIN で ConcurrentHashJoin を使用するようになり、これらの JOIN はより高い並列度で実行されるようになりました。これにより、RIGHT JOIN と FULL JOIN のさまざまなケースで最大 2 倍の性能向上が見込めます。#78027 を解決しました。#78462 (Yarik Briukhovetskyi) 。- クエリ内の定数式における大きな値の最適化。#72880 をクローズ。#81104 (Yakov Olkhovskiy) 。
- 10K超のパーツを持つテーブルで、パーティションプルーニングが大きく効く
SELECTクエリが最大8倍高速化。#85535 (James Morrison). - クエリで固定ハッシュマップを集約状態に使用する場合 (小さな整数で
group byする場合) 、ClickHouse はクエリの高速化のため、集約状態を並列にマージするようになりました。#87366 (Jianfei Hu). _part_offsetをSELECTで使用し、かつ ORDER BY が異なるプロジェクションを、セカンダリ索引として利用できるようになりました。有効にすると、一部のクエリ述語を使って projection part からデータを読み取り、PREWHERE ステージで行を効率的に絞り込むためのビットマップを生成できます。これは、#80343 に続く、プロジェクション索引実装の3つ目のステップです。#81021 (Amos Bird).- 一部のまれな Aarch64 システムや、その他のアーキテクチャ/カーネルの組み合わせで発生する可能性がある VDSO の問題を修正しました。 #86096 (Tomas Hulata).
- コードを簡素化し、選択アルゴリズムを調整することで、LZ4 の解凍速度を向上させました。#88360 (Raúl Marín) 。
- S3 は内部的にキー名のプレフィックスに基づいてオブジェクトをパーティション分割し、パーティションごとの高いリクエストレートに自動的に対応します。この変更では、2 つの新しい BACKUP 設定、data_file_name_generator と data_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_orderとquery_plan_optimize_lazy_materializationを同時に活用できるようになりました。#88767 を修正しました。#88866 (Manuel). DISTINCTを含むクエリでは集約プロジェクションを使用します。#86925 をクローズ。#88894 (Nihal Z. Miaji) 。- 連続実行時のパフォーマンス向上のため、posting lists をキャッシュするようにしました。 #88912 (Elmi Ahmadov).
- 入力のソート順がLIMIT BYキーと一致する場合に、ストリーミングのLIMIT BY変換を実行するようにしました。#88969 (Eduard Karacharov) 。
- 一部のケースで、
ANY LEFT JOINまたはANY RIGHT JOINをALL INNER JOINに書き換えられるようになりました。#89403 (Dmitry Novik). - ログのオーバーヘッドを削減: エントリごとのアトミック操作を減らしました。#89651 (Sergei Trifonov).
- 複数の JOIN を含むクエリでランタイムフィルタが有効な場合に、複数のランタイムフィルタが追加されると、新たに追加されたフィルタステップの pushdown を他のものより優先して実行するようにしました。 #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認証用のcacheを追加しました。#87115 (Nikolay Degterinsky).
FINALクエリで使用されるスキップ索引が主キーの一部であるカラム上にある場合、他のパーツとの主キーの積集合を確認する追加の手順は不要となるため、今後は実行されません。#85897 を解決しました。#88368 (Shankar Iyer) 。- 最適化
enable_lazy_columns_replicationがデフォルトで有効になり、JOINでのメモリ使用量を削減できるようになりました。 #89316 (Alexey Milovidov). - パーツに対する
ColumnsDescriptionのテーブル単位のキャッシュを導入し、テーブルに多数のパーツとカラムがある場合のメモリ使用量を削減しました。 #89352 (Azat Khuzhin). - I/O を削減し、クエリ性能を向上させるために、テキスト索引のデシリアライズ済みヘッダー用の cache が導入されました。cache は、次の新しいサーバー設定で構成できます。-
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が設定されている場合、必要に応じて UNION がVariantを用いて型を統一するようになりました。#82772 を修正しました。#83246 (Mithun p).- SQL で定義されたロールを、
users.xmlで定義されたユーザーにも付与できるようになりました。 #88139 (c-end). - 内部クエリ (辞書やリフレッシュ可能なマテリアライズドビューなどによって内部的に実行されるクエリ) をログに記録し、
system.query_logに新しいis_internalカラムを追加しました。#83277 (Miсhael Stetsyuk) 。 IS NOT DISTINCT FROM(<=>) 演算子を強化しました。逆となるIS DISTINCT FROMへの対応と、型が異なる互換性のある数値オペランド (例:Nullable(UInt32)とNullable(Int64)) のサポートを追加しました。#86763 を解決します。#87581 (yanglongwei).- 対話型モードの
clickhouse-clientとclickhouse-localでは、コマンドライン上でカーソル位置にある現在の識別子と同名の識別子がハイライト表示されるようになりました。 #89689 (Alexey Milovidov). - 出力フォーマット関連の設定は、クエリキャッシュに影響しなくなりました。また、クエリキャッシュは
http_response_headers設定も無視するようになりました。これにより、Web UI でキャッシュから結果をダウンロードするといった機能を実装できるようになります。#89756 (Alexey Milovidov). - クエリ結果キャッシュが使用されると、HTTPインターフェイスは
AgeおよびExpiresヘッダーを返します。Ageヘッダーの有無によって、その結果がキャッシュから返されたものかどうかがわかり、Expiresも最初の書き込み時に設定されます。新しい profile eventsQueryCacheAgeSeconds、QueryCacheReadRows、QueryCacheReadBytes、QueryCacheWrittenRows、QueryCacheWrittenBytesが導入されました。#89759 (Alexey Milovidov) 。 disable_insertion_and_mutationが有効な場合 (ClickHouse Cloud では読み取り専用のウェアハウスを意味します) でも、リモートテーブルおよびデータレイクのテーブルへの挿入を許可。 #88549 (Alexander Tokmakov).SYSTEM DROP TEXT INDEX CACHESクエリを追加しました。#90287 (Anton Popov) 。- 一貫性保証を向上させるため、
enable_shared_storage_snapshot_in_queryをデフォルトで有効化しました。デメリットはないはずです。#82634 (Alexey Milovidov). - profile events が使用されない場合にクライアントがネットワークトラフィックを削減できるようにする
send_profile_events設定を追加しました。#89588 (Kaviraj Kanagaraj). - クエリごとに、近傍セグメントのバックグラウンドダウンロードを無効にできるようにしました。#89524 を修正しました。#89668 (tanner-bruce).
- レプリケートされた MergeTree テーブルでディスクが故障している場合でも、
FETCH PARTITIONを許可するようにしました。 #58663 (Duc Canh Le). - MySQLデータベースエンジンで MySQL テーブルのスキーマ取得時に発生する未捕捉の例外を修正しました。#69358 (Duc Canh Le).
- すべての DDL
ON CLUSTERクエリは、アクセス権限をより適切に検証できるよう、元のクエリのユーザーコンテキストで実行されるようになりました。#71334 (pufit). - 論理型
UUIDを持つFixedString(16)として表現されるParquetのUUIDのサポートが追加されました。#74484 (alekseev-maksim). - server以外のバイナリでは、デフォルトでThreadFuzzerを無効にしました。#89115 (Raúl Marín) 。
- 実体化を遅らせることで、相関サブクエリの入力サブプランからもクエリプランの最適化が見えるようにしました。#79890 の一部です。 #85455 (Dmitry Novik).
SELECTを含むCREATE OR REPLACE TABLEクエリについて、clickhouse-client で進行状況バー、ログ、パフォーマンス統計を確認できるようになりました。これにより、SELECTの処理にかなり時間がかかる場合でも、このクエリでタイムアウトが発生しなくなりました。#38416 を修正しました。#87247 (Diskein).- ハッシュ関数で
JSON型とDynamic型をサポート。#87734 を修正。#87791 (Pavel 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).
- テーブルレベルの統計情報を cache するため、2 つの設定を追加しました。MergeTree 設定
refresh_statistics_intervalは統計情報 cache の更新間隔を表し、0 の場合は cache は作成されません。セッション設定use_statistics_cacheは、クエリでテーブルレベルの統計情報を使用するかどうかを表します。より精度の高い統計情報が必要な場合もあるため、これを無視できるようにしています。#88670 (Han Fei). ArrayとMapのバイナリデシリアライゼーションで、サイズ制限の検証時にmax_binary_string_sizeではなくmax_binary_array_size設定を使用するよう修正しました。これにより、RowBinaryフォーマットの読み込み時に適切な制限が適用されます。#88744 (Raufs Dunamalijevs) 。LockGuardWithStopWatchクラスを導入し、マージを実行する background pool で使用するようにしました。mutex が 1 秒間保持された場合、またはいずれかの thread が 1 秒以内にそれを取得できずにいる場合は、警告メッセージが出力されます。MergeTreeBackgroundexecutor でロックを長時間保持しすぎないよう、MergeMutateSelectedEntryのデストラクタから重い処理をfinalizemethod に移しました。#88898 (Nikita Mikhaylov).- エンドポイントでリージョンが指定されていない場合でも、S3 で opt-in AWS リージョンを自動的に自動選択して使用できるようにしました。参考: opt-in AWS regions。#88930 (Andrey Zvonov).
- ページャーの実行中でも、Ctrl-C を押すと clickhouse-client でクエリをキャンセルできるようになりました。#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 の再パーティション化が発生し、S3 が 10 分を超えて SlowDown エラーを返す場合でもバックアップが確実に成功するよう、
s3_retry_attemptsのデフォルト値を 500 に設定しました。#89051 (Nikita Mikhaylov). kafka_compression_codecおよびkafka_compression_levelの設定を使用して、両方の Kafka エンジンで Kafka プロデューサーに使用する圧縮を指定できるようになりました。#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のArrayをサポート。 #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 をクローズします。#89341 (Alexey Milovidov).- 以前のバージョンでは、CREATE TABLEクエリでテーブルエンジンを指定しないと、設定
create_table_empty_primary_key_by_defaultは効果がありませんでした。#89342 (Alexey Milovidov) 。 chdigを v25.11.1 に更新。ログ機能の大幅な改善をはじめ、そのほかにもさまざまな機能強化が含まれています (25.11 のリリースノート) 。#89957 (Azat Khuzhin) 。 (25.10 のリリースノート) 。#89452 (Azat 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で同じパスを指す cache 用のアトミックなビューを追加。#89640 (Azat Khuzhin).system.view_refreshes内の一部のカラムの説明をより明確にしました。#89701 (Tuan Pham Anh).- STS endpoint とやり取りする際の S3 認証情報をキャッシュし、異なる関数呼び出しで再利用できるようにしました。キャッシュする認証情報の数は
s3_credentials_provider_max_cache_sizeで制御できます。 #89734 (Antonio Andelic). - 配下に複数の式ステップがある場合のランタイムフィルタのプッシュダウンを修正しました。 #89741 (Alexander Gololobov).
- システムメモリが5GB未満の場合、デフォルトで実行可能ファイルに mlock をかけないようにしました。 #89751 (Alexey Milovidov).
- Web UI の型ヒントがテーブルヘッダーにはみ出さなくなりました。あわせてツールチップの表示も修正し、テーブルヘッダーの背後に表示されなくなりました。#89753 (Alexey Milovidov).
- Web UIでテーブルのプロパティを表示します。行数またはバイト数をクリックすると、
system.tablesのクエリが表示されます。テーブルエンジンをクリックすると、SHOW TABLESが表示されます。#89771 (Alexey Milovidov). - 追記書き込みに対応していないディスクを持つテーブルで、
non_replicated_deduplication_windowをサポートしました。#87281 を修正します。#89796 (Tuan Pham Anh)。 SYSTEM FLUSH ASYNC INSERT QUEUEコマンドで、フラッシュするテーブルの一覧を指定できるようになりました。#89915 (Sema Checherinda) 。- 重複排除ブロックのIDを
system.part_logに保存するようにしました。#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 をクローズしました。#79462 (Engel Danila)。
バグ修正 (公式の安定版リリースでユーザーに影響する不具合)
- 定数引数および短絡評価に関する
multiIfの問題を修正しました。#72714 をクローズしました。#84546 (Yakov Olkhovskiy) 。 - サブクエリを含む制約があるテーブルから選択する際の論理エラーを修正しました。#84190 を解決しました。#85575 (Pervakov Grigorii) 。
- 疑問符を含む URI を使用する特殊なクエリで発生する不具合を修正しました。#85663 (Yarik Briukhovetskyi) 。
EXPLAIN indexes = 1の出力で、一部のカラムが欠落することがある問題を修正しました。#86696 を解消しました。#87083 (Michael Kolupaev) 。- 並列レプリカ使用時に「Cannot add subcolumn with parallel replicas」エラーが発生する可能性がある問題を修正しました。#84888 をクローズしました。#87514 (Pavel Kruglov).
- Parquet writer で、
created_by文字列をClickHouse v25.9.1.1-testingではなく、たとえばClickHouse version 25.10.1 (build 5b1dfb14925db8901a4e9202cd5d63c11ecfbb9f)のような正しい形式で出力するようにしました。古い parquet-mr によって書き込まれた不正なファイルに対する Parquet リーダーの互換性も修正しました。#87735 (Michael Kolupaev). cramersV、cramersVBiasCorrected、theilsU、contingencyで誤った結果の原因となっていた phi-squared の計算を修正しました。#87831 (Nihal Z. Miaji).- JSON 内で Float と Bool が混在する Array の読み取りを修正しました。以前は、このようなデータを insert すると例外が発生していました。#88008 (Pavel Kruglov).
- TCPHandler の QueryState に shared_ptr を使用し、setProgressCallback、setFileProgressCallback、setBlockMarshallingCallback で状態が無効になっているかどうかを検出できるようにしました。#88201 (Tuan Pham Anh) 。
- query_plan_optimize_join_order_limit > 1 の場合に cross join の並べ替え時に発生する論理エラーを修正し、#89409 をクローズしました。#88286 (Vladimir Cherkasov).
- #88426 を修正しました。1. Alias での明示的なカラム定義を禁止し、カラムはターゲットテーブルから自動的に読み込まれるようにしました。これにより、Alias が常にターゲットテーブルのスキーマと一致することが保証されます。2. IStorage からさらに多くのメソッドをプロキシするようにしました。#88552 (Kai Zhu) 。
- 復旧後、Replicated database のレプリカで、
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 を修正します。#88784 (Animesh).
- 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).
- (ALTER で追加された) マテリアライズされていない Nested(Tuple(…)) の処理を修正しました。#83133 を修正。#88879 (Azat Khuzhin).
- 関数
reverseUTF8のバグを修正しました。以前のバージョンでは、長さ 4 の UTF-8 コードポイントのバイト列を誤って逆順にしていました。これにより #88913 を解決しました。#88914 (Alexey Milovidov). - icebergS3Clusterプロトコルを修正しました。icebergクラスター関数で、スキーマ進化、位置削除、および等価削除をサポートするようになりました。#88287 を解消します。 #88919 (Yang Jiang).
- 分散テーブルに対する並列レプリカを使用するクエリでは、parallel_replicas_support_projection を無効にしました。#88899 を修正しました。#88922 (zoomxi).
- 内部CASTでコンテキストが伝播されるようにしました。CAST設定が伝播されていなかった複数の問題を修正しました。#88873 をクローズしました。#78025 をクローズしました。#88929 (Manuel).
- file() 関数で globs からファイルのフォーマットを取得する処理を修正しました。#88920 を解決します。#88947 (Vitaly Baranov).
- SQL SECURITY DEFINER でビューを作成する際、
SET DEFINER <current_user>:definerへのアクセス権をチェックしないようにしました。#88968 (pufit). pがNullableの場合に、部分的なQBit読み取りの最適化によって戻り値の型からNullableが誤って取り除かれていたL2DistanceTransposed(vec1, vec2, p)のLOGICAL_ERRORを修正しました。#88974 (Raufs Dunamalijevs) 。- 不明なカタログ型で発生するクラッシュを修正しました。#88819 を解決します。#88987 (scanhex12)。
- これで #88081 はクローズされます。#88988 (scanhex12) 。
- スキッピングインデックスの解析におけるパフォーマンス低下を修正しました。 #89004 (Anton Popov).
- 存在しないロールが割り当てられたユーザーが clusterAllReplicas を実行しようとした際に発生する ACCESS_ENTITY_NOT_FOUND エラーを修正しました。#87670 を解決します。#89068 (pufit).
- CHECK 制約によるスパースカラムの処理を修正しました。#88637 をクローズしました。#89076 (Eduard Karacharov).
- MergeTreeReaderTextIndex で仮想カラムを補完する際、行数が誤っていたために LOGICAL_ERROR でクラッシュしていた問題を修正しました。 #89095 (Peng Jian).
- マージ準備中に例外が発生した場合の、有効期限 (TTL) マージのカウンターリークを防止しました。#89019 を修正しました。#89127 (save-my-heart).
- base32/base58 のエンコードおよびデコード処理に必要なバッファサイズの計算を修正。 #89133 (Antonio Andelic).
- シャットダウンとバックグラウンドINSERTの競合により、Distributed で発生するuse-after-freeを修正しました。#88640 を解決します。#89136 (Azat Khuzhin) 。
- Parquet のパース中に、可変な例外によって発生する可能性のあるデータ競合を回避します。#88385 を修正。#89174 (Azat Khuzhin) 。
- リフレッシャブルmaterialized view: リフレッシュ中にソーステーブルが完全に削除された場合に、まれにサーバーがクラッシュする問題を修正しました。 #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 をクローズ。#89373 (Manuel) 。- mutation の統計情報で非圧縮チェックサムが失われないようにしました。#89381 (Azat Khuzhin) 。
- partial QBit 読み取りの最適化において、
pがLowCardinality(Nullable(T))の場合に戻り値の型から Nullable が誤って削除されていたために発生していたL2DistanceTransposed(vec1, vec2, p)の LOGICAL_ERROR を修正しました。#88362 を解決します。#89397 (Raufs Dunamalijevs). - 古いバージョンの ClickHouse で書き込まれた、tuple 自体のスパース シリアライゼーションが不正なテーブルを読み込む際の問題を修正しました。 #89405 (Azat Khuzhin).
deduplicate_merge_projection_mode='ignore'の使用時に、空でないプロジェクションを持つ、有効期限 (TTL) によって空になったパーツの不正なマージ処理を修正しました。これにより、#89430 を解決しました。#89458 (Amos Bird) 。- 重複したカラムがある場合の full_sorting_merge join における論理エラーを修正しました。#86957 を修正します。#89495 (Vladimir Cherkasov).
- ローテーション中に changelog の名前変更が適切に行われなかった場合に、Keeper の起動時に changelog を正しく読み取れるよう修正しました。 #89496 (Antonio Andelic).
- OR 条件と右側テーブルの一意なキーを使用した際に発生する不正な JOIN 結果を修正しました。#89391 を解決します。#89512 (Vladimir Cherkasov) 。
- アナライザおよび PK IN (サブクエリ) (v2) における “Context has expired” の発生可能性を修正しました。#89433 を修正。#89527 (Azat Khuzhin).
- 大文字で設定されたカラム名を持つテーブルに対する MaterializedPostgreSQL のレプリケーションを修正しました。#72363 を解決しました。#89530 (Danylo Osipchuk) 。
- aggregate function の state に
LowCardinality(String)カラムのシリアライズされた値が含まれている場合に発生するクラッシュを修正しました。#89550 (Pavel Kruglov). enable_lazy_columns_replication設定が有効な場合に、JOIN の右側でARRAY JOINを使用するとクラッシュする問題を修正しました。 #89551 (Pavel Kruglov).- query_plan_convert_join_to_in に関する論理エラーを修正しました。#89066 を解消します。#89554 (Vladimir Cherkasov).
- 変換できない型不一致のカラムと定数を含む条件を推定しようとした際に、statistics estimator で発生していた例外を修正しました。 #89596 (Han Fei).
- サポートされている JOIN アルゴリズム、つまりハッシュ結合に対してのみランタイムフィルタを追加しました。フィルタを構築できるのは、JOIN アルゴリズムが最初に右側を完全に読み取り、その後に左側を読み取る場合に限られますが、たとえば FullSortingMergeJoin は両側を同時に読み取ります。#89220 を修正しました。#89652 (Alexander Gololobov).
sparseGramsトークナイザー使用時のhasAnyTokens、hasAllTokens、tokens関数の同時実行に関する不具合を修正しました。#89605 を解決します。#89665 (Elmi Ahmadov).- 一部のケースで発生していた join ランタイムフィルタに関する論理エラーやクラッシュを修正。 #89062 を修正しました。 #89666 (Alexander Gololobov).
enable_lazy_columns_replicationを有効にしている場合に、Map カラムで ARRAY JOIN を実行すると発生する可能性がある論理エラーを修正しました。#89705 をクローズしました。#89717 (Pavel Kruglov).- キャンセル中のリモートクエリで、切断後にリモートサーバーから読み込もうとしてクラッシュする問題を回避します。#89468 を解決します。#89740 (Azat Khuzhin).
- projection 索引の読み取りパスにおける競合状態を修正しました。#89497 を解消しました。#89762 (Peng Jian).
- projection 索引の読み取り時に race condition を引き起こす可能性があったバグを修正しました。#89497 を解決しました。 #89775 (Amos Bird).
- パーティションのないテーブルにおける Paimon テーブル関数の処理を修正しました。#89690 を解決します。#89793 (JIaQi).
- 高度な JSON shared data シリアライゼーションで、パスおよびそのサブカラムの読み取り中に起こり得るロジックエラーを修正しました。#89805 をクローズしました。#89819 (Pavel Kruglov) 。
- データ型のバイナリデシリアライゼーションで発生し得るスタックオーバーフローを修正しました。#88710 をクローズしました。#89822 (Pavel Kruglov).
IN関数内で空のタプルを使用した場合の論理エラーを修正しました。#88343 をクローズしました。#89850 (Nihal Z. Miaji) 。- 互換性確保のため、古いアナライザでは
optimize_injective_functions_in_group_byの設定にかかわらず、GROUP BYから単射関数を削除するようにしました。#89854 を修正しました。#89870 (Raufs Dunamalijevs) 。 - たとえばメモリ制限によってマージが中断された場合、merge mutate background executor はロックを取得せずにマージタスクに対して
cancelを呼び出しますが、この場合、部分的に作成された結果 part は削除されません (まだ完了しておらず、この段階では可視でもないためです) 。その後、マージタスクは破棄され、それに伴って結果 part の破棄がトリガーされます。これによりディスク transaction がロールバックされ、データは S3 から削除されます。最後に、このガベージクリーンアップは merge mutate background executor のロック下で実行されました。#89875 (Mikhail Artemenko). reverseおよびCAST関数内の空のタプルに関する論理エラーを修正しました。#89137 をクローズしました。#89908 (Nihal Z. Miaji) 。- ClickHouse では、
SHOW DATABASESクエリの結果にデフォルトでデータレイクカタログのデータベースが表示されるようになりました。#89914 (alesapin). - バックアップで GCS の native copy を使用する際の不具合を修正しました。クライアントのクローン処理が誤っていたため、GCS の native copy は常に失敗し、代わりに効率の低い、データを手動で読み書きする方式が使われていました。#89923 (Antonio Andelic) 。
- base32Encode のバッファサイズの計算を修正しました。サイズが 5 未満の文字列カラムに対して base32Encode を実行すると、クラッシュする可能性がありました。#89911 を修正しました。#89929 (Antonio Andelic).
SHOW COLUMNSおよびSHOW FUNCTIONSクエリでのエスケープ処理の誤りを修正しました。 #89942 (alesapin).- ユーザー名に ’@’ 文字が含まれる場合の MongoDB engine における URL 検証を修正しました。以前は、不適切なエンコードにより、’@’ を含むユーザー名でエラーが発生していました。#89970 (Kai Zhu).
- #90592 にバックポート:
IN内にARRAY JOINを含むリモートクエリで、enable_lazy_columns_replication設定が有効な場合に発生する可能性があるクラッシュを修正しました。#90361 を解決しました。#89997 (Pavel Kruglov) 。 - #90448 にバックポート: 一部のケースで、テキストフォーマット内の String から不正な DateTime64 値が推論される問題を修正。#89368 を解決。#90013 (Pavel Kruglov) 。
BSONEachRowとMsgPackにおいて、空の Tuple カラムが原因で発生する論理エラーを修正しました。#89814 をクローズしました。#71536 をクローズしました。#90018 (Nihal Z. Miaji).- #90457 でバックポート: 集約状態やその他のソースからデータをデシリアライズする際に、サイズチェックを行うようにしました。#90031 (Raúl Marín).
- 重複したカラムを含むJOINで発生する可能性のある’Invalid number of rows in Chunk’エラーを修正しました。#89411 を解決します。#90053 (Vladimir Cherkasov) 。
- #90588 にバックポート:
ARRAY JOINの使用時に、enable_lazy_columns_replication設定が有効になっている状態で挿入を行うと、Column with Array type is not represented by ColumnArray column: Replicatedエラーが発生する可能性がある問題を修正しました。 #90066 (Pavel Kruglov). - user_files でドットで始まるファイルを許可しました。#89662 をクローズ。#90079 (Raúl Marín).
- #90647 にバックポート:
numbersシステムテーブルで step が大きい場合に発生する論理エラーと剰余演算のバグを修正。#83398 をクローズ。#90123 (Nihal Z. Miaji). - Dictionary の引数パース時の整数オーバーフローを修正。 #78506 をクローズ。 #90171 (Raúl Marín).
- #90468 にバックポート: 25.8 へのスムーズなアップグレードを妨げていた Hive パーティション化との非互換性を修正しました (アップグレード中に
All hive partitioning columns must be present in the schemaエラーが発生する問題を修正) 。#90202 (Kseniia Sumarokova). - 有効化された query condition cache を使用する
SELECTクエリで、論理更新後に誤った結果が返される可能性があった問題を修正しました。#90176 を修正しました。#90054 を修正しました。#90204 (Anton Popov). - 不正な分片ディレクトリ名のパース時に発生するStorageDistributedのクラッシュを修正しました。 #90243 (Aleksandr Musorin).
LogicalExpressionOptimizerPassで、文字列から整数またはブール値への暗黙的な変換を処理するようになりました。#89803 を修正しました。#90245 (Elmi Ahmadov).- テーブル定義内の特定のスキップ索引で誤ったフォーマットになっていた問題を修正し、
METADATA_MISMATCHの発生および Replicated Database での新しいレプリカ作成失敗を解消しました。 #90251 (Nikolay Degterinsky). - #90381 にバックポート: MergeTreeReaderIndex で、part の行数が index_granularity より少ない場合に発生する行数の不一致を修正しました。#89691 を解決しました。#90254 (Peng Jian).
- #90608 でバックポート: compact パーツ内の JSON からサブカラムを読み取る際に
CANNOT_READ_ALL_DATAエラーが発生する可能性のある不具合を修正しました。#90264 を修正しました。#90302 (Pavel Kruglov). trim、ltrim、rtrim関数が 2 引数で動作しない問題を修正しました。#90170 をクローズしました。#90305 (Nihal Z. Miaji) 。- #90625 でバックポート: 存在しない JSON パスに対する prewhere で、index_granularity_bytes=0 の場合に発生する可能性がある論理エラーを修正。#86924 を解決。#90375 (Pavel Kruglov).
- #90484 でバックポート: 精度引数が有効範囲を超えたときにクラッシュしていた
L2DistanceTransposedのバグを修正しました。#90401 をクローズしました。#90405 (Raufs Dunamalijevs) 。 - #90577 にバックポート: 配列の参照ベクトル (デフォルトでは
Array(Float64))) を、要素型がFloat64ではない (Float32、BFloat16)QBitカラムとともに使用した場合、L2DistanceTransposedで距離計算が誤っていた問題を修正しました。この関数は現在、参照ベクトルをQBitの要素型に一致するよう自動的に CAST します。#89976 を修正します。#90485 (Raufs Dunamalijevs). - #90601 でバックポート:
equals関数のまれなケースで発生する論理エラーを修正。#88142 をクローズ。#90557 (Nihal 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 の設定時に、ビルドでコンパイラ cache (例:
protoc) を使用するようにしました。 #89613 (Konstantin Bogdanov). - FreeBSD 13.4 の sysroot を使用するようにしました。 #89617 (Konstantin Bogdanov).
ClickHouse リリース 25.10 (2025-10-31)
後方互換性を持たない変更
- デフォルトの
schema_inference_make_columns_nullable設定を変更し、すべてを Nullable にするのではなく、Parquet/ORC/Arrow のメタデータに含まれるカラムのNullable情報を考慮するようにしました。テキストフォーマットについては変更ありません。 #71499 (Michael Kolupaev). - query result cache は
log_comment設定を無視するようになったため、クエリのlog_commentだけを変更しても cache ミスは発生しなくなります。ユーザーがlog_commentを変えることで意図的に cache を分けていた可能性はわずかにあります。この変更によりその挙動が変わるため、後方互換性はありません。この用途にはquery_cache_tag設定を使用してください。 #79878 (filimonov). - 以前のバージョンでは、演算子の実装関数と同名の table function を含むクエリで、フォーマットに一貫性がありませんでした。#81601 をクローズしました。#81977 をクローズしました。#82834 をクローズしました。#82835 をクローズしました。EXPLAIN SYNTAX クエリでは、演算子が常にフォーマットされるわけではなくなりました。この新しい挙動は、構文を説明するという目的をより適切に反映しています。
clickhouse-format、formatQuery、および同様のツールは、クエリ内で関数形式で記述されている場合、関数を演算子としてフォーマットしません。#82825 (Alexey 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). - 新しい構文により、テキスト索引のトークナイザーパラメータをより柔軟に表現できるようになりました。#87997 (Elmi Ahmadov) 。
- 既存の関数
hasTokenとの一貫性を高めるため、関数searchAnyとsearchAllをhasAnyTokensおよびhasAllTokensに改名しました。#88109 (Robert Schulze). - ファイルシステムキャッシュから
cache_hits_thresholdを削除しました。この機能は、SLRU キャッシュポリシーが導入される前に外部コントリビューターによって追加されたものですが、現在は SLRU キャッシュポリシーがあるため、両方をサポートする意味はありません。 #88344 (Kseniia Sumarokova). min_free_disk_ratio_to_perform_insertとmin_free_disk_bytes_to_perform_insertの設定の動作に、わずかな変更が 2 点あります: - insert を拒否すべきかどうかの判定には、available bytes ではなく unreserved bytes を使用します。background merges と mutations のための予約領域が設定されたしきい値に比べて小さい場合、これはおそらくそれほど重要ではありませんが、そのほうがより適切と思われます。 - これらの設定はシステムテーブルには適用しません。その理由は、query_logのようなテーブルは引き続き更新されるようにしたいためです。これはデバッグに大いに役立ちます。システムテーブルに書き込まれるデータは通常、実データに比べて小さいため、妥当な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 ALLおよびORDER BY ALLと同様に、LIMIT BY ALLは SELECT 句内のすべての非集計式を自動的に展開し、LIMIT BY のキーとして使用します。たとえば、SELECT id, name, count(*) FROM table GROUP BY id LIMIT 1 BY ALLはSELECT id, name, count(*) FROM table GROUP BY id LIMIT 1 BY id, nameと同等です。この機能により、選択したすべての非集計カラムを LIMIT BY の対象にしたい場合に、それらを明示的に列挙せずにクエリを簡潔に記述できます。#59152 をクローズします。#84079 (Surya Kant Ranjan).- ClickHouseからApache Paimonに対してクエリを実行するためのサポートを追加しました。このインテグレーションにより、ClickHouseユーザーはPaimonのデータレイクストレージ内のデータを直接扱えるようになります。#84423 (JIaQi).
studentTTestOneSample集約関数が追加されました。#85436 (Dylan) 。- 集約関数
quantilePrometheusHistogramは、ヒストグラムバケットの上限値と累積値を引数として受け取り、quantile の位置を含むバケットの上限と下限の間で線形補間を行います。クラシックヒストグラムに対する PromQL のhistogram_quantile関数と同様に動作します。#86294 (Stephen Chi). - Delta Lake のメタデータファイル向けの新しいシステムテーブル。#87263 (scanhex12) 。
ALTER TABLE REWRITE PARTSを追加しました。これは、すべての新しい設定を使ってテーブルのパーツを最初から再書き込みします (use_const_adaptive_granularityなどの一部の設定は、新しいパーツに対してのみ適用されるためです) 。 #87774 (Azat Khuzhin).- ZooKeeper との切断および再接続を強制する
SYSTEM RECONNECT ZOOKEEPERコマンドを追加しました (https://github.com/ClickHouse/ClickHouse/issues/87317) 。#87318 (Pradeep Chhetri) 。 - 設定
max_named_collection_num_to_warnおよびmax_named_collection_num_to_throwにより、名前付きコレクションの数を制限できるようになりました。新しいメトリクスNamedCollectionとエラーTOO_MANY_NAMED_COLLECTIONSを追加しました。#87343 (Pablo Marcos) 。 startsWith関数とendsWith関数に、大文字・小文字を区別しない最適化版のstartsWithCaseInsensitive、endsWithCaseInsensitive、startsWithCaseInsensitiveUTF8、およびendsWithCaseInsensitiveUTF8を追加しました。#87374 (Guang Zhao) 。- サーバー設定の “resources_and_workloads” セクションを使用して、SQL で
WORKLOADとRESOURCEを定義できるようになりました。 #87430 (Sergei Trifonov). - wide パーツとして作成されるパーツの最小レベルを指定できる、新しいテーブル設定
min_level_for_wide_partを追加しました。#88179 (Christoph Wurm). - Keeper client に、
cp-cprおよびmv-mvrコマンドの再帰対応バリアントを追加しました。 #88570 (Mikhail Artemenko). - INSERT 時のマテリアライズ対象から除外するスキップ索引のリストを指定するセッション設定 (
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 settingsと、空文字列に対する式の最適化を導入しました。#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).
- ネイティブプロトコルで logs と profile events を圧縮しました。100 個を超えるレプリカを持つクラスターでは、非圧縮の profile events が 1..10 MB/秒に達し、低速なインターネット接続では進捗バーの動作が重くなります。これにより #82533 を解決します。#83586 (Alexey Milovidov).
- StringZilla ライブラリを使用し、利用可能な場合は SIMD CPU 命令を活用することで、大文字と小文字を区別する文字列検索 (フィルタリングなどの操作。例:
WHERE URL LIKE '%google%') のパフォーマンスを改善しました。#84161 (Raúl Marín). - 型
SimpleAggregateFunction(anyLast)のカラムを含むテーブルに対して、FINAL を付けて aggregating merge tree テーブルから select する際のメモリ割り当てとメモリコピーを削減しました。 #84428 (Duc Canh Le) 。 - OR 条件の JOIN 述語のプッシュダウンに関するロジックを追加しました。例: TPC-H Q7 で、2 つの table
n1とn2に対する条件(n1.n_name = 'FRANCE' AND n2.n_name = 'GERMANY') OR (n1.n_name = 'GERMANY' AND n2.n_name = 'FRANCE')について、各 table に対して個別の部分 filter を抽出します。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). - 複数の文字列/数値カラムでグループ化する際に、シリアライズされたキーが大きいことによって発生していたパフォーマンス低下を修正しました。これは #83884 のフォローアップです。#85924 (李扬).
joined_block_split_single_row設定を新たに追加し、キーごとの一致数が多いハッシュ結合でのメモリ使用量を削減できるようになりました。これにより、左側のテーブルの1行に対する一致結果についても、その途中でハッシュ結合の結果をチャンクに分割できるようになり、特に左側のテーブルの1行が右側のテーブルの数千〜数百万行に一致する場合に有効です。従来は、すべての一致結果を一度にメモリ上に実体化する必要がありました。これによりピークメモリ使用量は減少しますが、CPU使用率が増加する可能性があります。#87913 (Vladimir Cherkasov).- SharedMutex の改善 (多数の同時実行クエリにおけるパフォーマンスを向上) 。 #87491 (Raúl Marín).
- 主に低頻度のトークンを含むドキュメントにおけるテキスト索引の構築性能を改善しました。 #87546 (Anton Popov).
- Field デストラクタの一般的な処理を高速化 (多数の小規模クエリでのパフォーマンスを改善) 。 #87631 (Raúl Marín).
- JOIN の最適化時に実行時のハッシュテーブル統計の再計算をスキップするようにし、JOIN を含むすべてのクエリのパフォーマンスを向上させました。あわせて、新しいプロファイルイベント
JoinOptimizeMicrosecondsとQueryPlanOptimizeMicrosecondsを追加しました。#87683 (Vladimir Cherkasov) 。 - cache への marks の保存を有効化し、MergeTreeLazy リーダーでの直接 I/O を回避します。これにより、ORDER BY と小さな LIMIT を伴うクエリのパフォーマンスが向上します。 #87989 (Nikita Taranov).
is_deletedカラムを持つReplacingMergeTreeテーブルに対するFINAL句付きの SELECT クエリは、既存の 2 つの最適化による並列化の改善により、実行速度が向上しました。1.partが 1 つしかないテーブルのパーティションに対するdo_not_merge_across_partitions_select_final最適化。2. テーブル内のその他の選択範囲をintersecting / non-intersectingに分割し、FINAL merging transform を通す必要があるのは交差する範囲のみです。#88090 (Shankar Iyer).- フェイルポイントを使用しない場合の影響 (デバッグが有効でないときのデフォルトのコードパス) を軽減しました。#88196 (Raúl Marín).
uuidでフィルタする際のsystem.tablesのフルスキャンを回避 (ログまたは ZooKeeper の path から UUID しかわからない場合に有用) 。#88379 (Azat Khuzhin).- 関数
tokens、hasAllTokens、hasAnyTokensのパフォーマンスが向上しました。#88416 (Anton Popov). - 一部のケースでのJOINパフォーマンスをわずかに改善するため、
AddedColumns::appendFromBlockをインライン化しました。#88455 (Nikita Taranov). - 複数の system table クエリを発行する代わりに
system.completionsを使用することで、クライアントの自動補完がより高速かつ一貫したものになりました。#84694 (|2ustam). - 辞書圧縮を制御するための新しいテキスト索引パラメータ
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 への insert 前にすべてのスレッドのデータをまとめるようになりました。以前は、parallel_view_processingが有効な場合、特定の materialized view に insert する各スレッドが個別にデータをまとめていたため、生成されるパーツ数が増える可能性がありました。 #87280 (Antonio Andelic). - 一時ファイル書き込み用バッファのサイズを制御する設定
temporary_files_buffer_sizeを追加。*LowCardinalityカラムに対するscatter操作 (たとえば Grace Hash Join で使用) のメモリ使用量を最適化。#88237 (Vladimir Cherkasov). - 並列レプリカ使用時のテキスト索引からの直接読み取りをサポートしました。オブジェクトストレージ上のテキスト索引の読み取り性能を向上させました。#88262 (Anton Popov).
- データレイクのカタログ内のテーブルを使用するクエリでは、分散処理に並列レプリカを使用するようになりました。 #88273 (scanhex12).
- “to_remove_small_parts_at_right” という background merges アルゴリズムの調整用内部ヒューリスティックが、マージ範囲スコアの計算前に実行されるようになりました。これまでは、merge selector は wide マージを選択した後、その接尾辞で絞り込んでいました。修正: #85374。#88736 (Mikhail Artemenko)。
改善
- これにより、関数
generateSerialIDは、series 名を指定する非定数引数をサポートするようになりました。#83750 をクローズしました。#88270 (Alexey Milovidov)。 - 新しい連番系列に対して任意の開始値を指定できるよう、
generateSerialID関数に省略可能なstart_valueパラメータを追加しました。#88085 (Manuel). clickhouse-formatに--semicolons_inlineオプションを追加し、クエリ整形時にセミコロンが新しい行ではなく末尾の行に配置されるようにしました。#88018 (Jan Rada) 。- Keeper で設定が上書きされた場合でも、サーバーレベルのスロットリングを設定できるようにしました。#73964 を修正しました。#74066 (JIaQi).
mannWhitneyUTestは、両方の標本が同じ値しか含まない場合でも、例外を送出しなくなりました。現在は SciPy と整合した有効な結果を返します。これにより次の問題が解決されます: #79814。 #80009 (DeanNeaht).- Rewrite disk のオブジェクトストレージトランザクションでは、メタデータトランザクションがコミットされると、以前のリモートブロブが削除されるようになりました。 #81787 (Sema Checherinda) 。
- 最適化の前後で結果型の
LowCardinalityが異なる場合に、冗長な等価式に対する最適化パスの不具合を修正しました。#82651 (Yakov Olkhovskiy) 。 - HTTP クライアントが
Expect: 100-continueに加えてヘッダーX-ClickHouse-100-Continue: deferを設定すると、ClickHouse はクォータ検証が通過するまでクライアントに100 Continueレスポンスを返さないため、どうせ破棄されるリクエストボディの送信によるネットワーク帯域の無駄を防げます。これは、クエリを URL のクエリ文字列で送り、データをリクエストボディで送る INSERT クエリに該当します。ボディ全体を送らずにリクエストを中断すると、HTTP/1.1 では connection を再利用できなくなりますが、新しい connection を開くことで増える latency は、大量のデータを伴う INSERT 全体の所要時間に比べれば、通常は無視できる程度です。#84304 (c-end). - S3 ストレージを使用する DATABASE ENGINE = Backup で、ログ内の S3 認証情報をマスクする。 #85336 (Kenny Sun).
- 実体化を遅らせることで、クエリプランの最適化が相関サブクエリの入力サブプランにも見えるようにしました。 #79890 の一部です。 #85455 (Dmitry Novik).
- SYSTEM DROP DATABASE REPLICA の変更: - データベースを指定して削除する場合、またはレプリカ全体を削除する場合: そのデータベース内の各テーブルのレプリカも削除される - ‘WITH TABLES’ が指定されている場合、各ストレージのレプリカを削除する - それ以外の場合、ロジックは変更されず、データベース上のレプリカのみを削除する - Keeper パスを指定してデータベースのレプリカを削除する場合: - ‘WITH TABLES’ が指定されている場合: - データベースを Atomic として復元する - Keeper 内のステートメントから RMT テーブルを復元する - データベースを削除する (復元されたテーブルも削除される) - それ以外の場合、指定された Keeper パス上のレプリカのみを削除する。 #85637 (Tuan Pham Anh).
materialize関数を含む TTL のフォーマットの不整合を修正しました。#82828 をクローズしました。#85749 (Alexey Milovidov) 。- Icebergテーブルの状態は、ストレージオブジェクトに保存されなくなりました。これにより、ClickHouse の Iceberg がクエリの同時実行に対応できるようになるはずです。 #86062 (Daniil Ivanik).
- S3Queue の ordered モードでの bucket lock を、
use_persistent_processing_nodes = 1の場合のprocessingノードと同様に永続化します。テストに Keeper のフォールトインジェクションを追加しました。#86628 (Kseniia Sumarokova). - ユーザーがフォーマット名をタイプミスした際に、ヒントが表示されるようにしました。Closes #86761。#87092 (flynn) 。
- プロジェクションがない場合、リモートレプリカでは索引解析がスキップされるようになりました。#87096 (zoomxi).
- ytsaurusテーブルでUTF-8エンコーディングを無効にできるようにしました。 #87150 (MikhailBurdukov).
- デフォルトでは
s3_slow_all_threads_after_retryable_errorを無効にしました。#87198 (Nikita Mikhaylov) 。 - テーブル関数
arrowflightをarrowFlightに改名しました。#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).- 書き込みtx中に任意の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.yamlのconnections_credentialsパスに事前定義した connection を指定できます。clickhouse-benchmarkで--accept-invalid-certificateもサポートしました。#87370 (Azat Khuzhin).- これにより、
max_insert_threadsの設定がIcebergテーブルでも有効になります。#87407 (alesapin) 。 PrometheusMetricsWriterにヒストグラムと次元メトリクスを追加しました。これにより、PrometheusRequestHandlerハンドラーは必要なメトリクスをすべて備え、クラウド環境で信頼性が高くオーバーヘッドの低いメトリクス収集に使用できるようになります。#87521 (Miсhael Stetsyuk).- 関数
hasTokenは、空のトークンに対しては一致件数 0 を返すようになりました (従来は例外がスローされていました) 。 #87564 (Jimmy Aguilar Mena). ArrayおよびMap(mapKeysとmapValues) の値でテキスト索引をサポートしました。サポートされる関数はmapContainsKeyとhasです。#87602 (Elmi Ahmadov) 。- 期限切れとなったグローバル ZooKeeper セッション数を示す新しい
ZooKeeperSessionExpiredメトリックを追加しました。#87613 (Miсhael Stetsyuk). - バックアップ保存先へのサーバー側 (native) コピーには、バックアップ専用の設定 (たとえば backup_slow_all_threads_after_retryable_s3_error) を備えた S3 ストレージクライアントを使用するようにしました。s3_slow_all_threads_after_retryable_error は廃止しました。 #87660 (Julia Kartseva).
- Experimental な
make_distributed_planを使用したクエリプランのシリアライゼーション時に、設定max_joined_block_size_rowsおよびmax_joined_block_size_bytesが正しく処理されない問題を修正しました。#87675 (Vladimir Cherkasov). - 設定
enable_http_compressionがデフォルトになりました。これは、クライアントが HTTP 圧縮を受け入れる場合、サーバーがそれを使用することを意味します。ただし、この変更にはいくつかの欠点があります。クライアントはbzip2のような負荷の高い圧縮方式を要求できてしまい、これは現実的ではなく、サーバーのリソース消費を増加させます (ただし、これが目に見えるのは大きな結果セットが転送される場合に限られます) 。クライアントはgzipを要求することもできます。これはそれほど悪くはありませんが、zstdと比べると最適ではありません。#71591 をクローズしました。#87703 (Alexey Milovidov). system.server_settingsに、ClickHouse が接続可能な [Zoo]Keeper ホストの一覧を示す新しいエントリkeeper_hostsが追加されました。#87718 (Nikita Mikhaylov) 。- 過去の調査をしやすくするため、システムダッシュボードに
fromとtoの値を追加しました。 #87823 (Mikhail f. Shiryaev). - Iceberg の SELECT におけるパフォーマンス追跡向けの情報を追加しました。#87903 (Daniil Ivanik) 。
- ファイルシステムキャッシュの改善: キャッシュ内の領域を同時に予約する複数のスレッド間で、キャッシュ優先度イテレーターを再利用するようにしました。 #87914 (Kseniia Sumarokova).
Keeperのリクエストサイズを制限できるようにしました (max_request_size設定。ZooKeeperのjute.maxbufferと同じで、後方互換性のためデフォルトでは OFF ですが、今後のリリースで有効になる予定です) 。#87952 (Azat Khuzhin) 。- デフォルトでは、
clickhouse-benchmarkのエラーメッセージにスタックトレースが含まれないようにしました。 #87954 (Ahmed Gouda). - marks が cache にある場合は、thread pool を使った非同期の marks loading (
load_marks_asynchronously=1) の使用は避けてください (pool に負荷がかかっている可能性があり、marks がすでに cache に入っていてもクエリに余計なペナルティが発生するためです) 。#87967 (Azat Khuzhin) 。 - Ytsaurus: 一部のカラムのみを指定してテーブル/テーブル関数/辞書を作成できるようになりました。 #87982 (MikhailBurdukov).
- 今後は、
system.zookeeper_connection_logがデフォルトで有効になり、Keeper セッションに関する情報の取得に使用できます。#88011 (János Benjamin Antal) 。 - 重複する外部テーブルが渡された場合の TCP と HTTP の動作を統一しました。HTTP では一時テーブルを複数回渡すことができます。#88032 (Sema Checherinda).
- Arrow/ORC/Parquet の読み取り用カスタム MemoryPools を削除しました。現在はすべての割り当てを一律に追跡しているため、#84082 以降、このコンポーネントは不要と思われます。 #88035 (Nikita 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(hasAnyToken) およびhasAllTokens(hasAllToken) 関数のエイリアスを追加しました。#88162 (George Larionov) 。- グローバルサンプリングプロファイラ (つまり、クエリに関連しないサーバースレッドも含む) をデフォルトで有効にし、CPU時間と実時間の両方について10秒ごとに、すべてのスレッドのスタックトレースを収集するようにしました。 #88209 (Alexander Tokmakov).
- Azure SDK を更新し、コピーおよびコンテナー作成機能で発生していた ‘Content-Length’ の修正を取り込みました。#88278 (Smita Kulkarni) 。
- MySQL との互換性のため、関数
lagを大文字・小文字を区別しないようにしました。#88322 (Lonny Kapelushnik). clickhouse-localをclickhouse-serverディレクトリから起動できるようになりました。以前のバージョンでは、エラーCannot parse UUID: .が発生していました。これにより、サーバーを起動しなくても clickhouse-local を起動してサーバーのデータベースを操作できます。#88383 (Alexey Milovidov).- 設定
keeper_server.coordination_settings.check_node_acl_on_removeを追加しました。有効にすると、ノードを削除するたびに、そのノード自体と親ノードの両方の ACL が検証されます。無効な場合は、親ノードの ACL のみが検証されます。 #88513 (Antonio Andelic). JSONカラムは、Verticalフォーマット使用時に見やすく整形して表示されるようになりました。#81794 を修正。#88524 (Frank Rosner).clickhouse-clientのファイル (例: クエリ履歴) は、ホームディレクトリ直下ではなく、XDG Base Directories 仕様で定義された場所に保存されるようになりました。~/.clickhouse-client-historyは、すでに存在する場合は引き続き使用されます。#88538 (Konstantin Bogdanov).GLOBAL INによるメモリリークを修正しました (https://github.com/ClickHouse/ClickHouse/issues/88615)。[#88617](https://github.com/ClickHouse/ClickHouse/pull/88617) (pranavmehta94)。- hasAny/hasAllTokens に、文字列入力を受け付けるオーバーロードを追加しました。#88679 (George Larionov) 。
clickhouse-keeperの postinstall スクリプトに、システム起動時に自動起動するよう有効化する手順を追加しました。#88746 (YenchangChan).- Web UI での認証情報の確認は、キー入力のたびではなく、貼り付け時にのみ行うようにしました。これにより、LDAP サーバーの設定ミスによる問題を回避できます。これで #85777 をクローズします。#88769 (Alexey Milovidov).
- 制約違反時の例外メッセージの長さを制限しました。以前のバージョンでは、非常に長い文字列が挿入されると、非常に長い例外メッセージが生成され、それがクエリ_ログに書き込まれることがありました。#87032 をクローズしました。#88801 (Alexey Milovidov) 。
- テーブル作成時に ArrowFlight サーバーからデータセットの構造を取得する際の不具合を修正しました。 #87542 (Vitaly Baranov).
バグ修正 (公式の安定版リリースでユーザーに影響する不具合)
- クライアントプロトコルエラーの原因となっていたGeoParquetの問題を修正しました。#84020 (Michael Kolupaev) 。
- イニシエーターノード上のサブクエリで、
shardNum()のようなホスト依存関数の解決に関する不具合を修正しました。#84409 (Eduard Karacharov). parseDateTime64BestEffort、change{Year,Month,Day}、makeDateTime64などの各種 date time 関連関数において、小数秒を含む epoch 以前の日付の処理が誤っていた問題を修正しました。これまでは、小数秒部分を秒に加算すべきところ、誤って秒から減算していました。たとえば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) 。clustertable function で作成されたテーブルで、JSON/Dynamic 型をサポートしました。#86821 (Pavel Kruglov) 。- クエリ内で、CTE で計算された関数の結果が非決定論的になる問題を修正しました。#86967 (Yakov Olkhovskiy) 。
- 主キーカラムに対して pointInPolygon を使用した EXPLAIN で発生する LOGICAL_ERROR を修正しました。#86971 (Michael Kolupaev) 。
- 名前にパーセントエンコードされたシーケンスを含むデータレイクテーブルの問題を修正しました。#86626 をクローズします。#87020 (Anton Ivashkin).
optimize_functions_to_subcolumnsを使用したOUTER JOINにおけるNullableカラムでのIS NULLの不正な挙動を修正し、#78625 をクローズしました。#87058 (Vladimir Cherkasov).max_temporary_data_on_disk_sizeの制限追跡において、一時データの解放の計上が誤っていた問題を修正しました。close #87118。#87140 (JIaQi).- 関数
checkHeadersは、指定されたヘッダーを正しく検証し、禁止されたヘッダーを拒否するようになりました。元の著者: Michael Anastasakis (@michael-anastasakis)。#87172 (Raúl Marín). - すべての数値型で、
toDateとtoDate32の動作を同一にしました。int16 からのキャスト時における Date32 のアンダーフローチェックを修正しました。#87176 (Pervakov Grigorii). - 複数の JOIN を含むクエリ、特に LEFT/INNER JOIN の後に RIGHT JOIN が続く場合の並列レプリカにおける論理エラーを修正しました。#87178 (Igor Nikonov) 。
- スキーマ推論 cache で、設定
input_format_try_infer_variantsが尊重されるようにしました。#87180 (Pavel Kruglov) 。 - pathStartsWith がプレフィックス配下のパスにのみマッチするようにしました。 #87181 (Raúl Marín).
_row_number仮想カラムおよび Iceberg の position delete における論理エラーを修正しました。#87220 (Michael Kolupaev) 。- const と non-const のブロックが混在している場合に
JOINで発生する “Too large size passed to allocator”LOGICAL_ERRORを修正しました。#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 レイアウトを使用する Dictionaries を修正しました。#87490 (MikhailBurdukov).
- 空のタプルのArrayを作成する際の不具合を修正しました。#87520 (Pavel Kruglov) 。
- 一時テーブルの作成時に、不正なカラムを検出するようにしました。#87524 (Pavel Kruglov).
- hive のパーティションカラムをフォーマットヘッダーに含めないようにしました。#87515 を修正しました。#87528 (Arthur Passos).
- テキストフォーマット使用時に、Delta Lakeでフォーマットからの読み取り準備に関する不具合を修正しました。 #87529 (Pavel Kruglov).
- Buffer テーブルに対する select および insert のアクセス権限の検証を修正しました。 #87545 (pufit).
- S3テーブルでのデータスキッピングインデックスの作成を禁止しました。#87554 (Bharat Nallan) 。
- async logging における追跡対象メモリのリーク (10時間で約100GiBもの大きなずれが生じる可能性があります) と、text_log (ほぼ同程度のずれが生じる可能性があります) を防止しました。#87584 (Azat Khuzhin) 。
- View または Materialized View の SELECT 設定でグローバルなサーバー設定が上書きされる可能性がある不具合を修正しました。この問題は、当該ビューが非同期に削除され、バックグラウンドクリーンアップが完了する前にサーバーが再起動された場合に発生する可能性がありました。#87603 (Alexander Tokmakov) 。
- メモリ過負荷警告の計算時に、 (可能であれば) ユーザー空間の page cache のバイト数を除外するようにしました。 #87610 (Bharat Nallan).
- CSVのデシリアライゼーション時に型の順序が不正だと
LOGICAL_ERRORが発生していた不具合を修正しました。#87622 (Yarik Briukhovetskyi) 。 - 実行可能辞書における
command_read_timeoutの誤った処理を修正しました。 #87627 (Azat Khuzhin). - 置換後のカラムに対してフィルタを適用した際に、新しいアナライザで
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 がクローズされます。#87761 (scanhex12) 。
- PostgreSQLインターフェイスでのブール値の書き込みに関する不具合を修正しました。#87762 (Artem Yurov) 。
- CTE を含む INSERT SELECT クエリで発生する unknown table エラーを修正しました。#85368。#87789 (Guang Zhao) 。
- Nullable の内側に配置できない Variant から NULL の map サブカラムを読み取れない不具合を修正しました。#87798 (Pavel Kruglov) 。
- セカンダリノードで、クラスター上のデータベースを完全に削除できなかった場合のエラー処理を修正しました。#87802 (Tuan Pham Anh) 。
- 複数のスキップインデックスの不具合を修正しました。#87817 (Raúl Marín).
- AzureBlobStorage で、まずネイティブコピーを試し、‘Unauthroized’ エラーが発生した場合は読み取りと書き込みにフォールバックするように更新しました (AzureBlobStorage では、コピー元と宛先のストレージ アカウントが異なる場合、‘Unauthorized’ エラーが発生します) 。また、設定でエンドポイントが定義されている場合に “use_native_copy” が適用されるよう修正しました。#87826 (Smita Kulkarni).
- ArrowStream ファイルに重複した辞書が含まれていると、ClickHouse がクラッシュします。#87863 (Ilya Golshtein).
- approx_top_k および finalizeAggregation 使用時の致命的な問題を修正しました。 #87892 (Jitendra).
- 最後のブロックが空の場合に、projections を伴うマージを修正しました。#87928 (Raúl Marín).
- 引数の型が GROUP BY で許可されていない場合でも、GROUP BY から単射関数を削除しないようにしました。#87958 (Pavel Kruglov) 。
- クエリで
session_timezone設定を使用した場合に、datetime ベースのキーに対する granule/パーティションの除外が誤って行われる問題を修正しました。#87987 (Eduard Karacharov). - PostgreSQLインターフェイスで、クエリ実行後に影響を受けた行数が返されるようになりました。#87990 (Artem Yurov).
- PASTE JOIN での filter pushdown の使用を制限しました。誤った結果を招く可能性があるためです。#88078 (Yarik Briukhovetskyi).
- https://github.com/ClickHouse/ClickHouse/pull/84503 で導入された grants チェックについて、評価前に URI の正規化を適用するようにしました。#88089 (pufit) 。
- 新しいアナライザで、
ARRAY JOIN COLUMNS()に一致するカラムが1つもない場合に発生する論理エラーを修正しました。 #88091 (xiaohuanlin). - 「ClickHouse のメモリ使用量が高い」警告を修正 (ページキャッシュを除外) 。#88092 (Azat Khuzhin).
TTLが設定されたMergeTreeテーブルで発生する可能性のあるデータ破損を修正しました。#88095 (Anton Popov).- 外部データベース (
PostgreSQL/SQLite/…) がアタッチされている状態で、無効なテーブルを含むsystem.tablesの読み取り時に未捕捉の例外が発生する可能性がある問題を修正しました。#88105 (Azat Khuzhin) 。 - 空のタプルを引数にして呼び出した際に、
mortonEncodeおよびhilbertEncode関数がクラッシュする問題を修正しました。 #88110 (xiaohuanlin). - これにより、クラスター内に非アクティブなレプリカがある場合でも、
ON CLUSTERクエリの実行時間が短くなります。#88153 (alesapin). - DDL worker がレプリカセットから古いホストをクリーンアップするようになりました。これにより、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). - サブクエリを含む非常に重いミューテーションが prepare 段階でハングすることがある不具合を修正しました。これにより、
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 introspection テーブルに表示されます。 #88341 (alesapin). - DatabaseReplicated が
interserver_http_host設定に従うよう修正しました。#88378 (xiaohuanlin) 。 - プロジェクションの定義時には、この内部的なクエリ段階では位置引数に意味がないため、位置引数が明示的に無効化されるようになりました。これにより #48604 が修正されます。#88380 (Amos Bird).
countMatches関数の二次計算量の問題を修正しました。#88400 をクローズします。#88401 (Alexey Milovidov).- KeeperMap テーブルの
ALTER COLUMN ... COMMENTコマンドがレプリケートされるようにし、Replicated database のメタデータにコミットされ、すべてのレプリカに反映されるようにしました。#88077 をクローズ。 #88408 (Eduard Karacharov). - Database Replicated における Materialized Views の誤った循環依存関係を修正し、新しいレプリカをデータベースに追加できない問題を解消しました。 #88423 (Nikolay Degterinsky).
group_by_overflow_modeがanyに設定されている場合のスパース カラムの集計処理を修正しました。#88440 (Eduard Karacharov) 。query_plan_use_logical_join_step=0で複数の FULL JOIN USING 句を使用した際に発生する “column not found” エラーを修正しました。#88103 をクローズしました。#88473 (Vladimir Cherkasov).- ノード数が 10 を超える大規模なクラスターでは、復元がエラー
[941] 67c45db4-4df4-4879-87c5-25b8d1e0d414 <Trace>: 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 をクローズしました。#88484 (Mikhail 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). - Tuple型に対する coalescing merge tree の不具合を修正しました。これにより #88469 を解決しました。#88526 (scanhex12).
iceberg_format_version=1での削除を禁止しました。これにより #88444 をクローズしました。#88532 (scanhex12).- このパッチにより、
plain-rewritableディスクで、任意の深さのフォルダーに対する移動操作の不具合が修正されました。#88586 (Mikhail Artemenko). - *cluster関数でのSQL SECURITY DEFINERを修正しました。 #88588 (Julian Maicher).
- 基盤となる const PREWHERE カラムに対するミューテーションが同時に実行された場合に発生し得るクラッシュを修正しました。#88605 (Azat Khuzhin) 。
- テキスト索引からの読み取りを修正し、クエリ条件 cache を有効にしました (設定
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 database のレプリカが
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).- cache が有効な S3 テーブルエンジンで発生する”ゼロバイトエラー”を修正するための N 回目の試み。 #88740 (Kseniia Sumarokova).
looptable function に対する SELECT 時のアクセス検証を修正しました。#88802 (pufit).- 非同期ログの失敗時に例外を捕捉し、プログラムの異常終了を防ぐようにしました。#88814 (Raúl Marín) 。
- #89060 にバックポート:
top_kが単一引数で呼び出された際に threshold パラメータを正しく考慮するよう修正しました。#88757 をクローズ。#88867 (Manuel). - #88944 にバックポート: 関数
reverseUTF8のバグを修正しました。以前のバージョンでは、長さ 4 の UTF-8 コードポイントのバイトを誤って逆順にしていました。これにより #88913 はクローズされます。#88914 (Alexey Milovidov). - #88980 にバックポート: SQL SECURITY DEFINER を指定したビューの作成時に、
SET DEFINER <current_user>:definerへのアクセス権をチェックしないようにしました。#88968 (pufit). - #89058 にバックポート:
pがNullableの場合、部分的なQBit読み取りの最適化により戻り値の型からNullableが誤って取り除かれていたL2DistanceTransposed(vec1, vec2, p)のLOGICAL_ERRORを修正しました。#88974 (Raufs Dunamalijevs). - #89167 でバックポート: 不明なカタログ型で発生するクラッシュを修正。#88819 を解決。#88987 (scanhex12).
- #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 FAILPOINTqueries は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 table が、各クエリの実行前にストレージから最新のテーブルスキーマを取得するようになります。#86366 (Daniil Ivanik). OUTER JOIN ... USING句での coalesced column の解決方法を、より一貫したものに変更しました。従来は、OUTER JOIN で USING カラムと修飾付きカラム (a, t1.a, t2.a) の両方を選択すると、USING カラムが誤ってt1.aに解決され、左側に一致する行がない右テーブル由来の行で 0/NULL が表示されていました。現在は、USING 句の識別子は常に coalesced column に解決され、修飾付き識別子は、クエリ内に他の識別子が存在するかどうかにかかわらず、非 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).- replicated deduplication window を 10000 まで拡大しました。これは完全に互換性のある変更ですが、テーブル数が非常に多い環境では、この変更によってリソース消費が大きくなるケースも考えられます。#86820 (Sema Checherinda).
新機能
- これで、NATSエンジンに
nats_streamとnats_consumerの新しい設定を指定することで、NATS JetStream を使ってメッセージを消費できるようになりました。#84799 (Dmitry Novikov) 。 arrowFlightテーブル関数で、認証およびSSLに対応しました。#87120 (Vitaly Baranov) 。S3table engine とs3table function にstorage_class_nameという新しいパラメーターを追加し、AWS がサポートするインテリジェントティアリングを指定できるようになりました。キー・バリュー形式と位置指定の (非推奨) 形式の両方をサポートします。 #87122 (alesapin).- Iceberg テーブルエンジンで
ALTER UPDATEをサポート。 #86059 (scanhex12). - SELECTステートメント時にIcebergのメタデータファイルを取得するためのシステムテーブル
iceberg_metadata_logを追加しました。#86152 (scanhex12). IcebergおよびDeltaLakeテーブルで、ストレージレベル設定diskによるカスタムディスク構成がサポートされるようになりました。#86778 (scanhex12) 。- データレイクディスクで Azure をサポート。#87173 (scanhex12).
- Azure blob storage 上の
Unityカタログのサポートを追加。#80013 (Smita Kulkarni). Icebergへの書き込みで、ORCやAvroなど、より多くのフォーマットをサポートしました。これにより #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 をクローズしました。… #85786 (rajat mohan)。 - 真偽値の設定は、引数なしでも指定できます。たとえば
SET use_query_cache;は true に設定するのと同じです。#85800 (thraeka). - 新しい設定オプション:
logger.startupLevelとlogger.shutdownLevelにより、それぞれ ClickHouse の起動時および停止時のログレベルを上書きできるようになりました。#85967 (Lennard Eijsackers). - 集約関数
timeSeriesChangesToGridおよびtimeSeriesResetsToGrid。timeSeriesRateToGridと同様に動作し、開始 timestamp、終了 timestamp、step、look back window の parameter に加え、timestamps と値の 2 つの argument を受け取りますが、必要なサンプル数は 2 ではなく、各 window につき少なくとも 1 つです。PromQL のchanges/resetsを計算し、parameter で定義された time grid の各 timestamp について、指定された window 内でサンプル値が変化または減少した回数を数えます。戻り値の型は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のどのフィールドが見つかったかを示すカラムを補完します。#82885 (Ilya Golshtein) 。- jemalloc の内部ツールに基づく割り当てプロファイリングを改善しました。グローバルな jemalloc Profiler は、設定
jemalloc_enable_global_profilerで有効にできるようになりました。サンプリングされたグローバルな割り当てと解放は、設定jemalloc_collect_global_profile_samples_in_trace_logを有効にすることで、JemallocSampleタイプとしてsystem.trace_logに保存できます。Jemalloc profiling は、設定jemalloc_enable_profilerを使ってクエリごとに個別に有効化できるようになりました。system.trace_logへのサンプルの保存は、設定jemalloc_collect_profile_samples_in_trace_logによりクエリごとに制御できます。jemalloc を新しいバージョンに更新しました。#85438 (Antonio Andelic). - Icebergテーブルのドロップ時にファイルを削除する新しい設定。これにより #86211 がクローズされます。#86501 (scanhex12).
実験的機能
- RAM に収まらないデータセットでもスケールするよう、転置テキスト索引がゼロから再設計されました。#86485 (Anton Popov).
- Join 順序の並べ替えで統計情報を利用するようになりました。この機能は、
allow_statistics_optimize = 1とquery_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). - パフォーマンス向上のために JOIN を自動的に並べ替える JOIN 順序最適化を追加しました (
query_plan_optimize_join_order_limit設定で制御) 。なお、現時点でこの JOIN 順序最適化の統計情報サポートは限定的で、主にストレージエンジンからの行数推定に依存しています。より高度な統計情報の収集とカーディナリティ推定は、今後のリリースで追加される予定です。アップグレード後に JOIN クエリで問題が発生した場合は、SET query_plan_use_new_logical_join_step = 0を設定してこの新しい実装を一時的に無効化し、調査のために問題を報告してください。USING 句からの識別子解決に関する注意:OUTER JOIN ... USING句における coalesced column の解決方法を、より一貫した動作になるよう変更しました。以前は、OUTER JOIN で USING カラムと修飾付きカラム (a, t1.a, t2.a) の両方を選択すると、USING カラムが誤ってt1.aに解決され、左側に一致する行がない右テーブルの行では 0/NULL が表示されていました。現在は、USING 句の識別子は常に coalesced column に解決され、修飾付き識別子は、クエリ内に他の識別子が含まれているかどうかにかかわらず、非 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. 一致した行または不一致の行に対してフィルタ条件が常に false になる場合、
LEFT ANY JOINおよびRIGHT ANY JOINをSEMI/ANTIJOIN に変換します。この最適化は、新しい設定query_plan_convert_any_join_to_semi_or_anti_joinで制御されます。2. 片側の不一致の行に対してフィルタ条件が常に false になる場合、FULL ALL JOINをLEFT ALL JOINまたはRIGHT ALL JOINに変換します。 #86028 (Dmitry Novik). - 論理削除の実行後におけるvertical mergeのパフォーマンスを改善しました。 #86169 (Anton Popov).
LEFT/RIGHTjoin で一致しない行が多い場合のHashJoinのパフォーマンスがわずかに向上しました。#86312 (Nikita Taranov).- Radix sort: コンパイラがSIMDを活用し、より効果的にプリフェッチを行えるように改善しました。動的ディスパッチにより、Intel CPUでのみソフトウェアプリフェッチを使用します。https://github.com/ClickHouse/ClickHouse/pull/77029 における @taiyang-li の作業を引き継ぐものです。#86378 (Raúl Marín).
- テーブルのパーツ数が多い場合の短時間クエリのパフォーマンスを向上しました (
dequeではなくdevectorを使用してMarkRangesを最適化) 。#86933 (Azat Khuzhin) 。 - join モードでパッチパートを適用する際のパフォーマンスを改善しました。#87094 (Anton Popov).
- 設定
query_condition_cache_selectivity_threshold(デフォルト値: 1.0) が追加され、選択性の低い述語のスキャン結果はクエリ条件キャッシュへの挿入対象から除外されるようになりました。これにより、キャッシュヒット率は低下するものの、クエリ条件キャッシュのメモリ消費量を削減できます。#86076 (zhongyuankai). - Iceberg への書き込み時のメモリ使用量を削減。 #86544 (scanhex12).
改善
- Iceberg で、1 回の挿入で複数のデータファイルに書き込めるようになりました。上限を制御するための新しい設定
iceberg_insert_max_rows_in_data_fileとiceberg_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_filesettings で制御されます。#86357 (Kseniia Sumarokova). - Iceberg への書き込みで、パーティションに対応する型を拡充しました。これにより、#86206 を解決しました。#86298 (scanhex12).
- S3 の再試行戦略を設定可能にし、設定用の XML ファイルを変更した際に S3 ディスクの設定をホットリロードできるようにしました。#82642 (RinChanNOW).
- S3(Azure)Queue テーブルエンジンを改善し、重複が発生する可能性なく、zookeeper 接続が失われても動作を継続できるようにしました。これには、S3Queue 設定
use_persistent_processing_nodesを有効にする必要があります (ALTER TABLE MODIFY SETTINGで変更可能) 。 #85995 (Kseniia 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).deltaLakeAzureCluster関数 (クラスター モード用のdeltaLakeAzureに類似) と、deltaLakeS3Cluster関数 (deltaLakeClusterのエイリアス) を追加しました。#85358 を解決しました。#85547 (Smita Kulkarni) 。- バックアップと同様に、通常のコピー操作にも
azure_max_single_part_copy_size設定を適用しました。 #85767 (Ilya Golshtein). - S3 Object Storage で、再試行可能なエラー発生時に 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文字列 (スキーマと host:port を含む) によるフィルタリング (full_urlディレクティブ) をサポートしました。#86155 (Azat Khuzhin) 。- 新しい設定
allow_experimental_delta_lake_writesを追加。#86180 (Kseniia Sumarokova) 。 - init.d スクリプトでの systemd 検出を修正 (「Install packages」チェックの不具合を修正) 。#86187 (Azat Khuzhin) 。
- 新しいディメンション付きメトリック
startup_scripts_failure_reasonを追加しました。このメトリックは、起動スクリプトの失敗につながるさまざまな種類のエラーを区別するために必要です。特に、アラートのために、一時的なエラー (例:MEMORY_LIMIT_EXCEEDEDやKEEPER_EXCEPTION) と一時的でないエラーを区別できるようにする必要があります。#86202 (Miсhael Stetsyuk). - Icebergテーブルのパーティションで
identity関数を省略できるようにしました。#86314 (scanhex12) 。 - 特定のチャネルでのみ JSON ログを有効にできるようになりました。これには、
logger.formatting.channelをsyslog/console/errorlog/logのいずれかに設定します。 #86331 (Azat Khuzhin). WHEREでネイティブな数値を使用できるようになりました。これらはすでに論理関数の引数として使用可能です。これにより、filter-push-down および move-to-prewhere の最適化が簡素化されます。#86390 (Nikolai Kochetov).- 破損したメタデータを含むカタログに対して
SYSTEM DROP REPLICAを実行した際に発生するエラーを修正しました。 #86391 (Nikita Mikhaylov). - Azure ではアクセスのプロビジョニングにかなり時間がかかる場合があるため、ディスクアクセスチェック (
skip_access_check = 0) の再試行回数を増やしました。#86419 (Alexander Tokmakov) 。 timeSeries*()関数の staleness ウィンドウを左開右閉にしました。#86588 (Vitaly Baranov) 。FailedInternal*Queryprofile events を追加しました。#86627 (Shane Andrade) 。- 設定ファイル経由で追加された、名前にドットを含むユーザーの処理を修正。#86633 (Mikhail Koviazin).
- クエリのメモリ使用量を表す非同期メトリクス (
QueriesMemoryUsageとQueriesPeakMemoryUsage) を追加しました。#86669 (Azat Khuzhin) 。 clickhouse-benchmark --preciseフラグを使用すると、QPS やその他の一定間隔ごとのメトリクスを、より正確にレポートできます。これは、クエリの実行時間がレポート間隔--delay Dと同程度の場合でも、一貫した QPS を得るのに役立ちます。#86684 (Sergei Trifonov).- Linuxスレッドのnice値を設定可能にし、一部のスレッド (merge/mutate、クエリ、materialized view、ZooKeeperクライアント) に対して、より高いまたは低い優先度を割り当てられるようにしました。#86703 (Miсhael Stetsyuk) 。
- 元の例外が失われた結果、multipart upload中にレースコンディションによって発生する、誤解を招く“specified upload does not exist”エラーを修正しました。#86725 (Julia Kartseva).
EXPLAINクエリにおけるクエリプランの説明を制限しました。EXPLAIN以外のクエリについては、説明を生成しません。設定query_plan_max_step_description_lengthを追加しました。#86741 (Nikolai Kochetov) 。- 保留中シグナル数を調整できるようにし、
CANNOT_CREATE_TIMERの回避を試みられるようにしました (クエリプロファイラ向け、query_profiler_real_time_period_ns/query_profiler_cpu_time_period_ns) 。また、イントロスペクション用に/proc/self/statusからSigQも収集するようにしました (ProcessSignalQueueSizeがProcessSignalQueueLimitに近い場合、CANNOT_CREATE_TIMERエラーが発生する可能性が高くなります) 。#86760 (Azat Khuzhin). - Keeper における
RemoveRecursiveリクエストのパフォーマンスを改善しました。#86789 (Antonio Andelic) 。 - JSON type の出力時に、
PrettyJSONEachRowの余分な空白を削除。#86819 (Pavel Kruglov). - プレーンな書き換え可能ディスクでディレクトリが削除された際、
prefix.pathのブロブサイズも書き込まれるようになりました。 #86908 (alesapin). - ClickHouse Cloudを含むリモートのClickHouseインスタンスに対するパフォーマンステストをサポートしました。使用例:
tests/performance/scripts/perf.py tests/performance/math.xml --runs 10 --user <username> --password <password> --host <hostname> --port <port> --secure。 #86995 (Raufs Dunamalijevs). - 大量 (>16MiB) のメモリを割り当てることが知られている一部の箇所 (ソート、非同期 INSERT、file log) で、メモリ制限が適用されるようにしました。 #87035 (Azat Khuzhin).
network_compression_methodの設定がサポート対象の汎用コーデックでない場合、例外をスローするようにしました。 #87097 (Robert Schulze).- システムテーブル
system.query_cacheは、以前は共有エントリ、または同じユーザーとロールに属する非共有エントリのみを返していましたが、現在はすべてのクエリ結果 cache エントリを返すようになりました。これは、非共有エントリはクエリ結果を明らかにしない想定であり、system.query_cacheが返すのはクエリ文字列であるため、問題ありません。これにより、このシステムテーブルの挙動はsystem.query_logにより近いものになりました。#87104 (Robert Schulze). parseDateTime関数で短絡評価を有効にしました。#87184 (Pavel Kruglov).system.parts_columnsに新しいstatisticsカラムを追加しました。#87259 (Han Fei) 。
バグ修正 (公式の安定版リリースでユーザーに影響する不具合)
- Replicated データベースおよび内部的にレプリケーションされるテーブルでは、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).
-
- 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 utilsのextractkeyValuePairsで順序付きコンテナーを使用 (https://github.com/ClickHouse/ClickHouse/pull/81040 に必要) 。 #85538 (Arthur Passos).
- 配列マッピングの使用時に、
IN関数の最初の引数が不必要に最適化されてエラーが発生することがある問題を防止しました。#85546 (Yakov Olkhovskiy). - Iceberg のソース ID と Parquet 名の対応付けは、Parquet ファイルの書き込み時にスキーマに合わせて調整されていませんでした。この PR では、現在のスキーマではなく、各 Iceberg データファイルに対応するスキーマを処理するようにしました。#85829 (Daniil Ivanik).
- ファイルを開く処理とは別にファイルサイズを読み取るよう修正しました。これは、
5.10リリースより前の Linux カーネルに存在したバグへの対応として導入された https://github.com/ClickHouse/ClickHouse/pull/33372 に関連しています。#85837 (Konstantin Bogdanov)。 - カーネルレベルで IPv6 が無効化されているシステム (例:
ipv6.disable=1を指定した RHEL) でも、ClickHouse Keeper が起動に失敗しなくなりました。最初の IPv6 リスナーの起動に失敗した場合は、IPv4 リスナーへのフォールバックを試みるようになりました。#85901 (jskong1124). - このPRは #77990 を解決します。globalJoin における並列レプリカ向けの TableFunctionRemote のサポートを追加しました。#85929 (zoomxi).
- orcschemareader::initializeifneeded() のヌルポインタを修正しました。この PR は次の Issue に対応しています: #85292 ### ユーザー向け変更のドキュメントエントリ。 #85951 (yanglongwei).
- 外側のクエリのカラムを使用する場合に限り、FROM句で相関サブクエリを許可するチェックを追加しました。#85469 を修正しました。#85402 を修正しました。#85966 (Dmitry Novik).
- 他のカラムのマテリアライズド式で使われているサブカラムを持つカラムに対する alter update を修正しました。以前は、式内にサブカラムを含むマテリアライズドカラムが適切に更新されていませんでした。#85985 (Pavel Kruglov) 。
- サブカラムが PK またはパーティション式で使用されているカラムの変更を禁止。#86005 (Pavel Kruglov).
- storage Delta Lakeにおいて、デフォルト以外のカラムマッピングモード使用時のサブカラムの読み取りを修正しました。#86064 (Kseniia Sumarokova).
- JSON 内で Enum ヒントを持つ path で誤ったデフォルト値が使用される問題を修正しました。#86065 (Pavel Kruglov) 。
- 入力のサニタイズを伴う DataLake hive カタログ URL のパースを修正。#86018 をクローズ。#86092 (rajat mohan) 。
- ファイルシステムキャッシュの動的リサイズ時に発生する論理エラーを修正。#86122 をクローズ。https://github.com/ClickHouse/clickhouse-core-incidents/issues/473 をクローズ。#86130 (Kseniia Sumarokova).
- DatabaseReplicatedSettings の
logs_to_keepにはNonZeroUInt64を使用するようにしました。#86142 (Tuan Pham Anh) 。 - テーブル (例:
ReplacingMergeTree) が設定index_granularity_bytes = 0で作成されている場合、スキップ索引付きのFINALクエリで例外が発生していました。この例外は現在修正されています。 #86147 (Shankar Iyer). - UB を解消し、Iceberg のパーティション式のパースに関する問題を修正しました。#86166 (Daniil Ivanik) 。
- 1 つの 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 の検索対象文字列と空の検索文字列を指定した場合に発生するクラッシュを修正しました。#86270 (Raúl Marín) 。
- ALTER UPDATE Nullable(JSON) の実行中に発生するクラッシュを修正しました。#86281 (Pavel Kruglov) 。
- system.tables に不足していた definer カラムを追加しました。 #86295 (Raúl Marín).
- LowCardinality(Nullable(T)) から Dynamic への CAST を修正しました。#86365 (Pavel Kruglov) 。
- Delta Lake への書き込み中に発生する論理エラーを修正しました。#86175 をクローズします。#86367 (Kseniia Sumarokova).
- plain_rewritable ディスクで Azure blob storage 内の空のブロブを読み取る際に発生する
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) 。 - Nullable(JSON) の GROUP BY を修正しました。#86410 (Pavel Kruglov).
- Materialized Views の不具合を修正しました: 同じ名前で作成し、削除した後に再度作成した MV が動作しないことがありました。 #86413 (Alexander Tokmakov).
- すべてのレプリカが利用不可の場合、*cluster関数からの読み取りは失敗するようにしました。 #86414 (Julian Maicher).
BufferテーブルによるMergesMutationsMemoryTrackingのメモリリークを修正し、Kafka(など) からのストリーミング時のquery_views_logも修正しました。 #86422 (Azat Khuzhin).- alias ストレージの参照テーブルを削除した後、SHOW TABLES が正しく動作しない問題を修正しました。#86433 (RinChanNOW).
send_chunk_headerが有効で、HTTP protocol 経由で UDF を呼び出した際に chunk ヘッダーが欠落する問題を修正しました。#86469 (Vladimir Cherkasov) 。- jemallocプロファイルのフラッシュが有効化されている場合に発生し得るデッドロックを修正しました。 #86473 (Azat Khuzhin).
- Delta Lakeテーブルエンジンでサブカラムを読み取れない問題を修正しました。#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は、空の検索文字列を指定して呼び出した場合、true(つまり “すべてに一致する”) を返すようになりました。以前はfalseを返していました。 (issue #86300) 。#86500 (Elmi Ahmadov) 。 - 先頭のバケットに値がない場合の関数
timeSeriesResampleToGridWithStaleness()の不具合を修正しました。 #86507 (Vitaly Baranov). merge_tree_min_read_task_sizeが 0 に設定されている場合に発生するクラッシュを修正しました。#86527 (yanglongwei) 。- 読み取り時に、各データファイルのフォーマットを Iceberg のメタデータから取得するようになりました (以前はテーブル引数から取得していました) 。 #86529 (Daniil Ivanik).
- シャットダウン時のログのフラッシュ処理中に発生する例外を無視し、シャットダウンをより安全にしました (SIGSEGV を回避するため) 。#86546 (Azat Khuzhin).
- サイズがゼロの part ファイルに対するクエリで Backup DB engine が例外を発生させる問題を修正しました。#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 と pruning における Nullability の不具合を修正。これで #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 を修正しています。#86665 (Vitaly 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 をクローズします。#86748 (Kseniia Sumarokova).- 並列クエリが単一のロックを取得しようとした場合に発生する LogicalError を修正しました。 #86751 (Pervakov Grigorii).
- RowBinary入力フォーマットでJSON共有データにNULLを書き込む際の不具合を修正し、ColumnObjectに追加のバリデーションをいくつか加えました。 #86812 (Pavel Kruglov).
- limit指定時の空のTupleの順列に関する問題を修正しました。#86828 (Pavel Kruglov).
- 永続処理ノードに対して個別の Keeper ノードを使用しないようにしました。https://github.com/ClickHouse/ClickHouse/pull/85995 の修正です。#86406 をクローズしました。#86841 (Kseniia Sumarokova).
- Replicated Database で新しいレプリカを作成できなくなる 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 の出力を複数のステップに分割した後、正しく CAST されるように修正しました。#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).
- 遅延マテリアライゼーションで、array sizes サブカラムを持つ Array の読み取りの問題を修正しました。#87139 (Pavel Kruglov) 。
- Dynamic 型の引数を持つCASE関数を修正しました。#87177 (Pavel Kruglov) 。
- CSVで空文字列から空のArrayを読み込む際の不具合を修正しました。 #87182 (Pavel Kruglov).
- 非相関
EXISTSで誤った結果が返される可能性がある問題を修正しました。この問題は、https://github.com/ClickHouse/ClickHouse/pull/85481 で導入されたexecute_exists_as_scalar_subquery=1によって発生しており、25.8に影響します。#86415 を修正しました。 #87207 (Nikolai Kochetov)。 - iceberg_metadata_log が設定されていない状態でユーザーがデバッグ用の Iceberg メタデータ情報を取得しようとした場合に、エラーをスローするようにしました。nullptr へのアクセスを修正しました。 #87250 (Daniil Ivanik).
ビルド/テスト/パッケージングの改善
- abseil-cpp 20250814.0 との互換性の問題を修正しました。https://github.com/abseil/abseil-cpp/issues/1923。 #85970 (Yuriy Chernyshov).
- スタンドアロンの WASM レキサーのビルドをフラグで制御するようにしました。 #86505 (Konstantin Bogdanov).
vmull_p64命令をサポートしていない古い ARM CPU での crc32c のビルドを修正しました。 #86521 (Pablo Marcos).openldap2.6.10 を使用するようにしました。 #86623 (Konstantin Bogdanov).- darwin で
memalignをインターセプトしないようにしました。 #86769 (Konstantin Bogdanov). krb51.22.1-final を使用するようにしました。 #86836 (Konstantin Bogdanov).list-licenses.shで Rust crate 名のアンパック処理を修正しました。 #87305 (Konstantin Bogdanov).
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). - デフォルトで、
Enum型の値を Parquet 出力フォーマットではENUM論理型付きのBYTE_ARRAYとして書き込むようになりました。#84169 (Pavel Kruglov). - MergeTree 設定
write_marks_for_substreams_in_compact_partsをデフォルトで有効にしました。これにより、新しく作成された Compact パーツから subcolumns を読み取る際の性能が大幅に向上します。バージョン 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 string literal とも呼ばれます) をサポートしています。以前のバージョンではタグに対する制限が緩く、句読点や空白を含む任意の文字を使うことができました。これにより、ドル記号で始まる識別子との間でパース上の曖昧さが生じます。一方、PostgreSQL ではタグに単語文字しか使えません。この問題を解決するため、heredoc タグに使える文字を単語文字のみに制限しました。#84731 をクローズしました。#84846 (Alexey Milovidov). - 関数
azureBlobStorage、deltaLakeAzure、icebergAzureは、AZURE権限を正しく検証するよう更新されました。すべてのクラスター版関数 (-Cluster関数) は、対応する非クラスター版関数に対して権限を検証するようになりました。さらに、icebergLocalとdeltaLakeLocal関数ではFILE権限チェックも強制されるようになりました。#84938 (Nikita Mikhaylov). allow_dynamic_metadata_for_data_lakes設定 (テーブルエンジンレベルの設定) をデフォルトで有効にしました。#85044 (Daniil Ivanik).- JSON フォーマットで 64 ビット整数をクォートする動作をデフォルトで無効にしました。#74079 (Pavel Kruglov)
新機能
- PromQL dialect の基本的なサポートが追加されました。これを使用するには、clickhouse-client で
dialect='promql'を設定し、promql_table_name='X'設定で TimeSeries テーブルを指定したうえで、rate(ClickHouseProfileEvents_ReadCompressedBytes[1m])[5m:1m]のようなクエリを実行します。さらに、PromQL クエリを SQL でラップすることもできます:SELECT * FROM prometheusQuery('up', ...);。現時点でサポートされているのはrate、delta、increase関数のみです。単項/二項演算子はサポートされていません。HTTP API はありません。#75036 (Vitaly 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 Deletesに対応。#85843 (Han Fei) 。
- CREATE に対応した Iceberg への書き込み。#83927 をクローズ。#83983 (Konstantin Vedernikov).
- 書き込み向けの Glue カタログ。 #84136 (Konstantin Vedernikov).
- 書き込み向けの Iceberg REST カタログ。 #84684 (Konstantin Vedernikov).
- Iceberg のすべての position delete files を data files にマージします。これにより、Iceberg ストレージ内の Parquet ファイルの数とサイズを削減できます。構文:
OPTIMIZE TABLE table_name。 #85250 (Konstantin Vedernikov). - Iceberg で
drop tableをサポート (REST/Glue カタログからの削除 + テーブルに関するメタデータの削除) 。#85395 (Konstantin Vedernikov). - merge-on-read フォーマットの Iceberg で ALTER DELETE mutations をサポート。 #85549 (Konstantin Vedernikov).
- Delta Lake への書き込みをサポートしました。#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のテーブルエンジン/関数で、キー/値形式の引数を使用できるようになりました。たとえば、s3('url', CSV, structure = 'a Int32', compression_method = 'gzip')のように指定できます。#85134 (Kseniia Sumarokova).- Kafka のようなエンジンからの、処理エラーとなった受信メッセージを保持するための新しいシステムテーブル (「dead letter queue」) 。 #68873 (Ilya Golshtein).
- ReplicatedMergeTree の既存の復元機能と同様に、Replicated データベース向けの新しい SYSTEM RESTORE DATABASE REPLICA。#73100 (Konstantin Morozov) 。
- PostgreSQL プロトコルで
COPYコマンドがサポートされるようになりました。#74344 (Konstantin Vedernikov) 。 - mysqlプロトコル向けのC#クライアントをサポートしました。これにより #83992 が解決されます。#84397 (Konstantin Vedernikov) 。
- Hiveパーティション形式の読み書きのサポートを追加しました。#76802 (Arthur Passos) 。
- ZooKeeper 接続に関する履歴情報を保存する
zookeeper_connection_logシステムテーブルを追加しました。#79494 (János Benjamin Antal) 。 - サーバー設定
cpu_slot_preemptionにより、ワークロードの CPU プリエンプティブスケジューリングが有効になり、ワークロード間で CPU 時間が max-min 公平性に基づいて割り当てられるようになります。CPU スロットリング向けの新しいワークロード設定max_cpus、max_cpu_share、max_burst_cpu_secondsも追加されました。詳細: https://clickhouse.com/docs/operations/workload-scheduling#cpu_scheduling. #80879 (Sergei Trifonov). - 設定したクエリ数または時間のしきい値を超えたら、TCP 接続を切断します。これにより、ロードバランサー配下のクラスター ノード間で接続をより均等に分散できます。#68000 を解決します。#81472 (Kenny Sun).
- 並列レプリカで、クエリでプロジェクションを利用できるようになりました。#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) 。 - client_id と tenant_id による認証に対応するため、AzureBlobStorage に extra_credentials を追加しました。#84235 (Pablo Marcos) 。
- DateTime値を UUIDv7 に変換する関数
dateTimeToUUIDv7を追加しました。使用例:SELECT dateTimeToUUIDv7(toDateTime('2025-08-15 18:57:56'))は0198af18-8320-7a7d-abd3-358db23b9d5cを返します。#84319 (samradovich) 。 - 指定された開始タイムスタンプ、終了タイムスタンプ、および step で定義された時間グリッドにデータを再サンプリングするための集約関数
timeSeriesDerivToGridとtimeSeriesPredictLinearToGridを追加しました。それぞれ、PromQL ライクなderivとpredict_linearを計算します。 #84328 (Stephen Chi). - 2 つの新しい TimeSeries 関数を追加: -
timeSeriesRange(start_timestamp, end_timestamp, step), -timeSeriesFromGrid(start_timestamp, end_timestamp, step, values),. #85435 (Vitaly Baranov). - 新構文
GRANT READ ON S3('s3://foo/.*') TO userが追加されました。#84503 (pufit). - 新しい出力フォーマットとして
Hashが追加されました。これは、結果内のすべてのカラムと行に対して単一のハッシュ値を計算します。これは、たとえばデータ転送がボトルネックとなるユースケースで、結果の”フィンガープリント”を計算する際に役立ちます。例:SELECT arrayJoin(['abc', 'def']), 42 FORMAT Hashはe5f9e676db098fdb9530d2059d8c23efを返します。#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 リーダー実装。通常はより高速で、ページレベルのフィルタ pushdown とPREWHEREをサポートします。現在は実験的です。有効にするには、
input_format_parquet_use_native_reader_v3設定を使用します。#82789 (Michael Kolupaev). - Azure Blob Storage 向けに、Azure ライブラリの公式 HTTP トランスポートを独自の HTTP クライアント実装に置き換えました。このクライアント向けに、S3 の設定に対応する複数の設定を導入しました。Azure と S3 の両方に対して、短めの接続タイムアウトも導入しました。Azure のプロファイルイベントとメトリクスの introspection も改善しました。新しいクライアントはデフォルトで有効になっており、Azure Blob Storage 上のコールドクエリのレイテンシを大幅に改善します。古い
Curlクライアントは、azure_sdk_use_native_client=falseを設定することで再度使用できます。#83294 (alesapin)。以前の Azure クライアントの公式実装は、5 秒から数分に及ぶ深刻なレイテンシスパイクが発生していたため、本番環境には不向きでした。私たちはこの問題の多い実装を廃止できたことを非常に誇りに思っています。 - ファイルサイズの小さい順に索引を処理します。最終的な索引の並び順では、minmax 索引とベクトル索引が (それぞれ単純さと選択性の高さから) 優先され、その後に小さい索引が続きます。minmax/ベクトル索引の中でも、より小さい索引が優先されます。#84094 (Maruth Goyal).
- MergeTree setting
write_marks_for_substreams_in_compact_partsがデフォルトで有効になりました。これにより、新たに作成された Compact パーツからサブカラムを読み取る際のパフォーマンスが大幅に向上します。バージョン 25.5 未満のサーバーでは、新しい Compact パーツを読み取れません。 #84171 (Pavel Kruglov). azureBlobStorageテーブルエンジン: 可能な場合は、スロットリングを避けるため、マネージド ID の認証トークンを cache して再利用します。 #79860 (Nick Blakely).- 右側が結合キーカラムによって一意に定まる場合 (すべての行で結合キーの値が一意である場合) 、
ALLLEFT/INNERJOIN は自動的にRightAnyに変換されます。#84010 (Nikita Taranov) 。 max_joined_block_size_rowsに加えてmax_joined_block_size_bytesを追加し、サイズの大きいカラムを含む JOIN のメモリ使用量を制限できるようにしました。#83869 (Nikolai Kochetov) 。- 新しいロジック (設定
enable_producing_buckets_out_of_order_in_aggregationで制御され、デフォルトで有効) が追加され、メモリ効率の高い aggregation 中に一部のバケットを順不同で送信できるようになりました。一部の aggregation バケットのマージに他よりも大幅に時間がかかる場合でも、その間にイニシエーターがより大きい bucket id を持つバケットをマージできるため、パフォーマンスが向上します。欠点として、メモリ使用量が増える可能性があります (ただし大きな増加にはならないはずです) 。#80179 (Nikita Taranov) 。 optimize_rewrite_regexp_functions設定 (デフォルトで有効) を導入しました。これにより、特定の正規表現パターンが検出された場合、一部のreplaceRegexpAll、replaceRegexpOne、extractの呼び出しを、オプティマイザがよりシンプルで効率的な形式に書き換えられるようになります。 (issue #81981) 。#81992 (Amos Bird).max_joined_block_rowsの処理をハッシュJOINのメインループ外に移動しました。ALL JOIN のパフォーマンスがわずかに向上しました。#83216 (Nikolai Kochetov).- 粒度が高い min-max 索引を先に処理する。#75381 をクローズ。#83798 (Maruth Goyal).
DISTINCTを含むウィンドウ集約が線形時間で実行されるようにし、sumDistinctの不具合を修正しました。#79792 をクローズ。#52253 をクローズ。#79859 (Nihal Z. Miaji).- ベクトル類似度索引を使用するベクトル検索クエリは、ストレージ読み取りとCPU使用量の削減により、より低レイテンシで完了します。#83803 (Shankar Iyer) 。
- 並列レプリカ間でのワークロード分散におけるcacheの局所性を向上させるためのランデブーハッシュ。 #82511 (Anton Ivashkin).
- Ifコンビネーター向けに addManyDefaults を実装し、Ifコンビネーター付きの集約関数が高速化されました。 #83870 (Raúl Marín).
- 複数の文字列/数値カラムで group by する場合、シリアライズされたキーを列指向で計算するようにしました。 #83884 (李扬).
- 索引解析の結果、並列レプリカの読み取りで範囲が空になった場合に発生していたフルスキャンを排除しました。#84971 (Eduard Karacharov).
-falign-functions=64を試し、パフォーマンステストの安定性向上を図ります。 #83920 (Azat Khuzhin).- ブルームフィルタ索引が、
columnがArray型ではない場合のhas([c1, c2, ...], column)のような条件でも使われるようになりました。これにより、このようなクエリの性能が向上し、IN演算子と同等の効率で実行できるようになります。 #83945 (Doron David). - CompressedReadBufferBase::readCompressedData における不要な memcpy 呼び出しを削減。#83986 (Raúl Marín).
- 一時データを削除することで
largestTriangleThreeBucketsを最適化しました。 #84479 (Alexey Milovidov). - コードを簡素化し、文字列のデシリアライゼーションを最適化しました。#38564 をクローズしました。#84561 (Alexey Milovidov).
- 並列レプリカにおける最小タスクサイズの計算を修正しました。#84752 (Nikita Taranov).
Joinモードでパッチパートを適用する際のパフォーマンスを改善しました。#85040 (Anton Popov).- ゼロバイトを削除しました。#85062 を修正しました。あわせて、いくつかの軽微なバグも修正しました。関数
structureToProtobufSchemaとstructureToCapnProtoSchemaは、ゼロ終端バイトを正しく付加せず、代わりに改行を使用していました。その結果、出力から改行が欠落し、ゼロバイトに依存する他の関数 (logTrace、demangle、extractURLParameter、toStringCutToZero、encrypt/decryptなど) の使用時にバッファオーバーフローを引き起こす可能性がありました。regexp_treeDictionary レイアウトは、ゼロバイトを含む文字列の処理に対応していませんでした。Valuesフォーマット、または各行の末尾に改行がないその他のフォーマットで呼び出したformatRowNoNewline関数は、誤って出力の最後の文字を切り落としていました。関数stemには例外安全性に関する不具合があり、ごくまれな状況でメモリリークを引き起こす可能性がありました。initcap関数はFixedString引数に対して正しく動作していませんでした。前の block 内の直前の文字列が単語文字で終わっている場合、文字列先頭で単語の開始を認識できませんでした。ApacheORCフォーマットのセキュリティ脆弱性を修正しました。これにより、未初期化メモリが露出する可能性がありました。関数replaceRegexpAllと、それに対応するエイリアスREGEXP_REPLACEの動作を変更しました。これにより、直前のマッチで文字列全体が処理されていた場合でも、^a*|a*$や^|.*のように文字列末尾で空マッチできるようになりました。これは JavaScript、Perl、Python、PHP、Ruby のセマンティクスに一致しますが、PostgreSQL のセマンティクスとは異なります。多くの関数の実装を簡素化し、最適化しました。いくつかの関数のドキュメントに誤りがあり、現在は修正されています。byteSizeのStringカラムおよびStringカラムで構成される複合型に対する出力が変更されている点に注意してください (空文字列あたり 9 バイトから 8 バイトへ) 。これは正常な変更です。#85063 (Alexey Milovidov). - 1行だけを返すために定数をマテリアライズする場合の処理を最適化しました。#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). - オンザフライまたはパッチパートによって更新されるカラムに依存するスキッピング索引を、より細かい粒度で無効化するようにしました。これにより、スキッピング索引が使用されなくなるのは、オンザフライミューテーションまたはパッチパートの影響を受けたパーツに限られます。従来は、これらの索引はすべてのパーツで無効化されていました。 #84241 (Anton Popov).
- 暗号化された名前付きコレクション用の encrypted_buffer に必要な最小限のメモリを割り当てる。 #84432 (Pablo Marcos).
- 第 1 引数が定数配列 (set) 、第 2 引数が索引対象のカラム (subset) である場合に、bloom filter 索引 (regular、ngram、token) を利用できるようサポートを改善し、クエリをより効率的に実行できるようになりました。#84700 (Doron David).
- Keeper におけるストレージロックの競合を低減しました。 #84732 (Antonio Andelic).
WHEREで未対応だったread_in_order_use_virtual_rowのサポートを追加しました。これにより、フィルタがPREWHEREに完全にはプッシュダウンされていないクエリで、追加のパーツの読み取りをスキップできるようになります。#84835 (Nikolai Kochetov).- Iceberg table のオブジェクトを非同期で反復処理できるようになり、各データファイルのオブジェクトを明示的に保存する必要がなくなりました。 #85369 (Daniil Ivanik).
- 非相関の
EXISTSをスカラーサブクエリとして実行します。これにより、スカラーサブクエリのキャッシュを利用できるようになり、結果の定数畳み込みも可能になるため、索引に有用です。互換性のため、新しい設定execute_exists_as_scalar_subquery=1が追加されました。 #85481 (Nikolai Kochetov).
改善
- DatabaseReplicatedSettings のデフォルト値を定義する
database_replicated設定が追加されました。Replicated DB の 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) 。
max_remote_read_network_bandwidth_for_serverとmax_remote_write_network_bandwidth_for_serverによるスロットリングに関する問題を回避するため、S3 の読み取りおよび書き込みリクエストに対するレート制限は、S3 リクエスト全体ではなく HTTP ソケットレベルで適用されるようになりました。 #81837 (Sergei Trifonov).- 異なるウィンドウで、同じカラムに対して異なる照合順序を混在して使用できるようになりました (ウィンドウ関数) 。#82877 (Yakov Olkhovskiy).
- merge selector をシミュレート、可視化、比較するためのツールを追加しました。 #71496 (Sergei Trifonov).
address_expression引数でクラスターが指定されている場合に、remote*テーブル関数が並列レプリカに対応するようになりました。あわせて、#73295 も修正しました。#82904 (Igor Nikonov).- バックアップファイル書き込み時のすべてのログメッセージをTRACEに設定。 #82907 (Hans Krutzer).
- 特殊な名前を持つユーザー定義関数やコーデックは、SQLフォーマッタによって一貫性のない形式でフォーマットされることがあります。これで #83092 がクローズされます。#83644 (Alexey Milovidov).
- JSON型内で Time 型と Time64 型を使用できるようになりました。#83784 (Yarik Briukhovetskyi) 。
- 並列レプリカを使用する JOIN で、JOIN の論理ステップが使われるようになりました。並列レプリカを使用する JOIN クエリで問題が発生した場合は、
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 の insert 設定を変更できるようになりました。新たにS3Queueレベルの設定min_insert_block_size_rows_for_materialized_viewsとmin_insert_block_size_bytes_for_materialized_viewsを追加しました。デフォルトではプロファイルレベルの設定が使用され、S3Queueレベルの設定がそれらを上書きします。#83971 (Kseniia Sumarokova).- ミューテーションで影響を受ける行数 (たとえば、
ALTER UPDATEまたはALTER DELETEクエリで条件を満たすすべての行の総数) を示す profile eventMutationAffectedRowsUpperBoundを追加しました。 #83978 (Anton Popov). - cgroup の情報 (該当する場合、つまり
memory_worker_use_cgroupが有効で、かつ cgroups が利用可能な場合) を使って、memory tracker を補正するようにしました (memory_worker_correct_memory_tracker) 。#83981 (Azat Khuzhin) 。 - MongoDB: 文字列から数値型への暗黙的なパース。以前は、ClickHouseテーブルの数値カラムに対してMongoDBソースから文字列値を受け取ると、例外がスローされていました。現在は、エンジンが文字列から数値を自動的にパースするようになりました。#81167 をクローズしました。#84069 (Kirill Nikiforov).
Nullable数値のPrettyフォーマットで桁区切りを強調表示。 #84070 (Alexey Milovidov).- ダッシュボード: 上部では、ツールチップがコンテナからはみ出さないようになりました。#84072 (Alexey Milovidov).
- ダッシュボード上のドットの見た目が少し良くなりました。#84074 (Alexey Milovidov) 。
- ダッシュボードのファビコンが少し良くなりました。#84076 (Alexey Milovidov) 。
- Web UI: ブラウザーがパスワードを保存できるようにし、URL の値も記憶するようにしました。#84087 (Alexey Milovidov).
apply_to_children設定を使用して、特定の Keeper ノードに追加の ACL を適用できるようになりました。 #84137 (Antonio Andelic).- MergeTree における “compact” Variant 判別子のシリアライゼーションの使用を修正しました。従来は、使用可能な場合でも一部のケースで使われていませんでした。#84141 (Pavel Kruglov) 。
- レプリケートデータベースの設定にサーバー設定
logs_to_keepが追加され、Replicatedデータベースの既定のlogs_to_keepパラメータを変更できるようになりました。値を小さくすると ZNode の数を減らせます (特にデータベースが多い場合) 。一方、値を大きくすると、欠落していたレプリカがより長い期間が経過した後でも追いつけるようになります。#84183 (Alexey Khatskevich) 。 - JSON型のパース時に JSON キー内のドットをエスケープするための設定
json_type_escape_dots_in_keysを追加しました。この設定はデフォルトで無効です。#84207 (Pavel Kruglov) 。 - 閉じられた接続からの読み取りを防ぐため、EOF を確認する前に接続がキャンセルされているかどうかを確認するようにしました。#83893 を修正しました。#84227 (Raufs Dunamalijevs).
- Web UI におけるテキスト選択時の色味をわずかに改善しました。違いがはっきり分かるのは、ダークモードでテーブルセルを選択した場合に限られます。以前のバージョンでは、テキストと選択範囲の背景とのコントラストが十分ではありませんでした。#84258 (Alexey Milovidov).
- 内部チェックを簡素化し、クライアント接続に関するサーバーのシャットダウン処理を改善しました。 #84312 (Raufs Dunamalijevs).
- デバッグ時には、式ビジターのログは test ログレベルでも冗長になりすぎることがあるため、これらのログを無効にするための設定
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 database の設定
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_ms、backup_restore_s3_retry_max_backoff_ms、backup_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) 。
- キューの種類 (つまり、そのキューの用途) とキュー ID (つまり、そのキューの現在のインスタンスに対してランダムに生成される ID) でラベル付けされた、
ConcurrentBoundedQueueのサイズを表すメトリクスを追加しました。#84675 (Miсhael Stetsyuk) 。 system.columnsテーブルで、既存のnameカラムのエイリアスとしてcolumnが利用できるようになりました。#84695 (Yunchi Pang) 。- パーツの検索対象範囲を、ローカルメタデータを持つディスクなどに限定するための新しい MergeTree 設定
search_orphaned_parts_drives。 #84710 (Ilya Golshtein). - 受信したリクエストのログ出力を切り替えるための 4LW
lgrqを Keeper に追加しました。#84719 (Antonio Andelic) 。 - external auth の forward_headers の照合を、大文字・小文字を区別せず行うようにしました。 #84737 (ingodwerust).
- The
encrypt_decryptツールが、暗号化された ZooKeeper 接続をサポートするようになりました。#84764 (Roman Vasin). system.errorsにフォーマット文字列用のカラムを追加しました。このカラムは、アラートルールで同じエラータイプごとにグループ化するために必要です。#84776 (Miсhael Stetsyuk).clickhouse-formatが、--hiliteの alias として--highlightを受け付けるように更新されました。 -clickhouse-clientが、--highlightの alias として--hiliteを受け付けるように更新されました。 -clickhouse-formatのドキュメントが、この変更を反映するように更新されました。 #84806 (Rishabh Bhardwaj).- 複合型でフィールド ID による Iceberg の読み取りを修正。 #84821 (Konstantin Vedernikov).
SlowDownのようなエラーによって発生する再試行の集中時に S3 への負荷を軽減するため、新しいbackup_slow_all_threads_after_retryable_s3_error設定を導入しました。これは、再試行可能なエラーが 1 つでも確認されると、すべての thread を減速させるものです。 #84854 (Julia Kartseva).- Replicated 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 のログエントリ cache サイズを制限できるようにしました。#84877 (Antonio Andelic).- 未対応のアーキテクチャでも
simdjsonを使えるようにしました (以前はCANNOT_ALLOCATE_MEMORYエラーの原因になっていました) 。#84966 (Azat Khuzhin) 。 - 非同期ログ: 制限を調整できるようにし、イントロスペクションを追加。 #85105 (Raúl Marín).
- 削除対象のすべてのオブジェクトを集約し、object storage に対する削除操作を 1 回で実行するようにしました。#85316 (Mikhail Artemenko) 。
- Icebergの現在のpositional delete fileの実装では、すべてのデータをRAMに保持します。positional delete fileは大きくなることが多いため、これはかなり高コストになりがちです。私の実装では、Parquetのdelete fileの最後のrow-groupだけをRAMに保持するため、大幅に低コストです。 #85329 (Konstantin Vedernikov).
- chdig: 画面上に表示が残る問題を修正し、エディタでクエリを編集した後にクラッシュする不具合を修正し、
path内でeditorを検索するようにし、25.8.1 に更新しました。#85341 (Azat Khuzhin) 。 - azure 設定に不足していた
partition_columns_in_data_fileを追加しました。 #85373 (Arthur Passos). - 関数
timeSeries*ToGridで step に 0 を指定できるようにしました。これは #75036 の一部です。#85390 (Vitaly 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.grantsにparameterカラムを追加しました。#85643 (MikhailBurdukov).- パラメータ付きのカラム (たとえば Decimal(8)) の後にある末尾のカンマについて、CREATE DICTIONARY クエリのカラム定義でのパースを修正しました。#85586 をクローズします。#85653 (Nikolay 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) 。#82900 (Robert Schulze) 。 optimize_syntax_fuse_functionsが有効な場合に、重複するサブクエリで発生する論理エラーを修正し、#75511 をクローズしました。#83300 (Vladimir Cherkasov) 。- クエリ条件 cache (設定
use_query_condition_cache) が有効な状態でWHERE ... IN (<subquery>)句を含むクエリが誤った結果を返す問題を修正しました。#83445 (LB7666). - これまで、
gcs関数の使用に権限は必要ありませんでした。今後は、使用時にGRANT READ ON S3権限があるかどうかを確認するようになります。#70567 を修正しました。#83503 (pufit). - s3Cluster() から replicated MergeTree への INSERT SELECT で、利用できないノードをスキップするようにしました。 #83676 (Igor Nikonov).
plain_rewritable/plainメタデータ型で append を伴う書き込み (実験的なトランザクションで使用される MergeTree) を修正しました。従来はこれらが単に無視されていました。 #83695 (Tuan Pham Anh).- Avro スキーマレジストリの認証情報がユーザーやログに表示されないよう、マスクしました。 #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).- Decimal型で誤った統計情報 (min/max) を出力していたParquetライターを修正しました。 #83754 (Michael Kolupaev).
LowCardinality(Float32|Float64|BFloat16)型における NaN 値のソート順の不具合を修正しました。#83786 (Pervakov Grigorii).- バックアップから復元する際、定義者ユーザー自体がバックアップされていない場合があり、その結果、バックアップ全体が無効になってしまう可能性があります。これに対処するため、復元時のターゲットテーブル作成に対する権限チェックは後回しにし、実行時にのみ確認するようにしました。 #83818 (pufit).
- 不正な INSERT の後に接続が切断状態のまま残り、クライアントがクラッシュする問題を修正しました。#83842 (Azat Khuzhin).
- アナライザが有効な場合、
remoteテーブル関数のview(...)引数で任意のテーブルを参照できるようにしました。#78717 を修正しました。#79377 を修正しました。#83844 (Dmitry Novik). - jsoneachrowwithprogress における Onprogress の呼び出しが、終了処理と同期されるようになりました。#83879 (Sema Checherinda).
- これで #81303 がクローズされます。#83892 (Konstantin Vedernikov) 。
- const 引数と non-const 引数が混在する場合の
colorSRGBToOKLCH/colorOKLCHToSRGBの問題を修正。#83906 (Azat Khuzhin) 。 - RowBinary フォーマットで、NULL 値を含む JSON パスの書き込みを修正しました。#83923 (Pavel Kruglov) 。
- Date から DateTime64 へのキャスト時に、2106-02-07 を超える値で発生していたオーバーフローを修正しました。#83982 (Yarik Briukhovetskyi) 。
- 常に
filesystem_prefetches_limitを適用する (MergeTreePrefetchedReadPoolからだけでなく) 。 #83999 (Azat Khuzhin). MATERIALIZE COLUMNクエリによってchecksums.txtに想定外のファイルが生成され、最終的にデタッチされたデータパーツが発生することがある、まれな不具合を修正しました。 #84007 (alesapin).- 一方のカラムが
LowCardinalityで、もう一方が定数である場合に、不等式条件で JOIN を実行すると発生する論理エラーExpected single dictionary argument for functionを修正しました。#81779。#84019 (Alexey Milovidov). - 構文ハイライトを有効にした対話型モードで
clickhouse clientを使用した際にクラッシュする問題を修正しました。#84025 (Bharat Nallan). - 再帰CTEと組み合わせて query condition cache を使用した際に、誤った結果が返される問題を修正しました (issue #81506) 。#84026 (zhongyuankai) 。
- 定期的なパーツのリフレッシュで例外を適切に処理する。 #84083 (Azat Khuzhin).
- 等価比較のオペランドの型が異なる場合、または定数を参照している場合に、フィルタが JOIN 条件にマージされる問題を修正しました。#83432。#84145 (Dmitry Novik) 。
- テーブルに projection があり、
lightweight_mutation_projection_mode = 'rebuild'が設定されている状態で、ユーザーがテーブル内のいずれかのブロック内の全行を削除する lightweight delete を実行すると、まれに ClickHouse がクラッシュする問題を修正しました。 #84158 (alesapin). - バックグラウンドで動作するキャンセルチェック用スレッドが原因のデッドロックを修正しました。#84203 (Antonio Andelic).
- 無効な
WINDOW定義の解析で発生する無限再帰を修正しました。#83131 を修正します。#84242 (Dmitry Novik) 。 - Bech32 のエンコードおよびデコードが誤って行われる不具合を修正しました。この不具合は、テストに使用していたアルゴリズムのオンライン実装にも同じ問題があったため、当初は見つかりませんでした。#84257 (George Larionov).
array()関数で空のタプルが誤って構築される問題を修正しました。これにより #84202 を修正しました。 #84297 (Amos Bird).- 並列レプリカを使用し、複数の INNER JOIN の後に RIGHT JOIN が続くクエリで発生する
LOGICAL_ERRORを修正しました。そのようなクエリでは並列レプリカを使用しないでください。#84299 (Vladimir Cherkasov). - 以前は、
set索引でグラニュールがフィルターを通過するかどうかを判定する際、Nullableカラムが考慮されていませんでした (issue #75485) 。#84305 (Elmi Ahmadov) 。 - ClickHouse が、テーブルタイプが小文字で指定された Glue カタログからテーブルを読み取れるようになりました。 #84316 (alesapin).
- JOIN またはサブクエリがある場合、テーブル関数を対応するクラスター版に置き換えないようにしました。 #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で作成されたユーザーが、server settingallow_no_passwordが 0 に変更された後にログインを試みると、server がクラッシュする問題を修正しました。#84426 (Shankar Iyer).- Keeper の変更ログへの順不同の書き込みを修正しました。以前は、変更ログへの書き込みが進行中の状態になり得ましたが、ロールバックによって宛先ファイルが同時に変更される可能性がありました。これにより、ログの不整合やデータ損失が発生するおそれがありました。#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).
- 互換性のため、
allow_experimental_delta_kernel_rsを 25.5 より前と同じfalseに変更しました。#84587 (Kseniia Sumarokova) 。 - マニフェストファイルからスキーマを取得するのをやめ、代わりに各スナップショットごとに関連するスキーマを個別に保存するようにしました。各データファイルに対応するスナップショットから、そのデータファイルに適用されるスキーマを推定します。以前の動作は、ステータスが 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 以降、この不具合が発生していました。#84677 (Kseniia Sumarokova).
- RefreshTask で ‘view’ から zookeeper を取得する際に、‘mutex’ をロックする。 #84699 (Tuan Pham Anh).
- lazy カラムを外部ソートと併用した際に発生する
CORRUPTED_DATAエラーを修正しました。#84738 (János Benjamin Antal). - ストレージ
DeltaLakeの delta-kernel におけるカラムプルーニングを修正しました。#84543 をクローズしました。#84745 (Kseniia Sumarokova). - storage Delta Lake の delta-kernel で認証情報を更新。#84751 (Kseniia Sumarokova).
- 接続の問題発生後に、不要な内部バックアップが開始されてしまう不具合を修正しました。#84755 (Vitaly Baranov).
- 遅延のあるリモートソースにクエリした際に、vector out of bounds が発生する可能性がある問題を修正しました。#84820 (George Larionov).
ngramおよびno_opトークナイザーで、空の入力トークンが原因で (実験段階の) テキスト索引がクラッシュすることはなくなりました。#84849 (Robert Schulze) 。ReplacingMergeTreeおよびCollapsingMergeTreeエンジンのテーブルに対する論理更新の不具合を修正しました。#84851 (Anton Popov).- object queue engineを使用するテーブルで、すべての設定がテーブルメタデータに正しく保存されるよう修正しました。#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 を修正しました。#85030 (Dmitry Novik).
- Iceberg は、SELECT クエリ間で関連するスナップショットバージョンをキャッシュしないようになり、常にスナップショットを正しく解決するようになりました。以前の Iceberg スナップショットのキャッシュの試みは、タイムトラベルを伴う Iceberg テーブルの利用時に問題を引き起こしていました。#85038 (Daniil Ivanik) 。
AzureIteratorAsyncにおける二重解放の不具合を修正しました。#85064 (Nikita Taranov) 。- JWT を使って識別されるユーザーの作成を試みた際のエラーメッセージを改善しました。#85072 (Konstantin Bogdanov).
ReplicatedMergeTreeにおけるパッチパートのクリーンアップ処理を修正しました。従来は、パッチパートを実体化するマージ済みまたはミューテーション適用済みのパーツが別のレプリカからダウンロードされるまで、論理更新の結果が一時的にそのレプリカに反映されないことがありました。#85121 (Anton Popov).- 型が異なる場合の mv での illegal_type_of_argument を修正。#85135 (Sema Checherinda).
- delta-kernel 実装で発生するセグメンテーションフォルトを修正しました。#85160 (Kseniia Sumarokova) 。
- メタデータファイルの移動に時間がかかる場合に、Replicatedデータベースを復旧できない問題を修正しました。#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). DeltaLakeengine の delta-kernel 実装における競合状態を修正しました。#85221 (Kseniia Sumarokova) 。DeltaLakeengine で delta-kernel を無効にした際に、パーティション化されたデータを読み取れない問題を修正しました。この不具合は 25.7 で発生していました (https://github.com/ClickHouse/ClickHouse/pull/81136)。[#85223](https://github.com/ClickHouse/ClickHouse/pull/85223) (Kseniia Sumarokova).- CREATE OR REPLACE および RENAME クエリで不足していたテーブル名の長さチェックを追加しました。#85326 (Michael Kolupaev) 。
- DEFINER が削除されている場合に、Replicated データベースの新しいレプリカで RMV を作成できない問題を修正しました。 #85327 (Nikolay Degterinsky).
- 複雑な型のIcebergへの書き込みを修正しました。#85330 (Konstantin Vedernikov) 。
- 複合型への下限値および上限値の書き込みはサポートされていません。 #85332 (Konstantin Vedernikov).
- Distributedテーブルまたはremoteテーブル関数を介してオブジェクトストレージ関数から読み取る際に発生する論理エラーを修正しました。Fixes: #84658, Fixes #85173, Fixes #52022。#85359 (alesapin).
- 破損したプロジェクションを含むパーツのバックアップを修正しました。 #85362 (Antonio Andelic).
- 安定化されるまでは、projection で
_part_offsetカラムを使用することを禁止しました。#85372 (Sema Checherinda) 。 - JSON に対する ALTER UPDATE 実行中に発生するクラッシュとデータ破損を修正しました。#85383 (Pavel Kruglov) 。
- reading reverse in order 最適化を使用する並列レプリカのクエリで、誤った結果が返される可能性があります。#85406 (Igor Nikonov) 。
- String のデシリアライゼーション中に MEMORY_LIMIT_EXCEEDED が発生した場合に起こり得る UB (クラッシュ) を修正しました。#85440 (Azat Khuzhin) 。
- 不正確だったメトリクス KafkaAssignedPartitions と KafkaConsumersWithAssignment を修正しました。 #85494 (Ilya Golshtein).
- PREWHERE (明示的または自動) が使用されている場合に、processed bytes 統計値が過小評価される問題を修正しました。#85495 (Michael Kolupaev) 。
- S3 リクエストレートの低下に関する早期 return 条件を修正: 再試行可能なエラーによってすべてのスレッドが一時停止した場合に低下動作を有効にする条件を、s3_slow_all_threads_after_network_error と backup_slow_all_threads_after_retryable_s3_error の両方ではなく、いずれか一方が true であることを要求するよう変更しました。#85505 (Julia Kartseva).
- この PR では、REST カタログ経由で Iceberg テーブルにクエリを実行する際のメタデータ解決の問題を修正しました。 … #85531 (Saurabh Kumar Ojha).
- 設定
log_commentまたはinsert_deduplication_tokenを変更する非同期挿入で、まれに発生していたクラッシュを修正しました。#85540 (Anton Popov) 。 - HTTP で multipart/form-data を使用した際、date_time_input_format などのパラメータが無視されていました。#85570 (Sema Checherinda) 。
- icebergS3Cluster および icebergAzureCluster テーブル関数でのシークレットのマスキングを修正しました。#85658 (MikhailBurdukov) 。
- JSON の数値を Decimal 型に変換する際に
JSONExtractで発生していた精度低下を修正しました。これにより、JSON の数値は正確な 10 進表現を保持し、浮動小数点の丸め誤差を回避できるようになりました。 #85665 (ssive7b). DROP COLUMNの後、同じALTERステートメント内でCOMMENT COLUMN IF EXISTSを使用した際に発生していたLOGICAL_ERRORを修正しました。同じステートメント内ですでにカラムが削除されている場合、IF EXISTS句はコメント操作を正しくスキップするようになりました。#85688 (xiaohuanlin).- Delta Lake の cache から count を読み取る処理を修正しました。 #85704 (Kseniia Sumarokova).
- 大きな文字列に対して coalescing merge tree で発生するセグメンテーションフォルトを修正しました。これにより #84582 をクローズします。#85709 (Konstantin Vedernikov) 。
- Icebergへの書き込み時にメタデータのタイムスタンプを更新。 #85711 (Konstantin Vedernikov).
distributed_depthを クラスター関数 の指標として使うのは誤りであり、データの重複につながる可能性があります。代わりにclient_info.collaborate_with_initiatorを使用してください。 #85734 (Konstantin Bogdanov).- Spark は position delete files を読み込めません。 #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).deltaLakeAzure、deltaLakeCluster、icebergS3Cluster、icebergAzureClusterの認証情報をマスク。 #85889 (Julian Maicher).DatabaseReplicatedでCREATE ... AS (SELECT * FROM s3Cluster(...))を試みた際に発生する論理エラーを修正しました。#85904 (Konstantin Bogdanov).- 非標準ポートにアクセスする際に、
url()テーブル関数が送信する HTTP リクエストの Host ヘッダーへポート番号が正しく含まれるよう修正しました。これにより、開発環境でよく使われる、カスタムポートで動作する MinIO などの S3互換サービスで署名付き URL を使用した際に発生していた認証エラーが解消されます。 (#85898 を修正) 。#85921 (Tom Quist). - これにより、Unity Catalog は、non-delta テーブルについては、不正なデータ型を含むスキーマを無視するようになりました。 #85699 を修正しました。#85950 (alesapin) 。
- 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 で cache に使用するメモリを削減し、エビクションのテストも強化しました。 #84676 (alesapin).
ClickHouse リリース 25.7 (2025-07-24)
後方互換性を持たない変更
extractKeyValuePairs関数の変更: 新しい引数unexpected_quoting_character_strategyが導入され、引用符で囲まれていないキーまたは値の読み取り中にquoting_characterが予期せず現れた場合の動作を制御できるようになりました。指定できる値はinvalid、accept、promoteのいずれかです。invalidはキーを破棄してキー待機状態に戻ります。acceptはそれをキーの一部として扱います。promoteは直前の文字を破棄し、引用符付きキーとしてパースを開始します。さらに、引用符付きの値をパースした後は、ペアの区切り文字が見つかった場合にのみ次のキーをパースします。 #80657 (Arthur Passos).countMatches関数でゼロバイト一致をサポートしました。従来の動作を維持したいユーザーは、設定count_matches_stop_at_empty_matchを有効にできます。 #81676 (Elmi Ahmadov).- BACKUP の生成時に、専用のサーバー設定 (
max_backup_bandwidth_for_server、max_mutations_bandwidth_for_server、max_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). - INSERT 可能なカラムを持たないテーブルの作成を禁止しました。 #81835 (Pervakov Grigorii).
- クラスター関数を、アーカイブ内のファイル単位で並列化しました。以前のバージョンでは、アーカイブ全体 (zip、tar、7z など) が作業単位でした。新しい設定
cluster_function_process_archive_on_multiple_nodesが追加され、デフォルト値はtrueです。trueに設定すると、クラスター関数でのアーカイブ処理性能が向上します。互換性を保つため、また以前のバージョンでアーカイブを使うクラスター関数を使用している場合に 25.7+ へのアップグレード中のエラーを避けるため、falseに設定する必要があります。 #82355 (Kseniia Sumarokova). SYSTEM RESTART REPLICASクエリにより、そのデータベースへのアクセス権がない場合でも Lazy データベース内のテーブルが起動され、しかもそれらのテーブルが同時実行で削除されている最中にも発生していました。注意: 現在のSYSTEM RESTART REPLICASは、SHOW TABLES権限のあるデータベース内のレプリカのみを再起動します。これは自然な挙動です。 #83321 (Alexey Milovidov).
新機能
MergeTreeファミリーのテーブルで論理更新がサポートされました。論理更新は、新しい構文UPDATE <table> SET col1 = val1, col2 = val2, ... WHERE <condition>で使用できます。論理更新を利用した論理削除の実装も追加されました。この機能は、lightweight_delete_mode = 'lightweight_update'を設定すると有効になります。#82004 (Anton Popov).- Iceberg のスキーマ進化で複雑な型をサポート。 #73714 (Konstantin Vedernikov).
- Iceberg テーブルへの INSERT に対応しました。#82692 (Konstantin Vedernikov) 。
- フィールド ID によって Iceberg のデータファイルを読み取れるようになりました。これにより、Iceberg との互換性が向上します。基盤となる Parquet ファイル内では別の名前にマッピングされていても、メタデータ内ではフィールド名を変更できます。これにより、#83065 がクローズされます。 #83653 (Konstantin Vedernikov).
- 現在、ClickHouse は Iceberg の圧縮
metadata.jsonファイルをサポートするようになりました。#70874 を修正しました。#81451 (alesapin)。 - Glue カタログで
TimestampTZをサポートしました。これにより #81654 がクローズされます。#83132 (Konstantin Vedernikov). - ClickHouse client に AI による SQL 生成機能を追加しました。クエリの先頭に
??を付けることで、自然言語の説明から SQL クエリを生成できるようになりました。OpenAI と Anthropic のプロバイダーに対応し、スキーマも自動で検出します。#83314 (Kaushik Iska). - Geo 型を WKB フォーマットで書き出す関数を追加しました。#82935 (Konstantin Vedernikov) 。
- ソース向けに 2 つの新しいアクセス種別
READとWRITEが導入され、ソースに関連する従来のアクセス種別はすべて非推奨になりました。以前はGRANT S3 ON *.* TO userでしたが、現在はGRANT READ, WRITE ON S3 TO userとなります。これにより、たとえばGRANT READ ON * TO user、GRANT WRITE ON S3 TO userのように、ソースに対するREAD権限とWRITE権限を分けて付与することもできます。この機能は設定access_control_improvements.enable_read_write_grantsで制御されており、デフォルトでは無効です。#73659 (pufit). - NumericIndexedVector: ビットスライス化された Roaring-bitmap 圧縮を基盤とする新しいベクターデータ構造で、構築、分析、要素ごとの算術演算のための 20 を超える関数を備えています。ストレージ使用量を削減し、スパースなデータに対する JOIN、フィルター、集計を高速化できます。 #70582 と、VLDB 2024 の T. Xiong と Y. Wang による “Large-Scale Metric Computation in Online Controlled Experiment Platform” paper の内容を実装したものです。#74193 (FriendLey).
- ワークロード設定
max_waiting_queriesがサポートされるようになりました。これを使用すると、クエリキューのサイズを制限できます。制限に達すると、それ以降のすべてのクエリはSERVER_OVERLOADEDエラーで終了します。 #81250 (Oleg Doronin). - 金融関数を追加:
financialInternalRateOfReturnExtended(XIRR)、financialInternalRateOfReturn(IRR)、financialNetPresentValueExtended(XNPV)、financialNetPresentValue(NPV)。#81599 (Joanna Hulboj) 。 - 2 つの Polygon が交差しているかどうかを確認するため、地理空間関数
polygonsIntersectCartesianおよびpolygonsIntersectSphericalを追加しました。 #81882 (Paul Lamb). - MergeTree ファミリーのテーブルで、仮想カラム
_part_granule_offsetをサポートしました。このカラムは、各行が属する granule/mark の、そのデータパート内における 0 始まりの索引を示します。これにより #79572 に対応します。 #82341 (Amos Bird). #82341 (Amos Bird) - sRGB 色空間と OkLCH 色空間の間で色を変換する SQL 関数
colorSRGBToOkLCHとcolorOkLCHToSRGBが追加されました。#83679 (Fgrtue)。 - ユーザー名に対して、
CREATE USERクエリでパラメータを使用できるようになりました。 #81387 (Diskein). system.formatsテーブルに、HTTP の Content-Type やスキーマ推論の機能など、フォーマットに関する拡張情報が含まれるようになりました。 #81505 (Alexey Milovidov).
実験的機能
- テキスト索引の検索に使える汎用関数
searchAnyとsearchAllを追加しました。#80641 (Elmi Ahmadov). - テキスト索引で、新しい
splitトークナイザーがサポートされるようになりました。#81752 (Elmi Ahmadov). text索引のデフォルトの索引粒度を 64 に変更しました。これにより、内部ベンチマークにおける平均的なテストクエリの想定性能が向上します。#82162 (Jimmy Aguilar Mena).- 256 ビットのビットマップは state の出力 label を順序付きで保持しますが、遷移先の state は hash table に現れる順序でディスクに保存されます。その結果、ディスクから読み込む際に label が誤った次の state を指してしまうことがありました。#82783 (Elmi Ahmadov).
- テキスト索引内の FST ツリーのブロブで zstd 圧縮を有効にしました。#83093 (Elmi Ahmadov).
- ベクトル類似度索引をベータに昇格しました。ベクトル類似度索引を使用するには有効化が必要なエイリアス設定
enable_vector_similarity_indexを導入しました。#83459 (Robert Schulze). - 実験的なゼロコピー レプリケーションに関連する、実験的な
send_metadataロジックを削除しました。これは一度も使われておらず、このコードをサポートしている人もいませんでした。関連するテストも存在しなかったため、かなり以前から壊れていた可能性が高いです。#82508 (alesapin). StorageKafka2をsystem.kafka_consumersに統合しました。#82652 (János Benjamin Antal).- たとえば
(a < 1 and a > 0) or b = 3のような複雑な CNF/DNF を、統計情報を用いて推定できるようにしました。#82663 (Han Fei).
パフォーマンス改善
- 非同期ログを導入しました。ログを低速なデバイスに出力する場合でも、クエリが遅延しなくなりました。#82516 (Raúl Marín)。キューに保持できるエントリ数の上限を設定しました。#83214 (Raúl Marín)。
- 並列 distributed INSERT SELECT は、各分片で INSERT SELECT を個別に実行するモードでデフォルトで有効になりました。
parallel_distributed_insert_select設定を参照してください。#83040 (Igor Nikonov). - 集計クエリに、not-
Nullableなカラムに対する単一のcount()関数しか含まれていない場合、ハッシュテーブルのプロービング中に集計ロジックは完全にインライン化されます。これにより、集計状態の確保や維持が不要になり、メモリ使用量とCPUオーバーヘッドを大幅に削減できます。これは #81982 に部分的に対応するものです。#82104 (Amos Bird). HashJoinの性能が最適化され、キーカラムが 1 つだけの一般的なケースでは、hash maps に対する追加ループが削除されました。さらに、null_mapとjoin_maskについても、常にtrue/falseとなる場合はチェックが省略されるようになりました。#82308 (Nikita Taranov) 。-Ifcombinator の軽微な最適化。 #78454 (李扬).- ベクトル類似度索引を使用するベクトル検索クエリは、ストレージからの読み取り量とCPU使用率の削減により、より低レイテンシで完了するようになりました。#79103 (Shankar Iyer).
filterPartsByQueryConditionCacheでmerge_tree_min_{rows,bytes}_for_seekを反映し、索引でフィルタリングする他のメソッドと動作を揃えました。#80312 (李扬).TOTALSステップ以降のパイプラインをマルチスレッド化しました。 #80331 (UnamedRus).RedisおよびKeeperMapストレージでのキーによるフィルタを修正しました。#81833 (Pervakov Grigorii).- JOIN の入力ブロックおよび出力ブロックの最小ブロックサイズ (行数) を制御する新しい設定
min_joined_block_size_rows(min_joined_block_size_bytesに対応し、デフォルトは 65409) を追加しました (JOIN アルゴリズムが対応している場合) 。小さなブロックはまとめられます。#81886 (Nikita Taranov). ATTACH PARTITIONを実行しても、すべてのキャッシュがクリアされることはなくなりました。#82377 (Alexey Milovidov) 。- 等価クラスを使って冗長なJOIN演算を削除し、相関サブクエリ用に生成されるプランを最適化しました。すべての相関カラムに等価な式がある場合、
query_plan_correlated_subqueries_use_substitution設定が有効であれば、CROSS JOINは生成されません。#82435 (Dmitry Novik). - 相関サブクエリが関数
EXISTSの引数として現れる場合、必要なカラムのみを読み取るようにしました。#82443 (Dmitry Novik). - クエリ分析時におけるクエリツリーの比較を若干高速化しました。#82617 (Nikolai Kochetov).
- フォルスシェアリングを低減するため、ProfileEvents のカウンターにアラインメントを追加しました。#82697 (Jiebin Sun) 。
- #82308 の
null_mapとJoinMaskに対する最適化が、複数の選言条件を含む JOIN のケースにも適用されました。さらに、KnownRowsHolderデータ構造も最適化されました。#83041 (Nikita Taranov). - join フラグには、フラグアクセスのたびにハッシュを計算しなくて済むよう、単純な
std::vector<std::atomic_bool>を使用します。 #83043 (Nikita Taranov). HashJoinがlazy出力モードを使用する場合、結果カラムのメモリをあらかじめ確保しないようにしました。特に一致数が少ない場合、事前確保は非効率です。さらに、結合処理の完了後には一致数を正確に把握できるため、より適切にメモリを事前確保できます。#83304 (Nikita Taranov).- パイプライン構築時に、ポートヘッダーでのメモリコピーを最小限に抑えました。元のPRはheymindによるものです。#83381 (Raúl Marín) 。
- RocksDBストレージ使用時のClickHouse Keeperの起動を改善しました。#83390 (Antonio Andelic) 。
- 高い同時実行負荷時のロック競合を減らすため、ストレージのスナップショットデータの作成中はロックを保持しないようにしました。#83510 (Duc Canh Le).
- パースエラーが発生しない場合にシリアライザーを再利用することで、
ProtobufSingle入力フォーマットのパフォーマンスを向上させました。 #83613 (Eduard Karacharov). - 短いクエリの高速化につながる、パイプライン構築の性能を改善しました。 #83631 (Raúl Marín).
- 短時間で終わるクエリを高速化する
MergeTreeReadersChain::getSampleBlockを最適化しました。 #83875 (Raúl Marín). - 非同期リクエストにより、データカタログでのテーブル一覧取得を高速化しました。#81084 (alesapin).
s3_slow_all_threads_after_network_error設定が有効な場合、S3 の再試行メカニズムにジッターを導入しました。#81849 (zoomxi).
改善
- 可読性を向上させるため、括弧を複数の色で色分けしました。#82538 (Konstantin Bogdanov).
- 入力中の LIKE/REGEXP パターン内のメタ文字を強調表示するようになりました。これはすでに
clickhouse-formatとclickhouse-clientのエコーでは利用できましたが、今回、コマンドプロンプトでも利用できるようになりました。 #82871 (Alexey Milovidov). clickhouse-formatとクライアントのエコー表示でのハイライトは、コマンドラインプロンプトでのハイライトと同様に動作するようになります。#82874 (Alexey Milovidov).plain_rewritableディスクを、データベースメタデータ用のディスクとして使用できるようになりました。データベースディスクとしてサポートするため、plain_rewritableにmoveFileおよびreplaceFileメソッドを実装しました。#79424 (Tuan Pham Anh).PostgreSQL、MySQL、DataLakeデータベースのバックアップが可能になりました。このようなデータベースをバックアップしても、保存されるのは定義のみで、内部のデータは保存されません。 #79982 (Nikolay Degterinsky).- 設定
allow_experimental_join_conditionは、現在は常に許可されるため、廃止されたものとしてマークされました。#80566 (Vladimir Cherkasov). - ClickHouse の非同期メトリクスに pressure メトリクスを追加。 #80779 (Xander Garbett).
- mark cache からのエビクションを追跡するためのメトリクス
MarkCacheEvictedBytes、MarkCacheEvictedMarks、MarkCacheEvictedFilesを追加しました。 (issue #60989) 。#80799 (Shivji Kumar Jha) 。 - spec の規定どおり、Parquet の enum をバイト配列として書き込めるようになりました。#81090 (Arthur Passos).
DeltaLakeテーブルエンジンの改善: delta-kernel-rs にはExpressionVisitorAPI があり、この PR で実装され、パーティションカラム式の変換に適用されています (これにより、以前はコード内で使っていた delta-kernel-rs の古い非推奨の方式が置き換えられます) 。今後、このExpressionVisitorによって、統計情報ベースのプルーニングや、Delta Lake 固有のいくつかの機能も実装できるようになります。さらに、この変更にはDeltaLakeClusterテーブルエンジンでパーティションプルーニングをサポートする目的もあります (パース済みの式の結果である ActionsDAG はシリアライズされ、データ path とともにイニシエーターから送信されます。これは、プルーニングに必要なこの種の情報が、データ files の一覧に含まれるメタ情報としてしか得られず、その一覧取得はイニシエーターでしか行われない一方で、実際には各読み取り server 上のデータに適用する必要があるためです) 。 #81136 (Kseniia Sumarokova).- named tuple の supertype を導出する際、要素名を保持する。 #81345 (lgbo).
- StorageKafka2 で以前にコミットされたオフセットに依存しないよう、消費済みメッセージを手動でカウントするようにしました。#81662 (János Benjamin Antal) 。
clickhouse-keeper-utilsが追加されました。これは、ClickHouse Keeper のデータを管理・分析するための新しいコマンドラインツールです。このツールは、スナップショットや changelog からの状態のダンプ、changelog ファイルの分析、特定のログ範囲の抽出をサポートします。#81677 (Antonio Andelic).- 合計およびユーザーごとのネットワークスロットラーは一切リセットされないため、
max_network_bandwidth_for_all_usersとmax_network_bandwidth_for_all_usersの制限を超えることはありません。 #81729 (Sergei Trifonov). - geoparquets を出力フォーマットとして書き出せるようになりました。 #81784 (Konstantin Vedernikov).
- 未完了のデータミューテーションの対象になっているカラムの名前を変更する場合、
RENAME COLUMNALTER mutation を開始できないようにしました。 #81823 (Mikhail Artemenko). - Connection ヘッダーは、接続を維持すべきかどうかが判明した時点で、ヘッダーの末尾に送信されるようになりました。 #81951 (Sema Checherinda).
- listen_backlog (デフォルトは4096) に基づき、TCPサーバーのキュー (デフォルトは64) を調整。 #82045 (Azat Khuzhin).
- サーバーを再起動せずに、
max_local_read_bandwidth_for_serverとmax_local_write_bandwidth_for_serverを動的に再読み込みできるようにしました。 #82083 (Kai Zhu). TRUNCATE TABLE system.warningsを使用して、system.warningsテーブル内のすべての警告をクリアできるようにしました。#82087 (Vladimir Cherkasov) 。- データレイクのクラスター関数におけるパーティションプルーニングを修正しました。#82131 (Kseniia Sumarokova) 。
- DeltaLakeCluster テーブル関数で、パーティション分割されたデータの読み取りを修正しました。この PR ではクラスター関数プロトコルのバージョンを引き上げ、イニシエーターからレプリカへ追加情報を送信できるようにしました。この追加情報には delta-kernel の変換式が含まれており、パーティションカラムの解析 (将来的には生成カラムなどの処理にも対応予定) に必要です。#82132 (Kseniia Sumarokova).
- 関数
reinterpretは、Tが固定長データ型であるArray(T)への変換をサポートするようになりました (issue #82621) 。#83399 (Shankar Iyer) 。 - データベース Datalake が、よりわかりやすい例外を送出するようになりました。#81211 を修正しました。#82304 (alesapin)。
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 の改善: バックグラウンドスレッドで、ディスク間で変更ログファイルを移動できるようになりました。以前は、変更ログを別のディスクに移動すると、移動が完了するまで Keeper 全体がブロックされていました。そのため、移動に時間がかかる場合 (たとえば S3 ディスクへの移動) 、パフォーマンスが低下していました。 #82485 (Antonio Andelic).
- Keeper の改善: 新しい設定
keeper_server.cleanup_old_and_ignore_new_aclを追加しました。この設定を有効にすると、すべてのノードの ACL がクリアされ、新しいリクエストに対する ACL は無視されます。ノードから ACL を完全に削除することが目的である場合は、新しいスナップショットが作成されるまで、この設定を有効のままにしておくことが重要です。#82496 (Antonio Andelic). - S3Queue table engine を使用するテーブルでストリーミングを無効にする新しいサーバー設定
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).- 読み取り専用のリモートディスクを使用するdatabaseをアタッチする際、table UUID を DatabaseCatalog に手動で追加します。#82670 (Tuan Pham Anh).
- ユーザーが
NumericIndexedVectorでnanとinfを使用できないようにしました。#82239 を修正し、それに加えて若干の改善も行いました。#82681 (Raufs Dunamalijevs). X-ClickHouse-ProgressおよびX-ClickHouse-Summaryのヘッダー形式で、0 の値を省略しないようにしました。#82727 (Nikita Mikhaylov) 。- Keeperの改善: world:anyone ACL で特定の権限をサポート。#82755 (Antonio Andelic) 。
- SummingMergeTree で合計対象として明示的に指定されたカラムに対する
RENAME COLUMNまたはDROP COLUMNを禁止しました。#81836 をクローズします。#82821 (Alexey Milovidov). DecimalからFloat32への変換精度を改善しました。DecimalからBFloat16への変換を実装しました。#82660 をクローズしました。#82823 (Alexey Milovidov).- Web UI のスクロールバーの見た目が少し改善されます。 #82869 (Alexey Milovidov).
clickhouse-serverは、組み込みの設定によりHTTP OPTIONSレスポンスを返すことで、Web UIを利用できるようになりました。#82870 (Alexey Milovidov) 。- 設定で、path に対する追加の Keeper ACL を指定できるようになりました。特定の path に追加の ACL を設定したい場合は、設定内の
zookeeper.path_aclsで定義します。 #82898 (Antonio Andelic) 。 - 今後、mutation スナップショットは可視パーツのスナップショットから構築されるようになります。また、スナップショットで使用される mutation カウンターは、含まれる mutations に基づいて再計算されます。#82945 (Mikhail Artemenko).
- Keeper がソフトメモリ制限のために書き込みを拒否した場合に、ProfileEvent を追加しました。#82963 (Xander Garbett) 。
system.s3queue_logにカラムcommit_time、commit_idを追加しました。#83016 (Kseniia Sumarokova) 。- 場合によっては、メトリクスに複数の次元が必要になることがあります。たとえば、単一のカウンターにするのではなく、失敗したマージやミューテーションをエラーコードごとに数えたい場合です。これを実現する
system.dimensional_metricsが導入され、最初の次元付きメトリクスであるfailed_mergesが追加されました。#83030 (Miсhael Stetsyuk). - clickhouse client で、不明な設定に関する警告を集約し、要約として記録するようにしました。#83042 (Bharat Nallan).
- clickhouse client は、接続エラー発生時にローカルポートも表示するようになりました。#83050 (Jianfei Hu) 。
AsynchronousMetricsのエラー処理が若干改善されました。/sys/blockディレクトリが存在していてもアクセスできない場合、サーバーはブロックデバイスを監視せずに起動します。#79229 をクローズしました。#83115 (Alexey Milovidov) 。- SystemLogs を通常のテーブルの後にシャットダウンするようにしました (従来は通常のテーブルの前でしたが、システムテーブルの前になりました) 。#83134 (Kseniia Sumarokova).
S3Queueのシャットダウン処理のログを追加しました。#83163 (Kseniia Sumarokova).TimeとTime64をMM:SS、M:SS、SS、またはS形式でパースできるようになりました。#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).- 例外メッセージに expression actions の長すぎる説明を出力しないようにしました。#83164 をクローズ。#83350 (Alexey Milovidov).
- part のプレフィックスと接尾辞をパースできるようにし、非定数カラムのカバレッジもチェックするようにしました。 #83377 (Mikhail Artemenko).
- named collections 使用時の ODBC および JDBC のパラメータ名を統一しました。#83410 (Andrey Zvonov) 。
- ストレージのシャットダウン中に、
getStatusはErrorCodes::ABORTED例外をスローします。以前は、これによってSELECTクエリが失敗していました。現在はErrorCodes::ABORTED例外をキャッチし、代わりに意図的に無視するようになりました。#83435 (Miсhael Stetsyuk). MergePartsエントリ向けに、part_log の profile events へプロセスリソースメトリクス (UserTimeMicroseconds、SystemTimeMicroseconds、RealTimeMicrosecondsなど) を追加しました。 #83460 (Vladimir Cherkasov).- 新しい種類のリクエストを有効にする
create_if_not_exists、check_not_exists、remove_recursiveのフィーチャーフラグを、Keeper でデフォルトで有効にしました。 #83488 (Antonio Andelic). - サーバーのシャットダウン時には、テーブルをシャットダウンする前に S3(Azure/etc)Queue のストリーミングを停止するようにしました。 #83530 (Kseniia Sumarokova).
JSON入力フォーマットでDate/Date32を整数として扱えるようにしました。 #83597 (MikhailBurdukov).- 読み込み時およびプロジェクション追加時の特定の状況における例外メッセージを、より読みやすくしました。 #83728 (Robert Schulze).
clickhouse-serverバイナリのチェックサム整合性チェックをスキップする設定オプションを導入しました。#83637 を解決します。#83749 (Rafael Roquetto) 。
バグ修正 (公式の安定版リリースでユーザーに影響する不具合)
clickhouse-benchmarkの--reconnectオプションで誤って設定されていたデフォルト値を修正しました。この値は #79465 で誤って変更されていました。#82677 (Alexey Milovidov).CREATE DICTIONARYのフォーマットの不整合を修正しました。#82105 をクローズしました。#82829 (Alexey Milovidov) 。materialize関数を含む場合の有効期限 (TTL) のフォーマットの不整合を修正しました。#82828 をクローズしました。#82831 (Alexey Milovidov).- INTO OUTFILE などの出力オプションを含むサブクエリ内で、EXPLAIN AST のフォーマットに不整合が生じる問題を修正しました。#82826 をクローズしました。#82840 (Alexey Milovidov).
- 別名が許可されていないコンテキストにおいて、別名付きの括弧式のフォーマットの不整合を修正しました。#82836 をクローズしました。#82837 をクローズしました。#82867 (Alexey Milovidov).
- 集約関数の状態に IPv4 を掛ける際、適切なエラーコードを使用するようにしました。#82817 をクローズしました。#82818 (Alexey Milovidov).
- ファイルシステムキャッシュの論理エラー「0 バイトなのに範囲が終了していない」を修正。 #81868 (Kseniia Sumarokova).
minmax_count_projectionなど、その min-max 索引に依存するアルゴリズムの正しさを確保するため、TTL によって行が減少した際に min-max 索引を再計算するようにしました。これにより #77091 を解決しました。#77166 (Amos Bird).ORDER BY ... LIMIT BY ... LIMIT Nを組み合わせたクエリで、ORDER BY が PartialSorting として実行される場合、カウンターrows_before_limit_at_leastは、ソート処理で消費された行数ではなく、LIMIT 句で消費された行数を反映するようになりました。 #78999 (Eduard Karacharov).- 選択肢を含み、かつ最初の選択肢がリテラルではない正規表現を使った token/ngram 索引のフィルタリングで、グラニュールを過剰にスキップしてしまう問題を修正しました。#79373 (Eduard Karacharov).
<=>演算子および Join ストレージに関する論理エラーを修正し、クエリが正しいエラーコードを返すようになりました。#80165 (Vladimir Cherkasov).remote関数ファミリーと組み合わせて使用した際にloop関数で発生するクラッシュを修正しました。loop(remote(...))で LIMIT 句が正しく適用されるようにしました。#80299 (Julia Kartseva).- Unix epoch (1970-01-01) 以前の日付および最大日時 (2106-02-07 06:28:15) 以降の日付を処理する際に、
to_utc_timestampおよびfrom_utc_timestamp関数が誤動作する問題を修正しました。これらの関数は、値をそれぞれ epoch の開始時刻と最大日時に正しくクランプするようになりました。 #80498 (Surya Kant Ranjan). - 並列レプリカで実行される一部のクエリでは、順序付き読み取りの最適化をイニシエーターでは適用できても、リモートノードでは適用できない場合がありました。その結果、並列レプリカコーディネーター (イニシエーター上) とリモートノードで異なる読み取りモードが使われることになり、論理エラーを引き起こしていました。 #80652 (Igor Nikonov).
- カラムの型がNullableに変更された場合に、プロジェクションのマテリアライズ中に発生していた論理エラーを修正しました。 #80741 (Pavel Kruglov).
- TTL 更新時に、TTL GROUP BY における誤った TTL の再計算を修正しました。#81222 (Evgeniy Ulasik).
- Parquet bloom filter が、
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 式の実行時には実験的な型や疑わしい型を検証しないようにしました。 #81618 (Pavel Kruglov).
- 有効期限 (TTL) 式でdictを使用した際に、マージ中に “Context has expired” が発生する問題を修正しました。 #81690 (Azat Khuzhin).
- CAST 関数の単調性に関する問題を修正しました。#81722 (zoomxi) 。
- スカラー相関サブクエリの処理中に必要なカラムが読み込まれない問題を修正しました。修正内容は #81716 を参照してください。#81805 (Dmitry Novik).
- 以前のバージョンでは、
/jsへのリクエストに対してサーバーが過剰な内容を返していました。これにより #61890 は修正されます。#81895 (Alexey Milovidov) 。 - これまで、
MongoDBテーブルエンジンの定義では、host:port引数にパス部分を含めることができましたが、その部分は暗黙的に無視されていました。mongodb インテグレーションは、そのようなテーブルの読み込みを拒否します。この修正により、MongoDBengine の引数が 5 つある場合は、そのようなテーブルの読み込みを許可し、引数で指定されたデータベース名を使用して パス部分を無視する ようになりました。注: この修正は、新しく作成されたテーブルやmongotable function を使用するクエリには適用されず、Dictionary ソースおよび named collections にも適用されません。 #81942 (Vladimir Cherkasov). - マージ中に例外が発生した際、
Aggregatorで発生する可能性があったクラッシュを修正しました。#82022 (Nikita Taranov). - クエリで定数のエイリアスカラムのみが使用されている場合のフィルター解析を修正しました。#79448。#82037 (Dmitry Novik).
- TTL の GROUP BY と SET の両方で同じカラムを使用した場合に発生する 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条件でarrayJoinとIndexSetを使用するクエリで発生するNot found columnエラーを修正しました。#82113 (Nikolai Kochetov).- Glue カタログ インテグレーションのバグを修正しました。これにより、ClickHouse は、一部のサブカラムが decimal を含むネストされたデータ型を持つテーブル (例:
map<string, decimal(9, 2)>) を読み取れるようになりました。#81301。#82114 (alesapin). - https://github.com/ClickHouse/ClickHouse/pull/79051 で 25.5 に導入された SummingMergeTree のパフォーマンス低下を修正しました。#82130 (Pavel Kruglov) 。
- URI 経由で設定を渡した場合は、最後の値が採用されます。#82137 (Sema Checherinda).
- Iceberg での “Context has expired” を修正しました。 #82146 (Azat Khuzhin).
- サーバーがメモリ逼迫状態にある場合に、リモートクエリで発生する可能性があるデッドロックを修正しました。 #82160 (Kirill).
- 大きな数値に適用した際に発生していた、
numericIndexedVectorPointwiseAdd、numericIndexedVectorPointwiseSubtract、numericIndexedVectorPointwiseMultiply、numericIndexedVectorPointwiseDivide関数でのオーバーフローを修正しました。#82165 (Raufs Dunamalijevs). - テーブル依存関係のバグを修正し、materialized view が INSERT クエリを取りこぼす問題を解消しました。#82222 (Nikolay Degterinsky) 。
- 候補表示スレッドとメインのクライアントスレッドの間で発生する可能性のあるデータ競合を修正しました。#82233 (Azat Khuzhin) 。
- これで、スキーマ進化後でも ClickHouse が Glue カタログから Iceberg テーブルを読み取れるようになりました。#81272 を修正しました。#82301 (alesapin) 。
- 非同期メトリクス設定
asynchronous_metrics_update_period_sおよびasynchronous_heavy_metrics_update_period_sの検証処理を修正しました。#82310 (Bharat Nallan) 。 - 複数の JOIN を含むクエリでマッチャーを解決する際の論理エラーを修正し、#81969 をクローズしました。#82421 (Vladimir Cherkasov).
- 再読み込みできるよう、AWS ECSトークンに有効期限を追加しました。#82422 (Konstantin Bogdanov) 。
CASE関数でのNULL引数に関するバグを修正しました。#82436 (Yarik Briukhovetskyi) 。- クライアントの data-race を修正し (グローバルコンテキストを使わないように変更) 、
session_timezoneのオーバーライドも修正しました (従来は、たとえばsession_timezoneがusers.xmlやクライアントオプションで空でない値に設定され、クエリコンテキストでは空に設定されている場合、誤ってusers.xmlの値が使われていました。現在は、クエリコンテキストが常にグローバルコンテキストより優先されます) 。 #82444 (Azat Khuzhin). - external tableエンジンで、cached buffer の境界アラインメントを無効にする修正を行いました。この問題は https://github.com/ClickHouse/ClickHouse/pull/81868 で発生していました。#82493 (Kseniia Sumarokova) 。
- 型変換したキーでキー・バリュー・ストレージをJOINした際に発生するクラッシュを修正しました。#82497 (Pervakov Grigorii).
- logs/query_log で named collection の値が表示されないように修正しました。#82405 をクローズしました。#82510 (Kseniia Sumarokova).
- user_id が空になることがあるため、セッション終了時のログ出力中に発生する可能性があるクラッシュを修正しました。#82513 (Bharat Nallan) 。
- Time のパース時に msan の問題が発生することがあるケースを修正しました。これにより、次の問題が修正されます: #82477. #82514 (Yarik Briukhovetskyi).
- サーバー処理が停止してしまうのを防ぐため、
threadpool_writer_pool_sizeを 0 に設定できないようにしました。#82532 (Bharat Nallan) 。 - 相関カラムの行ポリシー式の解析中に発生する
LOGICAL_ERRORを修正しました。#82618 (Dmitry Novik). enable_shared_storage_snapshot_in_query = 1のとき、mergeTreeProjectionテーブル関数で親メタデータが誤って使用される問題を修正しました。これは #82634 に対応するものです。#82638 (Amos Bird)。- 関数
trim{Left,Right,Both}が、型 “FixedString(N)” の入力文字列をサポートするようになりました。たとえば、SELECT trimBoth(toFixedString('abc', 3), 'ac')が使えるようになりました。#82691 (Robert Schulze) 。 - AzureBlobStorage では、ネイティブコピー時に認証方式を比較する際、例外が発生した場合は read and copy (つまり非ネイティブコピー) にフォールバックするようコードを更新しました。 #82693 (Smita Kulkarni).
- 空の要素がある場合の
groupArraySample/groupArrayLastのデシリアライゼーションを修正しました (入力が空だと、デシリアライゼーション時にバイナリの一部を読み飛ばしてしまうことがあり、その結果、データ読み取り時の破損や、TCP プロトコルでの UNKNOWN_PACKET_FROM_SERVER につながる可能性がありました) 。これは数値型および日時型には影響しません。 #82763 (Pedro Ferreira). - 空の
Memoryテーブルのバックアップを修正し、BACKUP_ENTRY_NOT_FOUNDエラーによってバックアップの復元が失敗する問題を解消しました。#82791 (Julia Kartseva). - union/intersect/except_default_mode の書き換えにおける例外安全性の問題を修正しました。#82664 をクローズしました。#82820 (Alexey Milovidov).
- 非同期テーブルの読み込みジョブ数を追跡するようにしました。実行中のジョブがある場合、
TransactionLog::removeOldEntriesでtail_ptrを更新しないようにしました。#82824 (Tuan Pham Anh). - Iceberg のデータレースを修正しました。#82841 (Azat Khuzhin) 。
use_skip_indexes_if_final_exact_mode最適化設定 (25.6で導入) では、MergeTreeエンジンの設定やデータ分布によって、適切な候補範囲を選択できない場合がありました。この問題は現在解消されています。#82879 (Shankar Iyer) 。- SCRAM_SHA256_PASSWORD 型で AST からパースする際に、認証データのソルトを設定するようにしました。#82888 (Tuan Pham Anh).
- キャッシュしない Database 実装を使用している場合、対応するテーブルのメタデータはカラムの返却後に削除され、参照は無効化されます。 #82939 (buyval01).
- ストレージ
Mergeのテーブルを含むJOIN式を持つクエリに対するフィルター変更の不具合を修正しました。#82092 を修正。#82950 (Dmitry Novik) 。 - QueryMetricLog における LOGICAL_ERROR「Mutex cannot be NULL」を修正。 #82979 (Pablo Marcos).
- 関数
formatDateTimeで、フォーマッタ%fを可変長フォーマッタ (例:%M) と組み合わせて使用した際に出力が誤る問題を修正しました。#83020 (Robert Schulze) 。 - 有効なアナライザで、セカンダリクエリが常にVIEWからすべてのカラムを読み取ってしまうことによる性能低下を修正しました。修正対象: #81718。 #83036 (Dmitry Novik).
- 読み取り専用ディスク上でバックアップを復元する際に表示される、誤解を招くエラーメッセージを修正しました。#83051 (Julia Kartseva) 。
- 依存関係のない create table では、循環依存のチェックを行わないようにしました。これにより、https://github.com/ClickHouse/ClickHouse/pull/65405 で導入された、数千のテーブルを作成するユースケースで発生していたパフォーマンス低下を解消します。#83077 (Pavel Kruglov).
- 負の Time 値をテーブルに暗黙的に読み込む際の問題を修正し、ドキュメントのわかりにくい記述も改善しました。 #83091 (Yarik Briukhovetskyi).
lowCardinalityKeys関数で、共有辞書の無関係な部分を参照しないようにしました。#83118 (Alexey Milovidov).- Materialized Views でのサブカラムの使用に関するリグレッションを修正しました。これにより、次の問題が修正されます: #82784. #83221 (Nikita Mikhaylov).
- 不正なINSERT後にconnectionが切断状態のまま残り、clientがクラッシュする問題を修正しました。 #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 リクエストに明示的に署名しないようにできます。また、endpoint ベースの設定を使って、特定の endpoint に対して定義することもできます。#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) 。 #83461 (wushap). - https://github.com/ClickHouse/ClickHouse/pull/79963 で混入したバグを修正しました。definer を持つ MV への insert 時の権限チェックでは、definer の権限を使用するようにしました。これにより #79951 を修正しました。#83502 (pufit).
- Iceberg の配列要素および Iceberg の map の値 (それらにネストされたすべてのサブフィールドを含む) について、境界値ベースのファイルプルーニングを無効にしました。 #83520 (Daniil Ivanik).
- 一時データストレージとして使用する際に発生する可能性がある、file cache の未初期化エラーを修正しました。 #83539 (Bharat Nallan).
- Keeperの修正: セッション終了時にエフェメラルノードが削除される際、watch の総数が正しく更新されるようにしました。#83583 (Antonio Andelic).
- max_untracked_memory 周辺の誤ったメモリ処理を修正しました。 #83607 (Azat Khuzhin).
- UNION ALL を伴う INSERT SELECT では、まれなケースでヌルポインタの逆参照が発生する可能性がありました。これにより #83618 が解消されます。#83643 (Alexey Milovidov) 。
- 論理エラーを引き起こす可能性があるため、max_insert_block_size に 0 を指定できないようにしました。 #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 に必要です。#81347 (Alexey Milovidov)。standalone lexer のテストを追加し、テストタグ
fasttest-onlyも追加しました。#82472 (Yakov Olkhovskiy)。 - Nix サブモジュール入力に対するチェックを追加しました。#81691 (Konstantin Bogdanov)。
- localhost で結合テストを実行しようとした際に発生しうる問題をいくつか修正しました。#82135 (Oleg Doronin)。
- Mac と FreeBSD で SymbolIndex をコンパイルするようにしました。 (ただし、動作するのは ELF システムである Linux と FreeBSD のみです) 。#82347 (Alexey Milovidov)。
- Azure SDK を v1.15.0 に更新しました。#82747 (Smita Kulkarni)。
- google-cloud-cpp の storage モジュールをビルドシステムに追加しました。#82881 (Pablo Marcos)。
- Docker Official Library の要件に合わせて、clickhouse-server 向けの
Dockerfile.ubuntuを変更しました。#83039 (Mikhail f. Shiryaev)。 curl clickhouse.comへの builds のアップロードを修正するための #83158 のフォローアップです。#83463 (Mikhail f. Shiryaev)。clickhouse/clickhouse-serverおよび公式clickhouseイメージにbusyboxbinary とインストールツールを追加しました。#83735 (Mikhail f. Shiryaev)。- ClickHouse server のホストを指定するための
CLICKHOUSE_HOST環境変数のサポートを追加し、既存のCLICKHOUSE_USERおよびCLICKHOUSE_PASSWORD環境変数に合わせました。これにより、クライアントや設定ファイルを直接変更しなくても、より簡単に設定できるようになりました。#83659 (Doron 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:SS[.fractional]) 、ならびに基本的なキャスト関数と他のデータ型を扱うための関数を追加しました。既存の関数toTimeとの互換性を保つための設定も追加されています。設定use_legacy_to_timeは、当面は従来の動作を維持するよう設定されています。#81217 (Yarik Briukhovetskyi)。また、Time/Time64 間の比較もサポートしました。#80327 (Yarik Briukhovetskyi)。 - 新しいCLIツール
chdig- ClickHouse向けのTUIインターフェイス (top風) が、ClickHouseの一部として追加されました。#79666 (Azat Khuzhin). - テーブルメタデータファイルの保存先ディスクを指定する
disk設定が、AtomicおよびOrdinaryデータベースエンジンでサポートされました。#80546 (Tuan Pham Anh)。これにより、外部ソースからデータベースをアタッチできるようになりました。 - 新しいタイプの MergeTree である
CoalescingMergeTree- このエンジンは、バックグラウンドマージ時に NULL ではない最初の値を採用します。これにより #78869 がクローズされました。#79344 (scanhex12). - WKB を読み取る関数のサポートを追加しました (“Well-Known Binary” は、GIS アプリケーションで使われる各種ジオメトリ型のバイナリエンコーディング用フォーマットです) 。#43941 を参照してください。#80139 (scanhex12) 。
- ワークロード向けのクエリスロットスケジューリングを追加しました。詳細はワークロードスケジューリングを参照してください。#78415 (Sergei Trifonov).
- 時系列データの処理時に一部のユースケースを高速化する
timeSeries*ヘルパー関数: - 指定した開始タイムスタンプ、終了タイムスタンプ、stepを持つ時間グリッドにデータをリサンプリングする - PromQLライクなdelta、rate、idelta、irateを計算する。#80590 (Alexander Gololobov) 。 mapContainsValuesLike/mapContainsValues/mapExtractValuesLike関数を追加し、map の値に対するフィルタリングと、bloom filter ベースの索引でのこれらのサポートを追加しました。 #78171 (UnamedRus).- 設定の制約で、禁止する値の集合を指定できるようになりました。#78499 (Bharat Nallan) 。
- 単一のクエリ内のすべてのサブクエリで同じストレージスナップショットを共有できるようにする設定
enable_shared_storage_snapshot_in_queryが追加されました。これにより、1 つのクエリ内で同じテーブルが複数回参照される場合でも、常に同じスナップショットに対して一貫した読み取りが保証されます。 #79471 (Amos Bird). JSONカラムのParquetへの書き込みと、ParquetからのJSONカラムの直接読み取りをサポートしました。#79649 (Nihal Z. Miaji).pointInPolygonにMultiPolygon対応を追加しました。#79773 (Nihal Z. Miaji) 。- ローカルファイルシステムにマウントされたDeltaテーブルを
deltaLakeLocalテーブル関数経由でクエリできるようになりました。#79781 (roykim98). - 新しい設定
cast_string_to_date_time_modeを追加し、String からキャストする際の DateTime のパースモードを選択できるようになりました。 #80210 (Pavel Kruglov). たとえば、best effort モードに設定できます。 - Bitcoin の Bech アルゴリズムを扱うための
bech32Encodeおよびbech32Decode関数が追加されました (issue #40381) 。 #80239 (George Larionov). - MergeTreeパーツ名を解析するためのSQL関数を追加しました。#80573 (Mikhail Artemenko) 。
- 新しい仮想カラム
_disk_nameの導入により、クエリ対象として選択されたパーツを、配置先のディスクに基づいてフィルタリングできるようになりました。 #80650 (tanner-bruce). - 埋め込み Web ツールの一覧を表示するランディングページを追加しました。ブラウザ系のユーザーエージェントからアクセスされた場合に開きます。#81129 (Alexey Milovidov) 。
- 関数
arrayFirst、arrayFirstIndex、arrayLast、arrayLastIndexは、フィルタ式が返す NULL 値を除外します。以前のバージョンでは、Nullable のフィルタ結果はサポートされていませんでした。#81113 を修正しました。#81197 (Lennard Eijsackers) 。 USE nameの代わりにUSE DATABASE nameを書けるようになりました。#81307 (Yarik Briukhovetskyi) 。- 利用可能なコーデックを確認できる新しいシステムテーブル
system.codecsを追加しました。 (issue #81525) 。#81600 (Jimmy Aguilar Mena) 。 - ウィンドウ関数
lagおよびleadをサポートしました。#9887 をクローズしました。#82108 (Dmitry Novik). - 関数
tokensが、新しいsplitトークナイザーに対応しました。これは logs に適しています。#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はアクティブなレプリカ数) を超えず、これを超える場合は一部のパーティションを解放します。一部のパーティションは、レプリカによって一時的に保持されます。レプリカ上の一時ロックの最大数は、ほかのレプリカにもいくつかのパーティションを永続ロックとして取得する機会を与えるため、動的に変化します。一時ロックを更新する際、レプリカはいったんそれらをすべて解放し、再び別のものを取得しようとします。 #78726 (Daria Fomina). - 実験的なテキスト索引の改善として、明示的なパラメーターをキー・バリューのペアで指定できるようになりました。現在サポートされているパラメーターは、必須の
tokenizerと、任意のmax_rows_per_postings_listおよびngram_sizeの 2 つです。 #80262 (Elmi Ahmadov). - 以前は、ディスク上の (
.gin_sid) ファイルを読み書きして segment id をその場で更新していたため、packedストレージはフルテキスト索引ではサポートされていませんでした。packedストレージでは未コミットのファイルから値を読み取ることがサポートされておらず、これが問題の原因になっていました。現在はこの問題は解消されています。 #80852 (Elmi Ahmadov). gin型の実験的な索引 (PostgreSQL ハッカーの内輪ネタに由来する名前で、私は好きではありませんが) は、textに名称変更されました。既存のgin型の索引は引き続き読み込み可能ですが、検索で使用しようとすると例外をスローし、代わりにtext索引を使うよう案内されます。 #80855 (Robert Schulze).
パフォーマンスの改善
- 複数の projection によるフィルタリングのサポートを有効にし、パートレベルのフィルタリングで複数の projection を使用できるようにしました。これにより #55525 に対応しています。これは #78429 に続く、projection 索引を実装するための第2段階です。#80343 (Amos Bird) 。
- デフォルトで、ファイルシステムキャッシュに
SLRUキャッシュポリシーを適用しました。 #75072 (Kseniia Sumarokova). - query pipeline の Resize ステップでの競合を解消しました。#77562 (Zhiguo Zhou) 。
- ブロックの圧縮・展開およびシリアライゼーション・デシリアライゼーションを、ネットワーク接続に関連付けられた単一のスレッドではなく、パイプラインスレッドにオフロードするオプションが導入されました。これは設定
enable_parallel_blocks_marshallingで制御されます。これにより、イニシエーターとリモートノード間で大量のデータを転送する分散クエリが高速化されるはずです。#78694 (Nikita Taranov). - すべてのブルームフィルタ型でパフォーマンスが向上しました。OpenHouse カンファレンスのビデオ #79800 (Delyan Kratunov).
- 一方のセットが空の場合に、
UniqExactSet::mergeに高速パスを追加しました。また、LHS のセットが 2 レベルで RHS が 1 レベルの場合、RHS を 2 レベルに変換しないようになりました。#79971 (Nikita Taranov). - 二段階ハッシュテーブルの使用時に、メモリ再利用効率を向上させ、ページフォールトを削減しました。これにより、GROUP BY の高速化が期待されます。#80245 (Jiebin Sun).
- query condition cacheにおける不要な更新を回避し、ロック競合を軽減しました。 #80247 (Jiebin Sun).
concatenateBlocksの軽微な最適化。並列ハッシュ結合にも有効である可能性があります。#80328 (李扬).- 主キーの範囲からmark範囲を選択する際、主キーが関数でラップされている場合は二分探索を使用できません。このPRではこの制限が改善され、主キーが常に単調な関数チェーンでラップされている場合や、RPNに常に真となる要素が含まれている場合でも、二分探索を適用できるようになりました。#45536 をクローズします。#80597 (zoomxi).
Kafkaエンジンのシャットダウン速度を改善しました (複数のKafkaテーブルがある場合に発生していた余分な 3 秒の遅延を解消) 。#80796 (Azat Khuzhin) 。- 非同期 INSERT: メモリ使用量を削減し、INSERTクエリのパフォーマンスを向上。#80972 (Raúl Marín).
- ログテーブルが無効な場合は、プロセッサのプロファイリングを行わないようにしました。 #81256 (Raúl Marín)。これにより、非常に短いクエリが高速化されます。
- ソースが要求された内容と完全に一致する場合、
toFixedStringを高速化しました。#81257 (Raúl Marín) 。 - ユーザーに制限が設定されていない場合、クォータ値を処理しないようにしました。#81549 (Raúl Marín)。これにより、ごく短いクエリが高速化されます。
- メモリ追跡におけるパフォーマンス低下を修正しました。#81694 (Michael Kolupaev)。
- 分散クエリにおける分片キー最適化を改善しました。#78452 (fhw12345).
- 並列レプリカ: すべての読み取りタスクが他のレプリカに割り当て済みの場合、使われていない低速なレプリカを待たないようにしました。 #80199 (Igor Nikonov).
- 並列レプリカでは、専用の接続タイムアウトが使用されます。
parallel_replicas_connect_timeout_ms設定を参照してください。以前は、connect_timeout_with_failover_ms/connect_timeout_with_failover_secure_ms設定が並列レプリカクエリの接続タイムアウト値として使われていました (デフォルトは 1 秒) 。#80421 (Igor Nikonov). - ジャーナル付きのfilesystemでは、
mkdirはディスクに永続化されるfilesystemのジャーナルに書き込まれます。ディスクが低速な場合、これに時間がかかることがあります。これを reserve lock のスコープ外へ移動します。#81371 (Kseniia Sumarokova). - 最初の読み取りクエリが実行されるまで、Iceberg のマニフェストファイルの読み込みを遅らせます。#81619 (Daniil Ivanik) 。
- 該当する場合、
GLOBAL [NOT] IN述語をPREWHERE句に移動できるようにしました。#79996 (Eduard Karacharov) 。
改善
EXPLAIN SYNTAXは新しいアナライザを使用するようになりました。これにより、クエリツリーから構築された AST が返されます。クエリツリーを AST に変換する前に実行されるパス数を制御するためのオプションquery_tree_passesが追加されました。#74536 (Vladimir Cherkasov).- Dynamic と JSON 向けに、Native format でのフラット化シリアライゼーションを実装しました。これにより、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).- Dictionary のメトリクスが
system.asynchronous_metricsに追加されました -DictionaryMaxUpdateDelay- Dictionary 更新の最大遅延 (秒単位) 。 -DictionaryTotalFailedUpdates- すべての Dictionary において、最後に正常にロードされて以降に発生したエラー数。 #78175 (Vlad). - 壊れたテーブルを保存するために作成された可能性があるデータベースに関する警告を追加しました。 #78841 (János Benjamin Antal).
S3Queue、AzureQueueエンジンに_time仮想カラムを追加。#78926 (Anton Ivashkin) 。- CPU高負荷時の接続切断を制御する設定がホットリロード可能になりました。#79052 (Alexey Katsman) 。
- Azure blob storage のプレーンディスクについて、
system.tablesで報告されるデータパスにコンテナーのプレフィックスを追加し、S3 および GCP と一貫した形で表示されるようにしました。#79241 (Julia Kartseva) 。 - clickhouse-client と local で、
param_<name>(アンダースコア) に加え、param-<name>(ダッシュ) もクエリパラメータとして受け付けられるようになりました。これにより #63093 が解決されました。#79429 (Engel Danila). - チェックサムを有効にしてローカルからリモート S3 にデータをコピーする際の、帯域幅削減に関する詳細な警告メッセージ。 #79464 (VicoWu).
- 以前は、
input_format_parquet_max_block_size = 0(無効な値) の場合、ClickHouse がハングしていました。現在はこの挙動は修正されています。これにより #79394 がクローズされます。#79601 (abashkeev) 。 startup_scriptsにthrow_on_error設定を追加しました。throw_on_errorが true の場合、すべてのクエリが正常に完了しない限り、サーバーは起動しません。デフォルトではthrow_on_errorは false で、従来どおりの動作になります。#79732 (Aleksandr Musorin) 。- 任意の種類の
http_handlersでhttp_response_headersを追加できるようにしました。#79975 (Andrey Zvonov) 。 - 関数
reverseがTuple型をサポートするようになりました。#80053 をクローズ。#80083 (flynn). - #75817 を解決:
system.zookeeperテーブルからauxiliary_zookeepersのデータを取得できるようにしました。#80146 (Nikolay Govorov) 。 - サーバーの TCP ソケットに関する非同期メトリクスを追加しました。これにより、オブザーバビリティが向上します。#80187 をクローズしました。#80188 (Alexey Milovidov) 。
SimpleAggregateFunctionでanyLast_respect_nullsとany_respect_nullsをサポートしました。#80219 (Diskein).- Replicated データベースに対する不要な
adjustCreateQueryForBackupの呼び出しを削除しました。 #80282 (Vitaly Baranov) 。 clickhouse-localで、--の後に続く追加オプション (例:-- --config.value='abc') を、等号を付けずに指定できるようにしました。#80292 をクローズしました。#80293 (Alexey Milovidov) 。SHOW ... LIKEクエリでメタ文字を強調表示するようになりました。これにより #80275 がクローズされます。#80297 (Alexey Milovidov).clickhouse-localで SQL UDF を永続化。以前に作成した関数が起動時に読み込まれるようになりました。これで #80085 が解決されます。#80300 (Alexey Milovidov).- EXPLAINプランにおける予備的なDISTINCTステップの説明を修正。 #80330 (UnamedRus).
- ODBC/JDBCでnamed collectionsを使用できるようになりました。#80334 (Andrey Zvonov).
- readonly ディスクと破損ディスクの数に関するメトリクス。DiskLocalCheckThread の開始時に、インジケーターがログに記録されます。#80391 (VicoWu).
- projections を使用する
s3_plain_rewritableストレージのサポートを実装しました。以前のバージョンでは、projections を参照する S3 内のメタデータオブジェクトは、移動しても更新されませんでした。#70258 をクローズしました。#80393 (Sav)。 SYSTEM UNFREEZEコマンドは、readonly ディスクおよび write-once ディスク上のパーツを探そうとしなくなりました。これにより #80430 がクローズされます。#80432 (Alexey Milovidov) 。- マージ済みパーツに関するメッセージのログレベルを引き下げました。#80476 (Hans Krutzer) 。
- Icebergテーブルにおけるパーティションプルーニングのデフォルト動作を変更しました。#80583 (Melvyn Peignon) 。
- 索引検索アルゴリズムのオブザーバビリティのために、新しい ProfileEvents
IndexBinarySearchAlgorithmとIndexGenericExclusionSearchAlgorithmを 2 つ追加しました。 #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 REPLICAにIF EXISTS修飾子を追加。#80810 (Raúl Marín) 。- “Having zero bytes, but read range is not finished…” に関する例外メッセージを詳細化し、
system.filesystem_cacheに finished_download_time カラムを追加しました。#80849 (Kseniia Sumarokova) 。 EXPLAINを indexes = 1 とともに使用した場合、出力に検索アルゴリズムのセクションが追加されるようになりました。そこには「binary 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カラムは、それぞれtableとdatabaseに改名されました。#80975 (alesapin).mergeテーブル関数で読み取り専用モードを利用できるようになり、使用時にCREATE TEMPORARY TABLE権限が不要になりました。#80981 (Miсhael Stetsyuk).- インメモリ cache の内部情報の可視性を向上しました (不完全な
system.asynchronouse_metricsではなく、system.metricsで cache に関する情報を公開) 。インメモリ cache のサイズ (バイト単位) をdashboard.htmlに追加しました。VectorSimilarityIndexCacheSize/IcebergMetadataFilesCacheSizeはVectorSimilarityIndexCacheBytes/IcebergMetadataFilesCacheBytesに名称変更されました。#81023 (Azat Khuzhin). system.rocksdbの読み取り時に、RocksDBテーブルを格納できないエンジンのデータベースは無視するようにしました。#81083 (Pervakov Grigorii) 。clickhouse-localの設定ファイルでfilesystem_cachesとnamed_collectionsが使用可能になりました。#81105 (Alexey Milovidov) 。INSERTクエリでのPARTITION BYのハイライトを修正しました。以前のバージョンでは、PARTITION BYはキーワードとしてハイライトされていませんでした。#81106 (Alexey Milovidov).- Web UI に関する 2 つの小さな改善: -
CREATE、INSERTなどの出力を伴わないクエリを正しく処理するようになりました (少し前までは、これらのクエリを実行するとスピナーが無限に回り続けていました) 。 - テーブルをダブルクリックしたときに、先頭へスクロールするようになりました。#81131 (Alexey Milovidov). MemoryResidentWithoutPageCacheメトリックは、ユーザー空間のページキャッシュを除いたサーバープロセスの物理メモリ使用量を、バイト単位で示します。これにより、ユーザー空間のページキャッシュが利用されている場合でも、実際のメモリ使用量をより正確に把握できます。ユーザー空間のページキャッシュが無効な場合、この値はMemoryResidentと等しくなります。 #81233 (Jayme Bird).- client、local server、Keeperクライアント、disks app で手動でログに記録された例外を記録済みとしてマークし、重複してログに記録されないようにしました。#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::POINTをConstraint::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 をクローズします。#81509 (Alexey 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).
- アナライザ: join におけるカラム型昇格後のカラムの射影名を修正しました。#63345 をクローズしました。#63519 (Dmitry Novik) 。
- analyzer_compatibility_join_using_top_level_identifier が有効な場合に、カラム名の競合時に発生していた論理エラーを修正しました。#75676 (Vladimir Cherkasov) 。
allow_push_predicate_ast_for_distributed_subqueriesが有効な場合の、プッシュダウンされた述語における CTE の扱いを修正しました。#75647 を修正しました。#79672 を修正しました。#77316 (Dmitry Novik)。- SYSTEM SYNC REPLICA LIGHTWEIGHT ‘foo’ で、指定したレプリカが存在しない場合でも成功と報告されてしまう問題を修正しました。このコマンドは現在、同期を試行する前に、レプリカが Keeper に存在することを適切に確認するようになっています。 #78405 (Jayme Bird).
currentDatabase関数がON CLUSTERクエリのCONSTRAINTセクションで使われた場合に、非常に限定的な状況で発生していたクラッシュを修正しました。#78100 をクローズします。#79070 (pufit)。- サーバー間クエリにおける外部ロールの受け渡しを修正しました。 #79099 (Andrey 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 を修正。#79727 (Dmitry Novik).
- ColumnConst とアナライザを使用したグルーピングセットで、誤った結果を返す問題を修正しました。#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 に部分的に対処します。#80005 (Daniil Ivanik).
- ラムダ式を含むスキップ索引が適用されない問題を修正しました。索引定義内の高レベル関数がクエリ内のものと完全に一致する場合の問題を修正しました。#80025 (Nikolai Kochetov) 。
- レプリケーションログから ATTACH_PART コマンドを実行するレプリカで、part の attach 時のメタデータバージョンを修正しました。 #80038 (Aleksei Filatov).
- 実行可能なユーザー定義関数 (eUDF) の名前は、他の関数とは異なり、
system.query_logテーブルのused_functionsカラムには追加されません。このPRでは、リクエストで eUDF が使用された場合に、eUDF 名も追加されるようになりました。#80073 (Kyamran). - LowCardinality(FixedString) を使用する Arrow フォーマットの論理エラーを修正しました。 #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 database における RMT のメタデータチェックをより緩和しました。#80296 を修正。#80298 (Nikolay Degterinsky) 。
- PostgreSQLストレージにおけるDateTimeおよびDateTime64のテキスト表現を修正しました。 #80301 (Yakov Olkhovskiy).
StripeLogテーブルで、タイムゾーン付きのDateTimeを使用できるようにしました。これにより #44120 が解決されます。#80304 (Alexey Milovidov).- クエリプランのステップで行数が変わる場合、非決定論的関数を含む述語に対する filter-push-down を無効にしました。#40273 を修正しました。#80329 (Nikolai Kochetov) 。
- サブカラムを含むプロジェクションで発生する可能性がある論理エラーやクラッシュを修正しました。 #80333 (Pavel Kruglov).
ON式が単純な等価条件ではない場合に、論理JOINsep のフィルタープッシュダウン最適化によって発生するNOT_FOUND_COLUMN_IN_BLOCKエラーを修正しました。#79647 を修正。#77848 を修正。#80360 (Nikolai Kochetov)。- パーティション化されたテーブルで、逆順に並んだキーを読み取る際に誤った結果が返される問題を修正しました。これは #79987 の修正です。#80448 (Amos Bird).
- Nullableキーを持ち、optimize_read_in_order が有効なテーブルでソートが誤って行われる問題を修正しました。 #80515 (Pervakov Grigorii).
- ビューが SYSTEM STOP REPLICATED VIEW で一時停止されていた場合に、リフレッシャブルmaterialized view の DROP がハングする問題を修正しました。#80543 (Michael Kolupaev).
- 定数タプルを含む分散クエリで ‘Cannot find column’ エラーが発生する問題を修正しました。#80596 (Yakov Olkhovskiy).
join_use_nulls使用時の分散テーブルにおけるshardNum関数を修正。 #80612 (János Benjamin Antal).- Merge engine で、一部のテーブルにのみ存在するカラムの読み取り時に誤った結果が返される問題を修正しました。#80643 (Pavel Kruglov).
- replxx のハングにより発生する可能性がある SSH プロトコルの不具合を修正しました。 #80688 (Azat Khuzhin).
- iceberg_history テーブルのタイムスタンプが正しくなりました。 #80711 (Melvyn Peignon).
- Dictionary の登録に失敗した場合にクラッシュする可能性がある問題を修正しました (
CREATE DICTIONARYがCANNOT_SCHEDULE_TASKで失敗すると、Dictionary のレジストリにダングリングポインタが残り、後にクラッシュにつながる可能性がありました) 。#80714 (Azat Khuzhin). - オブジェクトストレージのテーブル関数において、要素が1つだけの enum グロブの処理を修正しました。#80716 (Konstantin Bogdanov) 。
- 論理エラーの原因となっていた、Tuple(Dynamic) と String を用いた比較関数の誤った結果型を修正しました。 #80728 (Pavel Kruglov).
- Unity Catalog 向けに、未対応だったデータ型
timestamp_ntzのサポートを追加しました。#79535、#79875 を修正しました。#80740 (alesapin) 。 IN cteを使用する分散クエリで発生するTHERE_IS_NO_COLUMNエラーを修正しました。#75032。#80757 (Nikolai Kochetov) 。- 外部 ORDER BY においてファイル数が過剰になる問題 (メモリ使用量の増加につながる) を修正しました。#80777 (Azat Khuzhin).
- このPRにより #80742 がクローズされる可能性があります。#80783 (zoomxi).
- get_member_id() が NULL から std::string を生成していたために Kafka で発生していたクラッシュを修正しました (この問題は、おそらく broker への connection に失敗した場合にのみ発生していました) 。 #80793 (Azat Khuzhin).
- Kafka engine のシャットダウン前に、コンシューマーの終了を適切に待機するようにしました (シャットダウン後もコンシューマーがアクティブなままだと、さまざまなデバッグ用アサーションがトリガーされる可能性があるほか、テーブルが DROP/デタッチされた後でもバックグラウンドでブローカーからデータを読み取ってしまう場合があります) 。#80795 (Azat Khuzhin) 。
predicate-push-down最適化が原因で発生するNOT_FOUND_COLUMN_IN_BLOCKを修正しました。これは #80443 の修正です。#80834 (Nikolai Kochetov) 。- USING を伴う JOIN のテーブル関数で、アスタリスク (*) マッチャーの解決時に発生する論理エラーを修正しました。#80894 (Vladimir Cherkasov).
- Iceberg metadata files cacheのメモリ計上を修正しました。#80904 (Azat Khuzhin) 。
- Nullable のパーティションキーにおける誤ったパーティション化を修正しました。#80913 (Pervakov Grigorii) 。
- ソーステーブルがイニシエータ上に存在しない場合に、プッシュダウンされた述語 (
allow_push_predicate_ast_for_distributed_subqueries=1) を伴う分散クエリでTable does not existエラーが発生する問題を修正しました。#77281。#80915 (Nikolai 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).
- これにより、ClickHouse は
SHOW TABLESクエリで、データレイクのカタログから返されるエラーや想定外の応答を無視するようになりました。#79725 を修正しました。#81046 (alesapin). - JSONExtract および JSON type のパースで、整数から DateTime64 をパースする処理を修正しました。#81050 (Pavel Kruglov).
- スキーマ推論 cache に date_time_input_format 設定を反映しました。#81052 (Pavel Kruglov).
- テーブルがクエリ開始後、カラムが送信される前にDROPされた場合に、INSERTでクラッシュする問題を修正しました。 #81053 (Azat Khuzhin).
- quantileDeterministic における未初期化値の使用不具合を修正しました。 #81062 (Azat Khuzhin).
- metadatastoragefromdisk のディスクトランザクションにおけるハードリンク数の管理を修正。テストを追加。#81066 (Sema Checherinda).
- 他の関数とは異なり、User Defined Functions (UDF) の名前は
system.query_logテーブルには追加されません。このPRでは、リクエストでUDFが使用された場合、そのUDF名を2つのカラムused_executable_user_defined_functionsまたはused_sql_user_defined_functionsのいずれかに追加するようにしました。#81101 (Kyamran). - HTTP プロトコル経由の INSERT において、テキストフォーマット (
JSON、Valuesなど) を使用し、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).
- 相対 cache path を使用した場合の fs cache の max_size_to_total_space 設定を修正しました。#81237 (Kseniia Sumarokova) 。
- Parquet フォーマットで const の tuple または map を出力する際に、clickhouse-local がクラッシュしていた問題を修正しました。#81249 (Michael Kolupaev) 。
- ネットワーク経由で受信した配列のオフセットを検証。 #81269 (Azat Khuzhin).
- 空のテーブルを結合し、ウィンドウ関数を使用するクエリにおける一部の境界ケースを修正しました。このバグにより並列ストリーム数が異常に増加し、OOM が発生していました。#81299 (Alexander Gololobov).
- データレイクのクラスター関数 (
deltaLakeCluster、icebergClusterなど) に関する修正: (1) 古いアナライザでCluster関数を使用した際に、DataLakeConfigurationで発生する可能性のあるセグメンテーションフォールトを修正。(2) 重複していたデータレイクメタデータの更新 (余分なオブジェクトストレージリクエスト) を削除。(3) フォーマットが明示的に指定されていない場合の、オブジェクトストレージに対する不要なリスト取得を修正 (これは非クラスターのデータレイクエンジンではすでに行われていました) 。 #81300 (Kseniia Sumarokova). - force_restore_data フラグにより、失われた keeper メタデータを復旧できるようにしました。#81324 (Raúl Marín) 。
- delta-kernel のリージョンエラーを修正しました。#79914 を修正。#81353 (Kseniia Sumarokova).
- divideOrNull の誤った JIT を無効化しました。 #81370 (Raúl Marín).
- MergeTree テーブルでパーティションカラム名が長い場合に発生する insert エラーを修正しました。 #81390 (hy123q).
- #81957 でバックポート済み:
merge中に例外が発生した場合にAggregatorでクラッシュする可能性がある問題を修正しました。#81450 (Nikita Taranov) 。 - 複数のマニフェストファイルの内容をメモリに保持しないようにしました。#81470 (Daniil Ivanik) 。
- バックグラウンドプール (
background_.*pool_size) のシャットダウン時に発生する可能性のあるクラッシュを修正しました。#81473 (Azat Khuzhin). URLエンジンのテーブルへの書き込み時に発生していた、Npyフォーマットでの範囲外読み取りを修正しました。これにより #81356 をクローズします。#81502 (Alexey 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) 。
- 空の
USING ()を使用し、旧アナライザが有効な場合にConcurrentHashJoinがクラッシュする問題を修正。#81754 (Nikita Taranov). - Keeperの修正: ログ内に無効なエントリがある場合、新しいログのコミットをブロックするようにしました。以前は、リーダーが一部のログを誤って適用しても、フォロワーがダイジェストの不一致を検出して中止する一方で、新しいログのコミットは継続されていました。 #81780 (Antonio Andelic).
- スカラー相関サブクエリの処理中に必要なカラムが読み込まれない問題を修正しました。#81716 を修正。#81805 (Dmitry Novik) 。
- コード内に紛れ込んでいた Kusto を除去しました。これにより #81643 をクローズします。#81885 (Alexey Milovidov) 。
- 以前のバージョンでは、
/jsへのリクエストに対してサーバーが過剰なコンテンツを返していました。これにより、#61890 が修正されました。#81895 (Alexey Milovidov)。 - これまで、
MongoDBtable engine の定義では、host:portargument に path 部分を含めることができましたが、それは暗黙的に無視されていました。mongodb インテグレーションは、そのようなテーブルの読み込みを拒否します。この修正により、MongoDBengine に 5 つの argument がある場合は、argument で指定された database 名を使用し、そのようなテーブルの読み込みを許可して path 部分を無視するようになりました。注: この修正は、新規に作成されたテーブルやmongotable function を使用する queries、ならびに Dictionary ソースおよび named collections には適用されません。#81942 (Vladimir Cherkasov). - マージ処理中に例外が発生した場合に、
Aggregatorがクラッシュする可能性がある問題を修正しました。 #82022 (Nikita Taranov). arraySimilarityにおけるコピー&ペースト由来の不具合を修正し、UInt32およびInt32の重みの使用を許可しないようにしました。テストとドキュメントも更新しました。#82103 (Mikhail f. Shiryaev).- サジェスト用スレッドとメインクライアントスレッドの間で発生する可能性があるデータレースを修正しました。#82233 (Azat Khuzhin) 。
ビルド/テスト/パッケージングの改善
postgres16.9 を使用。 #81437 (Konstantin Bogdanov).openssl3.2.4 を使用。#81438 (Konstantin Bogdanov) 。abseil-cpp2025-01-27 を使用しました。 #81440 (Konstantin Bogdanov).mongo-c-driver1.30.4 を使用するようになりました。#81449 (Konstantin Bogdanov) 。krb51.21.3-final を使用します。 #81453 (Konstantin Bogdanov).orc2.1.2を使用。 #81455 (Konstantin Bogdanov).grpc1.73.0を使用。#81629 (Konstantin Bogdanov) 。delta-kernel-rsv0.12.1 を使用するようにしました。 #81707 (Konstantin Bogdanov).c-aresをv1.34.5に更新。#81159 (Konstantin Bogdanov) 。- CVE-2025-5025 および CVE-2025-4947 への対応として、
curlを 8.14 にアップグレード。#81171 (larryluogit) 。 libarchiveを 3.7.9 にアップグレードし、以下の問題に対処しました: CVE-2024-20696 CVE-2025-25724 CVE-2024-48958 CVE-2024-57970 CVE-2025-1632 CVE-2024-48957 CVE-2024-48615。 #81174 (larryluogit).libxml2を 2.14.3 にアップグレードしました。#81187 (larryluogit) 。- vendor 化された Rust ソースを
CARGO_HOMEにコピーしないようにしました。#79560 (Konstantin Bogdanov) 。 - Sentryライブラリへの依存を解消し、独自のエンドポイントに置き換えました。 #80236 (Alexey Milovidov).
- Dependabotのアラートに対処するため、CIイメージのPython依存関係を更新しました。#80658 (Raúl Marín) 。
- 起動時にKeeperからレプリケートされたDDLの停止フラグの読み取りを再試行するようにし、Keeperで障害注入が有効な場合でもテストの堅牢性を高めました。 #80964 (Alexander Gololobov).
- Ubuntu アーカイブの URL に https を使用します。#81016 (Raúl Marín) 。
- テストイメージのPython依存関係を更新しました。 #81042 (dependabot[bot]) 。
flake.nixをNixビルド向けに導入。#81463 (Konstantin Bogdanov).- ビルド時にネットワークアクセスが必要になる
delta-kernel-rsの問題を修正しました。#80609 をクローズ。#81602 (Konstantin Bogdanov) 。記事 A Year of Rust in ClickHouse もご覧ください。
ClickHouse リリース 25.5 (2025-05-22)
後方互換性を持たない変更
- 関数
geoToH3は、入力を (lat, lon, res) の順序で受け取るようになりました (これは他の幾何関数で一般的な順序です) 。従来の結果の順序 (lon, lat, res) を維持したい場合は、settinggeotoh3_argument_order = 'lon_lat'を設定できます。#78852 (Pratima Patel). - ファイルシステムキャッシュの動的リサイズを許可するファイルシステムキャッシュ設定
allow_dynamic_cache_resizeを追加しました。デフォルト値はfalseです。理由: 一部の環境 (ClickHouse Cloud) では、すべてのスケーリングイベントがプロセスの再起動を通じて発生するため、動作をより厳密に制御し、安全対策とするためにも、この機能を明示的に無効化できるようにする必要があるためです。この PR は後方互換性を持たない変更としてマークされています。これは、以前のバージョンでは動的な cache リサイズが特別な setting なしでデフォルトで有効だったためです。#79148 (Kseniia Sumarokova). - レガシーな索引型
annoyおよびusearchのサポートを削除しました。どちらも長い間スタブのままで、つまり、これらのレガシー索引を使用しようとしても、いずれにせよ常にエラーが返されていました。annoyおよびusearchの索引がまだ存在する場合は、削除してください。#79802 (Robert Schulze). format_alter_commands_with_parenthesesサーバー設定を削除しました。この setting は 24.2 で導入され、デフォルトでは無効でした。25.2 ではデフォルトで有効になりました。新しいフォーマットをサポートしていない LTS バージョンは存在しないため、この setting は削除できます。#79970 (János Benjamin Antal).DeltaLakeストレージのdelta-kernel-rs実装をデフォルトで有効にしました。#79541 (Kseniia Sumarokova).URLからの読み取りで複数のリダイレクトが発生する場合、settingenable_url_encodingは chain 内のすべてのリダイレクトに対して正しく適用されるようになりました。#79563 (Shankar Iyer). また、settingenble_url_encodingのデフォルト値はfalseになりました。#80088 (Shankar Iyer).
新機能
- WHERE 句でスカラー相関サブクエリをサポートしました。#6697 を解決します。#79600 (Dmitry Novik)。単純なケースでは、射影リスト内の相関サブクエリもサポートしました。#79925 (Dmitry Novik)。#76078 (Dmitry Novik)。これにより、TPC-H テストスイートを 100% カバーするようになりました。
- ベクトル類似度索引を使用したベクトル検索が、これまでのExperimentalからベータになりました。 #80164 (Robert Schulze).
ParquetフォーマットでGeo型をサポートしました。これで #75317 をクローズしました。#79777 (scanhex12).- 「スパースN-gram」を計算する新しい関数
sparseGrams、sparseGramsHashes、sparseGramsHashesUTF8、sparseGramsUTF8が追加されました。これは、索引作成や検索向けに部分文字列を抽出する堅牢なアルゴリズムです。#79517 (scanhex12). clickhouse-local(およびその短縮エイリアスであるch) は、処理する入力データがある場合に、暗黙的にFROM tableを使用するようになりました。これにより #65023 が解決されます。また、--input-formatが指定されておらず、通常のファイルを処理する場合は、clickhouse-local でフォーマット推論も有効になりました。#79085 (Alexey Milovidov).- ランダムまたは暗号化されている可能性のあるデータを検索するための
stringBytesUniq関数とstringBytesEntropy関数を追加しました。#79350 (Sachin Kumar Singh). - base32 のエンコードおよびデコードを行う関数を追加しました。#79809 (Joanna Hulboj).
getServerSettingおよびgetMergeTreeSetting関数を追加。#78318 をクローズ。#78439 (NamNguyenHoai)。version-hint.textファイルを利用するための新しいiceberg_enable_version_hint設定を追加しました。 #78594 (Arnaud Briche).- データベース内の特定のテーブルを、
LIKEキーワードで絞り込んでTRUNCATEできるようになりました。#78597 (Yarik Briukhovetskyi) 。 MergeTreeファミリーのテーブルで、仮想カラム_part_starting_offsetをサポートしました。このカラムは、現在のパーツリストに基づいてクエリ時に計算される、それ以前のすべてのパーツの累積行数を表します。累積値はクエリ実行全体を通して保持され、パーツ剪枝後も引き続き有効です。この動作をサポートするため、関連する内部ロジックもリファクタリングされました。#79417 (Amos Bird).- 右引数がゼロのときに NULL を返す関数
divideOrNull,moduloOrNull,intDivOrNull,positiveModuloOrNullを追加しました。#78276 (kevinyhzou). - ClickHouse のベクトル検索で pre-filtering と post-filtering の両方がサポートされ、よりきめ細かく制御するための関連設定も追加されました。 (issue #78161) 。#79854 (Shankar Iyer) 。
icebergHashおよびicebergBucket関数を追加しました。bucket transfomでパーティション化されたIcebergテーブルにおけるデータファイルのプルーニングをサポートしました。#79262 (Daniil Ivanik).
実験的機能
- 新しい
Time/Time64データ型:Time(HHH:MM:SS) とTime64(HHH:MM:SS.<fractional>) に加え、基本的な CAST 関数や、他のデータ型と連携するための関数が追加されました。また、CAST 関数でtoTime関数が必要になったため、既存の関数名toTimeはtoTimeWithFixedDateに変更されました。#75735 (Yarik Briukhovetskyi). 72459). - Iceberg データレイク向けの Hive metastore カタログ。#77677 (scanhex12).
full_text型の索引はginに名称変更されました。これは、PostgreSQL やその他のデータベースでより一般的な用語に合わせたものです。既存のfull_text型の索引も引き続き読み込めますが、検索で使用しようとすると例外を送出し (代わりにgin索引を使うよう案内されます) 。#79024 (Robert Schulze).
パフォーマンスの改善
- 個々のサブカラムを読み取れるよう、各サブストリームのマークを保存するように compact パーツのフォーマットを変更しました。従来の Compact フォーマットも引き続き読み取りには対応しており、MergeTree setting
write_marks_for_substreams_in_compact_partsを使用すれば書き込みにも有効化できます。これは compact パーツの保存形式を変更するため、より安全にアップグレードできるようデフォルトでは無効になっています。今後のいずれかの release では、デフォルトで有効になる予定です。#77940 (Pavel Kruglov). - サブカラムを含む条件を PREWHERE に移動できるようにしました。#79489 (Pavel Kruglov).
- 複数のグラニュールに対して式を一度に評価することで、セカンダリ索引を高速化しました。#64109 (Alexey Milovidov) 。
- デフォルトで
compile_expressions(通常の式の断片向けのJITコンパイラ) を有効にしました。これにより、#51264、#56386、および #66486 が解決されます。#79907 (Alexey Milovidov) 。 - 新しい設定
use_skip_indexes_in_final_exact_modeが導入されました。ReplacingMergeTreeテーブルに対するクエリに FINAL 句がある場合、スキップ索引に基づいてテーブルの範囲だけを読み取ると、誤った結果になる可能性があります。この設定を有効にすると、スキップ索引が返す主キー範囲と重なる新しいパーツもスキャンすることで、正しい結果を返せます。0 で無効、1 で有効です。#78350 (Shankar Iyer). - オブジェクトストレージのクラスターテーブル関数 (例:
s3Cluster) では、cache の局所性を向上させるため、読み取り時のファイルがコンシステントハッシュに基づいてレプリカに割り当てられるようになりました。#77326 (Andrej Hoos) 。 S3Queue/AzureQueueでINSERTデータを並列化できるようになり、パフォーマンスが向上しました (parallel_inserts=truequeue setting で有効化できます) 。従来の S3Queue/AzureQueue では、パイプラインの前半部分 (ダウンロード、パース) のみ並列実行可能で、INSERTは単一スレッドでした。しかも、INSERTはほぼ常にボトルネックになります。これにより、processing_threads_numに対してほぼ線形にスケールするようになりました。#77671 (Azat Khuzhin). S3Queue/AzureQueue における max_processed_files_before_commit の公平性も向上しました。#79363 (Azat 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).- trivial count 最適化により、クエリを高速化しました。#79945 (Raúl Marín) 。
Decimalを使用する一部の演算のインライン化が改善されました。#79999 (Konstantin Bogdanov) 。input_format_parquet_bloom_filter_push_downのデフォルト値を true にしました。あわせて、設定変更履歴の誤りも修正しました。#80058 (Alexey Milovidov).- すべての行を削除する必要があるパーツに対する
ALTER ... DELETEミューテーションを最適化しました。これにより、このような場合はミューテーションを実行せず、元のパーツの代わりに空のパーツが作成されるようになりました。 #79307 (Anton Popov). - 可能な場合、compact パーツへの挿入時に block の余分なコピーを回避。#79536 (Pavel Kruglov) 。
- 入力フォーマットで作成されるブロックのサイズをバイト単位で制限する設定
input_format_max_block_size_bytesを追加しました。これにより、行に大きな値が含まれる場合でも、データのインポート時にメモリ使用量が過大になるのを防ぐのに役立ちます。#79495 (Pavel Kruglov). - スレッドおよび async_socket_for_remote/use_hedge_requests のガードページを削除しました。
FiberStackの割り当て方式をmmapからaligned_allocに変更しました。VMAs が分割され、高負荷時に vm.max_map_count の上限に達する可能性があるためです。#79147 (Sema Checherinda). - 並列レプリカでの遅延マテリアライゼーション。 #79401 (Igor Nikonov).
改善点
- 論理削除をオンザフライで適用できる機能が追加されました (設定
lightweight_deletes_sync = 0、apply_mutations_on_fly = 1) 。#79281 (Anton Popov) 。 - Pretty フォーマットのデータがターミナルに表示されていて、後続の block のカラム幅が同じ場合は、カーソルを上に移動して前の block に貼り合わせることで、前の block から続けて表示できます。これにより #79333 が修正されます。この機能は新しい設定
output_format_pretty_glue_chunksで制御されます。#79339 (Alexey Milovidov). isIPAddressInRange関数が、String、IPv4、IPv6、Nullable(String)、Nullable(IPv4)、およびNullable(IPv6)の各データ型に対応するよう拡張されました。#78364 (YjyJeff)。PostgreSQLengine の接続プーラー設定を動的に変更できるようにしました。#78414 (Samay Sharma) 。- 通常のプロジェクションで
_part_offsetを指定できるようになりました。これは、プロジェクション索引を構築するための最初の一歩です。#58224 と併用でき、#63207 の改善にも役立つ可能性があります。#78429 (Amos Bird). system.named_collectionsに新しいカラム (create_queryとsource) を追加しました。#78179 を解決します。#78582 (MikhailBurdukov) 。- システムテーブル
system.query_condition_cacheに、新しいフィールドconditionを追加しました。これは、query condition cache でキーとして使用されるハッシュの元となる平文の条件を格納します。#78671 (Robert Schulze). - ベクトル類似度索引を
BFloat16カラム上にも作成できるようになりました。#78850 (Robert Schulze). - 小数部を含む Unix タイムスタンプを、best effort の
DateTime64パースでサポートしました。#78908 (Pavel Kruglov) 。 - storage
DeltaLakeの delta-kernel 実装において、カラムマッピングモードを修正し、スキーマ進化のテストを追加しました。#78921 (Kseniia Sumarokova). - 値の変換を改善し、
ValuesフォーマットでのVariantカラムへの挿入を改善しました。#78923 (Pavel Kruglov) 。 tokens関数が拡張され、新たに “トークナイザー” 引数に加えて、トークナイザー固有の追加引数も受け付けるようになりました。#79001 (Elmi Ahmadov) 。SHOW CLUSTERステートメントの引数内で、マクロ (存在する場合) が展開されるようになりました。#79006 (arf42).- ハッシュ関数で、配列、タプル、マップ内の
NULLがサポートされるようになりました。 (issue #48365 および #48623) 。#79008 (Michael Kolupaev) 。 - cctz を 2025a に更新しました。 #79043 (Raúl Marín).
- UDFs のデフォルトの stderr 処理を “log_last” に変更しました。これにより使い勝手が向上します。 #79066 (Alexey Milovidov).
- Web UIでタブを元に戻せるようにしました。これで #71284 をクローズします。#79084 (Alexey Milovidov).
recoverLostReplica実行時に、https://github.com/ClickHouse/ClickHouse/pull/78637 と同様に設定を削除しました。#79113 (Nikita Mikhaylov).- Parquet 索引のプルーニングを分析するため、プロファイルイベント
ParquetReadRowGroupsとParquetPrunedRowGroupsを追加しました。#79180 (flynn). - クラスター内のデータベースに対する
ALTERをサポートしました。#79242 (Tuan Pham Anh). - QueryMetricLog の統計情報収集で取りこぼした実行回を明示的にスキップするようにしました。そうしないと、ログが現在時刻に追いつくまでに長時間かかります。#79257 (Mikhail Artemenko).
Arrowベースのフォーマット読み取りに関する小規模な最適化。 #79308 (Bharat Nallan).- 設定
allow_archive_path_syntaxは、誤って実験的としてマークされていました。実験的な設定がデフォルトで有効にならないようにするためのテストを追加しました。#79320 (Alexey Milovidov). - ページキャッシュの設定をクエリ単位で調整できるようにしました。これにより、より迅速に検証できるほか、高スループットかつ低レイテンシのクエリ向けに細かくチューニングできるようになります。 #79337 (Alexey Milovidov).
- 64ビットハッシュの大半のように見える数値については、Prettyフォーマットで数値のヒントを表示しないようにしました。これにより #79334 をクローズします。 #79338 (Alexey 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ブロブストレージからブロブを列挙する際に発生する可能性のある無限ループを修正しました。#79425 (Alexander Gololobov).
- ファイルシステムキャッシュに設定
max_size_ratio_to_total_spaceを追加しました。 #79460 (Kseniia Sumarokova). clickhouse-benchmarkで、reconnectオプションを再設定し、再接続時の値として 0、1、または N を受け取れるようにしました。#79465 (Sachin Kumar Singh).- 異なる
plain_rewritableディスク上にあるテーブルに対するALTER TABLE ... MOVE|REPLACE PARTITIONを許可しました。 #79566 (Julia Kartseva). - 参照ベクトルの型が
Array(BFloat16)の場合でも、ベクトル類似度索引が使われるようになりました。#79745 (Shankar Iyer). - system.error_logテーブルにlast_error_message、last_error_trace、およびquery_idを追加。関連チケット #75816。#79836 (Andrei Tinikov) 。
- デフォルトでクラッシュレポートを送信するようにしました。これはサーバーの設定ファイルで無効にできます。 #79838 (Alexey Milovidov).
- システムテーブル
system.functionsに、各関数が最初に導入された ClickHouse のバージョンが表示されるようになりました。#79839 (Robert Schulze) 。 access_control_improvements.enable_user_name_access_type設定が追加されました。この設定により、https://github.com/ClickHouse/ClickHouse/pull/72246 で導入された、ユーザー/ロールに対するきめ細かな権限付与を有効または無効にできます。25.1 より前のレプリカを含むクラスターがある場合は、この設定をオフにすることを検討してください。#79842 (pufit).ASTSelectWithUnionQuery::clone()メソッドが適切に実装され、is_normalizedフィールドも考慮されるようになりました。これにより、#77569 の解決に役立つ可能性があります。#79909 (Nikita Mikhaylov).EXCEPT演算子を含む一部のクエリで、フォーマットが一貫しない問題を修正しました。EXCEPT演算子の左辺が*で終わる場合、フォーマット後のクエリでは括弧が失われ、その結果EXCEPT修飾子付きの*として解析されます。これらのクエリは fuzzer によって見つかったもので、実際に遭遇する可能性は低いと考えられます。これにより #79950 をクローズします。#79952 (Alexey Milovidov).- バリアントのデシリアライズ順序のキャッシュを使用して、
JSON型のパースをわずかに改善しました。 #79984 (Pavel Kruglov). - 設定項目
s3_slow_all_threads_after_network_errorを追加しました。#80035 (Vitaly Baranov) 。 - マージ対象として選択されたパーツに関するログレベルが誤っていました (Information) 。#80061 をクローズします。#80062 (Alexey 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 は、それにストリーミングする Kafka テーブルより後に起動してしまうなど、起動が遅すぎることがあります。#72123 (Ilya Golshtein) 。
- アナライザ有効時の
VIEW作成におけるSELECTクエリの書き換えを修正しました。#75956 をクローズしました。#76356 (Dmitry Novik). - サーバー側から (
apply_settings_from_server経由で)async_insertを適用する際の不具合を修正しました (以前はクライアントでUnknown packet 11 from serverエラーが発生していました) 。 #77578 (Azat Khuzhin). - 新たに追加されたレプリカで Replicated database のリフレッシャブルmaterialized view が動作しない不具合を修正しました。#77774 (Michael Kolupaev).
- リフレッシャブルmaterialized viewによってバックアップが壊れる問題を修正しました。#77893 (Michael Kolupaev) 。
transformにおける古い firing に関する論理エラーを修正しました。#78247 (Yarik Briukhovetskyi) 。- アナライザでセカンダリ索引が適用されないことがあったいくつかのケースを修正しました。#65607、#69373 を修正。#78485 (Nikolai Kochetov).
- 圧縮有効時の HTTP プロトコルにおけるプロファイルイベント (
NetworkSendElapsedMicroseconds/NetworkSendBytes) のダンプを修正しました (誤差はバッファサイズ、通常は約 1MiB を超えないはずです) 。#78516 (Azat Khuzhin) 。 - JOIN … USING に ALIAS カラムが含まれるとアナライザが LOGICAL_ERROR を生成していた問題を修正し、適切なエラーを生成するようにしました。 #78618 (Yakov Olkhovskiy).
- アナライザを修正: SELECT に位置引数が含まれている場合に CREATE VIEW … ON CLUSTER が失敗する問題を修正しました。#78663 (Yakov Olkhovskiy).
SELECTにスカラーサブクエリがある場合に、スキーマ推論を使用する table function へのINSERT SELECTで発生するBlock structure mismatchエラーを修正しました。#78677 (Pervakov Grigorii) 。- アナライザを修正: 分散テーブルに対する SELECT クエリで prefer_global_in_and_join=1 の場合、
in関数がglobalInに置き換えられるようにしました。 #78749 (Yakov Olkhovskiy). MongoDBengine またはmongodbtable function を使用するテーブルを読み取る数種類のSELECTクエリを修正しました。これには、WHERE句での定数値の暗黙的な変換を伴うクエリ (例:WHERE datetime = '2025-03-10 00:00:00') や、LIMITとGROUP BYを含むクエリが含まれます。従来は、これらのクエリが誤った結果を返すことがありました。#78777 (Anton Popov).- 異なるJSON型間の変換を修正しました。現在は、String への変換と String からの変換を経由する単純なキャストで行われます。効率はやや落ちますが、100% 正確です。#78807 (Pavel Kruglov) 。
- Dynamic型からIntervalへの変換時に発生する論理エラーを修正しました。#78813 (Pavel Kruglov) 。
- JSONのパースエラー時にカラムのロールバックが正しく行われるよう修正しました。 #78836 (Pavel Kruglov).
- 定数のエイリアスカラムを使用して join する際の’bad cast’エラーを修正しました。#78848 (Vladimir Cherkasov).
- view とターゲットテーブルで型が異なるカラムに対する materialized view での prewhere を許可しないようにしました。#78889 (Pavel Kruglov).
- 不正なバイナリデータの Variant カラムのパース中に発生する論理エラーを修正しました。 #78982 (Pavel Kruglov).
- Parquet のバッチサイズが 0 に設定されている場合に例外をスローするようにしました。以前は、output_format_parquet_batch_size = 0 のとき ClickHouse がハングしていましたが、この動作は修正されました。#78991 (daryawessely).
- compact パーツにおける basic フォーマットでの Variant の判別子のデシリアライゼーションを修正しました。この問題は https://github.com/ClickHouse/ClickHouse/pull/55518 で導入されました。#79000 (Pavel Kruglov) 。
complex_key_ssd_cache型の Dictionaries では、block_sizeおよびwrite_buffer_sizeparameter に 0 または負の値を指定できなくなりました (issue #78314) 。 #79028 (Elmi Ahmadov).- SummingMergeTree では、非集計カラムに Field を使用しないでください。SummingMergeTree で使用される Dynamic/Variant 型で、予期しないエラーが発生するおそれがあります。#79051 (Pavel Kruglov).
- アナライザで、Distributed の宛先テーブルを持ち、ヘッダーが異なる materialized view からの読み取りを修正しました。 #79059 (Pavel Kruglov).
arrayUnion()が、バッチ insert が行われたテーブルで余分な (誤った) 値を返していた不具合を修正しました。#75057 を修正。#79079 (Peter Nguyen) 。OpenSSLInitializerのセグメンテーション違反を修正しました。#79092 をクローズします。#79097 (Konstantin Bogdanov).- S3 ListObject で常にプレフィックスを設定するようにしました。 #79114 (Azat Khuzhin).
- バッチ挿入が行われたテーブルで、arrayUnion() が余分な (誤った) 値を返す不具合を修正しました。#79157。#79158 (Peter Nguyen) 。
- フィルタプッシュダウン後の論理エラーを修正しました。#79164 (Pervakov Grigorii) 。
- HTTP ベースのエンドポイントで delta-kernel 実装を使用する際の Delta Lake table engine を修正し、NOSIGN も修正しました。#78124 をクローズしました。#79203 (Kseniia Sumarokova) 。
- Keeper の修正: 失敗した multi リクエストでウォッチがトリガーされないように修正しました。#79247 (Antonio Andelic) 。
INでの Dynamic 型および JSON 型の使用を禁止しました。現在のINの実装では、誤った結果を返す可能性があります。これらの型をINで適切にサポートするのは複雑であり、今後対応される可能性があります。#79282 (Pavel Kruglov).- JSON typeのパース時に重複パスをチェックする処理を修正しました。 #79317 (Pavel Kruglov).
- SecureStreamSocket 接続の問題を修正しました。 #79383 (Konstantin Bogdanov).
- データを含む plain_rewritable ディスクの読み込みの不具合を修正しました。#79439 (Julia Kartseva) 。
- MergeTree の Wide パーツにおける動的なサブカラム検出時のクラッシュを修正しました。 #79466 (Pavel Kruglov).
- テーブル名の長さの検証は、初回の CREATE クエリに対してのみ行います。後方互換性の問題を避けるため、2回目以降の 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_requestsとallow_experimental_parallel_reading_from_replicasの両方が無効になっている場合に結果が重複する不具合を修正しました。#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).
- プロジェクションに至るまでクエリ実行でどのカラムも使用されない場合に、遅延マテリアライゼーションで発生する 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 を修正しました。#79942 (Nikolai Kochetov).
- UNION を含む materialized view が、新しいレプリカでも正しく動作するようになりました。#80037 (Samay Sharma) 。
- SQL 関数
parseDateTimeのフォーマット指定子%eが、従来は空白埋め (例:3) が必要だった 1 桁の日 (例:3) も認識するようになりました。これにより、動作が MySQL と互換になります。従来の動作を維持するには、settingparsedatetime_e_requires_space_padding = 1を設定してください。 (issue #78243) 。#80057 (Robert Schulze). - ClickHouse のログに出力される警告
Cannot find 'kernel' in '[...]/memory.stat'を修正しました (issue #77410) 。#80129 (Robert 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).
AggregatingSortedAlgorithmとSummingSortedAlgorithmのデータメンバーの破棄順序を修正しました。#79056 (Nikita Taranov) 。enable_user_name_access_typeはDEFINERのアクセス種別に影響を与えてはなりません。#80026 (pufit).- system データベースのメタデータが Keeper に置かれている場合、system データベースへのクエリがハングすることがあります。 #79304 (Mikhail Artemenko).
ビルド/テスト/パッケージングの改善
- 常に再ビルドするのではなく、ビルド済みの
chcacheバイナリを再利用できるようにしました。 #78851 (János Benjamin Antal). - NATS の一時停止の待機処理を追加しました。 #78987 (Dmitry Novikov).
- ARM ビルドが amd64compat として誤って公開される問題を修正しました。 #79122 (Alexander Gololobov).
- OpenSSL で事前生成済みのアセンブリを使用するようにしました。 #79386 (Konstantin Bogdanov).
clang20でビルドできるようにするための修正を行いました。 #79588 (Konstantin Bogdanov).chcache: Rust のキャッシュ対応。 #78691 (Konstantin Bogdanov).zstdのアセンブリファイルにアンワインド情報を追加しました。 #79288 (Michael Kolupaev).
ClickHouseリリース 25.4 (2025-04-22)
後方互換性を持たない変更
allow_materialized_view_with_bad_selectがfalseの場合、materialized view 内のすべてのカラムがターゲットテーブルと一致しているかを確認するようにしました。#74481 (Christoph Wurm).dateTruncを負の Date/DateTime 引数とともに使用した場合の不具合を修正しました。#77622 (Yarik Briukhovetskyi).- 旧式の
MongoDBインテグレーションを削除しました。サーバー設定use_legacy_mongodb_integrationは廃止され、現在は何も行いません。#77895 (Robert Schulze). SummingMergeTreeの検証を強化し、パーティションキーまたはソートキーに使用されるカラムは集約対象から除外するようにしました。#78022 (Pervakov Grigorii).
新機能
- ワークロード向けの CPU slot スケジューリングを追加しました。詳細はドキュメントを参照してください。#77595 (Sergei Trifonov)。
clickhouse-localは、--pathコマンドライン引数を指定すると、再起動後もデータベースを保持するようになりました。これにより #50647 と #49947 が解決されます。#71722 (Alexey Milovidov)。- サーバーが過負荷のときはクエリを拒否します。判定は、待機時間 (
OSCPUWaitMicroseconds) と使用時間 (OSCPUVirtualTimeMicroseconds) の比率に基づいて行われます。この比率がmin_os_cpu_wait_time_ratio_to_throwとmax_os_cpu_wait_time_ratio_to_throwの間にある場合、クエリは一定の確率で破棄されます (これらはクエリレベルの設定です) 。 #63206 (Alexey Katsman). Icebergのタイムトラベル: 特定のタイムスタンプ時点のIcebergテーブルをクエリできる設定を追加しました。#71072 (Brett Hoerner)。#77439 (Daniil Ivanik)。- クエリを高速化するためにマニフェストファイル/リストと
metadata.jsonを保存する、Icebergメタデータ向けのインメモリ cache。 #77156 (Han Fei). - Azure Blob Storage向けの
DeltaLakeテーブルエンジンのサポートを追加。 #68043を修正。 #74541 (Smita Kulkarni). - 逆シリアル化済みのベクトル類似度索引用インメモリcacheを追加しました。これにより、繰り返し実行される近似最近傍 (ANN) 検索クエリが高速化されるはずです。新しいcacheのサイズは、サーバー設定
vector_similarity_index_cache_sizeおよびvector_similarity_index_cache_max_entriesで制御されます。この機能は、以前のリリースのスキッピング索引cache機能に代わるものです。#77905 (Shankar Iyer) 。 - Delta Lakeでパーティションプルーニングをサポートしました。 #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設定と認証情報用のテーブル設定を追加しました。これにより、設定ファイルや named collections を使わずに、Kafka および Kafka 互換システム向けの SASL ベース認証を CREATE TABLE 文で直接設定できるようになりました。#78810 (Christoph Wurm).- MergeTree テーブルで
default_compression_codecを設定できるようになりました。指定されたカラムに対して CREATE クエリで明示的に定義されていない場合、この設定が使用されます。これにより #42005 がクローズされます。#66394 (gvoelfin). - ClickHouse が分散接続に特定のネットワークを使用できるよう、クラスター設定に
bind_host設定を追加しました。#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) 。 - 関数
arrayLevenshteinDistance、arrayLevenshteinDistanceWeighted、およびarraySimilarityが追加されました。 #77187 (Mikhail f. Shiryaev) 。 - 設定
parallel_distributed_insert_selectは、ReplicatedMergeTreeへのINSERT SELECTにも適用されるようになりました (以前は Distribued テーブルが必要でした) 。#78041 (Igor Nikonov) 。 toInterval関数を導入しました。この関数は 2 つの引数 (value と unit) を受け取り、値を特定のInterval型に変換します。#78723 (Andrew Davis).- Iceberg テーブル関数およびエンジンで、ルートの
metadata.jsonファイルを解決するための便利な方法をいくつか追加しました。#78455 をクローズ。#78475 (Daniil Ivanik) 。 - ClickHouse の SSH プロトコルで、パスワードベースの認証をサポート。 #78586 (Nikita Mikhaylov).
実験的機能
WHERE句のEXISTS式の引数として、相関サブクエリをサポートしました。#72459 をクローズしました。#76078 (Dmitry Novik)。- ASCII 版および UTF8 版の関数
sparseGramsとsparseGramsHashesを追加しました。著者: scanhex12。#78176 (Pervakov Grigorii)。使用しないでください。実装は今後のバージョンで変更される予定です。
パフォーマンスの改善
- ORDER BY と LIMIT の適用後にデータを読み込む遅延カラムにより、パフォーマンスを最適化しました。 #55518 (Xiaozhe Yu).
- query condition cache がデフォルトで有効になりました。#79080 (Alexey Milovidov) 。
col->insertFrom()の呼び出しをデバーチャライズすることで、JOIN 結果の構築を高速化しました。#77350 (Alexander Gololobov) 。- 可能な場合、filter クエリプランのステップにある等価条件を JOIN 条件にマージし、それらをハッシュテーブルのキーとして使用できるようにしました。 #78877 (Dmitry Novik).
- 両方のパーツで JOIN キーが PK のプレフィックスである場合、JOIN に動的分片化を使用するようにしました。この最適化は
query_plan_join_shard_by_pk_ranges設定で有効にできます (デフォルトでは無効) 。#74733 (Nikolai Kochetov) 。 - カラムの下限値および上限値に基づく
Icebergデータのプルーニングに対応しました。#77638 を修正しました。#78242 (alesapin)。 Iceberg向けに単純な件数カウント最適化を実装しました。これにより、フィルタのないcount()クエリはより高速になります。#77639 をクローズしました。#78090 (alesapin).max_merge_delayed_streams_for_parallel_writeを使用して、マージ時に並列で flush できるカラム数を設定できるようになりました (これにより、S3 への垂直マージにおけるメモリ使用量が約 25 分の 1 に削減される見込みです) 。 #77922 (Azat Khuzhin).- cache がマージなどで受動的に使われる場合は、
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 (李扬) 。- 同じ part の marks をマージして query condition cache に一括で書き込み、ロックの使用を減らします。 #77377 (zhongyuankai).
- 1 つのブラケット展開を含むクエリ向けに、
s3Clusterのパフォーマンスを最適化しました。#77686 (Tomáš Hromada) 。 - 単一の Nullable または LowCardinality カラムに対する ORDER BY を最適化しました。#77789 (李扬).
Nativeフォーマットのメモリ使用量を最適化しました。#78442 (Azat Khuzhin) 。- 軽微な最適化: 型キャストが必要な場合、
count(if(...))をcountIfに書き換えないようにしました。#78564 をクローズ。#78565 (李扬). hasAll関数で、tokenbf_v1、ngrambf_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スキーマのビューも導入します。transposed_with_wide_viewでは、ビューでサブ秒精度はサポートされず、event_time_microsecondsは後方互換性のための単なる alias です。#78412 (alesapin).
改善
Distributedクエリ向けのクエリプランをシリアライズします。新しい設定serialize_query_planが追加されました。有効にすると、Distributedテーブルからのクエリでは、リモートでのクエリ実行にシリアライズされたクエリプランが使用されます。これに伴い、TCP プロトコルに新しいパケット型が導入されます。このパケットの処理を許可するには、サーバー設定に<process_query_plan_packet>true</process_query_plan_packet>を追加する必要があります。#69652 (Nikolai Kochetov).- ビューから
JSON型およびサブカラムを読み取れるようになりました。#76903 (Pavel Kruglov). - ALTER DATABASE … ON CLUSTER に対応しました。#79242 (Tuan Pham Anh) 。
- リフレッシャブルmaterialized view のリフレッシュ処理が
system.query_logに記録されるようになりました。#71333 (Michael Kolupaev) 。 - ユーザー定義関数 (UDFs) は、設定内の新しい設定により、決定論的としてマークできるようになりました。また、クエリ cache は、クエリ内で呼び出される UDFs が決定論的かどうかを確認するようになりました。決定論的な場合は、クエリ結果がキャッシュされます。 (Issue #59988) 。#77769 (Jimmy Aguilar Mena) 。
- あらゆる種類のレプリケーションタスクに対してバックオフロジックを有効化しました。これにより、CPU 使用率、メモリ使用量、ログファイルのサイズを削減できます。
max_postpone_time_for_failed_replicated_fetches_ms、max_postpone_time_for_failed_replicated_merges_ms、max_postpone_time_for_failed_replicated_tasks_msという新しい設定を追加しました。これらはmax_postpone_time_for_failed_mutations_msと同様です。#74576 (MikhailBurdukov). system.errorsにquery_idを追加しました。#75815 をクローズしました。#76581 (Vladimir Baikov).UInt128をIPv6に変換するサポートを追加しました。これにより、IPv6に対するbitAnd演算や算術演算が可能になり、その結果をIPv6に再変換できるようになります。#76752 をクローズしました。これにより、IPv6に対するbitAnd演算の結果もIPv6に再変換できるようになりました。関連項目: #57707。#76928 (Muzammil 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).multi読み取りおよび書き込みリクエストの件数に関する profile events を追加しました。#77888 (JackyWoo) 。disable_insertion_and_mutationが有効な場合でも、一時テーブルの作成と insert を許可するようにしました。#77901 (Xu Jia).max_insert_delayed_streams_for_parallel_writeの値を 100 に引き下げました。#77919 (Azat Khuzhin) 。yyyのような Joda syntax での年のパースを修正しました (ちなみに、これは Java の世界のものです) 。 #77973 (李扬).MergeTreeテーブルのパーツのアタッチは、ブロック順に実行されるようになりました。これは、ReplacingMergeTreeなどの特殊なマージアルゴリズムにとって重要です。これにより #71009 が解決されました。#77976 (Alexey Milovidov).- クエリマスキングルールで、マッチした場合に
LOGICAL_ERRORを発生させられるようになりました。これにより、あらかじめ定義されたパスワードがログ内のどこかに漏洩していないか確認できるようになります。#78094 (Nikita Mikhaylov). - MySQL との互換性向上のため、
information_schema.tablesにカラムindex_length_columnを追加しました。 #78119 (Paweł Zakrzewski) 。 - 2つの新しいメトリクス
TotalMergeFailuresとNonAbortedMergeFailuresを導入しました。これらのメトリクスは、短期間に多数のマージが失敗するケースを検出するために必要です。 #78150 (Miсhael Stetsyuk). - パススタイルでキーが指定されていない場合に、S3 URL が誤ってパースされる問題を修正しました。 #78185 (Arthur Passos).
BlockActiveTime、BlockDiscardTime、BlockWriteTime、BlockQueueTime、BlockReadTimeの非同期メトリクスで誤った値が報告される問題を修正しました (変更前は、1 秒が誤って 0.001 と報告されていました) 。#78211 (filimonov).- StorageS3(Azure)Queue の materialized view への push 中に発生したエラーに対して、
loading_retriesの制限が適用されるようになりました。これまでは、このようなエラーは無制限に再試行されていました。#78313 (Kseniia Sumarokova). - Delta Lake の
delta-kernel-rs実装で、パフォーマンスとプログレスバーを修正しました。#78368 (Kseniia Sumarokova) 。 - ランタイムディスクでの
include、from_env、from_zkをサポート。 #78177 をクローズ。 #78470 (Kseniia Sumarokova). - 長時間実行される mutation に対する動的な警告を
system.warningsテーブルに追加しました。#78658 (Bharat Nallan). - システムテーブル
system.query_condition_cacheにフィールドconditionを追加しました。ここには、query condition cache でキーとして使用されるハッシュの元となる平文の条件が格納されます。 #78671 (Robert Schulze) 。 - Hive パーティション化で空の値を許可。#78816 (Arthur Passos).
BFloat16に対するIN句の型変換を修正しました (つまり、SELECT toBFloat16(1) IN [1, 2, 3];は1を返すようになりました) 。#78754 をクローズしました。#78839 (Raufs 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 では、プロジェクションが使われる理由、または使われない理由を明確にするため、プロジェクション解析まわりのログもいくつか追加しています。#74498 (Amos Bird) 。 DETACH PART実行中に発生するPart <...> does not contain in snapshot of previous virtual parts. (PART_IS_TEMPORARILY_LOCKED)を修正しました。 #76039 (Aleksei Filatov).- アナライザにおいて、リテラルを含む式を使用したスキップ索引が動作しない問題を修正し、索引の解析中に自明な CAST を削除しました。#77229 (Pavel Kruglov).
close_sessionクエリパラメータが効かず、その結果、名前付きセッションがsession_timeout経過後にしか閉じられない不具合を修正しました。 #77336 (Alexey Katsman).- アタッチされたmaterialized viewがない場合に、NATSサーバーからメッセージを受信できない問題を修正しました。#77392 (Dmitry Novikov) 。
- 空の
FileLogをmergeテーブル関数経由で読み取る際の論理エラーを修正し、#75575 をクローズしました。#77441 (Vladimir Cherkasov). - shared variant 由来の
Dynamicシリアライゼーションで、デフォルトのフォーマット設定を使用する。 #77572 (Pavel Kruglov). - ローカルディスク上にテーブルのデータパスが存在するかどうかを確認する処理を修正しました。 #77608 (Tuan Pham Anh).
- 一部の型で、定数値をリモートに送信する際の不具合を修正しました。 #77634 (Pavel Kruglov).
- S3/AzureQueue において、期限切れの Context が原因で発生するクラッシュを修正しました。#77720 (Kseniia Sumarokova).
- RabbitMQ、Nats、Redis、AzureQueue テーブルエンジンで認証情報が非表示になるようにしました。#77755 (Kseniia Sumarokova) 。
argMin/argMaxにおけるNaNの比較の未定義動作を修正しました。#77756 (Raúl Marín) 。- 書き込むブロックが生成されない場合でも、マージやミューテーションがキャンセルされていないか定期的に確認するようにしました。#77766 (János Benjamin Antal) 。
- 新たに追加されたレプリカで Replicated database のリフレッシャブル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) 。#78069 (Shankar Iyer) 。
- “要求された出力フォーマット はバイナリです… それでも出力しますか? [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) 。- #77274 後に発生していた
Replicateddatabase でのテーブル数過多チェックを修正しました。あわせて、ReplicatedMergeTreeまたはKeeperMapの場合に Keeper に未計上のノードが作成されるのを防ぐため、ストレージ作成前にチェックを実行するようにしました。#78127 (Nikolay Degterinsky). - 同時実行時の
S3Queueメタデータ初期化に起因して発生する可能性があるクラッシュを修正しました。 #78131 (Azat Khuzhin). groupArray*関数は、max_size引数にInt型の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 の場合、リフレッシュ可能なマテリアライズドビューのタスクをスケジュールしないようにしました。タスクは挿入処理を伴うため、disable_insertion_and_mutationが true の場合は失敗します。#78277 (Xu Jia). Mergeエンジンの基になるテーブルへのアクセスを確認する。#78339 (Pervakov Grigorii) 。Distributedテーブルをクエリする際、FINAL修飾子が無視されることがあります。#78428 (Yakov Olkhovskiy).bitmapMinは、bitmap が空の場合は uint32_max を返し (入力型がより大きい場合は uint64_max) 、空の roaring_bitmap の最小値の挙動と一致します。#78444 (wxybear) 。distributed_aggregation_memory_efficientが有効な場合、FROM の読み取り直後におけるクエリ処理の並列化を無効にしました。これは論理エラーを引き起こす可能性がありました。#76934 をクローズします。#78500 (flynn) 。max_streams_to_max_threads_ratio設定の適用後に計画ストリーム数が 0 になる場合でも、読み取り用に少なくとも 1 つのストリームが設定されるようにしました。#78505 (Eduard Karacharov).- ストレージ
S3Queueで、論理エラー “Cannot unregister: table uuid is not registered” を修正しました。#78285 をクローズします。#78541 (Kseniia 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).- 名前付きセッションのクローズが予定された後 (ただしtimeoutの期限切れ前) に、同じ名前の新しい名前付きセッションを作成すると、最初のセッションのクローズ予定時刻にその新しいセッションまでクローズされてしまう問題を修正しました。#78698 (Alexey Katsman) 。
MongoDBengine またはmongodbtable function を持つテーブルから読み取る、いくつかの種類のSELECTクエリを修正しました。対象は、WHEREclause での定数値の暗黙的な変換を含むクエリ (例:WHERE datetime = '2025-03-10 00:00:00') や、LIMITとGROUP BYを含むクエリです。従来は、これらで誤った結果が返される可能性がありました。#78777 (Anton Popov).CHECK TABLE実行中でもテーブルのシャットダウンを妨げないようにしました。#78782 (Raúl Marín).- Keeper の修正: すべてのケースで ephemeral のカウントを修正しました。 #78799 (Antonio Andelic).
view以外のテーブル関数を使用した際にStorageDistributedで発生する不適切なキャストを修正しました。#78464 をクローズしました。#78828 (Konstantin Bogdanov).tupleElement(*, 1)のフォーマットの一貫性を修正しました。#78639 をクローズしました。#78832 (Konstantin Bogdanov) 。ssd_cache型の Dictionaries で、block_sizeおよびwrite_buffer_sizeパラメータに 0 または負の値を指定すると、受け付けられなくなりました (issue #78314) 。#78854 (Elmi Ahmadov) 。- 異常終了後に ALTER を実行した際、リフレッシャブルmaterialized view がクラッシュする不具合を修正しました。 #78858 (Azat Khuzhin).
CSVフォーマットでの不正なDateTime値のパースを修正しました。#78919 (Pavel Kruglov).- Keeper修正: 失敗したmultiリクエストでウォッチがトリガーされる問題を修正。#79247 (Antonio Andelic) 。
- min-max 値が明示的に指定されているにもかかわらず
NULLである場合に、Iceberg テーブルの読み取りが失敗する不具合を修正しました。Go の Iceberg ライブラリがこのようなひどいファイルを生成することが確認されました。#78740 をクローズしました。#78764 (flynn).
ビルド/テスト/パッケージングの改善
- Rust の CPU ターゲット機能を反映し、すべてのクレートで LTO を有効にしました。 #78590 (Raúl Marín).
ClickHouse リリース 25.3 LTS、2025-03-20
後方互換性を持たない変更
- ReplicatedデータベースのTRUNCATEを禁止しました。#76651 (Bharat Nallan) 。
- スキッピング索引のcacheは元に戻されました。#77447 (Nikita Mikhaylov) 。
新機能
JSONデータ型は本番環境で利用可能になりました。https://jsonbench.com/ を参照してください。DynamicおよびVariantデータ型は本番環境で利用可能になりました。#77785 (Alexey Milovidov).- clickhouse-serverにSSHプロトコルを導入しました。これにより、任意のSSHクライアントを使用してClickHouseに接続できるようになりました。これにより、#74340 がクローズされます。#74989 (George Gamezardashvili) 。
- 並列レプリカが有効な場合、テーブル関数を対応する -Cluster 版に置き換えるようにしました。#65024 を修正しました。#70659 (Konstantin Bogdanov).
- OS のページキャッシュに依存せず、プロセス内メモリにデータをキャッシュできる Userspace Page Cache の新しい実装が追加されました。これは、ローカルのファイルシステムキャッシュによる裏付けのないリモート仮想ファイルシステムにデータが保存されている場合に有用です。#70509 (Michael Kolupaev).
- 同時実行中のクエリ間で CPU slots の配分を制御する
concurrent_threads_schedulerserver setting を追加しました。round_robin(従来の動作) またはfair_round_robinに設定でき、INSERT と SELECT の間で CPU slots が不公平に配分される問題に対処します。#75949 (Sergei Trifonov) 。 estimateCompressionRatio集約関数が追加されました。#70801。#76661 (Tariq Almawash) 。- 関数
arraySymmetricDifferenceを追加しました。これは、複数の配列引数のうち、すべての引数に共通しては現れない要素をすべて返します。例:SELECT arraySymmetricDifference([1, 2], [2, 3])は[1, 3]を返します。(issue #61673). #76231 (Filipp Abapolov). - ストレージ/テーブル関数設定
iceberg_metadata_file_pathで、Iceberg が読み取るメタデータファイルを明示的に指定できるようになりました。#47412 を修正しました。#77318 (alesapin). - ブロックチェーン実装、特にEVMベースのシステムで一般的に使用される
keccak256ハッシュ関数を追加しました。 #76669 (Arnaud Briche). - 3つの新しい関数を追加しました。仕様 (https://iceberg.apache.org/spec/#truncate-transform-details) に準拠した
icebergTruncate、toYearNumSinceEpoch、toMonthNumSinceEpochです。Icebergengine のパーティションプルーニングでtruncatetransform をサポートしました。#77403 (alesapin). LowCardinality(Decimal)データ型のサポート #72256。 #72833 (zhanglistar)。FilterTransformPassedRowsとFilterTransformPassedBytesのプロファイルイベントでは、クエリ実行中にフィルタリングされた行数とバイト数が表示されます。#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 パス配下に新しい クラスター を自動的に検出し、登録できるようになりました。 #76001 (Anton Ivashkin). - 新しい設定
enable_replacing_merge_with_cleanup_for_min_age_to_force_mergeにより、設定可能なタイムアウト経過後にパーティション全体の自動クリーンアップマージを実行できるようになりました。 #76440 (Christoph Wurm).
パフォーマンス改善
- 繰り返し使われる条件を利用してクエリ性能を向上させるため、query condition cache を実装しました。条件を満たさないデータ範囲をメモリ上の一時的な索引として記憶し、後続のクエリでこの索引を利用します。Close #67768 #69236 (zhongyuankai).
- パーツ削除時に cache からデータを積極的に退避するようにしました。データ量が少ない場合に、cache が最大サイズまで肥大化しないようにします。 #76641 (Alexey Milovidov).
- 算術計算で Int256 と UInt256 を clang 組み込みの i256 に置き換え、性能を向上させました #70502。 #73658 (李扬).
- 一部のケース (例: 空の array column) では、データパーツに空のファイルが含まれることがあります。テーブルがメタデータストレージとオブジェクトストレージを分離したディスク上にある場合、そのようなファイルについては ObjectStorage に空のブロブを書き込まず、メタデータだけを保存できるようになりました。 #75860 (Alexander Gololobov).
- Decimal32/Decimal64/DateTime64 の min/max 性能を改善しました。 #76570 (李扬).
- クエリコンパイル (設定
compile_expressions) でマシンタイプを考慮するようになりました。これにより、この種のクエリが大幅に高速化されます。 #76753 (ZhangLiStar). arraySortを最適化しました。 #76850 (李扬).- マージなど、cache が受動的に使用される場合は
filesystem_cache_prefer_bigger_buffer_sizeを無効にしました。 #77898 (Kseniia Sumarokova). - コードの一部で
preserve_most属性を適用し、コード生成をわずかに改善しました。 #67778 (Nikita Taranov). - ClickHouse servers のシャットダウンを高速化しました (2.5 秒の遅延を解消) 。 #76550 (Azat Khuzhin).
- ReadBufferFromS3 とその他のリモート読み取りバッファで過剰なメモリ割り当てを回避し、メモリ消費を半減しました。 #76692 (Sema Checherinda).
- zstd を 1.5.5 から 1.5.7 に更新し、これにより一部の性能改善が期待できます。 #77137 (Pradeep Chhetri).
- wide パーツ内の JSON column の prefetch 時の memory usage を削減しました。これは、ClickHouse Cloud のように ClickHouse を共有ストレージ上で利用している場合に関連します。 #77640 (Pavel Kruglov).
改善
TRUNCATEをINTO OUTFILEとともに使用する際の rename のアトミックな実行をサポートしました。#70323 を解決します。#77181 (Onkar Deshpande).- 設定値として浮動小数点数に
NaNやinfを使うことはできなくなりました。もっとも、もともと意味のある使い方ではありませんでしたが。 #77546 (Yarik Briukhovetskyi). compatibility設定にかかわらず、アナライザが無効な場合、デフォルトで並列レプリカを無効にします。parallel_replicas_only_with_analyzerを明示的にfalseに設定すれば、この動作は引き続き変更できます。#77115 (Igor Nikonov).- クライアントリクエストのヘッダーから外部 HTTP 認証器に転送するヘッダーのリストを定義できるようになりました。#77054 (inv2004) 。
- タプルカラム内のフィールドに対して、カラム名の大文字・小文字を区別しない照合を尊重するようにしました。https://github.com/apache/incubator-gluten/issues/8324 をクローズしました。#73780 (李扬).
- codec Gorilla のパラメータは、今後は常に
.sqlファイル内のテーブルメタデータに保存されます。これにより、#70072 を解決します。#74814 (Nikita 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).
- バックアップ中に S3 へのマルチパートコピーが Access Denied で失敗した場合、適切なフォールバックを使用するようにしました。認証情報が異なるバケット間でバックアップを実行すると、マルチパートコピーで Access Denied エラーが発生することがあります。#76515 (Antonio Andelic).
- librdkafka (ひどい代物) をバージョン 2.8.0 (相変わらずひどいまま) にアップグレードし、Kafka テーブルのシャットダウンシーケンスを改善しました。これにより、テーブル削除時およびサーバー再起動時の遅延が軽減されます。
engine=Kafkaは、テーブル削除時にコンシューマグループを明示的に離脱しなくなりました。代わりに、コンシューマは非アクティブ状態がsession_timeout_ms(デフォルト: 45 秒) 続いた後に自動的に削除されるまで、グループに残ります。#76621 (filimonov). - S3 リクエスト設定の検証処理を修正しました。#76658 (Vitaly Baranov).
server_settingsやsettingsのようなシステムテーブルには、便利なdefault値カラムがあります。これをmerge_tree_settingsとreplicated_merge_tree_settingsにも追加しました。#76942 (Diego Nieto).CurrentMetrics::QueryPreemptedと同様のロジックを持つProfileEvents::QueryPreemptedを追加しました。#77015 (VicoWu).- これまで、Replicated データベースでは、クエリで指定された認証情報がログに出力される可能性がありました。この問題は修正されました。これにより次がクローズされます: #77123。 #77133 (Nikita Mikhaylov).
plain_rewritable diskでの ALTER TABLE DROP PARTITION を許可しました。#77138 (Julia Kartseva) 。- バックアップ/復元設定
allow_s3_native_copyで、次の 3 つの値がサポートされるようになりました: -False- s3 native copy は使用されません; -True(従来のデフォルト) - ClickHouse はまず s3 native copy を試行し、失敗した場合は読み取り+書き込み方式にフォールバックします; -'auto'(新しいデフォルト) - ClickHouse はまずソースと宛先の認証情報を比較します。同じ場合、ClickHouse は s3 native copy を試行し、その後、必要に応じて読み取り+書き込み方式にフォールバックすることがあります。異なる場合、ClickHouse は直接読み取り+書き込み方式を使用します。#77401 (Vitaly Baranov). - Delta Lake テーブルエンジンの Delta Kernel で、AWS のセッショントークンおよび環境認証情報の利用をサポートしました。 #77661 (Kseniia Sumarokova).
バグ修正 (公式の安定版リリースでユーザーに影響する不具合)
- 非同期 distributed INSERT で、保留中のバッチの処理中に (たとえば
No such file or directoryなどが原因で) 処理が止まってしまう不具合を修正。#72939 (Azat Khuzhin). - 暗黙的な Date から DateTime への変換に飽和動作を適用することで、索引解析時の日時変換を改善しました。これにより、DateTime の範囲制限に起因する索引解析の不正確さの可能性を解消します。これにより #73307 を修正しました。さらに、デフォルト値である
date_time_overflow_behavior = 'ignore'の場合の明示的なtoDateTime変換も修正しました。#73326 (Amos Bird). - UUID とテーブル名の競合に起因するさまざまなバグを修正しました (たとえば、
RENAMEとRESTART REPLICAの競合が解消されます。RENAMEとSYSTEM RESTART REPLICAが同時実行された場合、誤ったレプリカを再起動してしまったり、いずれかのテーブルがTable X is being restarted状態のままになったりする可能性がありました) 。#76308 (Azat Khuzhin). - 非同期 INSERT を有効にし、
insert into ... from file ...でブロックサイズが不均一な場合に発生していたデータ損失を修正しました。最初のブロックサイズが async_max_size より小さく、2 番目のブロックが async_max_size より大きい場合、2 番目のブロックは挿入されませんでした。これらのデータはsquashingに残ったままになっていました。#76343 (Han Fei). system.data_skipping_indicesのフィールド ‘marks’ を ‘marks_bytes’ にリネームしました。#76374 (Robert Schulze).- エビクション中の予期しないエラーに対する、動的なファイルシステムキャッシュのリサイズ処理を修正しました。#76466 (Kseniia Sumarokova).
- 並列ハッシュにおける
used_flagの初期化を修正しました。この問題により、server がクラッシュする可能性がありました。#76580 (Nikita Taranov). - プロジェクション内で
defaultProfiles関数を呼び出した際に発生する論理エラーを修正しました。#76627 (pufit). - Web UI でブラウザに対話式のベーシック認証を要求しないようにしました。#76319 をクローズしました。#76637 (Alexey Milovidov).
- 分散テーブルからブール値リテラルを選択する際に発生する THERE_IS_NO_COLUMN 例外を修正しました。#76656 (Yakov Olkhovskiy) 。
- テーブルディレクトリ内のサブパスの選択方法が、より適切なものになりました。#76681 (Daniil Ivanik) 。
- PK にサブカラムがあるテーブルを変更した後に発生するエラー
Not found column in blockを修正しました。https://github.com/ClickHouse/ClickHouse/pull/72644 の適用後は、https://github.com/ClickHouse/ClickHouse/pull/74403 も必要です。#76686 (Nikolai Kochetov). - NULL のショートサーキットのパフォーマンステストを追加し、不具合を修正しました。 #76708 (李扬).
- 最終処理の前に、出力書き込みバッファをフラッシュするようにしました。一部の出力フォーマット (例:
JSONEachRowWithProgressRowOutputFormat) の最終処理時に発生していたLOGICAL_ERRORを修正しました。#76726 (Antonio Andelic). - MongoDB のバイナリ UUID のサポートを追加しました (#74452) - table function の使用時に、MongoDB に対する WHERE プッシュダウンを修正しました (#72210) - MongoDB のバイナリ UUID を ClickHouse の UUID にのみ parse できるように、MongoDB - ClickHouse 間の型マッピングを変更しました。これにより、今後の曖昧さや予期しない挙動を回避できます。 - 後方互換性を維持したまま、OID マッピングを修正しました。#76762 (Kirill Nikiforov) 。
- JSONサブカラムのプレフィックスを並列デシリアライズする際の例外処理を修正しました。#76809 (Pavel Kruglov) 。
- 負の整数に対する
lgamma関数の挙動を修正しました。#76840 (Ilya Kataev) 。 - 明示的に定義された主キーに対する逆方向のキー解析を修正しました。#76654 と同様です。#76846 (Amos Bird) 。
- JSON フォーマットにおける Bool 値の整形表示を修正しました。#76905 (Pavel Kruglov) 。
- エラー発生時の非同期 INSERT で、不適切な JSON カラムのロールバックにより発生する可能性があるクラッシュを修正しました。#76908 (Pavel Kruglov) 。
- 以前は、
multiIfがプランニング時と本実行時で異なる型のカラムを返す場合がありました。その結果、C++ の観点では未定義動作となるコードが生成されることがありました。#76914 (Nikita Taranov). - MergeTree における定数 Nullable キーのシリアライゼーションの不具合を修正しました。これにより #76939 が修正されます。#76985 (Amos Bird).
BFloat16値のソートを修正しました。これにより #75487 がクローズされます。これにより #75669 がクローズされます。#77000 (Alexey Milovidov) 。- 一時的なサブカラムを part の整合性チェックでスキップするチェックを追加し、Variant サブカラムを含む JSON の不具合を修正しました。 #72187. #77034 (Smita Kulkarni).
- 型の不一致時に、Values format でのテンプレートのパース中に発生するクラッシュを修正しました。#77071 (Pavel Kruglov) 。
- 主キーに subcolumn を含む EmbeddedRocksDB テーブルは作成できないようにしました。以前はそのようなテーブルを作成できていましたが、SELECT クエリが失敗していました。 #77074 (Pavel Kruglov).
- リテラルの型が考慮されないため、述語をリモート側にプッシュダウンすると分散クエリで不正な比較が行われる問題を修正しました。#77093 (Duc Canh Le).
- 例外発生時にKafkaテーブルの作成中に発生するクラッシュを修正しました。#77121 (Pavel Kruglov).
- Kafka および RabbitMQ エンジンで JSON とサブカラムをサポート。 #77122 (Pavel Kruglov).
- MacOSでの例外のスタックアンワインドを修正しました。 #77126 (Eduard 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 要素を含む Tuple と String の比較を修正しました。たとえば、変更前は Tuple
(1, null)と String'(1,null)'を比較するとエラーが発生していました。別の例として、aが Nullable カラムである Tuple(1, a)と String'(1, 2)'の比較でも同様の問題がありました。この変更で、これらの問題に対処しています。 #77323 (Alexey Katsman). - ObjectStorageQueueSource で発生するクラッシュを修正しました。これは https://github.com/ClickHouse/ClickHouse/pull/76358 で導入されたものです。#77325 (Pavel Kruglov).
input使用時のasync_insertの問題を修正しました。#77340 (Azat Khuzhin) 。- 修正: ソート対象のカラムが planer によって削除されると、
WITH FILLが NOT_FOUND_COLUMN_IN_BLOCK で失敗することがあります。これと同様に、INTERPOLATE 式に対して計算される DAG の不整合に起因する問題もありました。 #77343 (Yakov Olkhovskiy). - 無効なASTノードにエイリアスを設定する際の複数のLOGICAL_ERRORを修正しました。#77445 (Raúl Marín) 。
- ファイルシステムキャッシュの実装で、ファイルセグメントの書き込み中に発生するエラー処理を修正しました。 #77471 (Kseniia Sumarokova).
- DatabaseIceberg が、カタログから提供される正しいメタデータファイルを使用するよう修正しました。#75187 をクローズしました。#77486 (Kseniia Sumarokova).
- クエリキャッシュは、UDFs を非決定論的とみなすようになりました。これに伴い、UDFs を含むクエリの結果はキャッシュされなくなりました。以前は、結果が誤ってキャッシュされる非決定論的な UDFs をユーザーが定義できていました (issue #77553) 。#77633 (Jimmy Aguilar Mena) 。
- 設定
enable_filesystem_cache_logが有効な場合にしか system.filesystem_cache_log が動作しない問題を修正しました。#77650 (Kseniia Sumarokova). - プロジェクション内で
defaultRoles関数を呼び出した際の論理エラーを修正しました。#76627 のフォローアップです。#77667 (pufit)。 - 関数
arrayResizeの第2引数にNullable型を指定することは、現在では許可されていません。以前は、第2引数にNullableを指定すると、エラーが発生したり誤った結果になったりする可能性がありました。 (issue #48398) 。#77724 (Manish Gill) 。 - 処理で書き込むブロックが生成されない場合でも、マージおよびミューテーションがキャンセルされたかどうかを定期的に確認するようにしました。 #77766 (János Benjamin Antal).
ビルド/テスト/パッケージングの改善
clickhouse-odbc-bridgeとclickhouse-library-bridgeは、別リポジトリ https://github.com/ClickHouse/odbc-bridge/ に移動しました。 #76225 (Alexey Milovidov).- Rust のクロスコンパイルを修正し、Rust を完全に無効にできるようにしました。 #76921 (Raúl Marín).
ClickHouse リリース 25.2 (2025-02-27)
後方互換性を持たない変更
async_load_databasesをデフォルトで完全に有効化しました (config.xmlを更新しないインストールも含みます) 。 #74772 (Azat Khuzhin).JSONCompactEachRowWithProgressおよびJSONCompactStringsEachRowWithProgressフォーマットを追加しました。#69989 の続きです。JSONCompactWithNamesとJSONCompactWithNamesAndTypesは、totalsを出力しなくなりました。これは実装上の誤りだったようです。 #75037 (Alexey Milovidov).- ALTER コマンドの一覧の曖昧さをなくすため、
format_alter_operations_with_parenthesesのデフォルトを true に変更しました (https://github.com/ClickHouse/ClickHouse/pull/59532 を参照) 。これにより、24.3 より前のクラスターとのレプリケーションは互換性がなくなります。古いリリースを使用しているクラスターをアップグレードする場合は、サーバー設定でこの設定をオフにするか、先に 24.3 へアップグレードしてください。 #75302 (Raúl Marín). - 正規表現を使ったログメッセージのフィルタリング機能を削除しました。この実装ではデータ競合が発生するため、削除が必要でした。 #75577 (János Benjamin Antal).
- 設定
min_chunk_bytes_for_parallel_parsingには、今後 0 を指定できなくなりました。これにより #71110 が修正されます。 #75239 (Nikita Mikhaylov). - cache 設定内の設定値を検証するようにしました。以前は存在しない設定値は無視されていましたが、今後はエラーになるため、削除する必要があります。 #75452 (Kseniia 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)。
- ストレージポリシーで、読み取り専用ディスクと読み書き可能ディスクを組み合わせられるようにしました (複数ボリュームまたは複数ディスクとして) 。これにより、ボリューム全体からデータを読み取れる一方で、insert は書き込み可能なディスクを優先します (つまり、Copy-on-Write ストレージポリシーです) 。#75862 (Azat Khuzhin)。
- バックアップからテーブルやデータベースを即座に ATTACH できる新しいデータベースエンジン
DatabaseBackup,を追加しました。#75725 (Maksim Kita)。 - Postgres wire protocol でプリペアドステートメントをサポートしました。#75035 (scanhex12)。
- データベースレイヤーなしでテーブルを ATTACH できるようにしました。これは、Web、S3、および同様の外部仮想ファイルシステム上にある MergeTree テーブルで役立ちます。#75788 (Azat Khuzhin)。
- 2 つの文字列の一部を比較する新しい文字列比較関数
compareSubstringsを追加しました。例:SELECT compareSubstrings('Saxony', 'Anglo-Saxon', 0, 6, 5) AS resultは、「文字列 ‘Saxon’ と ‘Anglo-Saxon’ の 6 バイトを、1 つ目の文字列ではオフセット 0、2 つ目の文字列ではオフセット 5 から始めて、辞書順に比較する」ことを意味します。#74070 (lgbo)。 - 新しい関数
initialQueryStartTimeを追加しました。これは現在のクエリの開始時刻を返します。この値は、分散クエリ中のすべての分片で共通です。#75087 (Roman Lomonosov)。 - MySQL 向けに、名前付きコレクションを使用した SSL 認証のサポートを追加しました。#59111 をクローズします。#59452 (Nikolay Degterinsky)。
実験的機能
- 同一クエリ内の複数の Grace JOIN が合計のメモリ使用量を監視し、
MEMORY_LIMIT_EXCEEDEDを防ぐために、必要に応じて外部ストレージへのスピルを適応的にトリガーできるようにする新しい設定enable_adaptive_memory_spill_schedulerを追加しました。 #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 カラム全体の読み取り性能を改善しました。これは、サブカラムのプレフィックスのデシリアライゼーションに対する prefetch、デシリアライズ済みプレフィックスの cache、サブカラムのプレフィックスの並列デシリアライゼーションを追加することで実現されています。これにより、
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).- オプティマイザによって join の左右が入れ替えられた場合に発生する
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 からフィルタ式を push down するようにしました。 #75536 (Vladimir Cherkasov).
- MergeTree でカラムと索引のサイズを遅延計算するようにしました。 #75938 (Pavel Kruglov).
MATERIALIZE TTLでttl_only_drop_partsを再び尊重するようにしました。TTL の再計算に必要なカラムだけを読み取り、パーツを空のものに置き換えることで削除します。 #72751 (Andrey Zvonov).- plain_rewritable metadata ファイルの書き込みバッファサイズを削減しました。 #75758 (Julia Kartseva).
- 一部のウィンドウ関数のメモリ使用量を削減しました。 #65647 (lgbo).
- Parquet のブルームフィルタと min/max 索引をまとめて評価するようにしました。これは、data = [1, 2, 4, 5] のときに
x = 3 or x > 5を正しくサポートするために必要です。 #71383 (Arthur Passos). Executablestorage に渡されるクエリは、単一スレッド実行に限定されなくなりました。 #70084 (yawnt).- ALTER TABLE FETCH PARTITION でパーツを並列に fetch するようにしました (スレッドプールサイズは
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) 。
- serverを再起動せずに、
max_remote_read_network_bandwidth_for_serveとmax_remote_write_network_bandwidth_for_serverを動的に再読み込みできるようにしました。#74206 (Kai Zhu) 。 - バックアップ作成時に、ブロブパスを使用してチェックサムを計算できるようにしました。#74729 (Vitaly Baranov).
system.query_cacheにクエリ ID のカラムを追加しました (#68205 をクローズ) 。#74982 (NamHoaiNguyen) 。ALTER TABLE ... FREEZE ...クエリを、KILL QUERYまたはタイムアウト (max_execution_time) によって自動的にキャンセルできるようになりました。#75016 (Kirill).groupUniqArrayArrayMapをSimpleAggregateFunctionとしてサポートしました。#75034 (Miel Donkers).- データベースエンジン
Icebergで、カタログの認証情報設定を非表示にしました。#74559 をクローズしました。#75080 (Kseniia 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) は、クライアント側のコード (たとえば、INSERT データのパースやクエリ出力のフォーマット) でサーバーのusers.xmlおよびユーザープロファイルの設定を使用するかどうかを制御するクライアント設定 (apply_settings_from_server) に置き換えられました。それ以外の場合は、クライアントのコマンドライン、セッション、およびクエリの設定のみが使用されます。これは native client (HTTP などは対象外) にのみ適用され、クエリ処理の大部分 (サーバー側で行われる処理) には適用されない点に注意してください。 #75478 (Michael Kolupaev). - 構文エラー時のエラーメッセージを改善しました。従来は、クエリが大きすぎ、長さの上限を超えた token が非常に長い文字列リテラルだった場合、原因を説明するメッセージが、その非常に長い token の2つの例の間に埋もれてしまっていました。UTF-8 を含むクエリがエラーメッセージ内で不適切に切り詰められる問題を修正しました。クエリ断片に引用符が過剰に付与される問題を修正しました。これにより #75473 をクローズしました。#75561 (Alexey Milovidov).
S3(Azure)Queueストレージにプロファイルイベントを追加しました。 #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_time/end_time をマイクロ秒単位で保存。#75929 (Aleksandr Musorin)。
- RSS による補正が行われない、内部グローバルなメモリトラッカーの値を示す
MemoryTrackingUncorrectedメトリクスを追加しました。 #75935 (Antonio Andelic). PostgreSQLまたはMySQLのテーブル関数で、localhost:1234/handleのようなエンドポイントをパースできるようにしました。これにより、https://github.com/ClickHouse/ClickHouse/pull/52503 で入り込んだリグレッションを修正しています。#75944 (Nikita Mikhaylov) 。- 未知の値に設定された
workload設定を持つクエリに対して、無制限のアクセスを許可する (デフォルト) か、RESOURCE_ACCESS_DENIEDエラーを返すかの動作を選べるサーバー設定throw_on_unknown_workloadが追加されました。これは、すべてのクエリで workload スケジューリングの使用を強制するのに役立ちます。 #75999 (Sergei Trifonov). - 不要な場合、
ARRAY JOINでサブカラムをgetSubcolumnに書き換えないようにしました。#76018 (Pavel Kruglov) 。 - テーブルの読み込み時に協調エラーが発生した場合、再試行するようにしました。 #76020 (Alexander Tokmakov).
SYSTEM FLUSH LOGSで個別のログをフラッシュできるようになりました。#76132 (Raúl Marín) 。/binaryサーバーのページを改善しました。Morton curve の代わりに Hilbert curve を使用するようにしました。正方形内に 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 を修正しました。#66143 (Dmitry Novik).
- negate 関数の単調性を修正しました。以前のバージョンでは、
xが主キーの場合、クエリselect * from a where -x = -42;が誤った結果を返すことがありました。#71440 (Michael Kolupaev). - arrayIntersect における空のタプルの処理を修正しました。これにより #72578 を修正します。#72581 (Amos Bird).
- 誤ったプレフィックスで JSON の sub-object subcolumns を読み取っていた問題を修正しました。 #73182 (Pavel Kruglov).
- クライアント・サーバー間通信で、Native formatの設定が適切に引き継がれるようにしました。#73924 (Pavel Kruglov) 。
- 一部のストレージでサポートされていない型をチェックするよう改善しました。#74218 (Pavel Kruglov) 。
- macOS 上の PostgreSQL インターフェイスで
INSERT INTO SELECTクエリを実行するとクラッシュする問題を修正しました (issue #72938) 。 #74231 (Artem Yurov). - Replicatedデータベースの未初期化の max_log_ptr を修正しました。#74336 (Konstantin Morozov) 。
- interval 挿入時のクラッシュを修正 (issue #74299) 。#74478 (NamHoaiNguyen) 。
- 定数 JSON リテラルのフォーマットを修正しました。これまでは、クエリを別のサーバーに送信する際に構文エラーが発生することがありました。 #74533 (Pavel Kruglov).
- 暗黙的なプロジェクションが有効な状態で定数のパーティション式を使用した際に、CREATEクエリが壊れる問題を修正しました。これにより #74596 を修正しました。 #74634 (Amos 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_privilegesフィールドとmissing_privilegesフィールドが記録されない問題を修正しました。#74887 (Alexey Katsman). - HDFS SELECT リクエスト中に SASL エラーが発生した場合、HDFS の krb チケットを更新。 #74930 (inv2004).
- startup_scripts 内の Replicated database 向けのクエリを修正しました。 #74942 (Azat Khuzhin).
- NULL安全な比較を使用した際に、JOIN ON句でエイリアス化された式の型に関する問題を修正しました。#74970 (Vladimir Cherkasov) 。
- remove 操作に失敗した場合、part の状態を deleting から outdated に戻す。 #74985 (Sema Checherinda).
- 以前のバージョンでは、スカラーなサブクエリがある場合、HTTPヘッダーが書き込まれる前、つまりデータフォーマットの初期化中に、進捗 (サブクエリの処理で蓄積されたもの) の書き込みを開始していました。その結果、X-ClickHouse-QueryId や X-ClickHouse-Format、Content-Type などのHTTPヘッダーが失われていました。 #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 ticker の期限切れ時に呼び出しを再試行できるようになります。 #75063 (inv2004).
optimize_function_to_subcolumns設定が有効な場合の、Array、Map、Nullable(..)カラムに対する索引 (プライマリおよびセカンダリ) の利用に関する不具合を修正しました。従来は、これらのカラムの索引が無視されることがありました。#75081 (Anton Popov).- 内部テーブルを持つ materialized view の作成時には、そのようなフラット化されたカラムを使用できないため、
flatten_nestedを無効化しました。 #75085 (Christoph Wurm). - forwarded_for フィールド内の一部の IPv6 アドレス (::ffff:1.1.1.1 など) が誤って解釈され、例外が発生してクライアントが切断される問題を修正しました。#75133 (Yakov Olkhovskiy).
- LowCardinality の Nullable データ型に対する null-safe JOIN の処理を修正しました。これまでは、
IS NOT DISTINCT FROM、<=>、a IS NULL AND b IS NULL OR a == bなどの null-safe 比較を使用した 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の修正: ログのロールバック時に、破損した変更ログへの書き込みを避けるようにしました。#75197 (Antonio Andelic).
- 適切な場合は、
BFloat16をスーパータイプとして使用します。これにより #74404 が修正されました。 #75236 (Nikita Mikhaylov). - any_join_distinct_right_table_keys および JOIN ON 句で OR を使用した場合に、JOIN の結果で予期しないデフォルト値が入る問題を修正しました。#75262 (Vladimir Cherkasov) 。
- azureblobstorage テーブルエンジンの認証情報をマスク。 #75319 (Garrett Thomas).
- ClickHouse が PostgreSQL、MySQL、SQLite などの外部データベースに対して、誤ってフィルタのプッシュダウンを行うことがある問題を修正しました。これにより、#71423 がクローズされます。 #75320 (Nikita Mikhaylov).
- Protobufフォーマットでの出力中、および並列クエリ
SYSTEM DROP FORMAT SCHEMA CACHEの実行中に発生する可能性がある、Protobufスキーマcacheのクラッシュを修正しました。 #75357 (Pavel Kruglov). - 並列レプリカ使用時に、
HAVINGのフィルタがプッシュダウンされると発生する可能性がある論理エラー、または未初期化メモリに関する問題を修正しました。#75363 (Vladimir Cherkasov) 。 icebergS3、icebergAzureのテーブル関数およびテーブルエンジンで、機密情報が非表示になるようにしました。#75378 (Kseniia Sumarokova).- 算出結果が空文字列になるトリム文字を指定した場合でも、関数
TRIMが正しく処理されるようになりました。例:SELECT TRIM(LEADING concat('') FROM 'foo')(Issue #69922) 。#75399 (Manish 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 をクローズ。 #75548 (Konstantin Bogdanov).- allow_feature_tier と compatibility MergeTree 設定の間の相互作用を修正しました。 #75635 (Raúl Marín).
- ファイルが再試行された場合に、system.s3queue_log の processed_rows の値が不正になる問題を修正しました。#75666 (Kseniia Sumarokova).
- materialized viewがURL engineに書き込む際、接続に問題がある場合は
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).- projection の PK カラムに対して alter modify を行った際に、projection を再構築するようにしました。以前は、projection の PK に使用されているカラムに alter modify を行うと、その後の select 時に
CANNOT_READ_ALL_DATAエラーが発生する可能性がありました。#75720 (Pavel Kruglov). - アナライザ有効時のスカラーサブクエリにおける
ARRAY JOINの誤った結果を修正しました。 #75732 (Nikolai Kochetov). DistinctSortedStreamTransformにおける null ポインタの逆参照を修正しました。#75734 (Nikita Taranov).allow_suspicious_ttl_expressionsの挙動を修正しました。#75771 (Aleksei Filatov) 。- 関数
translateにおける未初期化メモリの読み取りを修正しました。これにより #75592 がクローズされます。#75794 (Alexey Milovidov). - Native format での文字列としての JSON フォーマットにも、フォーマット設定が反映されるようになりました。#75832 (Pavel Kruglov) 。
- 設定変更履歴に、v24.12 で JOINアルゴリズムとして parallel hash がデフォルトで有効になったことを記録しました。これは、v24.12 より前の互換性レベルが設定されている場合、ClickHouse は引き続き非並列の hash を使用して JOIN を実行することを意味します。 #75870 (Robert Schulze).
- 暗黙的に追加された min-max インデックスを持つテーブルを新しいテーブルにコピーできない不具合を修正しました (issue #75677) 。 #75877 (Smita Kulkarni).
clickhouse-library-bridgeはファイルシステム上の任意のライブラリを開くことができるため、安全に実行するには隔離された環境内に限定する必要があります。clickhouse-serverの近くで実行された際の脆弱性を防ぐため、ライブラリのパスを設定で指定された場所に制限します。この脆弱性は、Arseniy Dugin によって ClickHouse Bug Bounty Program を通じて発見されました。#75954 (Alexey Milovidov).- 一部のメタデータでJSONシリアライゼーションを使っていましたが、これは誤りでした。というのも、JSONは文字列リテラル内のバイナリデータ (ゼロバイトを含む) をサポートしていないためです。SQLクエリにはバイナリデータや無効なUTF-8が含まれる可能性があるため、メタデータファイルでもこれを扱える必要があります。一方で、ClickHouseの
JSONEachRowなどのフォーマットは、バイナリデータを完全にラウンドトリップできるよう、JSON標準からあえて逸脱することでこの問題に対処しています。背景についてはこちらを参照してください: https://github.com/ClickHouse/ClickHouse/pull/73668#issuecomment-2560501790。解決策は、`Poco::JSON`ライブラリをClickHouseのJSONフォーマットのシリアライゼーションと整合させることです。これにより[#73668](https://github.com/ClickHouse/ClickHouse/issues/73668)をクローズします。[#75963](https://github.com/ClickHouse/ClickHouse/pull/75963) (Alexey Milovidov)。 - ストレージ
S3Queueのコミット制限を確認するチェックを修正しました。#76104 (Kseniia Sumarokova). - 自動索引 (
add_minmax_index_for_numeric_columns/add_minmax_index_for_string_columns) を持つMergeTreeテーブルのアタッチ時の問題を修正。 #76139 (Azat Khuzhin). - ジョブの親スレッドのスタックトレース (
enable_job_stack_trace設定) が出力されない問題を修正しました。enable_job_stack_trace設定がスレッドへ正しく伝播されず、その結果、スタックトレースの内容がこの設定に必ずしも従わない問題を修正しました。#76191 (Yakov Olkhovskiy) 。 ALTER RENAMEの実行にCREATE USER権限が必要とされていた誤った権限チェックを修正しました。#74372 をクローズしました。#76241 (pufit).- ビッグエンディアンアーキテクチャ環境での
FixedStringに対する reinterpretAs の不具合を修正しました。 #76253 (Azat Khuzhin). - S3Queue の論理エラー “bucket について、現在の processor は と等しいはずです” を修正しました。#76358 (Kseniia Sumarokova).
- Memoryデータベースに対するALTERで発生していたデッドロックを修正しました。#76359 (Azat Khuzhin).
WHEREにpointInPolygon関数を含む条件がある場合の索引解析における論理エラーを修正しました。 #76360 (Anton Popov).- シグナルハンドラー内の安全でない可能性がある呼び出しを修正しました。 #76549 (Yakov Olkhovskiy).
- PartsSplitter で逆順キーをサポートするよう修正しました。これにより #73400 が修正されます。#73418 (Amos Bird)。
ビルド/テスト/パッケージングの改善
- ARM Mac と Intel Mac の両方で HDFS をビルドできるようにしました。 #74244 (Yan Xin).
- Darwin 向けのクロスコンパイル時に ICU と GRPC を有効にしました。 #75922 (Raúl Marín).
- 同梱の LLVM を 19 に更新しました。 #75148 (Konstantin Bogdanov).
- Dockerイメージで default ユーザーのネットワークアクセスを無効にしました。 #75259 (Mikhail f. Shiryaev). clickhouse-server 関連のすべてのアクションを関数化し、
entrypoint.shでデフォルトのバイナリを起動する場合にのみ実行するようにしました。この長らく先送りされていた改善は #50724 で提案されていました。users.xmlから値を取得するための--usersスイッチをclickhouse-extract-from-configに追加しました。 #75643 (Mikhail f. Shiryaev). - バイナリから約 20 MB のデッドコードを削除しました。 #76226 (Alexey Milovidov).
ClickHouse リリース 25.1、2025-01-28
後方互換性を持たない変更
JSONEachRowWithProgressは、進捗が発生するたびに進捗情報を書き込むようになりました。以前のバージョンでは、進捗は結果の各 block の後でしか表示されず、実質的に役に立ちませんでした。進捗の表示方法も変更され、ゼロ値は表示されなくなります。これにより #70800 がクローズされます。 #73834 (Alexey Milovidov)。Mergeテーブルは、カラムのユニオンを取り、共通の型を導出することで、基になるテーブルの構造を統一するようになりました。これにより #64864 がクローズされます。特定のケースでは、この変更は後方互換性を持たない可能性があります。たとえば、テーブル間に共通の型はないものの、UInt64 と Int64、あるいは任意の数値型と String のように、最初のテーブルの型への変換自体は可能な場合です。以前の動作に戻したい場合は、merge_table_max_tables_to_look_for_schema_inferenceを1に設定するか、compatibilityを24.12以前に設定してください。 #73956 (Alexey Milovidov)。- Parquet 出力フォーマットでは、Date および DateTime カラムは生の数値として書き込まれるのではなく、Parquet がサポートする日付/時刻型に変換されるようになりました。
DateTimeはDateTime64(3)になります (従来はUInt32) 。output_format_parquet_datetime_as_uint32を設定すると以前の動作に戻せます。DateはDate32になります (従来はUInt16) 。 #70950 (Michael Kolupaev)。 - デフォルトでは、
ORDER BYおよび比較関数less/greater/equal/etcで、比較できない型 (JSON/Object/AggregateFunctionなど) は許可されなくなりました。 #73276 (Pavel Kruglov)。 - 廃止された
MaterializedMySQLデータベースエンジンは削除され、利用できなくなりました。 #73879 (Alexey Milovidov)。 mysqlDictionary ソースでは、SHOW TABLE STATUSクエリを実行しなくなりました。最近の MySQL バージョンの InnoDB テーブルでは、このクエリから有用な値が得られないためです。これにより #72636 がクローズされます。この変更自体は後方互換性がありますが、気づいてもらえるようこのカテゴリに含めています。 #73914 (Alexey Milovidov)。CHECK TABLEクエリでは、独立したCHECKgrant が必要になりました。以前のバージョンでは、これらのクエリを実行するにはSHOW TABLESgrant があれば十分でした。しかし、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 の時間関連の transform パーティション操作に対する
Icebergテーブルのパーティションプルーニングを実装しました。#72044 (Daniil Ivanik) 。 - MergeTree のソートキーおよびスキップ索引でサブカラムをサポートしました。#72644 (Pavel Kruglov) 。
Apache Arrow/Parquet/ORCからHALF_FLOAT値を読み取れるようになりました (Float32として読み込まれます) 。これにより #72960 がクローズされます。IEEE-754 の half float はBFloat16とは異なる点に注意してください。#73835 をクローズします。#73836 (Alexey Milovidov).system.trace_logテーブルには、シンボル化されたスタックトレースを格納するsymbolsとlinesという 2 つの新しいカラムが追加されます。これにより、プロファイル情報を簡単に収集してエクスポートできるようになります。これはtrace_log内のサーバー設定値symbolizeによって制御され、デフォルトで有効です。#73896 (Alexey Milovidov).- テーブル内で自動増分番号を生成するために使用できる新しい関数
generateSerialIDを追加しました。kazalika による #64310 の継続です。これにより #62485 はクローズされます。#73950 (Alexey Milovidov)。 - DDLクエリ向けに、構文
query1 PARALLEL WITH query2 PARALLEL WITH query3 ... PARALLEL WITH queryNを追加しました。これは、サブクエリ{query1, query2, ... queryN}を互いに並列実行できること (そして、そのほうが望ましいこと) を意味します。#73983 (Vitaly Baranov). - 逆シリアル化されたスキッピング索引のインデックスグラニュール向けに、インメモリ cache が追加されました。これにより、スキッピング索引を使用する繰り返しクエリが高速化されるはずです。新しい cache のサイズは、サーバー設定
skipping_index_cache_sizeとskipping_index_cache_max_entriesで制御されます。この cache はもともとベクトル類似度索引を想定して導入されたもので、これによりそれらも大幅に高速化されました。#70102 (Robert Schulze). - 現在、組み込みの Web UI には、クエリ実行中の進捗バーが表示されるようになりました。これにより、クエリをキャンセルできます。レコード総数と速度に関する詳細情報が表示されます。テーブルは、データが到着し次第、段階的にレンダリングできます。HTTP 圧縮を有効にしました。テーブルのレンダリングも高速になりました。テーブルヘッダーは固定表示になりました。セルを選択し、矢印キーで移動できます。選択したセルのアウトラインによってセルが小さくなる問題を修正しました。セルはマウスホバーでは拡大せず、選択時のみ拡大するようになりました。受信中のデータのレンダリングをいつ停止するかは、サーバー側ではなくクライアント側で決定されます。数値の桁区切りを強調表示するようにしました。全体的なデザインを刷新し、より力強いものにしました。サーバーに接続可能かどうか、および認証情報が正しいかを確認し、サーバーのバージョンと稼働時間を表示します。Cloud アイコンは、Safari でもすべてのフォントで輪郭付きで表示されます。ネストされたデータ型内の大きな整数も、より適切にレンダリングされるようになりました。inf/nan を正しく表示します。マウスをカラムヘッダーに重ねるとデータ型が表示されます。#74204 (Alexey Milovidov).
- 設定
add_minmax_index_for_numeric_columns(数値カラム向け) およびadd_minmax_index_for_string_columns(文字列カラム向け) により、MergeTree が管理するカラムに対して min-max (スキッピング) 索引をデフォルトで作成できるようになりました。現時点では、どちらの設定も無効のため、動作に変更はありません。 #74266 (Smita Kulkarni). script_query_numberフィールドとscript_line_numberフィールドを、system.query_log、ネイティブプロトコルの ClientInfo、およびサーバーログに追加しました。これにより #67542 はクローズされます。以前 #68133 でこの機能のきっかけを作ってくれた pinsvin00 に感謝します。#74477 (Alexey Milovidov).- パターンにおける最長のイベントチェーンで一致したイベントのタイムスタンプを返す集約関数
sequenceMatchEventsを追加しました。 #72349 (UnamedRus). - 関数
arrayNormalizedGiniが追加されました。#72823 (flynn) 。 DateTime64の減算演算子をサポートし、DateTime64値同士およびDateTimeとの減算を可能にしました。#74482 (Li Yin).
実験的機能
BFloat16データ型は本番環境で利用可能になりました。#73840 (Alexey Milovidov).
パフォーマンス改善
- 関数
indexHintを最適化しました。これにより、関数indexHintの引数としてのみ使用されるカラムは、テーブルから読み取られなくなりました。#74314 (Anton Popov) 。indexHint関数が企業のデータ基盤における中核的な要素である場合、この最適化はまさに救世主となるでしょう。 parallel_hashJOIN アルゴリズムにおけるmax_joined_block_size_rows設定の計算精度が向上しました。これにより、hashアルゴリズムと比べてメモリ使用量が増加するのを抑えやすくなります。#74630 (Nikita Taranov).MergingAggregatedステップに対し、クエリプランレベルでの predicate pushdown 最適化をサポートしました。これにより、アナライザを使用する一部のクエリのパフォーマンスが向上します。#74073 (Nikolai Kochetov).parallel_hashJOINアルゴリズムのプローブフェーズにおける、ハッシュによる左テーブルのブロック分割が削除されました。#73089 (Nikita Taranov) 。- RowBinary入力フォーマットを最適化しました。#63805 をクローズ。#65059 (Pavel Kruglov) 。
optimize_on_insertが有効な場合、レベル 1 のパーツを書き込むようになりました。これにより、新しく書き込まれたパーツに対するFINALを使ったクエリで、いくつかの最適化を利用できます。 #73132 (Anton Popov).- 低レベルの最適化をいくつか行い、文字列のデシリアライゼーションを高速化しました。 #65948 (Nikita Taranov).
- マージ時などにレコード間で等価比較を行う際、等しくない可能性が最も高いカラムから先に行同士の比較を開始するようにしました。 #63780 (UnamedRus).
- 右側の結合テーブルをキーで並べ替え直すことで、Grace Hash Join のパフォーマンスを向上させました。 #72237 (kevinyhzou).
arrayROCAUCとarrayAUCPRで、曲線全体に対する部分的な面積を計算できるようになり、巨大なデータセットでの計算を並列化できるようになりました。#72904 (Emmanuel).- アイドル状態のスレッドが増えすぎないようにしました。 #72920 (Guo Wangyang).
- テーブル関数で波かっこ展開のみを使用している場合は、ブロブストレージのキーを一覧表示しないようにしました。#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) 。- 並列レプリカのパフォーマンスを改善。並列レプリカのプロトコルに関係しないパケットの、クエリのイニシエーターでのデシリアライズは、常にパイプラインスレッドで行われるようになりました。従来はパイプラインのスケジューリングを担当するスレッドで行われることもあり、その結果、イニシエーターの応答性が低下し、パイプラインの実行が遅れる可能性がありました。#74398 (Igor Nikonov).
- Keeper における大きなマルチリクエストのパフォーマンスを改善しました。 #74849 (Antonio Andelic).
- ログラッパーを値型で使用し、ヒープに割り当てないようにしました。#74034 (Mikhail Artemenko).
- MySQL および Postgres の Dictionary レプリカへの接続をバックグラウンドで再確立するようにし、対応する Dictionary へのリクエストが遅延しないようにしました。 #71101 (Yakov Olkhovskiy).
- 並列レプリカでは、レプリカ選択の改善のためにレプリカの可用性に関する過去の情報を利用していましたが、connection が利用できない場合でもレプリカの error 件数は更新されていませんでした。この PR では、利用不可時にもレプリカの error 件数が更新されるようになりました。#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をサポートし、エンジン設定とクエリ設定を混在して指定できるようにしました。 #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).
- インタラクティブなメトリクスを改善。並列レプリカのメトリクスが完全に表示されない問題を修正。メトリクスは最新の更新順に表示し、その後、名前の辞書順に表示。古くなったメトリクスは表示しない。#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 が解決されます。 #73833 (Alexey Milovidov).
- 端末上の Pretty および Vertical フォーマットで、可読性向上のため末尾のスペースを強調表示するようにしました。これは
output_format_pretty_highlight_trailing_spaces設定で制御できます。初期実装は Braden Burns によるもので、 #72996 に基づきます。#71590 をクローズしました。#73847 (Alexey Milovidov)。 clickhouse-clientとclickhouse-localは、stdin がファイルからリダイレクトされている場合、その圧縮形式を自動検出するようになりました。これにより #70865 がクローズされます。 #73848 (Alexey Milovidov).- Prettyフォーマットでは、長すぎるカラム名がデフォルトで切り詰められるようになりました。これは、
output_format_pretty_max_column_name_width_cut_toおよびoutput_format_pretty_max_column_name_width_min_chars_to_cut設定で制御されます。これは、#66502 における tanmaydatta の作業の続きです。これにより #65968 はクローズされます。#73851 (Alexey Milovidov). Prettyフォーマットをさらに見やすくしました。前のブロックの出力からあまり時間が経過していない場合は、ブロックをまとめます。これは、新しい設定output_format_pretty_squash_consecutive_ms(デフォルトは 50 ms) およびoutput_format_pretty_squash_max_wait_ms(デフォルトは 1000 ms) で制御されます。#49537 の続きです。これにより #49153 はクローズされます。#73852 (Alexey 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 はクローズされます。#74032 (Alexey Milovidov)。 - ブラウザ内の JavaScript で X-ClickHouse HTTP ヘッダーを参照できるようにしました。これにより、アプリケーションの開発がより容易になります。 #74180 (Alexey Milovidov).
JSONEachRowWithProgressフォーマットには、メタデータを含むイベントに加え、totals と extremes も含まれるようになりました。また、rows_before_limit_at_leastとrows_before_aggregationも含まれます。このフォーマットでは、部分的な結果の後に例外が到着した場合でも、その例外を適切に出力します。Progress に経過ナノ秒が含まれるようになりました。最後に、progress イベントが 1 つ追加で出力されます。クエリ実行中の progress は、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 をクローズします。#73929 (Alexey Milovidov). - ハッシュ結合アルゴリズムが有効な場合に、より汎用的な結合計画アルゴリズムを使用できるようにしました。 #71926 (János Benjamin Antal).
- データ型
DateTime64のカラムで bloom_filter 索引を作成できるようになりました。#66416 (Yutong Xiao) 。 min_age_to_force_merge_secondsとmin_age_to_force_merge_on_partition_onlyの両方が有効な場合、パーツマージは最大バイト数の制限を無視します。 #73656 (Kai Zhu).- トレーサビリティを向上させるため、OpenTelemetry の span logs テーブルに HTTP ヘッダーを追加しました。#70516 (jonymohajanGmail) 。
- 常に
GMTタイムゾーンではなく、カスタムのタイムゾーンでorcファイルを書き込めるようになりました。 #70615 (kevinyhzou). - クラウド間でバックアップを書き込む際に、IOスケジューリング設定が尊重されるようにした。 #71093 (János Benjamin Antal).
system.asynchronous_metricsに、metricカラムのエイリアスnameを追加しました。#71164 (megao) 。- これまで、なぜかクエリ
ALTER TABLE MOVE PARTITION TO TABLEでは、専用のALTER_MOVE_PARTITIONではなく、SELECTとALTER DELETEの権限がチェックされていました。この PR で、このアクセス種別が使われるようになりました。互換性のため、SELECTとALTER DELETEが付与されている場合はこの権限も暗黙的に付与されますが、この動作は今後のリリースで廃止される予定です。#16403 をクローズしました。#71632 (pufit). - ソート順が壊れるのを許容する代わりに、ソートキー内のカラムをマテリアライズしようとした場合は例外を発生させるようにしました。#71891 (Peter Nguyen) 。
EXPLAIN QUERY TREEで機密情報を非表示にする。#72025 (Yakov Olkhovskiy).- “native” リーダーで Parquet の整数論理型をサポートしました。 #72105 (Arthur Passos).
- デフォルトユーザーでパスワードが必要な場合、ブラウザー上で対話的に認証情報の入力を求めるようになりました。以前のバージョンではサーバーは HTTP 403 を返していましたが、現在は HTTP 401 を返します。#72198 (Alexey Milovidov).
- アクセス種別
CREATE_USER、ALTER_USER、DROP_USER、CREATE_ROLE、ALTER_ROLE、DROP_ROLEをグローバルからパラメータ化されたものに変更しました。これにより、アクセス管理権限をより細かく付与できるようになりました。 #72246 (pufit). system.mutationsにlatest_fail_error_code_nameカラムを追加しました。このカラムは、スタックした mutation に関する新しいメトリクスを導入し、Cloud で発生したエラーのグラフを作成するため、さらに必要に応じて、ノイズの少ない新しいアラートを追加するために必要です。 #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_loadとwait_dictionaries_load_at_startupをsystem.server_settingsに追加しました。 #72664 (Christoph Wurm) 。 BACKUP/RESTOREクエリの一部として指定できる設定の一覧に、max_backup_bandwidth設定を追加しました。#72665 (Christoph Wurm) 。- ReplicatedMergeTree engine で出現するレプリケート済みパーツのログレベルを引き下げ、レプリケーションされたクラスターで生成されるログ量を最小限に抑えられるようにしました。 #72876 (mor-akamai).
- 選言内の共通式の抽出を改善しました。すべての選言項に共通部分式がない場合でも、結果のフィルタ式を簡略化できるようにしました。#71537 の続きです。#73271 (Dmitry Novik).
- Storage
S3Queue/AzureQueueでは、設定なしで作成されたテーブルにも設定を追加できるようになりました。#73283 (Kseniia Sumarokova) 。 least_greatest_legacy_null_behavior設定 (デフォルト:false) を導入しました。これは、関数leastとgreatestがNULL引数を処理する際に、常にNULLを返す (trueの場合) か、NULLを無視する (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 をクローズします。#73616 (Daniil Ivanik). - S3(Azure)Queue ストレージでコミット設定を変更できるようになりました。 (コミット設定:
max_processed_files_before_commit、max_processed_rows_before_commit、max_processed_bytes_before_commit、max_processing_time_sec_before_commit) 。#73635 (Kseniia Sumarokova). - storage S3(Azure)Queue で、コミット制限設定と比較できるように、ソース間の進捗を集計します。 #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(バックアップをどこにも保持しない。テスト用) 。#73690 (Vitaly Baranov). concurrent_threads_soft_limit_numとconcurrent_threads_soft_limit_num_ratio_to_coresは、サーバーを再起動せずに変更できるようになりました。 #73713 (Sergei Trifonov).formatReadable関数で拡張数値型 (Decimal、大きな整数) がサポートされました。#73765 (Raúl Marín).- Postgres wire protocolとの互換性のためにTLSをサポートしました。#73812 (scanhex12).
- 関数
isIPv4Stringは、正しい IPv4 アドレスの末尾にゼロバイトが続く場合に true を返していましたが、この場合は false を返すべきでした。#65387 の続きです。#73946 (Alexey Milovidov). - MySQL wire protocol のエラーコードを MySQL 互換にしました。#56831 の続きです。#50957 をクローズします。#73948 (Alexey Milovidov).
IN、NOT INなどの演算子内の enum リテラルを enum 型に対して検証し、リテラルが有効な enum 値でない場合は例外を発生させる設定validate_enum_literals_in_opearatorsを追加しました。#73985 (Vladimir Cherkasov).- Storage
S3(Azure)Queueで、すべてのファイルを (コミット設定で定義された単一バッチ内で) 1回のKeeperトランザクションでコミットするようにしました。#73991 (Kseniia Sumarokova). - 実行可能 UDF と Dictionaries のヘッダー検出を無効化 (これにより Function ‘X’: wrong result, expected Y row(s), actual Y-1 が発生する可能性がありました) 。#73992 (Azat Khuzhin).
EXPLAIN PLAN.にdistributedオプションを追加しました。これにより、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 クエリで subcolumns をサポートしました。#74030 (Pavel Kruglov) 。
clickhouse-clientでカスタムのプロンプトを設定する簡単な方法が、現在は 3 つあります。1. コマンドラインパラメーター--promptで設定する方法、2. 設定ファイルで設定<prompt>[...]</prompt>を使って設定する方法、3. 同じく設定ファイルで、接続ごとの設定<connections_credentials><prompt>[...]</prompt></connection_credentials>を使って設定する方法です。#74168 (Christoph Wurm).- ClickHouse Clientでポート9440に接続した場合に、安全な接続を自動検出するようにしました。 #74212 (Christoph Wurm).
- http_handlers で、ユーザー名のみで認証できるようになりました (以前はパスワードの入力も必要でした) 。 #74221 (Azat Khuzhin).
- 代替クエリ言語である PRQL と KQL のサポートは Experimental として扱われるようになりました。これらを使用するには、設定
allow_experimental_prql_dialect = 1およびallow_experimental_kusto_dialect = 1を指定します。#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).
- 設定リローダー用のエラーコードを追加しました。#74746 (Garrett Thomas) 。
- MySQL および PostgreSQL のテーブル関数とエンジンで、IPv6 アドレスをサポートするようになりました。#74796 (Mikhail Koviazin) 。
divideDecimalに短絡最適化を実装しました。#74280 を修正しました。#74843 (Kevin Mingtarja) 。- これにより、起動スクリプト内でユーザーを指定できるようになりました。#74894 (pufit) 。
- Azure SAS Tokens のサポートが追加されました。#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が動作するようになりました。 #73544 (Robert Schulze). - keeper-client で SEQUENTIAL ノードを作成できない不具合を修正しました。 #64177 (Duc Canh Le) 。
- position 関数における文字数カウントの誤りを修正しました。#71003 (思维).
- アクセスエンティティに対する
RESTORE操作では、部分的な権限の取り消しが適切に処理されていなかったため、必要以上の権限が必要になっていました。このPRでこの問題を修正しました。#71853 をクローズします。#71958 (pufit). 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関数と互換になります。以前の挙動は、settingformatdatetime_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 カラムの squashin の準備処理を修正しました。以前は、一部のケースで、型/パス数の上限に達していなくても、新しい型が shared variant/shared data に挿入されることがありました。#73388 (Pavel Kruglov) 。
- 過大な割り当てを防ぐため、types のバイナリデコード中に破損したサイズをチェックするようにしました。 #73390 (Pavel Kruglov) 。
- 並列レプリカを有効にした単一レプリカのクラスターからの読み取り時に発生する論理エラーを修正しました。#73403 (Michael Kolupaev).
- ZooKeeper および旧バージョンの Keeper での ObjectStorageQueue の問題を修正しました。 #73420 (Antonio Andelic).
- Hive パーティション化をデフォルトで有効にするために必要な修正を実装しました。 #73479 (Yarik Briukhovetskyi).
- ベクトル類似度索引の作成時に発生するデータ競合を修正。 #73517 (Antonio Andelic).
- Dictionary のソースに不正なデータを含む関数がある場合に発生する segfault を修正しました。 #73535 (Yarik Briukhovetskyi).
- storage S3(Azure)Queue で失敗した insert の再試行を修正しました。#70951 をクローズします。#73546 (Kseniia Sumarokova).
tupleElement関数のエラーを修正しました。このエラーは、LowCardinality要素を含むタプルで、設定optimize_functions_to_subcolumnsが有効になっている場合に、一部のケースで発生する可能性がありました。#73548 (Anton Popov).- enum glob の後に続く range one のパースを修正しました。 #73473 を修正しました。 #73569 (Konstantin Bogdanov).
- 非レプリケートテーブルにおけるサブクエリで
parallel_replicas_for_non_replicated_merge_treeが無視されていた問題を修正しました。#73584 (Igor Nikonov) 。 - タスクをスケジュールできない場合に
std::logical_errorがスローされる不具合を修正しました。ストレステストで発見されました。 #73629 (Alexander Gololobov). - 分散クエリで処理段階が誤って論理エラーが発生するのを避けるため、
EXPLAIN SYNTAXではクエリを解釈しないようにしました。#65205 を修正しました。#73634 (Dmitry Novik) 。 - Dynamic カラムで発生する可能性があるデータの不整合を修正しました。
Nested columns sizes are inconsistent with local_discriminators column sizeという論理エラーが発生する可能性がある問題も修正しました。 #73644 (Pavel Kruglov). FINALおよびSAMPLEを含むクエリで発生していたNOT_FOUND_COLUMN_IN_BLOCKを修正しました。CollapsingMergeTreeに対するFINAL付きの SELECT で不正な結果が返される問題を修正し、FINALの最適化を有効にしました。 #73682 (Anton Popov).- LIMIT BY COLUMNS で発生するクラッシュを修正しました。 #73686 (Raúl Marín).
- 通常のプロジェクションの使用を強制したときに、クエリが定義済みのプロジェクションと完全に同一であるにもかかわらず、そのプロジェクションが選択されず、エラーになる不具合を修正しました。 #73700 (Shichao Jin).
- Dynamic/Object 構造のデシリアライゼーションの不具合を修正しました。これにより、CANNOT_READ_ALL_DATA 例外が発生する可能性がありました。 #73767 (Pavel Kruglov) 。
- バックアップからパーツを復元する際、
metadata_version.txtをスキップするようにしました。#73768 (Vitaly Baranov) 。 - LIKE で Enum にキャストした際のセグメンテーションフォルトを修正しました。#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 を修正しました。#73916 (Dmitry Novik).
- 暗黙的な権限を修正しました (以前はワイルドカードのように機能していました) 。#73932 (Azat Khuzhin).
- ネストした Maps の作成時に発生する高いメモリ使用量を修正しました。#73982 (Pavel Kruglov) 。
- 空のキーを含むネストされた JSON のパースを修正しました。#73993 (Pavel Kruglov) 。
- 修正: あるエイリアスが別のエイリアスから参照され、逆順で選択されている場合に、プロジェクションに追加されないことがある問題を修正しました。 #74033 (Yakov Olkhovskiy).
- plain_rewritable ディスクの初期化時に、Azure での「オブジェクトが見つからない」エラーを無視するようにしました。 #74059 (Julia Kartseva).
- enum 型および空テーブルでの
anyとanyLastの動作を修正しました。#74061 (Joanna Hulboj) 。 - ユーザーが Kafka table engine でキーワード引数を指定した場合に発生する問題を修正しました。#74064 (Yarik Briukhovetskyi) 。
- Storage
S3Queueの設定を “s3queue_” プレフィックス付きからプレフィックスなしへ、またはその逆に変更する際の不具合を修正。 #74075 (Kseniia Sumarokova). - 設定
allow_push_predicate_ast_for_distributed_subqueriesを追加しました。これにより、アナライザを使用する分散クエリで、AST ベースの述語プッシュダウンが利用可能になります。これは、クエリプランのシリアライゼーションを伴う分散クエリがサポートされるまでの暫定的な対応です。#66878 #69472 #65638 #68030 #73718 を修正します。#74085 (Nikolai Kochetov). - #73095 以降、forwarded_for フィールドにポートが含まれる場合があり、その結果、ポート付きのホスト名を解決できなくなる問題を修正しました。 #74116 (Yakov Olkhovskiy).
ALTER TABLE (DROP STATISTICS ...) (DROP STATISTICS ...)のフォーマットの不具合を修正しました。#74126 (Han Fei) 。- issue #66112 を修正。 #74128 (Anton Ivashkin).
CREATE TABLEでLoopをテーブルエンジンとして使用することはできなくなりました。この組み合わせは、以前 segfault を引き起こしていました。 #74137 (Yarik Briukhovetskyi).- postgresql および sqlite のテーブル関数で SQL インジェクションを防止するため、セキュリティ上の問題を修正しました。#74144 (Pablo Marcos) 。
- 圧縮されたMemoryエンジンのテーブルからサブカラムを読み取る際に発生するクラッシュを修正しました。 #74009 を修正します。 #74161 (Nikita Taranov) 。
- system.detached_tables に対するクエリで発生していた無限ループを修正しました。 #74190 (Konstantin Morozov).
- ファイルを失敗扱いに設定する際のs3queueの論理エラーを修正しました。#74216 (Kseniia Sumarokova) 。
- ベースバックアップからの
RESTOREのネイティブコピー設定 (allow_s3_native_copy/allow_azure_native_copy) を修正しました。#74286 (Azat Khuzhin) 。 - データベース内のデタッチされたテーブル数が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 のウォッチがリークするバグを修正しました。 #74521 (RinChanNOW).
- UBSan によって報告されたメモリ配置の問題を修正しました。#74512。 #74534 (Arthur Passos).
- テーブル作成中に発生する KeeperMap の同時実行クリーンアップの問題を修正。 #74568 (Antonio Andelic).
- 正しいクエリ結果を保つため、
EXCEPTまたはINTERSECTがある場合、サブクエリ内の未使用のプロジェクションカラムを削除しないようにしました。#73930 を修正しました。#66465 を修正しました。#74577 (Dmitry Novik) 。 - スパースシリアライゼーションが有効な場合に、
Tupleカラムを持つテーブル間のINSERT SELECTクエリを修正しました。#74698 (Anton Popov) 。 - 関数
rightは、定数の負のオフセットを指定した場合に正しく動作しません。 #74701 (Daniil Ivanik). - クライアント側の不適切な解凍処理が原因で、gzip圧縮されたデータの挿入に失敗することがある問題を修正しました。#74707 (siyuan).
- ワイルドカード付きの権限付与に対する部分的な取り消しにより、想定以上の権限が削除される可能性がありました。#74263 をクローズしました。#74751 (pufit).
- Keeperの修正: ディスクからログエントリを読み取る際の不具合を修正しました。#74785 (Antonio Andelic).
- SYSTEM REFRESH/START/STOP VIEW の権限チェックを修正し、特定のビューに対するクエリの実行時に
*.*へのこの権限は不要になりました。必要なのは、そのビューに対する権限のみです。#74789 (Alexander Tokmakov). hasColumnInTable関数でエイリアスカラムが考慮されていませんでした。エイリアスカラムでも動作するよう修正しました。#74841 (Bharat Nallan) 。- Azure Blob Storage 内で、空のカラムを含むテーブルのデータパーツのマージ中に発生する FILE_DOESNT_EXIST エラーを修正しました。 #74892 (Julia Kartseva).
- 一時テーブルを結合する際のプロジェクションのカラム名を修正し、#68872 をクローズしました。#74897 (Vladimir Cherkasov).
ビルド/テスト/パッケージングの改善
- 汎用インストールスクリプトが、macOS 上でもインストールを案内するようになりました。#74339 (Alexey Milovidov).