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

v24.10 Cloud 向け変更履歴

v24.10 リリースに基づく ClickHouse Cloud サービスに関する主な変更点。

後方互換性のない変更

  • サブクエリが括弧内にある UNION を含むクエリチェーンで、FORMAT の前に SETTINGS を記述できるようにしました。これにより #39712 が解決されます。クエリ内で SETTINGS 句が連続して 2 回指定されている場合の動作を変更しました。最も近い SETTINGS 句が、対応するサブクエリに対して優先されます。以前のバージョンでは、最も外側の SETTINGS 句が内側のものより優先される場合がありました。 #60197#68614 (Alexey Milovidov).
  • Dynamic 型を再実装しました。Dynamic データ型の上限に達した場合でも、新しい型は String にキャストされず、バイナリ形式およびバイナリエンコードされたデータ型を持つ特別なデータ構造に保存されます。これにより、Dynamic カラムに一度でも挿入された任意の型を、サブカラムとして読み出すことができます。 #68132 (Pavel Kruglov).
  • a[b].c のような式が名前付きタプルでサポートされるようになり、また expr().name のように、任意の式から名前付き添字を使用できるようになりました。これは JSON の処理に有用です。これにより #54965 が解決されます。以前のバージョンでは、expr().name 形式の式は tupleElement(expr(), name) としてパースされ、クエリアナライザは対応するタプル要素ではなく、カラム name を探していました。一方、新バージョンでは tupleElement(expr(), 'name') に変更されています。ほとんどの場合、以前のバージョンでは正しく動作していませんでしたが、この変更により非互換となりうる非常にまれなシナリオを想定することは可能です。例えば、タプル要素の名前を、そのタプル要素名とは異なる名前のカラムまたはエイリアスに保存していた場合です: SELECT 'b' AS a, CAST([tuple(123)] AS 'Array(Tuple(b UInt8))') AS t, t[1].a。そのようなクエリを使用していた可能性は極めて低いですが、この変更は潜在的に後方互換性がないものとしてマークする必要があります。 #68435 (Alexey Milovidov).
  • 設定 print_pretty_type_names が有効な場合、SHOW CREATE TABLE ステートメント、formatQuery 関数、および clickhouse-clientclickhouse-local の対話モードにおいて、Tuple データ型が可読性の高い形式で出力されるようになりました。以前のバージョンでは、この設定は DESCRIBE クエリと toTypeName にのみ適用されていました。これにより #65753 が解決されます。 #68492 (Alexey Milovidov).
  • デフォルトで [PRE]WHERE 句内のフィルタ条件の並べ替えが許可されるようになりました。これは allow_reorder_prewhere_conditionsfalse に設定することで無効にできます。 #70657 (Nikita Taranov).
  • mapKeys/mapValuesLowCardinality 型を保持することで、optimize_functions_to_subcolumns 最適化を修正しました(以前は Invalid column type for ColumnUnique::insertRangeFrom. Expected String, got LowCardinality(String) エラーを引き起こす可能性がありました)。 #70716 (Azat Khuzhin).

