後方互換性を持たない変更
データ型の変更
Geometry型を導入しました。この型でWKBおよびWKTフォーマットの読み取りをサポートします。以前のバージョンではGeometry型はStringのエイリアスでしたが、現在は完全な機能を備えた型になっています。#83344 (Konstantin Vedernikov).- 非推奨の Object 型を削除しました。#85718 (Pavel Kruglov).
- MergeTree テーブルの wide パーツにおいて、Variant 型のサブカラム用に作成されるファイル名をエスケープするようにしました。この変更により、Variant/Dynamic/JSON データ型を持つ古いテーブルとの互換性は失われます。これにより、Variant 内で特殊記号を含む型 (たとえば
\を含む特定のタイムゾーン付き DateTime など) の保存に関する問題が修正されます。エスケープは、MergeTree の設定escape_variant_subcolumn_filenamesを変更することで無効にできます (互換性を維持するには、MergeTree の設定でこの項目を無効にするか、compatibility設定をアップグレード前のバージョンに設定してください) 。#69590 を解決します。#87300 (Pavel Kruglov).
クエリと関数の変更
- ALTER MODIFY COLUMN で nullable columns を非 Nullable 型に変換する場合、明示的に DEFAULT を指定する必要があります。従来は、このような ALTER が
cannot convert null to not nullエラーで停止することがありましたが、現在は NULL がカラムのデフォルト式に置き換えられます。#5985 を修正しました。#84770 (Vladimir Cherkasov). - 設定
allow_not_comparable_types_in_order_by/allow_not_comparable_types_in_comparison_functionsを削除しました。ORDER BY や比較関数で比較不能な型を許可すると、論理エラーや予期しない結果を招く可能性があります。#90028 を修正しました。#90527 (Pavel Kruglov). - bitShiftLeft 関数と bitShiftRight 関数を修正し、型のサイズとちょうど同じだけ shift した場合に 0 または空の値を返すようにしました。#91943 (Pablo Marcos).
- N-gram トークナイザーは、設定された長さ N 未満の N-gram を返さなくなります。検索トークンが空の場合、Text Search は行を返さなくなります。#89757 (George Larionov).
ストレージと索引の変更
- 廃止された
LIVE VIEW機能を削除しました。LIVE VIEWを使用している場合、新しいバージョンへのアップグレードはできません。#88706 (Alexey Milovidov). - 共有オブジェクトストレージパス上に複数の
plain-rewritableディスクを作成することを禁止しました。異なるメタデータストレージトランザクションが競合した際に、未定義の動作を引き起こす可能性があるためです。#89038 (Mikhail Artemenko). - これらのテーブルではマージ動作が未定義であるため、空の
ORDER BYキーを持つ特殊なMergeTreeテーブル (ReplacingMergeTree、CollapsingMergeTreeなど) を作成することが禁止されました。どうしてもそのようなテーブルを作成する必要がある場合は、allow_suspicious_primary_key設定を有効にしてください。#91569 (Anton Popov). - 暗黙的な索引に関する複数の修正。表示または保存されるスキーマ (Keeper メタデータ) には、
add_minmax_index_for_numeric_columnsやadd_minmax_index_for_string_columnsの設定によって作成されるものなど、暗黙的な索引は含まれません。このため、新しいバージョンで ReplicatedMergeTree テーブルを作成または更新する際、古いリリースのレプリカが存在すると、メタデータエラーが発生する可能性があります。#91429 (Raúl Marín).
設定および構成の変更
- クライアントが例外をより確実に解析できるよう、HTTP の結果レスポンスでの例外タグ付けをサポートしました。これにより #75175 を解決します。フォーマット間の一貫性を保つため、設定
http_write_exception_in_output_formatはデフォルトで無効になっています。#88818 (Kaviraj Kanagaraj). - Kafka ストレージの SASL 設定の優先順位を修正しました。CREATE TABLE クエリで指定したテーブルレベルの SASL 設定が、設定ファイル内の consumer/producer 固有の設定を正しく上書きするようになりました。#89401 (János Benjamin Antal).
- ACME の構成パラメータ
refresh_certificates_task_intervalをrefresh_certificates_task_interval_secondsに、refresh_certificates_beforeをrefresh_certificates_before_secondsに改名しました。refresh_certificates_task_interval_secondsパラメータは、秒単位の値を取るようになりました。#92211 (Konstantin Bogdanov). - プロジェクションで位置引数が無効化されたことを、後方互換性のない変更として明示しました。さらに、プロジェクション内に位置引数が存在する場合でも ClickHouse クラスターを安全にアップグレードできるよう、設定
enable_positional_arguments_for_projectionsを導入しました。#92007 (Dmitry Novik).
クライアントの変更
receive_timeoutによってクエリがタイムアウトした際、clickhouse-client が非ゼロの終了コード (159 - TIMEOUT_EXCEEDED) を返すようになりました。これまではタイムアウト時でも終了コード 0 (成功) が返されていたため、スクリプトや自動化処理でタイムアウトによる失敗を検出しにくい状況でした。#91432 (Sav).
統計のフォーマット変更
StringからNullable(String)への alter column では、データに対する mutation は実行されません。しかし、uniqaggregate function では異なるデータ構造が使われます。nullable なカラムでは、ネストされた uniq アグリゲータを持つAggregateFunctionNullが使われます。AggregateFunctionNullは追加の bool フラグをシリアライズするため、統計ファイルとの互換性が失われます。統計のフォーマットが変更されたため、古いフォーマットの統計が存在するとサーバーはクラッシュします。例外を避けるには、ALTER TABLE [db.]table MATERIALIZE STATISTICS ALLを実行して統計を再生成してください。#90311 (Han Fei).
その他の破壊的変更
- 要素サイズの倍数になっていないサイズのデータを圧縮した際に
Fatalが発生する問題を修正 (T64コーデック) 。#89282 を解決します。#89432 (yanglongwei).
新機能
関数
- ユーザーの権限借用をサポートする新しいSQLステートメント EXECUTE AS を追加しました。#39048 を解決します。#70775 (Shankar)。
- 配列内の必要な数の次元をアンラップし、Tupleカラム内のポインタを入れ替える
flipCoordinates関数を追加しました。#79469 を解決します。#79634 (Sachin Kumar Singh)。 IS NOT DISTINCT FROM(<=>) 演算子を強化しました。逆のIS DISTINCT FROMに対応し、異なる型の互換性のある数値オペランド (例:Nullable(UInt32)とNullable(Int64)) もサポートしました。#87581 (yanglongwei)。cume_distwindow function のサポートを追加しました。#86920 を修正します。#88102 (Manuel)。- Geometry型の面積と周長を計算する関数を追加しました。#89047 (Konstantin Vedernikov)。
- 属性が指定した値に等しい辞書キーを返す
dictGetKeys関数を実装しました。繰り返しのルックアップを高速化するため、max_reverse_dictionary_lookup_cache_size_bytes設定で調整されるクエリごとの逆引きルックアップ cache を使用します。#89197 (Nihal Z. Miaji)。 - 配列
arrからelemに等しいすべての要素を削除するarrayRemove(arr, elem)をサポートしました。#52099 を解決します。#89585 (tiwarysaurav)。 - 平均を計算する
midpointscalar function を導入しました。#89029 を解決します。#89679 (simonmichal)。 - 新しい
argAndMin関数とargAndMax関数により、argument と、それに対応する最小値または最大値の両方を取得できるようになりました。#89884 (AbdAlRahman Gad)。 - #73900 および #38775 の一環として、
HMAC(algorithm, message, key)sql function を追加しました。#90837 (Mikhail f. Shiryaev)。 - 第1引数が定数配列の場合、
has()関数で主キーとデータスキッピングインデックスを使用できるようになりました。#90980 をクローズします。#91023 (Nihal Z. Miaji)。
システムテーブル
- Unicode 文字とそのプロパティの一覧を含む
system.unicodeテーブルを追加しました。#80055 を修正します。#80857 (wxybear)。 shared_merge_tree_outdated_partsに類似した新しいシステムテーブルshared_merge_tree_condemned_partsを追加しました。これは、PartsKillerThread によってまもなく削除される廃棄対象のパーツを一覧表示します。(Smita Kulkarni)。
テーブルエンジンとストレージ
- Prometheus HTTP Query API の一部をサポートしました。有効にするには、設定ファイルの
<prometheus>セクションに、typequery_apiのルールを追加します。サポートされるハンドラーは/api/v1/query_rangeと/api/v1/queryです。#86132 (Nikita Mikhaylov). - ユーザーは、従来のファイルを保持または削除するオプションに加えて、処理済みファイルを移動したりタグ付けしたりするように S3/Azure Queue テーブルを設定できるようになりました。#72944 を解決します。#86907 (Murat Khairulin).
- マージ後の wide パーツ内の動的サブカラム数を、データ型で指定されたパラメータに関係なく制限できるように、新しい MergeTree 設定
merge_max_dynamic_subcolumns_in_wide_partを追加しました。#87646 (Pavel Kruglov). - Microsoft OneLake カタログ インテグレーション。#89366 (Konstantin Vedernikov).
- 一時テーブルで
CREATE OR REPLACE構文をサポートしました。#35888 をクローズします。#89450 (Aleksandr Musorin). - MergeTree テーブルで
direct(ネストループ) join をサポートしました。使用するには、設定でこれを唯一のオプションとして指定します:join_algorithm = 'direct'。#89920 (Vladimir Cherkasov). - この PR ではプロジェクションレベルの設定が導入され、新しい
ALTER TABLE ... ADD PROJECTIONのWITH SETTINGS句で公開されます。これらの設定により、プロジェクションごとに特定の MergeTree ストレージパラメータ (例: index_granularity、index_granularity_bytes) を上書きできます。#90158 (Amos Bird).
Iceberg とデータレイク
- Iceberg の
CREATE操作でのORDER BYと、INSERT時のソートをサポートしました。#89916 を解決しました。#90141 (Konstantin Vedernikov).
SQL とクエリ機能
windowFunnelaggregate function にallow_reentryオプションを追加しました。strict_order と併用して有効にすると、順序に違反するイベントがあってもファネル分析を停止せず、それらを無視します。これにより、リフレッシュを伴うユーザージャーニー (A->A->B) や戻る操作 (A->B->A->C) でも、コンバージョン率を過小評価することなく処理できるようになります。#86916 (Lee ChaeRok).- テキスト索引の構築時に、新しい引数
preprocessorを追加できるようになりました。この引数は、トークン化の前に各ドキュメントを変換する任意の式です。#88272 (Jimmy Aguilar Mena). - テーブルの一部を選択するため、小数の
LIMITとOFFSETをサポートしました。#81892 をクローズしました。#88755 (Ahmed Gouda). - INTO OUTFILE 用の親ディレクトリを自動作成する setting
into_outfile_create_parent_directoriesを追加し、出力パスが存在しない場合のエラーを防止します。#88610 を解決しました。#88795 (Saksham). - 入力 JSON を JSON type の明示的な型付きパスに型変換できない場合でも、JSON type への insert や型変換で例外を無効化する setting
type_json_skip_invalid_typed_pathsを追加しました。その場合は、型付きパスの NULL 値またはゼロ値にフォールバックします。#86917 をクローズしました。#89886 (Max Justus Spransy).
クライアントと CLI の機能
- CLI クライアントで、
--no-server-client-version-messageまたはfalseを指定することで、「ClickHouse server version is older than ClickHouse client. It may indicate that the server is out of date and can be upgraded.」というメッセージを非表示にできるようになりました。#87784 (Larry Snizek). --loginを使用して、Cloud 認証情報で ClickHouse Cloud インスタンスにアクセスできるようになりました。#89261 (Krishna Mannem).- Web UI にダウンロードボタンが追加されました。UI に表示されているのが一部だけでも、結果全体をダウンロードできます。#89768 (Alexey Milovidov).
サーバー設定と監視
X-ClickHouse-ProgressとX-ClickHouse-Summaryにmemory_usageフィールドが追加されました。これにより、クライアント側でクエリのメモリ使用量をリアルタイムに収集できます。#88393 (Christoph Wurm).- プロファイルイベントを使用しない場合に、クライアントがネットワークトラフィックを削減できる
send_profile_events設定が追加されました。#89588 (Kaviraj Kanagaraj).
Keeper
- ZooKeeperとの互換性: create with statistics に対応。 #88797 (Konstantin Vedernikov).
- ClickHouse KeeperでZooKeeperの永続ウォッチをサポート。 #88813 (Konstantin Vedernikov).
入力/出力フォーマット
- 新しい入出力フォーマット
Buffersを実装しました。このフォーマットはNativeに似ていますが、Nativeとは異なり、カラム名、カラム型、追加のメタデータは格納しません。#84017 をクローズしました。#91156 (Nihal Z. Miaji). - コマンド形式のディスクリプタを必要とする Dremio やその他の Arrow Flight サーバーをサポートするため、
arrow_flight_request_descriptor_type設定を追加しました。#89523 を修正しました。#89826 (Shreyas Ganesh). - メッセージペイロードをパースする前に、エンベロープヘッダーのバイト数 (例: AWS Glue Schema Registry の 19 バイトのプレフィックス) をスキップするための
kafka_schema_registry_skip_bytes設定を Kafka table engine に追加しました。#89621 (Taras Polishchuk).
その他の新機能
- Clusterテーブル関数でファイルを並列読み取りする際のストリーム数を制御するための設定
max_streams_for_files_processing_in_cluster_functionsを追加しました。#90223 をクローズしました。#91323 (Pavel Kruglov). - 近傍のパーツデータのバックグラウンドダウンロードをクエリごとに無効化できるようにしました。#89524 を修正しました。#89668 (tanner-bruce).
- ClickHouseの新しいプラットフォームとして、e2k (Elbrus-2000) の試験的サポートを追加しました。#90159 (Ramil Sattarov).
実験的機能
- ACME provider からの TLS 証明書の取得をサポートしました。RFC 8555。#66315 (Konstantin Bogdanov) 。
- 並列レプリカを使用してクエリを自動実行する新しいロジックが導入されました。これは設定
automatic_parallel_replicas_modeで制御されます。#87541 (Nikita Taranov) 。 - 全文検索は、従来の実験的段階からプライベートプレビューに移行しました。#88928 (Robert Schulze) 。
Aliasは実験的機能に移行され、allow_experimental_alias_table_engine=1で有効にできます。#89712 (Kai Zhu) 。
パフォーマンス改善
クエリ実行と最適化
- クエリが行数制限に達した際に、即座に失敗するようにしました。#61872 を解決しました。#62804 (Sean Haynes).
- クエリプラン内の未使用カラムを削除する最適化を追加しました。#75152 を解決しました。#76487 (János Benjamin Antal).
- ConstantNode 内の大きな値に対する最適化を行いました。#72880 をクローズしました。#81104 (Yakov Olkhovskiy).
- ハッシュテーブルの反復処理中にキーをプリフェッチし、cache ミスを最小限に抑えるようにしました。#84708 (lgbo).
- コードを簡素化し、選択アルゴリズムを調整することで、LZ4 の圧縮解除速度を向上させました。#88360 (Raúl Marín).
- JOIN および ARRAY JOIN に遅延カラムレプリケーションを実装しました。一部の出力フォーマットで、Sparse や Replicated などの特殊なカラム表現を通常のカラム表現に変換しないようにしました。これにより、メモリ内での不要なデータコピーを回避できます。#88752 (Pavel Kruglov).
- 動的ディスパッチにより、論理関数で高度な SIMD 演算を使用するようにしました。#90432 (Raúl Marín).
- 結果カラムを不要にゼロ初期化しないことで、JIT 関数の実行性能を向上させました。#90449 (Raúl Marín).
- 動的ディスパッチにより、T64 の圧縮解除を高速化しました。#90610 (Raúl Marín).
- 動的ディスパッチにより、カラムから bool への変換 (
WHERE句内) を高速化しました。#91203 (Raúl Marín). - 動的ディスパッチにより、単一の数値ブロックのソートを高速化しました。#91213 (Raúl Marín).
JOIN の最適化
RIGHTおよびFULL JOINで теперь ConcurrentHashJoi`n を使用するようになりました。これにより、これらの JOIN はより高い並列度で実行されます。RIGHT JOIN および FULL JOIN のさまざまなケースで、最大 2 倍の性能向上が見込めます。#78027 を解決しました。#78462 (Yarik Briukhovetskyi)。- 一部のケースで、
ANY LEFT JOINまたはANY RIGHT JOINをALL INNER JOINに書き換えられるようにしました。#89403 (Dmitry Novik)。 ANTIJOIN に対するJOINランタイムフィルタをサポートしました。あわせて、ロック競合を減らすためにランタイムフィルタの実装をリファクタリングしました。#89710 (Dmitry Novik)。LEFT/INNER JOIN操作において、左テーブルから順序を保ったまま読み続けることをサポートしました。これは後続のステップで活用できます。#89815 (Vladimir Cherkasov)。
MergeTree とストレージの最適化
- 10K+ 個のパーツを持つテーブルで、パーティション pruning が大きく効く
SELECTクエリが最大 8 倍高速化されました。#85535 (James Morrison). - クエリが集約状態に固定 hash map (小さな整数で group by する場合) を使用する際、ClickHouse は集約状態を並列にマージしてクエリを高速化するようになりました。#63666 を解決します。#87366 (Jianfei Hu).
- Parquet リーダー v3 がデフォルトで有効になりました。#88827 (Michael Kolupaev).
- クエリで optimize_read_in_order と query_plan_optimize_lazy_materialization を同時に活用できるようになりました。#88767 を解決します。#88866 (Manuel).
DISTINCTを含むクエリで aggregate projection を使用するようになりました。#86925 をクローズします。#88894 (Nihal Z. Miaji).- 入力のソート順が LIMIT BY のキーと一致する場合、streaming
LIMIT BYtransform を実行するようになりました。#88969 (Eduard Karacharov). - Nullable 型のカラムに対するスパース シリアライゼーションをサポートしました。#88999 (Amos Bird).
- MergeTree リーダーのインプレース filtering を最適化しました。#87119 を解決します。#90630 (Xiaozhe Yu).
- 選択されたマージ候補の幅を小さくするための追加ヒューリスティックを導入しました。#91163 (Mikhail Artemenko).
索引およびテキスト検索の最適化
- ClickHouse は、
ANDとORが混在したフィルタ条件を持つWHERE句に対しても、スキップ索引を用いた索引解析を行えるようになりました。従来は、スキップ索引を利用するにはWHERE句がフィルタ条件の連言 (AND) のみで構成されている必要がありました。この機能は新しい設定use_skip_indexes_for_disjunctions(デフォルト: on) で制御されます。#87781 (Shankar Iyer). like、equals、hasなどの関数を含む述語について、テキスト索引から構築した追加の事前フィルタを活用することで、フィルタリング性能を向上させました。この最適化はquery_plan_text_index_add_hint設定で有効になります。#88550 (Anton Popov).- 辞書ブロックをキャッシュし、トークンのルックアップで二分探索の代わりにハッシュテーブルを使用することで、テキスト索引の性能を向上させました。#88786 (Elmi Ahmadov).
- posting list はデータサイズの大半を占めるため、これをキャッシュすることで連続実行時の性能が向上します。#88912 (Elmi Ahmadov).
- 事前計算済みの可能なキー値の集合に対してより高速にルックアップすることで、逆引き辞書の繰り返しルックアップを最適化しました。#7968 をクローズしました。#88971 (Nihal Z. Miaji).
- スキップ索引と動的しきい値フィルタを使用して処理対象の行数を大幅に削減することで、
ORDER BY...LIMIT Nクエリを最適化しました。#89835 (Shankar Iyer). - 大規模な
minmax索引 (数百万のグラニュール) がある場合、ユーザーは索引解析のレイテンシ低下を実感できるはずです。#90428 (Shankar Iyer).
集約の最適化
- ポイント配列の末尾部分のみをソートし、単調な入力ではソートを省略することで、
AggregateFunctionHistogramを最適化し、約10%の高速化を実現しました。#85760 (MakarDev). - HashSetTable::merge のオーバーヘッドを削減し、一部の countDistinct 操作をわずかに高速化しました。#89727 (Raúl Marín).
- topK のパフォーマンスと動作を改善しました。#90091 (Raúl Marín).
- Decimal の比較演算のパフォーマンスを改善しました。#28192 を解決します。#90153 (Konstantin Bogdanov).
S3 とバックアップの最適化
- S3 はキー名のプレフィックスに基づいて内部的にオブジェクトをパーティション分割し、各パーティションで高いリクエストレートに自動的に対応します。この変更により、2 つの新しい BACKUP 設定
data_file_name_generatorとdata_file_name_prefix_lengthが導入されます。data_file_name_generator=checksumの場合、バックアップデータファイルの名前には内容のハッシュが使用されます。#88418 (Julia Kartseva). - glob パターンを使って作成された S3 テーブルでは、
_pathフィルター値をプッシュダウンすることでクエリパフォーマンスを改善し、S3 の一覧取得操作を回避できるようになりました。これはs3_path_filter_limit設定で制御されます。#91165 (Eduard Karacharov).
データレイクの最適化
- 分散実行: ファイル単位ではなく、行グループ ID 単位でタスクをより適切に分割します。#87508 (Konstantin Vedernikov).
- Paimon 関数でパーティションプルーニングをサポートしました。#90253 (JIaQi Tang).
改善
クエリ最適化と実行
- レプリケートされた MergeTree テーブルに壊れたディスクがある場合でも、
FETCH PARTITIONを許可。 #58663 (Duc Canh Le). - ジオメトリをH3の六角形セルで埋められる
h3PolygonToCells関数を追加しました。#33991 を解決します。#66262 (Zacharias Knudsen). - すべての DDL
ON CLUSTERクエリは、アクセス権の検証をより適切に行うため、元のクエリのユーザーコンテキストで実行されるようになりました。#71334 (pufit). ALTER TABLE ... FREEZEクエリで並列処理をサポートしました。#71743 (Kirill) 。INで定数でない第2引数を使用できるようになりました。また、第2引数としてTupleもサポートしています。#77906 (Yarik Briukhovetskyi).- この PR により、通常のプロジェクションをセカンダリ索引として利用できるようになりました。有効にすると、特定のクエリ条件を使って projection parts からデータを読み取り、ビットマップを生成して、PREWHERE ステージで行を効率的に絞り込めます。#81021 (Amos Bird) 。
- 一貫性保証を強化するため、
enable_shared_storage_snapshot_in_queryがデフォルトで有効になりました。 #82634 (Alexey Milovidov). - 必要に応じて、UNION で型が Variant に統一されるようになりました。#82772 を解決しました。#83246 (Mithun p).
- 辞書やリフレッシャブルmaterialized view などが内部で実行するクエリをログに記録し、
system.query_logに新しいis_internalカラムを追加しました。 #83277 (Miсhael Stetsyuk). ALIASカラム (式を含まず、物理カラムをそのまま参照するだけのカラム) へのINSERTが可能になりました。#80060 をクローズしました。#84154 (Shaurya Mohan).- clickhouse-client で、
SELECTを含むCREATE OR REPLACE TABLEクエリの進行状況バー、ログ、パフォーマンス統計を確認できるようになりました。#38416 を解決しました。#87247 (Diskein) 。 - hash 関数で JSON 型と Dynamic 型をサポートしました。#87734 を修正しました。#87791 (Pavel Kruglov) 。
query_plan_optimize_join_order_limitのデフォルト値は 10 に変更されました。#89312 (Alexey Milovidov) 。- 最適化オプション enable_lazy_columns_replication がデフォルトになり、JOIN 時のメモリ使用量を削減できるようになりました。#89316 (Alexey Milovidov).
- デフォルトで設定
allow_statistics_optimizeを有効化し、JOIN オプティマイザーがカラム STATISTICS を使用するようにしました。 #89332 (Alexey Milovidov). - デフォルトで
create_table_empty_primary_key_by_defaultを有効にしました。こちらのほうが使い勝手に優れています。 #89333 (Alexey Milovidov). - 設定
enable_time_time64_typeは、デフォルトで有効になりました。#89345 (Yarik Briukhovetskyi) 。 - 設定
allow_special_serialization_kinds_in_output_formatsをデフォルトで有効にしました。#89402 (Pavel Kruglov) 。 - Shared Catalog 経由で実行されるクエリでは、
ON CLUSTERを無視するようになりました。(Nikolay Degterinsky). - Shared Catalog で
ALTER DATABASE MODIFY COMMENTをサポートしました。(Nikolay Degterinsky). - Shared データベース内の SharedSet/SharedJoin で
CREATE OR REPLACEがサポートされました。(Tuan Pham Anh). - SharedMergeTree で
SYNC REPLICAを実行する際、他のクエリを待たないようにしました。(Raúl Marín).
Storage および MergeTree の改善
- S3 内のブロブに関連付けられたすべてのタグを含む新しい仮想カラム
_tags(Map(String, String)) を追加しました。#72945 を解決します。#77773 (Zicong Qu). - パーツが deduplicated されたことを示すエラーメッセージを追加しました。#80264 (Aleksandr Musorin).
- OpenSSL 3.5.4 を使用するようにしました。#81389 (Konstantin Bogdanov).
- bcrypt authentication 用の cache を追加しました。#87115 (Nikolay Degterinsky).
- Parquet の timezone なし timestamps (
isAdjustedToUTC=false) は、DateTime64(…) ではなく DateTime64(…, ‘UTC’) として読み取られるようになりました。#87872 (Michael Kolupaev). - SQL で定義されたロールを、
users.xmlで定義されたユーザーに付与できるようになりました。#88139 (c-end). - FINAL クエリで使用されるスキップ索引が主キーの一部であるカラム上にある場合、他のパーツで主キーの積集合を確認する追加のステップは不要なため、実行されなくなりました。#85897 を解決します。#88368 (Shankar Iyer).
disable_insertion_and_mutationが有効な場合でも、remote テーブルおよびデータレイクテーブルへの insert を許可しました。#88549 (Alexander Tokmakov).- テーブルレベルの統計情報を cache し、2 つの設定を追加しました: MergeTree setting
refresh_statistics_intervalと session settinguse_statistics_cache。#88670 (Han Fei). - mutation 中に索引をどう扱うかを制御する MergeTree setting
alter_column_secondary_index_modeを追加しました。設定可能な値: throw, drop, rebuild, and compatibility。#77797 をクローズします。#89335 (Raúl Marín). - パーツに対する
ColumnsDescriptionのテーブル単位の cache を導入し、多数のパーツとカラムを含むテーブルで memory usage を削減します。#89352 (Azat Khuzhin).
システムテーブルと監視
- server および keeper に複数のヒストグラムメトリクスを追加し、keeper リクエスト実行各段階の Duration をインストルメントできるようにしました。 #88158 (Miсhael Stetsyuk).
system.columnsに新しい列統計を追加し、このテーブルで構築されている統計の types を示すようにしました。 #89086 (Han Fei).- クエリ結果 cache が使用された場合、HTTP インターフェイスで
AgeおよびExpiresheaders を返すようになります。新たに次の profile events を導入しました:QueryCacheAgeSeconds,QueryCacheReadRows,QueryCacheReadBytes,QueryCacheWrittenRows,QueryCacheWrittenBytes。 #89759 (Alexey Milovidov). - Web UI にテーブルのプロパティを表示するようにしました。行数またはバイト数をクリックすると、
system.tablesに対するクエリが表示されます。 #89771 (Alexey Milovidov). system.error_logテーブルにlast_error_time、last_error_message、last_error_query_id、last_error_traceの各フィールドを追加しました。 #89879 (Narasimha Pakeer).- deduplication block の ID を
system.part_logsに保存するようにしました。 #89928 (Sema Checherinda). - setting
check_query_single_value_resultのデフォルトをtrueからfalseに変更しました。これにより、CHECK TABLEは集計結果ではなく、パーツごとの詳細な結果を返すようになります。 #90150 (Robert Schulze). - 診断を改善するため、
system.mutationsに新しいカラムparts_in_progress_namesを追加しました。 #90155 (Shaohua Wang). - バックグラウンドジョブの introspection を改善するため、
system.background_schedule_pool{,_log}を導入しました。 #91157 (Azat Khuzhin). - profile events
FailedInitialQueryおよびFailedInitialSelectQueryを追加しました。 #91172 (RinChanNOW). - dangling パーツ用メトリクスのために、
system.tablesに 3 つのカラムを追加しました。 (Han Fei). distributed_cache_client.connection_pool_sizeの値をメトリクスとして公開するようにしました。 (Francesco Ciocchetti).
クライアントと UI の改善
- pager の実行中に Ctrl-C を押してクエリをキャンセルできるようになりました。#80778 を解決しました。#88935 (Grigorii Sokolik).
- Web UI で、値が負の場合でもテーブルにバーが表示されるようになりました。#89016 (Alexey Milovidov).
- 先頭が空白文字のクエリは、履歴に保存されなくなりました。#89116 (Konstantin Bogdanov).
- 対話型モードの
clickhouse-clientとclickhouse-localで、コマンドライン上の識別子のうち、カーソル下の現在の識別子と同じ名前のものがハイライト表示されるようになりました。#89689 (Alexey Milovidov). - Web UI のクエリ入力欄のリサイズハンドルを全幅にしました。#89457 (Alexey Milovidov).
- Web UI の型ヒントがテーブルヘッダーにはみ出さなくなりました。#89753 (Alexey Milovidov).
- Web UI のクエリエディターで、現在選択している行を
Ctrl+/(Mac ではCmd+/) で素早くコメントアウト/コメント解除できるようになりました。#91160 (Samuel K.). - XDG Base Directory のパスから ClickHouse Client の設定を読み込めるようにしました。#89882 を解決しました。#90306 (Wujun Jiang).
S3 とクラウドストレージの改善
- エンドポイントでリージョンが指定されていない場合でも、S3 でオプトイン制の AWS リージョンを自動的に使用できるようにしました。 #88930 (Andrey Zvonov).
- S3 の再パーティション化が発生した場合でもバックアップが確実に成功するよう、25.6 では
s3_retry_attemptsのデフォルト値を 500 に設定しました。 #89051 (Nikita Mikhaylov). - STS エンドポイントとやり取りする S3 の認証情報を cache し、異なる関数呼び出し間で再利用できるようにしました。 #89734 (Antonio Andelic).
- S3 で事前署名付き URL が使えるようになりました。 #65032 をクローズします。 #90827 (Yarik Briukhovetskyi).
データレイクの改善
- 設定
delta_lake_snapshot_start_version、delta_lake_snapshot_end_versionを使用して、deltaLakeテーブル関数経由で Delta Lake CDF を読み取れるようにしました。#90431 (Kseniia Sumarokova). - select との一貫性のため、table function への insert into で storage settings をサポートしました。Closes #89386. #91707 (Kseniia Sumarokova).
- 黙って何もしないのではなく、データレイクに対する truncate クエリでは “not implemented” エラーを返すようにしました。Closes #86604. #91713 (Kseniia Sumarokova).
Kafkaの改善
kafka_compression_codecおよびkafka_compression_level設定を使用して、Kafkaプロデューサーの圧縮を指定できるようになりました。#89073 (János Benjamin Antal).- 調整可能な
Kafkatable engine の設定としてkafka_consumer_reschedule_msを追加しました。これにより #89204 が解決されます。#90112 (Jeremy Aguilon).
Keeper の改善
- Keeper で append リクエストのバッチに対するバイトサイズ制限を追加しました。制限は
keeper_server.coordination_settings.max_requests_append_bytes_sizeで制御されます。 #90342 (Antonio Andelic). - ハンドシェイク時に、
last_zxid_seen(クライアントが提供)> last_processed_zxidの場合、クライアントを拒否する Keeper サーバー側のチェックを追加しました。 #90016 (Miсhael Stetsyuk). - S3Queue のクリーンアップ時に、RemoveRecursive Keeper リクエストのノード上限を引き下げました。 #90201 (Antonio Andelic).
入力/出力フォーマットの改善
- 論理型 UUID を持つ
FixedString(16)として表現される場合の、Parquet における UUID のサポートを追加しました。 #74484 (alekseev-maksim). hasAnyTokensまたはhasAllTokens関数への入力として、文字列の配列をサポートしました。 #89124 (Elmi Ahmadov).- Pretty フォーマットでは、名前付きタプルが Pretty JSON として表示されるようになりました。これにより #65022 が解決されます。 #91779 (Mostafa Mohamed Salah).
- CapnProto のメッセージサイズ制限を追加しました。これは
format_capn_proto_max_message_sizeで変更できます。 #91888 (Antonio Andelic).
テキスト索引の改善
- テキスト索引が ReplacingMergeTree テーブルでも利用できるようになりました。#90908 (Elmi Ahmadov).
PREWHEREで転置索引を使用できるようになりました。#89975 を解決しました。#89977 (Peng Jian).- N-gram トークナイザーで
ngram_length = 1を指定できるようになりました。#91529 (George Larionov). - I/O を削減し、クエリパフォーマンスを向上させるため、テキスト索引のデシリアライズ済みヘッダー向けの cache を導入しました。#89513 (Elmi Ahmadov).
その他の改善
- サイズ制限の検証時に、
ArrayとMapのバイナリデシリアライゼーションでmax_binary_string_sizeではなくmax_binary_array_size設定を使用するよう修正しました。#88744 (Raufs Dunamalijevs). - システムメモリが 5GB 未満の場合、デフォルトで実行可能ファイルを mlock しないようにしました。#89751 (Alexey Milovidov).
min_bytes_for_wide_partとvertical_merge_algorithm_min_bytes_to_activateを 128MB に設定し、system.metric_logテーブルのマージ中のメモリ使用量を削減しました。#89811 (filimonov).- S3 ライブラリが XML レスポンスを解析する際のネットワークエラーを再試行するようにしました。#90216 (Sema Checherinda).
- ガードレールの制限値に近づいた際の警告メッセージを更新し、現在値と throw 値を表示するようにしました。#90438 (Nikita Fomichev).
- cache の状態全体を含む単一の chunk を作成する代わりに、
system.filesystem_cacheテーブルで chunk をストリーミングするようにしました。#90508 (Kseniia Sumarokova). - ベクトル類似度索引キャッシュ内のエントリは、テーブルパーツが削除された場合や新しいパーツに置き換えられた場合に削除されるようになりました。#90750 (Shankar Iyer).
- 認証前に返される HTTP エラーレスポンスで ClickHouse server のバージョンが露出しないようにしました。#91003 (filimonov).
FINAL処理後に行ポリシーとPREWHERE条件を適用できるよう、新しい設定apply_row_policy_after_finalとapply_prewhere_after_finalを追加しました。#90986 を修正。#91065 (Yarik Briukhovetskyi).- tupleElement で JSON 型をサポートしました。#81630 をクローズ。#91327 (Pavel Kruglov).
- tuple 要素へのアクセスで負のインデックス (例: tuple.-1) をサポートしました。#91665 (Amos Bird).
ArrayをQBitに CAST する際、暗黙的な型変換を許可しました。#91846 (Raufs Dunamalijevs).system.blob_storage_logに新しいカラムelapsed_time_microsecondsを追加しました。#92322 (Alexey Milovidov).- Shared データベースでの drop table の遅延をユーザーが制御できる新しい設定
database_shared_drop_table_delay_secondsを追加しました。(Nikolay Degterinsky). - named collections の暗号化されたキーを遅延読み込みするようにしました。(Pablo Marcos).
- 分散キャッシュで、バッファごとにクライアント cache を無効にできるようにしました。(Kseniia Sumarokova).
- 分散キャッシュ connections の共有制限を追加しました。(Kseniia Sumarokova).
バグ修正
このセクションには、重要なバグ修正の一部を抜粋して掲載しています。このリリースに含まれるすべてのバグ修正の完全な一覧については、完全な変更履歴を参照してください。
クエリ実行の修正
- 分散マージ集約で複数のリモート分片が関与する場合に、
rows_before_limit_at_leastが不正になる問題を修正しました。#63511 (Amos Bird). INSERT INTO ... SELECTクエリの後に0 rows in setと表示される問題を修正しました。#47800 をクローズします。#79462 (Engel Danila).- 定数引数と短絡評価を使用した
multiIfの問題を修正しました。#72714 をクローズします。#84546 (Yakov Olkhovskiy). - サブクエリ制約を持つテーブルを選択した際に発生する LogicalError を修正しました。#84190 を解決します。#85575 (Pervakov Grigorii).
- query_plan_optimize_join_order_limit > 1 の場合に、cross join の並べ替えで発生する論理エラーを修正しました。#89409 をクローズします。#88286 (Vladimir Cherkasov).
- 右側テーブルの一意キーで OR 条件を使用した際に、JOIN 結果が不正になる問題を修正しました。#89391 を解決します。#89512 (Vladimir Cherkasov).
- 重複カラムを含む full_sorting_merge join における論理エラーを修正しました。#86957 を解決します。#89495 (Vladimir Cherkasov).
- 重複カラムを含む JOIN で、
Invalid number of rows in Chunkエラーが発生する可能性がある問題を修正しました。#89411 を解決します。#90053 (Vladimir Cherkasov). - 並列レプリカが有効な場合に、分散テーブルでの RIGHT JOIN でデータが重複する問題を修正しました。#90806 (zoomxi).
join_use_nulls、複数の join、および cross join を併用した場合に発生する論理エラーを修正しました。#91853 (Vladimir Cherkasov).
データ型とJSONの修正
- 一部のケースで、名前にドットを含むカラムからサブカラムを読み取る際の問題を修正しました。#81261、#82058、#88169 を解決します。#87205 (Pavel Kruglov).
- JSON 内で Float と Bool が混在する配列を読み取る際の問題を修正しました。以前は、このようなデータを挿入すると例外が発生していました。#88008 (Pavel Kruglov).
LowCardinality(Nullable(T))から Dynamic への cast に関する問題を修正しました。#86365 (Pavel Kruglov).- 高度な JSON 共有データのシリアライゼーションにおいて、パスとそのサブカラムの読み取り時に発生しうる論理エラーを修正しました。#89805 をクローズします。#89819 (Pavel Kruglov).
- データ型のバイナリデシリアライゼーションで発生しうるスタックオーバーフローを修正しました。#88710 をクローズします。#89822 (Pavel Kruglov).
- 論理エラーや予期しない結果につながる可能性があった、JSON 内の共有データと動的パスの不整合な状態を修正しました。#90816 (Pavel Kruglov).
- Summing/Aggregating/Coalescing MergeTree における JSON カラムのマージに関する問題を修正しました。#91151 (Pavel Kruglov).
MergeTree とストレージの修正
- 有効期限 (TTL) におけるカラムの早期削除に起因する複数の問題を修正しました。#88002 を解決します。#88860 (Amos Bird)。
- PK が逆順の場合に
min(PK)/max(PK)の結果が不正になる問題を修正しました。これにより #83619 を修正します。#88796 (Amos Bird)。 - 主キーが降順でソートされている場合に、
JOIN最適化で分片が誤っていた問題を修正しました。#88512 を解決します。#88794 (Amos Bird)。 - projection の索引読み取りパスにおける race condition を修正しました。#89497 を解決します。#89762 (Peng Jian)。
deduplicate_merge_projection_mode='ignore'の使用時に、空でない projection を持つ、TTL によって空になったパーツの merge 処理が不正だった問題を修正しました。#89430 を解決します。#89458 (Amos Bird)。- compact パーツに対する一部の
ALTERクエリの後に発生する可能性があったTOO_MANY_MARKSerror を修正しました。#91980 (alesapin)。
Parquet とフォーマットの修正
input_format_parquet_local_file_min_bytes_for_seekが 0 に設定されている場合に Parquet リーダーで発生するセグメンテーションフォルトを修正しました。#78456 を解決します。#88784 (Animesh).- Parquet writer で、
created_by文字列を正しいフォーマットで出力するよう修正しました。#87735 (Michael Kolupaev). - native writer を使用した単一スレッドでの書き込み時に、Parquet への書き込みで元の順序が保持されない問題を修正しました。#90126 (Arthur Passos).
- DICTIONARY_V2 でエンコードされ、NULL 値のみを含む String カラムを読み取る際に発生する ORC リーダーの不具合を修正しました。#91889 (Peng Jian).
- ORC フォーマットから Date 型および DateTime64 型を読み取る際に発生するオーバーフローを修正しました。#70976 をクローズします。#91572 (Yarik Briukhovetskyi).
Iceberg とデータレイクの修正
- icebergS3Cluster のプロトコルを修正しました。iceberg クラスター関数で、スキーマ進化、位置削除、および等価削除がサポートされるようになりました。#88287 を解消します。#88919 (Yang Jiang).
- Glue カタログの使用時に、timestamp カラムを持つ Iceberg テーブルで発生する JSON Exception を修正しました。#90210 を解消します。#90209 (Alsu Giliazova).
- マニフェストファイルでソート順が指定されていない場合、ClickHouse は Iceberg に対して read-in-order 最適化を使用しないようになりました。#89178 を修正します。#90304 (alesapin).
関数の修正
- 関数
reverseUTF8のバグを修正しました。以前のバージョンでは、長さ 4 の UTF-8 コードポイントのバイト列を誤って逆順にしていました。これにより #88913 をクローズします。#88914 (Alexey Milovidov). cramersV、cramersVBiasCorrected、theilsU、contingencyで不正確な結果を引き起こしていた phi-squared の計算を修正しました。#87831 (Nihal Z. Miaji).top_kが単一の引数で呼び出された場合に、threshold パラメータを正しく反映するよう修正しました。#88757 をクローズします。#88867 (Manuel).countIf(*)の引数が切り捨てられる問題を修正しました。#89372 をクローズします。#89373 (Manuel).trim、ltrim、rtrim関数が 2 つの引数で動作しない問題を修正しました。#90170 をクローズします。#90305 (Nihal Z. Miaji).- 空の Array と
isNull関数を使用した場合にarrayFilter関数が動作しない問題を修正しました。#73849 をクローズします。#91105 (Nihal Z. Miaji).
メモリ関連およびクラッシュ修正
IN内にARRAY JOINがあり、enable_lazy_columns_replication設定が有効な場合に、リモートクエリ中に発生しうるクラッシュを修正しました。#90361 を解決しました。#89997 (Pavel Kruglov)。- 破棄順序の誤りにより、サーバーの正常なシャットダウン中に発生していたクラッシュを修正しました。#82420 を解決しました。#90076 (Nikita Mikhaylov)。
- aggregate function の state に LowCardinality(String) カラムのシリアライズ済みの値が含まれている場合に発生するクラッシュを修正しました。#89550 (Pavel Kruglov)。
- 不正な分片ディレクトリ名のパース時に StorageDistributed で発生するクラッシュを修正しました。#90243 (Aleksandr Musorin)。
- ユーザー空間ページキャッシュが有効な場合に、誤ってメモリ制限エラーが発生していた問題を修正しました。#91361 (Michael Kolupaev)。
MEMORY_LIMIT_EXCEEDEDの発生後に aggregate functions で起こりうるクラッシュを修正しました。#92390 (Azat Khuzhin)。- ハッシュ結合の結果生成時のメモリ追跡を改善しました。#89560 (Azat Khuzhin)。
セキュリティとアクセスの修正
- 存在しないロールが割り当てられたユーザーが clusterAllReplicas を実行しようとした際に発生する
ACCESS_ENTITY_NOT_FOUNDエラーを修正しました。#87670 を解消します。#89068 (pufit). remoteテーブル関数で対象ホストにlocalhostを指定した場合の、ALTER UPDATEクエリに対するアクセス検証を修正しました。#90761 (pufit).- 部分的な権限取り消しにおけるワイルドカード権限のチェックを修正しました。#90922 (pufit).
- ワイルドカードによる権限取り消しを伴うグローバル権限の処理を修正しました。#90928 (pufit).
Replicated databaseの修正
- 復旧後、Replicated databaseのレプリカが
Failed to marked query-0004647339 as finishedのようなメッセージを長時間出力し続けたままスタックすることがありましたが、修正しました。 #88671 (Alexander Tokmakov). - シャットダウンとバックグラウンドの
INSERTの競合により Distributed で発生する use-after-free を修正しました。 #88640 を解決しました。 #89136 (Azat Khuzhin). - リフレッシャブルmaterialized view: リフレッシュ中にソーステーブルが完全に削除された場合に、まれにserverがクラッシュする問題を修正しました。 #89203 (Michael Kolupaev).
Keeper の修正
- ローテーション中に changelog の名前が適切に変更されなかった場合でも、Keeper の起動時に changelog を正しく読み込めるように修正しました。 #89496 (Antonio Andelic).
その他の主な修正
- スキッピング索引の解析で発生していたパフォーマンス低下を修正しました。 #89004 (Anton Popov).
- 25.8 でスムーズなアップグレードを妨げていた Hive パーティション化の互換性問題を修正しました。 #90202 (Kseniia Sumarokova).
- 無限に実行される
nan/infWITH FILLクエリを修正しました。#69261 を解決します。#90255 (Konstantin Bogdanov) 。 - Time および Time64 は、DateTime および DateTime64 から変換する際に、タイムゾーンが正しく反映されるようになりました。#89896 をクローズしました。#90310 (Yarik Briukhovetskyi).
- 論理更新後に、クエリ条件キャッシュが有効な
SELECTクエリで誤った結果が返される可能性がある問題を修正しました。修正 #90176。 #90204 (Anton Popov). String集約状態のインメモリでのシリアライゼーション互換性を修正しました。#90880 (Antonio Andelic).NestedLowCardinalityカラムに対するSummingMergeTreeの集約処理を修正しました。#90927 (Ivan Babrou).system.view_refreshesがエラーNo macro 'replica' in configで失敗する問題を修正しました。 #92203 (Michael Kolupaev).- Shared Catalog で、MV に間接的にカラムを追加する ALTER のレプリケーションを修正しました。(Nikolay Degterinsky).
- Shared Catalog の状態適用を停止させていた、失敗した MV commit によるハングを修正しました。(Nikolay Degterinsky).
- Shared Catalog を使用するセカンダリレプリカでの
ALTER時の制約チェック設定の不具合を修正しました。(Nikolay Degterinsky). - SharedCatalog への移行時にデータベースコメントが保持されるように修正。(Alexander Tokmakov).
- Shared Catalog のセカンダリ レプリカで materialized view が置き換えられてしまう不具合を修正しました。(Nikolay Degterinsky).
- system.distributed_cache_usage カウンターの不具合を修正。(Kseniia Sumarokova).
- Shared Catalog で、
ILLEGAL_COLUMN例外によって作成に失敗したテーブルの DROP 処理が途中で止まってしまう問題を修正しました。(Nikolay Degterinsky). - Replicatedデータベースでの SharedSet/SharedJoin に対する
CREATE OR REPLACEを無効にしました。(Tuan Pham Anh). - Shared データベースにおける RMV のリフレッシュ時に発生する
UNFINISHED例外を修正しました。 (Nikolay Degterinsky). - Shared データベースで
TABLE_ALREADY_EXISTSにより発生するクラッシュを修正しました。(Nikolay Degterinsky). - Shared Catalog において、CREATE クエリが壊れているテーブルの移行を修正しました。(Nikolay Degterinsky).
getStatusでは、常にメモリ内の仮想パーツを使用するようにしました。(Mikhail Artemenko).- 起動時の Shared Catalog の状態適用処理に再試行を追加しました。(Nikolay Degterinsky).
- テーブル作成中に例外が発生した後、
DROP DATABASEが完了しなくなる問題を修正しました。(Nikolay Degterinsky). - 分散キャッシュのロジックエラーを修正しました。(Kseniia Sumarokova).
- 分散キャッシュで誤ったエラーが出る問題を修正しました。(Kseniia Sumarokova).
- Shared Catalog の ~TemporaryLockForUUIDDirectory で発生する
LOGICAL_ERRORを修正しました。(Nikolay Degterinsky). - データベースの名前変更後に、メタデータキャッシュが誤った依存関係を返す不具合を修正しました。(Nikolay Degterinsky).
- Shared Catalog: セカンダリレプリカで大きなテーブルをDROPした際に発生する不具合を修正しました。(Raúl Marín).
- 分散キャッシュの
processWriteRequestにおける論理エラーを修正しました。(Kseniia Sumarokova). - セカンダリレプリカでの MV
ALTERに対するチェックを削除。(Nikolay Degterinsky).