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

v24.10 Cloud 向け変更履歴

v24.10 リリースに基づく ClickHouse Cloud サービス向けの主な変更点をまとめています。

後方互換性のない変更

  • サブクエリが丸括弧で囲まれている UNION を含むクエリチェーンで、FORMAT より前に SETTINGS を記述できるようにしました。これにより #39712 がクローズされます。クエリ内で SETTINGS 句が連続して 2 回指定されている場合の動作も変更しました。最も近い SETTINGS 句が、対応するサブクエリに対して優先されます。以前のバージョンでは、最も外側の SETTINGS 句が内側より優先される場合がありました。#60197#68614Alexey Milovidov)。
  • Dynamic 型を再実装しました。Dynamic データ型の上限に達したときに、新しい型は String にキャストされるのではなく、データ型も含めてバイナリ形式でエンコードされた特別なデータ構造に格納されるようになりました。これにより、これまでに Dynamic カラムに挿入されたあらゆる型を、サブカラムとして読み出すことができます。 #68132Pavel 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。そのようなクエリを使用している可能性は非常に低いと考えられますが、それでもこの変更は後方互換性に影響を及ぼす可能性があるものとしてマークする必要があります。 #68435Alexey Milovidov)。
  • print_pretty_type_names 設定が有効な場合、SHOW CREATE TABLE 文、formatQuery 関数、および clickhouse-clientclickhouse-local の対話モードで、Tuple データ型を Pretty 形式で出力するようになりました。以前のバージョンでは、この設定は DESCRIBE クエリと toTypeName にのみ適用されていました。これにより #65753 がクローズされます。 #68492Alexey Milovidov)。
  • [PRE]WHERE 句内のフィルター条件の並べ替えがデフォルトで許可されるようになりました。この動作は allow_reorder_prewhere_conditionsfalse に設定することで無効化できます。 #70657Nikita Taranov)。
  • optimize_functions_to_subcolumns 最適化を修正しました(以前は Invalid column type for ColumnUnique::insertRangeFrom. Expected String, got LowCardinality(String) エラーにつながることがありました)。mapKeys / mapValuesLowCardinality 型を保持することで修正しています。 #70716Azat Khuzhin)。

新機能

  • リフレッシャブルmaterialized view は本番利用が可能になりました。#70550Michael Kolupaev)。リフレッシャブルmaterialized view は Replicated データベースでもサポートされるようになりました。#60669Michael 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 分間隔の倍数に揃えられた値です。#56738 (Yarik 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 オプションに関連付けられており、Ctrl+Space を押すことで進捗テーブルの表示を切り替えられます。 #63689 (Maria Khristenko).
  • これにより、ワイルドカード付きプレフィックスへのアクセス権を付与できるようになります。GRANT SELECT ON db.table_pefix_* TO user#65311pufit)。
  • ClickHouse が各行を、メタデータ、データ、進捗、合計、および統計情報を含む改行区切りの JSON オブジェクトとして出力する JSONCompactWithProgress フォーマットを導入しました。 #66205 (Alexey Korepanov).
  • system.events テーブルから取得した個々のクエリのメモリおよびメトリクス値の履歴を保持し、定期的にディスクにフラッシュする system.query_metric_log を追加しました。 #66532 (Pablo Marcos)。
  • JSON 入力の空フィールドをデフォルト値として扱う input_format_json_empty_as_default 設定を追加しました。この設定を有効にすると、JSON 入力内の空フィールドをデフォルト値として扱います。#59339 をクローズしました。#66782Alexis Arnaud)。
  • overlay および overlayUTF8 関数を追加しました。これらは文字列の一部を別の文字列で置き換えます。例: SELECT overlay('Hello New York', 'Jersey', 11) を実行すると Hello New Jersey を返します。 #66933 (李扬).
  • パーティション内で論理削除を行う新しいコマンドを追加しました 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)。
  • ripeMD160 関数を追加しました。この関数は、文字列の RIPEMD-160 暗号学的ハッシュを計算します。例: SELECT hex(ripeMD160('The quick brown fox jumps over the lazy dog'))37F332F68DB77BD9D7EDD4969571AD671CF9DD3B を返します。 #68639 (Dergousov Maxim).
  • url テーブルエンジン向けに仮想カラム _headers を追加。#65026 をクローズ。#68867flynn)。
  • 利用可能なプロジェクションを把握するための 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 に対応しました。配列のインデックスが範囲外の場合、または map のキーが見つからない場合は 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).