新機能

  • リフレッシュ可能なマテリアライズドビューが本番利用向けに安定しました。 #70550 (Michael Kolupaev)。リフレッシュ可能なマテリアライズドビューが Replicated データベースでもサポートされるようになりました。 #60669 (Michael Kolupaev)。
  • 関数 toStartOfInterval() に、TimescaleDB の time_bucket() 関数および PostgreSQL の date_bin() 関数の動作をエミュレートする新しいオーバーロードが追加されました(#55619)。これにより、日付またはタイムスタンプ値を、固定 の起点(0000-01-01 00:00:00.000)ではなく、任意の 起点からの指定した間隔の整数倍に切り揃えることができます。例えば、SELECT toStartOfInterval(toDateTime('2023-01-01 14:45:00'), INTERVAL 1 MINUTE, toDateTime('2023-01-01 14:35:30'));2023-01-01 14:44:30 を返します。これは、起点 2023-01-01 14:35:30 を基準として 1 分間隔の整数倍に切り揃えられた値です。#56738Yarik Briukhovetskyi)。
  • MongoDB 連携機能をリファクタリング:非推奨となった Poco::MongoDB から新しいドライバ mongocxx への移行、非推奨の旧プロトコルのサポート削除、URI による接続のサポート、すべての MongoDB 型のサポート、MongoDB 側での WHERE および ORDER BY ステートメントのサポート、MongoDB がサポートしない式に対する制限。 #63279 (Kirill Nikiforov).
  • clickhouse-client に新しい --progress-table オプションが追加され、クエリ実行中に変化するメトリクスをテーブル形式で表示できるようになりました。新しい --enable-progress-table-toggle オプションは --progress-table オプションに関連付けられており、Control+Space キーを押すことで進捗テーブルの表示を切り替えられます。 #63689 (Maria Khristenko).
  • これにより、ワイルドカードを含むプレフィックスに対してアクセス権を付与できます。GRANT SELECT ON db.table_pefix_* TO user#65311 (pufit)。
  • ClickHouse が、各行をメタデータ、データ、進捗、合計、統計情報を含む、行ごとに改行で区切られた JSON オブジェクトとして出力する JSONCompactWithProgress フォーマットを導入しました。 #66205 (Alexey Korepanov)。
  • 個々のクエリごとに、system.events テーブルに基づくメモリおよびメトリクス値の履歴を保持し、定期的にディスクへフラッシュされる system.query_metric_log を追加しました。 #66532 (Pablo Marcos).
  • JSON 入力内の空フィールドをデフォルト値として扱う input_format_json_empty_as_default 設定を追加しました。有効化すると、空フィールドがデフォルト値として処理されます。#59339 をクローズしました。#66782Alexis Arnaud)。
  • 文字列の一部を別の文字列で置き換えるための関数 overlayoverlayUTF8 を追加しました。例:SELECT overlay('Hello New York', 'Jersey', 11)Hello New Jersey を返します。 #66933 (李扬).
  • Add new Command, Lightweight Delete In Partition(パーティション内の軽量削除)を追加 DELETE FROM [db.]table [ON CLUSTER cluster] [IN PARTITION partition_expr] WHERE expr; ``` VM-114-29-tos :) select * from ads_app_poster_ip_source_channel_di_replicated_local;. #67805 (sunny).
  • Interval データ型の値に対する比較を実装し、比較時には最小共通上位型へ変換されるようになりました。 #68057 (Yarik Briukhovetskyi).
  • CREATE 文で IF NOT EXISTS の動作をデフォルトにするための create_if_not_exists 設定を追加しました。 #68164 (Peter Nguyen).
  • Azure およびローカル環境での Iceberg テーブルの読み取りを可能にしました。 #68210 (Daniil Ivanik).
  • JSON カラム内の型情報をより詳細に把握できるよう、集約関数 distinctDynamicTypes/distinctJSONPaths/distinctJSONPathsAndTypes を追加しました。 #68463 (Pavel Kruglov).
  • クエリキャッシュのエントリをタグで削除できるようになりました。例えば、SELECT 1 SETTINGS use_query_cache = true, query_cache_tag = 'abc' によって作成されたクエリキャッシュエントリは、SYSTEM DROP QUERY CACHE TAG 'abc' で削除できます(もちろん、単に SYSTEM DROP QUERY CACHE を実行すればクエリキャッシュ全体をクリアできます)。#68477Michał Tabaszewski)。
  • 電卓スタイルの式を有効にするために、暗黙の SELECT を使った簡単な SELECT クエリを書くことができます(例: ch "1 + 2")。これは新しい設定項目 implicit_select によって制御されます。#68502Alexey Milovidov)。
  • clickhouse local 向けに、フォーマット変換用のショートカットとして --copy モードをサポートしました #68503#68583Denis Hananein)。
  • 文字列の RIPEMD-160 暗号学的ハッシュを計算する ripeMD160 関数を追加しました。例: SELECT hex(ripeMD160('The quick brown fox jumps over the lazy dog'))37F332F68DB77BD9D7EDD4969571AD671CF9DD3B を返します。 #68639 (Dergousov Maxim).
  • URL テーブルエンジンに仮想カラム _headers を追加し、#65026 をクローズ。 #68867 (flynn)。
  • 利用可能な projection を追跡するための system.projections テーブルを追加。 #68901 (Jordi Villar).
  • arrayUnion 関数のサポートを追加しました。#68989Peter Nguyen)。
  • Spark の arrays_zip との互換性のために、新しい関数 arrayZipUnaligned を追加しました。これは元の arrayZip に基づき、長さの揃っていない配列同士も扱えるようにします。 ``` sql SELECT arrayZipUnaligned([1], [1, 2, 3]). #69030 (李扬).
  • 集約関数 quantileExactWeightedInterpolated をサポートしました。これは quantileExactWeighted に基づく補間版です。すでに quantileExactInterpolatedWeighted があるのに、なぜ新たに quantileExactWeightedInterpolated が必要なのか疑問に思うかもしれません。理由は、新しいもののほうが既存のものより高精度だからです。なお、これは Apache Gluten における Spark との互換性を確保するためのものです。#69619 (李扬).
  • 関数 arrayElementOrNull をサポートしました。配列インデックスが範囲外の場合、またはマップのキーが見つからない場合は null を返します。 #69646 (李扬)
  • Dynamic 内部の実際の型に対して関数を実行することで、多くの関数で Dynamic 型をサポートできるようにしました。 #69691 (Pavel Kruglov).
  • 関数 arrayAUC に引数 scale(デフォルト: true)を追加し、正規化処理をスキップできるようにしました(issue #69609)。#69717gabrielmcg44)。
  • 文字列の RIPEMD-160 暗号学的ハッシュ値を計算する RIPEMD160 関数を再導入しました。例: SELECT HEX(RIPEMD160('The quick brown fox jumps over the lazy dog'))37F332F68DB77BD9D7EDD4969571AD671CF9DD3B を返します。 #70087 (Dergousov Maxim)。
  • ETag とファイルパスから計算したハッシュをキャッシュキーとして使用し、オブジェクトストレージ用テーブルエンジンおよびデータレイクで読み込むファイルをキャッシュできるようにしました。 #70135 (Kseniia Sumarokova).
  • HDFS 上の Iceberg テーブルの読み取りに対応しました。 #70268 (flynn).
  • 設定 input_format_binary_read_json_as_string/output_format_binary_write_json_as_string を使用することで、RowBinary 形式において JSON 型をバイナリ文字列として読み書きできるようにしました。 #70288 (Pavel Kruglov).
  • Native フォーマットで JSON 列を単一の String 列としてシリアル化/デシリアル化できるようにしました。出力には設定 output_format_native_write_json_as_string を使用します。入力時には、列データの前にシリアル化バージョンとして 1 を指定します。 #70312 (Pavel Kruglov).
  • 標準的な CTE である with insert をサポートしました。これまでは insert ... with ... のみがサポートされていました。 #70593 (Shichao Jin).