後方互換性を持たない変更
- 関数
greatestとleastは、これまでは引数のいずれかが NULL だと NULL を返していましたが、現在は NULL の入力値を無視するようになりました。たとえば、SELECT greatest(1, 2, NULL)は 2 を返します。これにより、挙動が PostgreSQL と互換になります。#65519 (kevinyhzou). - 予期しない結果を招くおそれがあるため、デフォルトでは ORDER BY/GROUP BY/PARTITION BY/PRIMARY KEY で Variant/Dynamic 型を使用できないようにしました。#69731 (Pavel Kruglov).
- システムテーブル
generate_seriesとgenerateSeriesを削除しました。これらは次の変更で誤って追加されていました: #59390。#71091 (Alexey Milovidov). StorageExternalDistributedを削除しました。#70600 をクローズします。#71176 (flynn).- サーバー設定 (users.xml) の内容がクライアントにも適用されるようになりました。これは、たとえば
date_time_output_formatのようなフォーマット設定で役立ちます。#71178 (Michael Kolupaev). - JSON サブカラム用のファイル内で特殊文字がエスケープされていないことに起因する
No such file or directoryエラーが発生する可能性を修正しました。#71182 (Pavel Kruglov). - テーブルエンジン Kafka、NATS、RabbitMQ は、
SOURCES階層内でそれぞれ個別の権限で扱われるようになりました。これらのエンジンタイプでテーブルを作成する非デフォルトのデータベースユーザーには、必要な権限を追加してください。#71250 (Christoph Wurm). - 実行前に mutation クエリ全体 (サブクエリを含む) を検証するようにしました。これにより、無効なクエリを誤って実行してしまい、有効な mutation を妨げる不要な mutation が蓄積するのを防ぎます。#71300 (Christoph Wurm).
- ファイルシステムキャッシュ設定
skip_download_if_exceeds_query_cacheの名前をfilesystem_cache_skip_download_if_exceeds_per_query_cache_write_limitに変更しました。#71578 (Kseniia Sumarokova). - 混乱を避けるため、min/max 関数で Dynamic/Variant 型を禁止しました。#71761 (Pavel Kruglov).
deltaSumTimestampにおけるEnum、UInt128、UInt256引数のサポートを削除しました。また、deltaSumTimestampの 2 番目の (“timestamp”) 引数であるInt8、UInt8、Int16、UInt16のサポートも削除しました。#71790 (Alexey Milovidov).- ClickHouse を Dictionary のソースとして使用する場合のソースクエリ検証を追加しました。#72548 (Alexey Katsman).
新機能
- 指定したテーブルのすべてのパーツ、またはテーブルが指定されていない場合はすべてのテーブルについて、プライマリインデックスを読み込む SYSTEM LOAD PRIMARY KEY コマンドを実装しました。これは、ベンチマークでの利用や、クエリ実行時の余計なレイテンシの防止に役立ちます。#66252 (ZAWA_ll).
- 指定したテーブル内のすべてのパーツのプライマリインデックス、またはテーブルを指定しない場合はすべてのテーブルのプライマリインデックスを読み込むためのステートメント
SYSTEM LOAD PRIMARY KEYが追加されました。これは、ベンチマークや、クエリ実行時の余分なレイテンシを防ぐのに役立ちます。#67733 (ZAWA_ll). - 現在のユーザー/ロールに特定の権限が付与されているかどうか、および対応するテーブル/カラムがメモリ上に存在するかどうかを確認するための
CHECK GRANTクエリを追加しました。#68885 (Unalian). - ワークロードとresource管理を記述するSQL構文が追加されました。詳細はdocsを参照してください。 #69187 (Sergei Trifonov).
- Iceberg データストレージフォーマットでは、テーブルのスキーマを柔軟に変更できます。このプルリクエストでは、カラムの順序、カラム名、単純な型拡張が変更された Iceberg フォーマットのテーブルを読み込めるようになりました。#69445 (Daniil Ivanik).
- 各認証方式に個別の有効期限を設定できるようにし、ユーザーエンティティからは削除しました。#70090 (Arthur Passos) 。
- クエリの発行元からクラスター内の他のノードに外部ユーザーのロールを伝播します。外部認証機構 (LDAP など) にアクセスできるのがクエリ発行元だけの場合に便利です。#70332 (Andrey Zvonov).
- String から JSON への alter をサポートしました。この PR では、JSON 型および Dynamic 型のシリアライゼーションも新バージョン V2 に変更されています。旧バージョン V1 も、設定
merge_tree_use_v1_object_and_dynamic_serializationを有効にすることで引き続き使用できます (アップグレード時に有効化しておけば、問題なくバージョンをロールバックできます) 。#70442 (Pavel Kruglov) 。 DateTime64を秒単位の固定精度を持つInt64値に変換する関数toUnixTimestamp64Secondを追加しました。これにより、日付が 1970 年 1 月 1 日木曜日 00:00:00 UTC より前の場合は、負の値を返せるようになりました。 #70597 (zhanglistar).- ソーステーブルのプロジェクションとセカンダリ索引がターゲットテーブル側のそれらの部分集合である場合に attach を許可する新しい設定
enforce_index_structure_match_on_partition_manipulationを追加しました。#70602 をクローズしました。#70603 (zwy991114). - 関数
castの出力は Apache Spark と異なるため、gluten プロジェクトで差異が生じます。https://github.com/apache/incubator-gluten/issues/7602 を参照してください。この PR では、Spark のテキスト出力フォーマットをサポートする機能が追加されました。デフォルトでは無効です。#70957 (zhanglistar). - ユーザー認証向けに、S3 endpoint 用の新しい header タイプ (
access_header) が追加されました。これにより、最も低い優先度で access header を取得できるようになり、他の任意のソース (たとえば、table のスキーマや named collection) からのaccess_key_idによって上書きされます。#71011 (MikhailBurdukov). - 設定ティアの初期実装を追加。 #71145 (Raúl Marín).
- ORDER BY WITH FILL で staleness 句をサポートしました。#71151 (Mikhail Artemenko) 。
- JSON文字列のシリアライゼーション/デシリアライゼーションを通じて、Map/Tuple/Object から新しい JSON へのシンプルな CAST を実装しました。#71320 (Pavel Kruglov).
- 集約関数
anyに、別名anyRespectNulls、firstValueRespectNulls、anyValueRespectNullsを追加しました。あわせて、集約関数anyLastにも、別名anyLastRespectNullsとlastValueRespectNullsを追加しました。これにより、たとえばanyLast_respect_nullsStateIfではなくSELECT anyLastRespectNullsStateIfのように、キャメルケースとアンダースコアを混在させた構文ではなく、より自然なキャメルケースのみの構文を使えるようになりました。#71403 (Peter Nguyen). - configuration パラメーター
date_time_utcを追加し、JSON ログのフォーマットで RFC 3339/ISO8601 形式の UTC 日時をサポートするようになりました。#71560 (Ali) 。 - join のどちら側をクエリプラン内で内部 (build) テーブルとして扱うかを選択するオプションが追加されました。これは
query_plan_join_swap_tableで制御され、autoに設定できます。このモードでは、ClickHouse は行数が最も少ないテーブルを選択しようとします。#71577 (Vladimir Cherkasov). - パーツで粒度が一定の場合の索引粒度の値に対するメモリ使用量を最適化しました。さらに、パーツに対して常に一定の粒度を選択できる機能 (設定
use_const_adaptive_granularity) を追加しました。これにより、メモリ使用量を常に最適な状態に保ちやすくなります。これは、大規模なワークロード (共有ストレージ上の数兆行) において、データパーツのメタデータ (索引粒度の値) によってメモリ使用量が増え続けるのを防ぐのに役立ちます。 #71786 (Anton Popov). allowed_feature_tierをグローバルスイッチとして実装し、すべての実験的 / ベータ機能を無効にできるようにしました。#71841 (Raúl Marín) 。iceberg[S3;HDFS;Azure]Cluster、deltaLakeCluster、hudiClusterテーブル関数が追加されました。#72045 (Mikhail Artemenko) 。ALTER USER {ADD|MODIFY|DROP SETTING}、ALTER USER {ADD|DROP PROFILE}の構文を追加し、ALTER ROLEとALTER PROFILEにも同様の構文を追加しました。#72050 (pufit).- Precision-Recall 曲線の AUC (Area Under the Curve) を計算する
arrayPrAUC関数を追加しました。#72073 (Emmanuel) 。 MergeTreeテーブルのプライマリインデックス用 cache を追加しました (テーブル設定use_primary_key_cacheで有効化できます) 。プライマリインデックスで遅延ロードと cache の両方が有効になっている場合、常時メモリに保持するのではなく、必要に応じて cache に読み込まれます (mark cache と同様です) 。また、データパーツの insert/merge/fetch 時およびテーブルの再起動時に、プライマリインデックスをプリウォームする機能を追加しました (設定prewarm_primary_key_cacheで有効化できます) 。#72102 (Anton Popov).- Array型向けのindexOfAssumeSorted関数を追加。非減少順にソートされた配列での検索を最適化します。#72517 (Eric Kurbanov).
- 集約関数
groupConcatで、オプションの第2引数として区切り文字を指定できるようになりました。#72540 (Yarik Briukhovetskyi) 。 - 新しい設定である
http_response_headersにより、HTTPレスポンスヘッダーをカスタマイズできるようになりました。たとえば、データベースに保存されている画像をブラウザーに表示させることができます。これにより #59620 がクローズされました。#72656 (Alexey Milovidov). - Int64 の Unix timestamp 値を DateTime64 に変換する関数
fromUnixTimestamp64Secondを追加しました。#73146 (Robert Schulze) 。
パフォーマンス改善
Nullableカラムに対する関数について、データブロック内の NULL 値の比率が指定したしきい値を超えた場合に短絡評価で実行できるようにする 2 つの新しい設定short_circuit_function_evaluation_for_nullsとshort_circuit_function_evaluation_for_nulls_thresholdを追加しました。つまり、関数は non-null 値を持つ行に対してのみ実行されます。これは、少なくとも 1 つの引数が NULL の行に対して NULL 値を返す関数にのみ適用されます。#60129 (李扬).clickhouse disks remove --recursiveのオブジェクトストレージディスクに対するメモリ使用量が削減されました。#67323 (Kirill) 。- これにより、
join_algorithm='parallel_hash'では、並列処理のためにスレッド間に分配する際、入力ブロックのカラムをコピーしなくなりました。#67782 (Nikita Taranov). - より多くの式でJITコンパイルを有効にしました:
abs/bitCount/sign/modulo/pmod/isNull/isNotNull/assumeNotNull/to(U)Int*/toFloat*、比較関数(=,<,>,>=,<=)、論理関数(and,or)。#70598 (李扬). - これにより、
join_algorithm設定がdefaultに設定されている場合は、 (該当する場合に)parallel_hashアルゴリズムが使用されます。parallel_hashを使用できない場合は、従来の 2 つの選択肢 (directとhash) も引き続き考慮されます。#70788 (Nikita Taranov). - 非交差パーツ向けの
Replacingマージアルゴリズムを最適化しました。#70977 (Anton Popov) 。 - メトリクスおよび system.detached_parts では、readonly および write-once のディスク上にあるデタッチされたパーツを一覧に含めないようにしました。 #71086 (Alexey Milovidov).
- デフォルトでは、負荷の高い非同期メトリクスは計算しないようにしました。この機能は #40332 で導入バージョンとなりましたが、1社の顧客にしか必要とされない重いバックグラウンドジョブを常時動かすのは望ましくありません。#71087 (Alexey Milovidov) 。
- クリティカルリージョンを縮小することで、system.query_metric_log の収集間隔の性能と精度を向上させました。 #71473 (Pablo Marcos) 。
WHEREおよびON式から共通の式を抽出するオプションを追加し、join 時に使用されるハッシュテーブルの数を削減できるようにしました。optimize_extract_common_expressions = 1で有効にできます。#71537 (János Benjamin Antal).LowCardinality(String)を使用したSELECTで索引を使えるようになりました。#71598 (Yarik Briukhovetskyi).- 並列レプリカを使用し、ローカルプランが有効な状態でクエリを実行する際は、ワーカー側でのスキップ索引解析は行われません。コーディネーターは、自身の側 (クエリのイニシエーター上) で行った索引解析に基づいて、ワーカーが読み取る範囲を選択します。 #72109 (Igor Nikonov).
- https://github.com/ClickHouse/ClickHouse/pull/57631 の、compact パーツ内の単一カラムのサブカラムを読み取るための最適化を復活させました。これは誤って削除されていました。 #72285 (Pavel Kruglov).
- コンパレータ内の呼び出しの仮想化を排除することで、
LowCardinality(String)カラムのソートを高速化しました。 #72337 (Alexander Gololobov). - 一部のシンプルなデータ型に対して、argMin/Max 関数を最適化しました。#72350 (alesapin) 。
- ロック競合を減らすため、memory tracker のロック処理を共有ロックで最適化しました。#72375 (Jiebin Sun).
- 新しい設定
use_async_executor_for_materialized_viewsを追加しました。materialized view のクエリ実行を非同期化し、場合によってはマルチスレッド化することで、INSERT 時のビュー処理を高速化できますが、その分メモリ消費量も増える可能性があります。 #72497 (alesapin). - 設定
max_size_to_preallocate_for_aggregation、max_size_to_preallocate_for_joinsのデフォルト値がさらに10^12に引き上げられたため、この最適化がより多くのケースに適用されるようになりました。#72555 (Nikita Taranov) 。 - aggregate functions の state のデシリアライゼーション (データ型
AggregateFunctionおよび distributed queries における) のパフォーマンスを改善しました。フォーマットRowBinaryのパース性能もわずかに向上しました。#72818 (Anton Popov).
改善
- 定数の配列とキャプチャされた定数引数を持つ高階関数は、定数を返すようになりました。#58400 (Alexey Milovidov) 。
- 仮想行の生成による read-in-order の最適化により、特に複数のパーツが存在する場合に、マージソート時に読み込まれるデータ量を削減できるようになりました。 #62125 (Shichao Jin).
- クエリプランのステップ名 (
EXPLAIN PLAN json=1) とパイプラインのプロセッサ名 (EXPLAIN PIPELINE compact=0,graph=1) に、接尾辞として一意の ID が付くようになりました。これにより、プロセッサのプロファイラ出力や OpenTelemetry トレースを EXPLAIN の出力に対応付けられます。#63518 (qhsong) 。 - Azure Blob Storage への書き込み後にオブジェクトの存在を確認するオプションが追加されました。この動作は設定
check_objects_after_uploadで制御されます。#64847 (Smita Kulkarni). - HashTable destroyElements における use-after-dtor のロジックを修正しました。 #65279 (cangyin).
clickhouse-localでは、デフォルトでAtomicデータベースを使用する。#50647 の項目 1 と 5 に対応。#44817 をクローズ。#68024 (Alexey Milovidov).- 書き込みバッファは、明示的にキャンセルするか確定する必要があります。クライアントにエラーを通知するため、Exception によって HTTP プロトコルが中断されます。 #68800 (Sema Checherinda).
- replica_dir を作成し、DDLWorker でレプリカをアクティブとしてマークすることで、稼働中の DDLWorker ホストを報告できるようにしました。#69658 (Tuan Pham Anh) 。
-
DDLQueryStatusSourceをリファクタリング: -DDLQueryStatusSourceをDistributedQueryStatusSourceにリネームし、基底クラスにする -DDLQueryStatusSourceから派生する 2 つのサブクラスDDLOnClusterQueryStatusSourceとReplicatedDatabaseQueryStatusSourceを作成し、それぞれDDL On Clusterと Replicated databases の DDL タスクのステータスをクエリできるようにする。 2.DDLOnClusterQueryStatusSource`で、オフラインのホストを待機しないようにする機能をサポート。 #69660 (Tuan Pham Anh).
- 新しいキャンセルロジックを追加:
CancellationCheckerは開始されたすべてのクエリのタイムアウトをチェックし、タイムアウトに達した時点で停止します。#69880 (Yarik Briukhovetskyi). allow_experimental_join_condition設定を削除し、非等価条件をデフォルトで許可するようにしました。#69910 (Vladimir Cherkasov) 。parallel_replicas_local_planがデフォルトで有効になりました。クエリのイニシエーター上で本格的なローカルプランを構築することで、リソース消費を抑えつつ並列レプリカのパフォーマンスが向上し、より多くのクエリ最適化を適用できるようになります。#70171 (Igor Nikonov).- http_handlers で user/パスワードを設定できるようにしました (
dynamic_query_handler/predefined_query_handler向け) 。#70725 (Azat Khuzhin) 。 - ストレージ S3Queue の一部の設定で、
ALTER TABLE ... MODIFY/RESET SETTING ...がサポートされるようになりました。#70811 (Kseniia Sumarokova) 。 - ディレクトリの一覧表示時にオブジェクトストレージ API を呼び出さないようにしました。これはコスト効率が悪い可能性があるためです。代わりに、ファイル名の一覧をメモリに保持します。この変更のトレードオフは、初期ロード時間が増加することと、ファイル名を保持するためのメモリが余分に必要になることです。 #70823 (Julia Kartseva).
clickhouse-compressorに--threadsパラメータを追加し、データを並列に圧縮できるようになりました。#70860 (Alexey Milovidov).- Replxx クライアントの履歴のサイズを設定可能にしました。#71014 (Jiří Kozlovský) 。
- INSERT 時、マージ時、パーツのフェッチ時、およびテーブルの起動時に、mark cache へ marks を読み込めるようにする設定
prewarm_mark_cacheが追加されました。 #71053 (Anton Popov). - ParquetネイティブリーダーでBoolean型をサポート。 #71055 (Arthur Passos).
- S3 とのやり取り時に、“Malformed message” など、より多くのエラーで再試行するようにしました。#71088 (Alexey Milovidov).
- S3 に関する一部のメッセージのログレベルを引き下げました。#71090 (Alexey Milovidov) 。
- スペースを含むHDFSファイルへの書き込みをサポート。 #71105 (exmy).
system.session_logで問題なさそうです。これにより #51760 がクローズされます。#71150 (Alexey Milovidov).- 並列レプリカを使用するクエリでの RIGHT / FULL JOIN を修正しました。これにより、RIGHT JOIN は並列レプリカで実行できるようになりました (右側テーブルの読み取りは分散されます) 。FULL JOIN はノード間で並列化できないため、ローカルで実行されます。#71162 (Igor Nikonov).
- レプリケートテーブル、辞書、およびビューの数を制限する設定が追加されました。#71179 (Kirill).
- #71227 の修正。#71286 (Arthur Passos) 。
- サーバー/ユーザーのメモリ使用量に応じて、
GROUP BY/ORDER BYを自動的にディスクへ退避します。max_bytes_ratio_before_external_group_by/max_bytes_ratio_before_external_sortクエリ設定で制御します。#71406 (Azat Khuzhin) 。 - ホストごとのダッシュボード
Overview (host)とCloud overview (host)を高度なダッシュボードに追加しました。 #71422 (alesapin). - 関数
translateで、from引数にto引数より多くの文字が含まれている場合、文字を削除できるようになりました。例:SELECT translate('clickhouse', 'clickhouse', 'CLICK')はCLICKを返すようになりました。 #71441 (shuai.xu). - 新しい関数
parseDateTime64、parseDateTime64OrNull、parseDateTime64OrZeroを追加しました。これらは既存の関数parseDateTime(およびそのバリアント) と比べて、DateTimeではなくDateTime64型の値を返します。#71581 (kevinyhzou). - MergeTree テーブルエンジンファミリーのメモリ使用量を削減するため、メモリ上の index_granularity 配列を必要なサイズに縮小するようにしました。 #71595 (alesapin).
- コマンドラインアプリケーションで、複数のステートメントでも構文が強調表示されるようになりました。#71622 (Alexey Milovidov).
- コマンドラインアプリケーションは、エラー時にゼロ以外の終了コードを返すようになりました。以前のバージョンでは、
disksアプリケーションはエラー時にもゼロを返しており、他のアプリケーションもエラー 256 (PARTITION_ALREADY_EXISTS) および 512 (SET_NON_GRANTED_ROLE) ではゼロを返していました。#71623 (Alexey Milovidov). Verticalフォーマット (クエリの末尾を\Gで終えた場合にも有効) で、桁区切りの強調表示や読みやすい数値の補足表示など、Pretty formats の機能が利用できるようになりました。 #71630 (Alexey Milovidov).- 設定
filesystem_cache_prefer_bigger_buffer_sizeにより、ファイルシステムキャッシュのメモリバッファサイズの増加を無効化できるようになりました。 #71640 (Kseniia Sumarokova). - ファイルシステムキャッシュでのバックグラウンドダウンロードにおける最大ファイルセグメントサイズ向けに、個別の設定
background_download_max_file_segment_sizeを追加しました。 #71648 (Kseniia Sumarokova) 。 enable_http_compressionのデフォルト値を 0 から 1 に変更しました。#71591 をクローズしました。#71774 (Peter Nguyen) 。- Object から JSON への ALTER に対応しました。 #71784 (Pavel Kruglov).
- JSON typeのパースがやや改善されました。JSON pathの現在のブロックに複数の型の値が含まれている場合、特別なbest-effort順に従って型を試し、最適な型を選択するようになりました。#71785 (Pavel Kruglov).
- これまでは、
system.asynchronous_metricsの読み取り時に、同時実行中の更新が完了するまで待機していました。システムに高い負荷がかかっている場合、これには時間がかかることがあります。この変更により、以前に収集された値を常に読み取れるようになりました。#71798 (Alexander Gololobov). polling_max_timeout_msを10分、polling_backoff_msを30秒に設定。#71817 (Kseniia Sumarokova) 。- ‘SELECT - FROM t LIMIT 1’ のようなクエリでは、実際には使われていないにもかかわらず、これまでパート索引が読み込まれていました。 #71866 (Alexander Gololobov).
- 古い互換性設定では、Allow_reorder_prewhere_conditions はデフォルトで有効です。#71867 (Raúl Marín) 。
bitmapTransform関数の使用時に引数の型が有効であれば、system.errorsテーブルのILLEGAL_TYPE_OF_ARGUMENTカウンターを増加させないようにしました。 #71971 (Dmitry Novik).- Dictionary storage、dictionary table function、または辞書自体に対する直接のSELECTを使って辞書から直接データを取得する場合、今後はその辞書に対する
SELECT権限またはdictGet権限があれば十分です。これは、ACLのバイパスを防ぐためのこれまでの取り組みと整合しています: https://github.com/ClickHouse/ClickHouse/pull/57362 および https://github.com/ClickHouse/ClickHouse/pull/65359。さらに、後者に後方互換性も持たせています。[#72051](https://github.com/ClickHouse/ClickHouse/pull/72051) (Nikita Mikhaylov). - 高度なダッシュボードのHTMLページに、
system.dashboardsテーブルからダッシュボードを選択できるドロップダウンセレクターを追加しました。 #72081 (Sergei Trifonov). - 分散
INSERT ... SELECTの実行計画の構築時にprefer_locahost_replicaが考慮されるようにしました。#72190 (filimonov). - この問題はこちらで説明されています。Azure Iceberg Writer は、仕様に反する Icebergメタデータファイル (およびマニフェストファイル) を生成します。この PR では、v1 の Iceberg フォーマットメタデータを v2 リーダーで読み取れるようにする対応を追加し (先方がその形式で書き込むため) 、さらに、マニフェストファイルに対応するフィールドが作成されていない場合にエラーを出すようにしました。#72277 (Daniil Ivanik) 。
- JSON/Dynamic/Variant 型を実験的機能からベータへ移行。 #72294 (Pavel Kruglov).
- これで、クエリ内で
UNION [ALL]を使用したCREATE MATERIALIZED VIEWが許可されました。動作はJOINを使用したマテリアライズドビューと同じです: **insert のトリガーとして機能するのはSELECTexpression 内の最初の table のみで、他のすべての table は無視されます。 #72347 (alesapin). - パーティションキーの値が 1 つしかないバッチを挿入する場合の MergeTree への挿入を高速化しました。#72348 (alesapin).
- system.metrics に新しい MergeTreeIndexGranularityInternalArraysTotalSize メトリクスを追加しました。このメトリクスは、メモリ使用量の増大という問題の影響を受けやすい、非常に大規模なデータセットを持つインスタンスを特定するために必要です。 #72490 (Miсhael Stetsyuk) 。
- クエリで
Format Nullを使用する際、Nullという語のすべての表記ゆれが認識されるようになりました。従来は、ほかの表記 (たとえばNULL) では例外は送出されませんでしたが、同時にそのような場合にはフォーマットNullも実際には使用されていませんでした。 #72658 (Nikita Taranov). - Enum に存在しない不明な値を set 内で許可するようにしました。#72662 を修正しました。#72686 (zhanglistar) 。
- 非アクティブなパーツの総バイト数を集計するため、system.tables に total_bytes_with_inactive を追加しました。 #72690 (Kai Zhu).
- system.settings_changes に MergeTreeSettings を追加。 #72694 (Raúl Marín).
- Enumデータ型で文字列検索演算子 (例: like) をサポートし、#72661を修正しました。#72732 (zhanglistar) 。
- notEmpty関数でのJSON typeのサポートを追加しました。#72741 (Pavel Kruglov) 。
- GCS S3 エラー
AuthenticationRequiredのパースに対応しました。#72753 (Vitaly Baranov) 。 - 関数 ifNull および coalesce で Dynamic 型をサポートしました。#72772 (Pavel Kruglov) 。
JoinBuildTableRowCount/JoinProbeTableRowCount/JoinResultRowCountのプロファイルイベントを追加しました。#72842 (Vladimir Cherkasov) 。- toFloat64/touInt32 などの関数で Dynamic をサポートしました。 #72989 (Pavel Kruglov).
バグ修正 (正式な安定版リリースにおけるユーザーに影響する不具合)
ATTACH PARTクエリ中に重複排除されたパーツが、attaching_プレフィックス付きのまま残ることはなくなりました。 #65636 (Kirill).IN関数で DateTime64 の精度が失われる不具合を修正しました。#67230 (Yarik Briukhovetskyi).ORDER BY ... WITH FILLでIGNORE/RESPECT NULLSを伴う関数を使用した際に発生する可能性がある論理エラーを修正し、#57609 をクローズしました。 #68234 (Vladimir Cherkasov).- メモリ制限に達した際、フォーマット
Nativeを使用する非同期挿入でまれに発生していた論理エラーを修正しました。#68965 (Anton Popov). - EPHEMERAL カラムの CREATE TABLE における COMMENT を修正しました。#70458 (Yakov Olkhovskiy) 。
- LowCardinality(Nullable) 使用時の JSONExtract の論理エラーを修正しました。#70549 (Pavel Kruglov) 。
- テーブル名が長すぎる場合の動作を修正しました。#70810 (Yarik Briukhovetskyi) 。
- URL engineで、ユーザー指定のヘッダーによってContent-Typeを上書きできるようにしました。#70859 (Artem Iurin).
StorageS3Queueのロジックエラー “/processed にはすでに存在するため、永続ノードを作成できません” を修正しました。 #70984 (Kseniia Sumarokova)。- projection の論理削除における再構築オプションで、_row_exists カラムが考慮されていなかったバグを修正しました。#71089 (Shichao Jin) 。
- 予期しないレースコンディションにより system.query_metric_log に誤った値が記録される問題を修正しました。#71124 (Pablo Marcos) 。
- quantileExactWeightedInterpolated の集約関数名の不整合を修正しました。このバグは https://github.com/ClickHouse/ClickHouse/pull/69619 で持ち込まれました。cc @Algunenano。#71168 (李扬).
- 関数比較時の Dynamic における bad_weak_ptr 例外を修正しました。#71183 (Pavel Kruglov) 。
- ReplicatedMergeTree でゼロコピー レプリケーションを使用している場合、使用中のノードがあるブロブを削除しないようにしました。 #71186 (Antonio Andelic).
- HTTP および非同期 INSERT 経由の Native format で、フォーマット設定が無視される問題を修正しました。#71193 (Pavel Kruglov) 。
- 設定
use_query_cache = 1で実行される SELECT クエリは、system table の名前がリテラルとして現れる場合でも拒否されなくなりました。たとえば、SELECT - FROM users WHERE name = 'system.metrics' SETTINGS use_query_cache = true;が動作するようになりました。#71254 (Robert Schulze). - enable_filesystem_cache=1 が有効で、ストレージ構成内のディスクに cache の構成がない場合に、メモリ使用量が増加する不具合を修正しました。 #71261 (Kseniia Sumarokova).
- Dynamic カラムから LowCardinality Dictionary をデシリアライズする際に発生する可能性があるエラー “Cannot read all data” を修正しました。 #71299 (Pavel Kruglov).
- クライアントで、並列出力フォーマットのクリーンアップが不完全になる問題を修正しました。#71304 (Raúl Marín) 。
- named collectionsで不足していたアンエスケープ処理を追加しました。この修正がないと、clickhouse-serverは起動できません。 #71308 (MikhailBurdukov).
- ネイティブプロトコル経由で、空のブロックを含む非同期 INSERT の問題を修正しました。 #71312 (Anton Popov).
- 誤ったワイルドカード権限の付与時に発生するASTフォーマットの不整合を修正しました #71309。 #71332 (pufit) 。
- JSON type の型ヒントで、不審な型や実験的な型をチェックするようにしました。#71369 (Pavel Kruglov) 。
- Variant カラムを含む chunk で発生する「Invalid number of rows」エラーを修正しました。 #71388 (Pavel Kruglov).
- 誤った引数 (例:
NULL) を渡した際に、mongodbテーブル関数がクラッシュする問題を修正しました。#71426 (Vladimir Cherkasov). - optimize_rewrite_array_exists_to_has によって発生するクラッシュを修正しました。 #71432 (Raúl Marín).
- palin_rewritable ディスクでディレクトリの作成に失敗した際に、トランザクションのロールバック中に NoSuchKey エラーが発生する不具合を修正しました。#71439 (Julia Kartseva) 。
- 挿入処理での設定
max_insert_delayed_streams_for_parallel_writeの使用を修正しました。以前は正しく機能しておらず、その結果、複数のパーティションにデータを書き込む挿入処理でメモリ使用量が増大する可能性がありました。#71474 (Anton Popov). WHERE条件内に arrayJoin が見かけ上現れる場合に、Argument for function must be constantエラー (旧アナライザ) が発生する可能性がある問題を修正しました。https://github.com/ClickHouse/ClickHouse/pull/65414 後のリグレッションです。#71476 (Nikolai Kochetov).- カラム数が 0 の SortCursor (旧アナライザ) でクラッシュしないようにしました。 #71494 (Raúl Marín).
- 未初期化のorcデータによって発生するdate32の範囲外エラーを修正しました。詳細については、https://github.com/apache/incubator-gluten/issues/7823 を参照してください。 #71500 (李扬).
- wide パーツにおける Dynamic 型および JSON 型のカラムサイズの計算を修正しました。#71526 (Pavel Kruglov).
- materialized view 内のクエリで、CTE とともに IN を使用した場合のアナライザの不具合を修正。#65598 をクローズ。#71538 (Maksim Kita).
- 範囲外の場合、bitShift 関数でエラーをスローする代わりに 0 またはデフォルト文字を返すようにしました。#71580 (Pablo Marcos) 。
- 特定のエンジンでmaterialized viewを使用した際に発生するサーバーのクラッシュを修正しました。 #71593 (Pervakov Grigorii) 。
- 定数配列へのエイリアスを含むネストされたデータ構造に対するARRAY JOINで、nullポインタの逆参照が発生していました。これにより #71677 がクローズされました。 #71678 (Alexey Milovidov).
- 空のタプルでALTERを実行した際に発生するLOGICAL_ERRORを修正しました。これにより、#71647も修正されます。#71679 (Amos Bird) 。
- パーティションカラムに対する述語での定数 Set は、NOT IN 演算子の場合は変換しないようにしました。#71695 (Eduard Karacharov).
- LowCardinality(Nullable) から Dynamic への CAST を修正しました。以前は、エラー
Bad cast from type DB::ColumnVector<int> to DB::ColumnNullableを引き起こす可能性がありました。#71742 (Pavel Kruglov). - DateTime64 型の主キーを持つ WHERE 句で toDayOfWeek を使用した際に発生する例外を修正しました。#71849 (Yakov Olkhovskiy) 。
- スパースカラムへのパース後にデフォルト値が補完される処理を修正しました。#71854 (Anton Popov).
- 分散テーブルで入力がALIASの場合に発生するGROUPING関数のエラーを修正し、#68602 をクローズしました。#71855 (Vladimir Cherkasov) 。
WITH TIES句を使用した SELECT 文で、十分な行数が返されない可能性がある問題を修正しました。#71886 (wxybear) 。- arrayWithConstant の評価時にカラムが配列サイズ制限を超えたと誤って判定されることで発生する TOO_LARGE_ARRAY_SIZE 例外を修正しました。 #71894 (Udi).
- 1秒を超えるクエリに対して、
clickhouse-benchmarkが誤ったメトリクスを報告していました。#71898 (Alexey Milovidov) 。 - clickhouse-client における進行状況インジケーターと進行状況テーブルの間のデータ競合を修正しました。この問題は、FROM INFILE を使用した場合に発生します。INSERT クエリの実行中にキー入力を受け付けて、進行状況テーブルの表示を切り替えられるようにしました。#71901 (Julia Kartseva) 。
- Pretty JSON フォーマットでの Dynamic 値のシリアライゼーションを修正しました。#71923 (Pavel Kruglov) 。
- 24.6 で破損していた system.s3/azure_queue_log の rows_processed カラムを修正。#69975 をクローズ。#71946 (Kseniia Sumarokova).
s3/s3Cluster関数が不完全な結果を返したり、例外をスローしたりすることがあるケースを修正しました。これは、S3 URI で glob パターン (pattern/*のような) を使用し、かつキーpattern/を持つ空のオブジェクトが存在する場合に発生していました (このようなオブジェクトは S3 Console によって自動的に作成されます) 。また、設定s3_skip_empty_filesのデフォルト値がfalseからtrueに変更されました。#71947 (Nikita Taranov).- clickhouse-client の構文ハイライトで発生していたクラッシュを修正しました。#71864 をクローズしました。#71949 (Nikolay Degterinsky)。
- 最初の引数が定数である場合に、
ORDER BYで二項単調関数を使用したMergeTreeテーブルで発生するIllegal typeエラーを修正しました。#71941 を修正。#71966 (Nikolai Kochetov) 。 - サブクエリ内で使用される EXPLAIN AST では、SELECT クエリのみ許可されるようになりました。他の種類のクエリを使用すると、論理エラー ‘Bad cast from type DB::ASTCreateQuery to DB::ASTSelectWithUnionQuery’ または
Inconsistent AST formattingが発生します。#71982 (Pavel Kruglov). clickhouse-clientでレコードを insert すると、クライアントはサーバーからカラム定義を読み取ります。しかし、カラム定義を誤った順序で書き出していたバグがあり、本来は [統計情報, 有効期限 (TTL), 設定] の順であるべきでした。 #71991 (Han Fei).format_alter_commands_with_parenthesesが有効な場合のMOVE PARTITION ... TO TABLE ...ALTER コマンドのフォーマットを修正しました。#72080 (János Benjamin Antal) 。- File/S3/URL/HDFS/Azure エンジンの CREATE クエリに、推論されたフォーマット名を追加しました。以前は、サーバーの再起動のたびにフォーマット名を推論していたため、指定されたデータファイルが削除されていると、サーバー起動時にエラーが発生していました。 #72108 (Pavel Kruglov).
min_age_to_force_merge_on_partition_onlyが、すでに単一のパーツにマージ済みの同じパーティションに対して繰り返しマージを試み続けて停止し、複数のパーツを持つパーティションはマージしない不具合を修正しました。#72209 (Christoph Wurm).- スパースなカラムの処理中に、まれに発生していた
SimpleSquashingChunksTransformのクラッシュを修正しました。#72226 (Vladimir Cherkasov). GraceHashJoinにおけるデータ競合を修正しました。この問題により、JOIN の出力で一部の行が欠落する可能性がありました。 #72233 (Nikita Taranov).- マテリアライズされた
_block_numberカラムを持つALTER DELETEクエリの不具合を修正しました (設定enable_block_number_columnが有効な場合) 。#72261 (Anton Popov). - たとえば
ConcurrentHashJoinのコンストラクタ内でColumnDynamic::dumpStructure()が同時に呼び出された際に発生するデータ競合を修正しました。 #72278 (Nikita Taranov). - 重複したカラムがある
ORDER BY ... WITH FILLで発生する可能性のあるLOGICAL_ERRORを修正しました。#72387 (Vladimir Cherkasov) 。 optimize_functions_to_subcolumnsの適用後、いくつかのケースで発生していた型の不一致を修正しました。#72394 (Anton Popov).BACKUP DATABASE db EXCEPT TABLES db.tableクエリのパース時に発生する不具合を修正しました。#72429 (Konstantin Bogdanov) 。- 空の Variant を作成できないように修正しました。#72454 (Pavel Kruglov) 。
system.mergesのresult_part_pathの不正なフォーマットを修正しました。#72567 (Konstantin Bogdanov) 。- 要素が 1 つの glob のパースを修正しました。 #72572 (Konstantin Bogdanov).
- ARRAY JOIN を含む分散クエリにおいて、フォロワーサーバーでのクエリ生成を修正しました。#69276 を修正しました。#72608 (Dmitry Novik) 。
- DateTime64 内の DateTime64 が何も返さない不具合を修正しました。#72640 (Yarik Briukhovetskyi) 。
tracked_files_limit設定が S3 ファイルの出現頻度より小さい場合に、S3Queue の順不同モードで発生する “No such key” エラーを修正しました。#72738 (Kseniia Sumarokova).- mark cache が大きい場合、その破棄には無視できない時間がかかることがあります。この間 context mutex を保持したままだと、他の多くの処理が妨げられ、解放されるまで新しいクライアント接続さえ確立できません。しかも、この mutex を保持することは実際には同期のために必要なく、shared ptr を介して cache へのローカル参照を持っていれば十分です。 #72749 (Alexander Gololobov).
- PK cache は、あるテストインスタンスでそのサイズを大幅に過小評価していました。特に、LowCardinality カラムでは辞書サイズが含まれていませんでした。この修正では、cache エントリサイズに関する追加のオーバーヘッド見積もりに加えて、
column->allocatedBytes()を使用します。#72750 (Alexander Gololobov). - ユーザーがローカルに存在しない場合に、RemoteQueryExecutor で発生する例外を修正しました。 #72759 (Andrey Zvonov).
- マテリアライズされた
_block_numberカラムを持つ mutation を修正しました (設定enable_block_number_columnが有効な場合) 。#72854 (Anton Popov) 。 - バックアップ内に空ファイルがある場合に、通常の書き換え可能なディスクでバックアップ/復元できない問題を修正しました。 #72858 (Kseniia Sumarokova).
- DistributedAsyncInsertDirectoryQueue でインサートを適切にキャンセルできるようにしました。 #72885 (Antonio Andelic).
- 不正なデータをスパースカラムにパースする際に発生していたクラッシュを修正しました (設定
enable_parsing_to_custom_serializationが有効な場合に発生することがあります) 。#72891 (Anton Popov) 。 - バックアップの復元時に発生する可能性があるクラッシュを修正しました。#72947 (Kseniia Sumarokova) 。
ON句に不等価フィルターを含む複雑な条件があるクエリで発生する可能性のあったparallel_hashJOIN方式のバグを修正しました。#72993 (Nikita Taranov) 。- JSON のパース時にデフォルトのフォーマット設定を使用するようにし、デシリアライゼーションの不具合を防止しました。#73043 (Pavel Kruglov).
- 未対応のストレージを使用するトランザクションで発生するクラッシュを修正しました。#73045 (Raúl Marín).
- Tuple のパース時に、重複する JSON キーをチェックするようにしました。従来は、パース中に論理エラー
Invalid number of rows in Chunkが発生することがありました。#73082 (Pavel Kruglov).