v24.8 クラウド向け変更履歴
v24.8 リリースに基づく ClickHouse Cloud サービスに関する主な変更点です。
後方互換性のない変更
-
Variant データ型のバイナリシリアル化を変更しました。単一の variant だけを持つ granule や NULL 値のみを持つ granule に対して、同じ discriminator を複数回書き込まないようにする compact モードを追加しました。MergeTree の設定
use_compact_variant_discriminators_serializationを追加し、デフォルトで有効化しました。Variant 型は依然として実験的であり、シリアル化の後方互換性のない変更は、この機能を以前にサポートチームと協議して有効化していない限り、影響しないはずです。 #62774 (Kruglov Pavel). -
Replicated データベースに対して、
CREATE MATERIALIZED VIEW ... ENGINE Replicated*MergeTree POPULATE AS SELECT ...を禁止しました。この変更の影響を受けるのは、依然としてReplicatedMergeTreeを使用しているユーザーのみです。 #63963 (vdimir). -
メトリクス
KeeperOutstandingRequetsはKeeperOutstandingRequestsにリネームされました。これは #66179 で報告されたタイポを修正するものです。 #66206 (Robert Schulze). -
clickhouse-clientとclickhouse-localは、デフォルトでマルチクエリモード(以前のシングルクエリモードではなく)になりました。例えば、clickhouse-client -q "SELECT 1; SELECT 2"は現在そのまま動作し、以前のバージョンでは--multiquery(または-n)を追加する必要がありました。これにより、--multiquery/-nスイッチは不要になりました。マルチクエリ文内の INSERT クエリは、そのFORMAT句に基づいて特別に扱われます。FORMATがVALUES(最も一般的なケース)の場合、INSERT 文の終端はクエリ末尾のセミコロン;で表されます。それ以外のすべてのFORMAT(例:CSVやJSONEachRow)では、INSERT 文の終端はクエリ末尾の 2 つの改行\n\nで表されます。 #63898 (wxybear). -
以前のバージョンでは、LowCardinality データ型に対して、データ型名の末尾に
WithDictionaryを付ける代替構文を使用することができました。これは初期の動作する実装でしたが、ドキュメント化も一般公開もされていませんでした。現在、この構文は非推奨となりました。この構文を使用している場合は、テーブルに対してALTERを実行し、データ型名をLowCardinalityにリネームする必要があります。 #66842 (Alexey Milovidov). -
宛先に分散テーブルを使用するストレージ
Bufferにおける論理エラーを修正しました。これは後方互換性のない変更です。分散テーブルを宛先としてBufferを使用するクエリでは、テーブルがクエリ内に複数回登場する場合(例: セルフジョイン)、動作しなくなる可能性があります。 #67015 (vdimir). -
以前のバージョンでは、Gamma 関数に基づいたランダム分布(Chi-Squared、Student、Fisher など)用の関数を、ゼロに近い負の引数で呼び出した場合、計算に非常に長い時間がかかる、または無限ループに陥ることがありました。新しいバージョンでは、これらの関数をゼロまたは負の引数で呼び出すと例外がスローされます。これにより、#67297 が解決されます。 #67326 (Alexey Milovidov).
-
以前のバージョンでは、
arrayWithConstantは非常に大きな配列を生成しようとすると遅くなる可能性がありました。新しいバージョンでは、1 配列あたり 1 GB に制限されます。これにより、#32754 が解決されます。 #67741 (Alexey Milovidov). -
REPLACE修飾子の書式を修正しました(かっこの省略を禁止)。 #67774 (Azat Khuzhin).
新機能
-
クエリ内で名前付きタプルを構築できるように、関数 tuple を拡張しました。タプルから名前を抽出する関数 tupleNames を導入しました。#54881 (Amos Bird)。
-
full_sorting_join アルゴリズムに対する ASOF JOIN をサポートしました。#54493 をクローズ。#55051 (vdimir)。
-
新しいテーブル関数 fuzzQuery を追加しました。この関数は、指定したクエリ文字列をランダムなバリエーションで変更できます。例: SELECT query FROM fuzzQuery('SELECT 1'); #62103 (pufit)。
-
新しいウィンドウ関数 percent_rank を追加しました。#62747 (lgbo)。
-
clickhouse-client で JWT 認証をサポートしました。#62829 (Konstantin Bogdanov)。
-
SQL 関数 changeYear, changeMonth, changeDay, changeHour, changeMinute, changeSecond を追加しました。たとえば、SELECT changeMonth(toDate('2024-06-14'), 7) は日付 2024-07-14 を返します。#63186 (cucumber95)。
-
テーブル system.errors におけるエラー値の履歴を保持し、定期的にディスクへフラッシュする system.error_log を追加しました。#65381 (Pablo Marcos)。
-
集約関数 groupConcat を追加しました。ほぼ arrayStringConcat(groupArray(column), ',') と同等です。2 つのパラメータ (文字列の区切り文字と処理する要素数) を受け取ることができます。#65451 (Yarik Briukhovetskyi)。
-
AzureQueue ストレージを追加しました。#65458 (Kseniia Sumarokova)。
-
Parquet ファイルにページインデックスを書き込むかどうかを有効化/無効化する新しい設定を追加しました。#65475 (lgbo)。
-
テーブル関数 file で、ディレクトリパスの末尾にワイルドカード * を自動的に付加するようにしました。#66019 (Zhidong (David) Guo)。
-
非対話モードのクライアントに --memory-usage オプションを追加しました。#66393 (vdimir)。
-
S3 テーブルエンジン向けに _etag 仮想カラムを追加しました。#65312 を修正します。#65386 (skyoct)。
-
このプルリクエストでは、複数のエンジン (File, URL, S3, AzureBlobStorage, HDFS) に対して Hive スタイルのパーティショニングを導入します。Hive スタイルのパーティショニングは、パーティション分割されたサブディレクトリにデータを整理することで、大規模なデータセットのクエリと管理を効率化します。現時点では、適切な名前とデータを持つ仮想カラムのみを作成します。後続の PR で、適切なデータフィルタリング (パフォーマンス向上) を導入する予定です。#65997 (Yarik Briukhovetskyi)。
-
Spark との互換性のため、関数 printf を追加しました。#66257 (李扬)。
-
WKT 形式で MULTILINESTRING ジオメトリを読み取るための関数 readWKTLineString のサポートを追加しました。#67647 (Jacob Reckhard)。
-
クエリキャッシュ向けにタグ付け (ネームスペース) メカニズムを追加しました。異なるタグを持つ同一のクエリは、クエリキャッシュでは別物として扱われます。例: SELECT 1 SETTINGS use_query_cache = 1, query_cache_tag = 'abc' と SELECT 1 SETTINGS use_query_cache = 1, query_cache_tag = 'def' は、今後は別々のクエリキャッシュエントリを作成します。#68235 (sakulali)。