ClickHouse リリースタグ: 24.2.2.15987
後方互換性のない変更
ネストされた型内の疑わしい/実験的な型を検証するようにしました。これまでは、Array/Tuple/Map などのネストされた型内では(JSON を除き)そのような型を検証していませんでした。#59385 (Kruglov Pavel )。
ソート句 ORDER BY ALL(v23.12 で導入)は ORDER BY * に置き換えられました。以前の構文は、all というカラムを持つテーブルではエラーの原因になりやすいものでした。 #59450 (Robert Schulze )。
スレッド数とブロックサイズに対するサニティチェックを追加しました。 #60138 (Raúl Marín ).
クエリレベルの設定 async_insert と deduplicate_blocks_in_dependent_materialized_views が同時に有効になっている場合、受信した INSERT クエリを拒否します。この挙動は設定 throw_if_deduplication_in_dependent_materialized_views_enabled_with_async_insert によって制御され、デフォルトで有効です。これは https://github.com/ClickHouse/ClickHouse/pull/59699 の継続であり、https://github.com/ClickHouse/ClickHouse/pull/59915 のブロックを解除するために必要な変更です。 #60888 (Nikita Mikhaylov )。
ユーティリティ clickhouse-copier は GitHub 上の別リポジトリに移動されました: https://github.com/ClickHouse/copier 。今後バンドルには含まれませんが、引き続き個別にダウンロード可能です。これにより次の Issue がクローズされます: #60734 これにより次の Issue がクローズされます: #60540 これにより次の Issue がクローズされます: #60250 これにより次の Issue がクローズされます: #52917 これにより次の Issue がクローズされます: #51140 これにより次の Issue がクローズされます: #47517 これにより次の Issue がクローズされます: #47189 これにより次の Issue がクローズされます: #46598 これにより次の Issue がクローズされます: #40257 これにより次の Issue がクローズされます: #36504 これにより次の Issue がクローズされます: #35485 これにより次の Issue がクローズされます: #33702 これにより次の Issue がクローズされます: #26702 ### ユーザー向け変更に関するドキュメントエントリ。#61058 (Nikita Mikhaylov )。
MySQL との互換性を高めるため、関数 locate はデフォルトで (needle, haystack[, start_pos]) という引数順を受け付けるようになりました。以前の挙動である (haystack, needle[, start_pos]) は、function_locate_has_mysql_compatible_argument_order = 0 を設定することで復元できます。 #61092 (Robert Schulze ).
メモリ内データパーツはバージョン 23.5 で非推奨となり、バージョン 23.10 以降ではサポートされていません。今回、その残っていたコードが削除されました。#55186 および #45409 の継続対応です。メモリ内データパーツは、バージョン 23.5 より前かつ、MergeTree テーブルに対して対応する SETTINGS を手動で有効にした場合にのみ利用可能だったため、実際に使用しているケースは少ないと考えられます。メモリ内データパーツが存在するか確認するには、次のクエリを実行します: SELECT part_type, count() FROM system.parts GROUP BY part_type ORDER BY part_type。メモリ内データパーツの使用を無効化するには、ALTER TABLE ... MODIFY SETTING min_bytes_for_compact_part = DEFAULT, min_rows_for_compact_part = DEFAULT を実行します。古い ClickHouse リリースからアップグレードする前に、まずメモリ内データパーツが存在しないことを確認してください。もしメモリ内データパーツが存在する場合は、まずその使用を無効化し、その後メモリ内データパーツがなくなるまで待ってからアップグレードを続行してください。#61127 (Alexey Milovidov )。
デフォルトで、MergeTree テーブルの ORDER BY 句で SimpleAggregateFunction の使用を禁止しました(AggregateFunction と同様に禁止されますが、SimpleAggregateFunction は比較不能であるためです)。これらを許可するには allow_suspicious_primary_key を使用します。 #61399 (Azat Khuzhin ).
ClickHouse は String データ型で任意のバイナリデータを許可しており、通常は UTF-8 エンコードされたテキストとして扱われます。Parquet/ORC/Arrow の String は UTF-8 のみをサポートします。そのため、ClickHouse の String データ型に対して Arrow のどのデータ型(String か Binary)を使用するかを選択できます。これは output_format_parquet_string_as_string、output_format_orc_string_as_string、output_format_arrow_string_as_string という設定で制御されます。Binary の方がより正確かつ互換性がありますが、デフォルトで String を使用することで、ほとんどの場合ユーザーの期待に沿うことができます。Parquet/ORC/Arrow は lz4 や zstd を含む多くの圧縮方式をサポートしています。ClickHouse はこれらすべての圧縮方式をサポートしています。一部のツールでは、より高速な lz4 圧縮方式をサポートしていないため、デフォルトで zstd を設定しています。これは output_format_parquet_compression_method、output_format_orc_compression_method、output_format_arrow_compression_method という設定で制御されます。Parquet と ORC についてはデフォルトを zstd に変更しましたが、Arrow については変更していません(低レベル用途向けである点を重視しているためです)。#61817 (Alexey Milovidov )。
materialized view に関するセキュリティ上の問題を修正しました。この問題により、必要な権限がないにもかかわらず、ユーザーがテーブルに対して INSERT を実行できていました。修正後は、ユーザーが materialized view に対してだけでなく、その基礎となるすべてのテーブルに対しても INSERT 権限を持っているかを検証します。これにより、以前は動作していた一部のクエリが、Not enough privileges エラーで失敗する可能性があります。この問題に対処するために、本リリースでは VIEW のための SQL セキュリティ機能 https://clickhouse.com/docs/sql-reference/statements/create/view#sql_security が導入されています。 #54901 (pufit )
新機能
Topk/topkweighed で、値の個数とその誤差を返すモードをサポートしました。 #54508 (UnamedRus )。
ビュー/materialized view に定義者 USER を指定できる新しい構文を追加しました。これにより、基盤となるテーブルに対する明示的な権限付与なしに、ビューからの SELECT/INSERT を実行できるようになります。 #54901 (pufit ).
さまざまな種類の MergeTree テーブルを Replicated エンジンに自動で変換する機能を実装しました。テーブルのデータディレクトリ(/clickhouse/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/)に空の convert_to_replicated ファイルを作成すると、次回のサーバー起動時にそのテーブルが自動的に変換されます。 #57798 (Kirill ).
テーブル関数 mergeTreeIndex を追加しました。これは MergeTree テーブルのインデックスおよびマークファイルの内容を表します。内部構造の調査のために使用できます。構文: mergeTreeIndex(database, table, [with_marks = true])。ここで database.table は MergeTree エンジンを使用する既存のテーブルです。 #58140 (Anton Popov )。
file/s3/hdfs/url/azureBlobStorage エンジンでスキーマ推論中にファイル形式が不明な場合、自動的にファイル形式を検出するようにしました。#50576 をクローズ。 #59092 (Kruglov Pavel ).
generate_series をテーブル関数として追加しました。この関数は自然数からなる等差数列で構成されるテーブルを生成します。 #59390 (divanik ).
空のパーティションに対応する ZooKeeper ノードを削除するクエリ ALTER TABLE table FORGET PARTITION partition を追加しました。 #59507 (Sergei Trifonov )。
バックアップの読み書きに tar アーカイブ形式をサポートしました。 #59535 (josh-hildred ).
新しい集約関数 'groupArrayIntersect' を追加。#49862 のフォローアップ。#59598 (Yarik Briukhovetskyi )。
DNS の問題のデバッグに役立つ system.dns_cache テーブルを実装しました。 #59856 (Kirill Nikiforov ).
S3Express バケットのサポートを追加しました。 #59965 (Nikita Taranov ).
コーデック LZ4HC では、新たにレベル 2 が指定可能になりました。これは、従来の最小レベルである 3 より高速ですが、その分圧縮率は低くなります。以前のバージョンでは、LZ4HC(2) 以下は LZ4HC(3) と同じ扱いでした。作者: Cyan4973 。#60090 (Alexey Milovidov )。
system.dns_cache テーブルを実装しました。DNS の問題のデバッグに役立ちます。新しいサーバー設定 dns_cache_max_size を追加しました。 #60257 (Kirill Nikiforov )。
DateTime または DateTime64 型の値のミリ秒成分を返す関数 toMillisecond を追加しました。 #60281 (Shaun Struwig )。
merge(['db_name', ] 'tables_regexp') のような merge テーブル関数の単一引数バージョンがサポートされました。 #60372 (豪肥肥 )。
すべてのフォーマット名で大文字小文字を区別しないようにし、Tsv や TSV、tsv、さらには rowbinary のような指定も受け付けるようにしました。#60420 (豪肥肥 )。
VIEW/MATERIALIZED VIEW で definer USER を指定できる新しい構文を追加しました。これにより、基盤となるテーブルに明示的に権限を付与しなくても、VIEW から SELECT/INSERT を実行できます。 #60439 (pufit ).
StorageMemory (memory-engine) に min_bytes_to_keep, max_bytes_to_keep, min_rows_to_keep および max_rows_to_keep の 4 つのプロパティを追加し、これらの変更を反映するテストを追加、memory.md ドキュメントを更新し、テーブルパラメータの境界値にアクセスできるようにするために、テーブルの context プロパティを MemorySink に追加しました。 #60612 (Jake Bamrah ).
DateTime または DateTime64 型の値に対してミリ秒成分を返す関数 toMillisecond を追加しました。 #60649 (Robert Schulze ).
待機中および実行中のクエリ数に対して、それぞれ個別の制限を導入しました。新しいサーバー設定 max_waiting_queries を追加し、async_load_databases により待機状態になっているクエリの数を制限します。実行中クエリ数に対する既存の制限には、待機中のクエリは含まれなくなりました。#61053 (Sergei Trifonov )。
ATTACH PARTITION ALL のサポートを追加。 #61107 (Kirill Nikiforov ).
SELECT 句内の GROUP BY キーに対する min/max/any/anyLast 集約関数を削除します。 #52230 (JackyWoo ).
複数の [nullable] カラムが関与する場合に、シリアライズ方式の集約メソッドのパフォーマンスを改善しました。これは抽象化の整合性を損なうことなく #51399 を一般化したものです。#55809 (Amos Bird )。
ALL JOIN のパフォーマンスを向上させるため、join 出力の生成を遅延実行するようにしました。 #58278 (LiuNeng ).
集約関数 ArgMin / ArgMax / any / anyLast / anyHeavy および ORDER BY {u8/u16/u32/u64/i8/i16/u32/i64) LIMIT 1 クエリが改善されました。 #58640 (Raúl Marín )。
bigint 型および BigDecimal 型に対する条件付き sum/avg 集計処理で分岐予測ミスを削減し、パフォーマンスを最適化しました。 #59504 (李扬 ).
アクティブなミューテーションが存在する場合の SELECT のパフォーマンスを改善。 #59531 (Azat Khuzhin ).
カラムフィルタに対する小さな最適化。基になるデータ型が数値型ではないフィルタカラムについては、result_size_hint = -1 を用いたフィルタリングを行わないようにしました。場合によってはピークメモリ使用量を元の 44% まで削減できます。 #59698 (李扬 ).
プライマリキーが使用するメモリ量が削減されました。 #60049 (Alexey Milovidov ).
プライマリキーおよびその他のいくつかの操作におけるメモリ使用量を削減しました。 #60050 (Alexey Milovidov )。
テーブルのプライマリキーは、最初のアクセス時に遅延的にメモリへロードされます。これは、新しい MergeTree の設定 primary_key_lazy_load によって制御されており、デフォルトで有効です。これにはいくつかの利点があります。- 使用されないテーブルについてはロードされないこと。- メモリが不足している場合、サーバー起動時ではなく最初の使用時に例外がスローされること。一方で、いくつかの欠点もあります。- プライマリキーのロードにかかるレイテンシーを、接続を受け付ける前ではなく最初のクエリ実行時に負担することになり、理論的にはいわゆる thundering herd(スタンピード)問題を引き起こす可能性があること。これにより #11188 がクローズされました。 #60093 (Alexey Milovidov )。
ベクトル検索に有用なベクトル化関数 dotProduct。 #60202 (Robert Schulze ).
テーブルのプライマリキーにあまり有用でないカラムが多く含まれている場合、それらをメモリに保持しないようにできます。これは新しい設定 primary_key_ratio_of_unique_prefix_values_to_skip_suffix_columns によって制御され、デフォルト値は 0.9 です。つまり、複合プライマリキーにおいて、あるカラムの値が全体の少なくとも 0.9 の割合で変化する場合、そのカラム以降のカラムはロードされません。 #60255 (Alexey Milovidov )。
result_type の基底型が数値型のときは、multiIf 関数を列指向で実行するようにしました。 #60384 (李扬 )。
Fig 1 に示すように、"&&" を "&" に置き換えることで SIMD コードが生成されます。 Fig 1. '&&'(左)と '&'(右)を用いてコンパイルしたコード。 #60498 (Zhiguo Zhou )。
ミューテックスを高速化(ほぼ 2 倍)。以前は ThreadFuzzer の影響で遅くなっていた。#60823 (Azat Khuzhin ).
接続のドレイン処理を prepare から work に移動し、複数の接続を並列でドレインできるようにしました。 #60845 (lizhuoyu5 ).
Nullable 数値および Nullable 文字列に対する insertManyFrom を最適化。 #60846 (李扬 ).
不要で高コストなメモリコピーを省略するように、関数 dotProduct を最適化しました。 #60928 (Robert Schulze ).
ファイルシステムキャッシュに対する操作でのロック競合の影響を軽減しました。 #61066 (Alexey Milovidov ).
ColumnString::replicate を最適化し、memcpySmallAllowReadWriteOverflow15Impl が組み込みの memcpy に置き換えられてしまう最適化を防止しました。#61074 をクローズしました。x86-64 環境において ColumnString::replicate は 2.46 倍高速化されました。#61075 (李扬 )。
256 ビット整数の出力を 30 倍高速化。#61100 (Raúl Marín )。
構文エラーを含むクエリの中に正規表現付きの COLUMNS マッチャーがある場合、その正規表現は本来一度だけコンパイルされるべきところ、パーサーのバックトラッキングのたびに毎回コンパイルされていました。これは本質的な誤りでした。コンパイル済みの正規表現は AST に格納されていました。しかし AST の A は「abstract(抽象)」を意味し、重量級オブジェクトを含むべきではありません。AST の一部は、多数のバックトラッキングを含め、パース中に生成および破棄される可能性があります。これはパース処理側の低速化を招き、その結果として読み取り専用ユーザーによる DoS 攻撃を許してしまいます。しかし主な問題は、これによってファザー(fuzzer)の進捗が妨げられることです。 #61543 (Alexey Milovidov )。
materialized view に対して MODIFY COLUMN クエリを実行する際、すべてのカラムが存在することを確認するために内部テーブルの構造をチェックするようにしました。 #47427 (sunny ).
パーサーからのすべてのキーワードを含むテーブル system.keywords を追加しました。これは主に、ファジングとシンタックスハイライトを改善するために使用されます。 #51808 (Nikita Mikhaylov ).
analyzer にパラメータ化ビューのサポートを追加し、CREATE PARAMETERIZED VIEW を解析しないようにしました。既存のパラメータ化ビューのロジックもリファクタリングし、CREATE PARAMETERIZED VIEW を解析しないようにしました。 #54211 (SmitaRKulkarni ).
Ordinary データベースエンジンは非推奨となりました。サーバーでこれを使用している場合、clickhouse-client に警告が表示されます。これにより #52229 がクローズされます。 #56942 (shabroo ).
テーブルに関連するすべてのゼロコピー ロックは、そのテーブルがドロップされる際に必ず解除する必要があります。これらのロックを保持しているディレクトリも削除する必要があります。 #57575 (Sema Checherinda ).
dictGetOrDefault 関数に短絡評価機能を追加。#52098 をクローズ。#57767 (jsc0218 )。
外部テーブルの構造内で enum 型を宣言できるようにしました。 #57857 (Duc Canh Le )。
DEFAULT または MATERIALIZED 式を持つカラムに対して ALTER COLUMN MATERIALIZE を実行すると、正しい値が書き込まれるようになりました。デフォルト値を持つ既存のパーツにはデフォルト値が、デフォルト以外の値を持つ既存のパーツにはその値が書き込まれます。以前は、すべての既存パーツに対してデフォルト値が書き込まれていました。#58023 (Duc Canh Le )。
バックオフロジック(例:指数バックオフ)を有効にしました。これにより、CPU 使用率、メモリ使用量、およびログファイルサイズを削減できます。 #58036 (MikhailBurdukov ).
マージ対象のパーツを選択する際に、論理削除された行を考慮するようにしました。 #58223 (Zhuo Qiu ).
storage_configuration で volume_priority を定義できるようになりました。 #58533 (Andrey Zvonov ).
T64 コーデックに Date32 型のサポートを追加しました。 #58738 (Hongbin Ma )
この PR により、すべてのユースケースで http/https 接続を再利用できるようになりました。レスポンスが 3xx や 4xx の場合でも接続は再利用されます。#58845 (Sema Checherinda )。
さらに多くのシステムテーブルのカラムにコメントを追加しました。 https://github.com/ClickHouse/ClickHouse/pull/58356 の継続です。 #59016 (Nikita Mikhaylov ).
これにより、PREWHERE で仮想カラムを使用できるようになりました。_part_offset のような非定数の仮想カラムに対して特に有用です。#59033 (Amos Bird )。
Distributed テーブルエンジンの設定は、MergeTree の設定と同様にサーバーの設定ファイル内で指定できるようになりました。例: <distributed> <flush_on_detach>false</flush_on_detach> </distributed>。 #59291 (Azat Khuzhin )。
Keeper の改善: latest_logs_cache_size_threshold と commit_logs_cache_size_threshold によって制御されるメモリ内のログキャッシュ量に上限を設けました。 #59460 (Antonio Andelic ).
定数キーの代わりに、オブジェクトストレージがオブジェクトの削除可否を判定するためのキーを生成するようになりました。 #59495 (Sema Checherinda ).
デフォルトでは指数表記の浮動小数点数を推論しないようにしました。以前の挙動を復元するための設定 input_format_try_infer_exponent_floats を追加しました(デフォルトでは無効です)。#59476 をクローズしました。#59500 (Kruglov Pavel )。
ALTER 操作を丸括弧で囲めるようになりました。丸括弧を出力するかどうかは format_alter_operations_with_parentheses 設定で制御できます。デフォルトでは、フォーマット済みクエリでは丸括弧が出力されます。これは、一部の場所でフォーマット済みの ALTER 操作をメタデータとして保存しているためです(例: mutation)。新しい構文により、ALTER 操作がリストで終わる一部のクエリがより明確になります。例えば、ALTER TABLE x MODIFY TTL date GROUP BY a, b, DROP COLUMN c は旧構文では正しくパースできません。新しい構文では、クエリ ALTER TABLE x (MODIFY TTL date GROUP BY a, b), (DROP COLUMN c) は明確です。古いバージョンは新しい構文を読み取ることができないため、新しい構文を使用すると、新旧バージョンの ClickHouse が単一クラスター内で混在している場合に問題が発生する可能性があります。 #59532 (János Benjamin Antal )。
codec DEFLATE_QPL で使用されている Intel QPL を v1.3.1 から v1.4.0 に更新しました。また、ポーリングタイムアウト機構に関するバグも修正しました。一部のケースでは、タイムアウトが発生しても正しく機能せず、タイムアウト発生時に IAA と CPU が同一バッファを同時に処理してしまう可能性があることを確認したためです。現時点では、IAA codec のステータスが QPL_STS_BEING_PROCESSED でないことを確認してから SW codec にフォールバックするようにしました。 #59551 (jasperzhu )。
libhdfs3 に位置指定読み取り(pread)を追加しました。libhdfs3 で位置指定読み取りを行う場合は、次のように hdfs.h の hdfsPread 関数を使用してください。tSize hdfsPread(hdfsFS fs, hdfsFile file, void * buffer, tSize length, tOffset position);。#59624 (M1eyu )。
ユーザーが max_parser_depth SETTING を非常に大きな値に誤設定していた場合でも、パーサーでスタックオーバーフローを検出するようにしました。これにより #59622 が解決されました。#59697 (Alexey Milovidov )。
Kafka ストレージにおける、XML と SQL で作成された named collection の動作を統一しました。 #59710 (Pervakov Grigorii ).
CREATE TABLE で uuid が明示的に指定されている場合、replica_path での uuid を許可します。 #59908 (Azat Khuzhin ).
system.tables システムテーブルに、ReplicatedMergeTree テーブル向けの metadata_version カラムを追加しました。 #59942 (Maksim Kita ).
Keeper の改善: Disk 関連の操作で失敗時に再試行を行うようにしました。 #59980 (Antonio Andelic ).
新しい設定 backups.remove_backup_files_after_failure を追加: <clickhouse> <backups> <remove_backup_files_after_failure>true</remove_backup_files_after_failure> </backups> </clickhouse>。 #60002 (Vitaly Baranov )。
RESTORE コマンドの実行時に、バックアップからテーブルのメタデータを読み込む処理で複数スレッドを使用するようにしました。 #60040 (Vitaly Baranov ).
StorageBuffer に 1 つを超える分片(num_layers > 1)がある場合、バックグラウンドフラッシュは複数スレッドで、すべての分片に対して同時に実行されるようになりました。#60111 (alesapin )。
user キーを使用して、設定ファイル内の特定の S3 設定ごとにユーザーを指定できるようになりました。 #60144 (Antonio Andelic ).
GCP が GATEWAY_TIMEOUT HTTP エラーコード付きの Internal Error を返した場合に備え、S3 ファイルの GCP フォールバック処理をバッファコピーに変更しました。 #60164 (Maksim Kita ).
オブジェクトストレージタイプとして「local_blob_storage」の代わりに「local」を使用可能にしました。 #60165 (Kseniia Sumarokova ).
Variant 値に対する比較演算子を実装し、Field を適切に Variant カラムへ挿入できるようにしました。既定では、類似したバリアント型を含む Variant 型の作成を許可しないようにしました(allow_suspicious_variant_types SETTING を有効にした場合のみ許可)。#59996 をクローズしました。#59850 をクローズしました。#60198 (Kruglov Pavel )。
バーチャルカラムの全体的な使い勝手が向上しました。PREWHERE でバーチャルカラムを使用できるようになりました(_part_offset のような非定数バーチャルカラムに対して有効です)。また、設定 describe_include_virtual_columns を有効にした DESCRIBE クエリでは、カラムのコメントとしてバーチャルカラムに関する組み込みドキュメントが表示されるようになりました。 #60205 (Anton Popov ).
ULIDStringToDateTime の実行を短絡実行するようにしました。 #60211 (Juan Madurga ).
テーブル system.backups および system.backup_log に query_id カラムを追加しました。error カラムにエラーのスタックトレースを追加しました。 #60220 (Maksim Kita ).
DETACH/サーバーシャットダウン時および SYSTEM FLUSH DISTRIBUTED 実行時に、Distributed engine の保留中の INSERT ブロックを並列でフラッシュするようにしました(並列処理は、テーブルにマルチディスクポリシーが設定されている場合にのみ有効です。これは現時点の Distributed engine 内のすべてのテーブルに当てはまります)。 #60225 (Azat Khuzhin ).
joinRightColumnsSwitchNullability におけるフィルタ設定が不正だった問題を修正し、#59625 を解決。#60259 (lgbo )。
マージでリードスルーキャッシュを強制的に使用するための設定を追加しました。#60308 (Kseniia Sumarokova )。
Issue #57598 では、トランザクション処理に関する挙動の違いが報告されています。アクティブなトランザクションが存在しない状態で COMMIT/ROLLBACK を発行すると、MySQL の挙動とは異なりエラーとして報告されます。#60338 (PapaToemmsn )。
distributed_ddl_output_mode 設定に none_only_active モードを追加しました。 #60340 (Alexander Tokmakov ).
MySQL ポート経由の接続では、QuickSight をそのまま利用できるようにするために、設定 prefer_column_name_to_alias = 1 が自動的に有効化されるようになりました。さらに、設定 mysql_map_string_to_text_in_show_columns と mysql_map_fixed_string_to_text_in_show_columns もデフォルトで有効化され、同様に MySQL 接続のみに影響します。これにより、より多くの BI ツールとの互換性が向上します。 #60365 (Robert Schulze ).
出力フォーマットが Pretty フォーマットで、ブロックが 100 万を超える単一の数値のみで構成されている場合、テーブルの右側に読みやすい形式の数値が表示されます。例: ┌──────count()─┐ │ 233765663884 │ -- 233.77 billion └──────────────┘。 #60379 (rogeryk )。
clickhouse-server の HTTP リダイレクトハンドラを設定可能になりました。たとえば、/ を Play UI へリダイレクトさせることができます。#60390 (Alexey Milovidov )。
高度なダッシュボードでは、複数系列グラフの色使いがわずかに改善されています。 #60391 (Alexey Milovidov )。
グラフが互いに重なって表示される原因となっていた JavaScript コード内のレースコンディションを修正。 #60392 (Alexey Milovidov ).
ユーザーが max_parser_depth を非常に大きな値に誤って設定した場合でも、パーサーでスタックオーバーフローを検出するようにしました。これにより #59622 が解決されます。 #60434 (Alexey Milovidov )。
関数 substring に byteSlice という新しいエイリアスが追加されました。 #60494 (Robert Schulze ).
あいまいさを減らすため、サーバー設定 dns_cache_max_size を dns_cache_max_entries に名前変更しました。 #60500 (Kirill Nikiforov ).
SHOW INDEX | INDEXES | INDICES | KEYS は、主キーのカラムでソートされなくなりました(以前の挙動は直感的ではありませんでした)。 #60514 (Robert Schulze ).
Keeper の改善: データ損失を避けるため、不正なスナップショットが検出された場合は起動時に処理を中断するようにしました。 #60537 (Antonio Andelic ).
merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_fault_probability 設定を使用して、MergeTree の読み取り分割範囲を交差するものと交差しないものに分けたフォールトインジェクションを追加しました。 #60548 (Maksim Kita ).
Advanced ダッシュボードでは、スクロールしても常にコントロールが表示されるようになりました。これにより、新しいチャートを追加する際に上までスクロールする必要がなくなります。 #60692 (Alexey Milovidov ).
String 型と Enum 型は、配列、UNION クエリ、条件式など、同じコンテキストで使用できるようになりました。これにより #60726 が解決されました。#60727 (Alexey Milovidov )。
tzdata を 2024a に更新しました。#60768 (Raúl Marín )。
Filesystem データベースで拡張子のないファイルをサポート。 #60795 (Kruglov Pavel ).
Keeper の改善: 設定で leadership_expiry_ms をサポート。 #60806 (Brokenice0415 ).
設定 input_format_try_infer_exponent_floats に関係なく、JSON 形式内の指数表記の数値を常に推論するようにしました。JSON オブジェクトからの named Tuple の推論時に、例外を投げる代わりにあいまいなパスに対して String 型を使用できるようにする設定 input_format_json_use_string_type_for_ambiguous_paths_in_named_tuples_inference_from_objects を追加しました。 #60808 (Kruglov Pavel ).
SMJ が null を最大値/最小値として扱うかどうかを制御するフラグを追加しました。これにより、Apache Spark などの他の SQL システムと同様の挙動にできます。 #60896 (loudongfeng ).
ClickHouse のバージョン情報が Docker ラベルに追加されました。 #54224 をクローズします。 #60949 (Nikolay Monkov )。
parallel_replicas_allow_in_with_subquery = 1 という設定を追加しました。これにより、IN 句でのサブクエリを parallel replicas と併用できるようになります。 #60950 (Nikolai Kochetov ).
DNSResolver が解決された IP アドレスの集合をシャッフルするようになりました。 #60965 (Sema Checherinda ).
clickhouse-client と clickhouse-local で、ファイル拡張子から出力フォーマットを自動検出する機能をサポートしました。 #61036 (豪肥肥 )。
メモリ制限の更新状況を定期的に確認します。 #61049 (Han Fei ).
プロセッサのプロファイリング機能(ソートや集約などにおける処理時間および入出力バイト数)をデフォルトで有効にしました。 #61096 (Azat Khuzhin ).
誤って追加し忘れていた関数 toUInt128OrZero を追加しました(この誤りは https://github.com/ClickHouse/ClickHouse/pull/945 に関連しています)。互換性エイリアスである FROM_UNIXTIME と DATE_FORMAT(これらは ClickHouse 固有のものではなく、MySQL 互換のためだけに存在します)は、SQL 互換エイリアスに期待されるとおり、大文字小文字を区別しないようになりました。#61114 (Alexey Milovidov )。
アクセスチェックが改善され、対象ユーザーが実際にはその権限を個別には所持していない場合でも(より広いスコープで付与されている場合など)、権限を取り消せるようになりました。例: ```sql GRANT SELECT ON . TO user1; REVOKE SELECT ON system.* FROM user1;. #61115 (pufit ).
以前の最適化でのエラーを修正: https://github.com/ClickHouse/ClickHouse/pull/59698 。最初のフィルタ対象カラムが最小サイズになるようにするため、break を削除。cc @jsc0218。#61145 (李扬 )。
Nullable カラムに対する has() 関数の不具合を修正しました(#60214 の修正)。#61249 (Mikhail Koviazin )。
現在、設定サブツリーに対するコンフィグ置換で、<include from_zk="/path" merge="true"> のように属性 merge="true" を指定できるようになりました。この属性が指定されている場合、ClickHouse はサブツリーを既存の設定とマージし、指定されていない場合は、デフォルトの動作として新しい内容を設定に追加します。 #61299 (alesapin ).
仮想メモリマッピング向けの非同期メトリクス VMMaxMapCount と VMNumMaps を追加。#60662 をクローズ。#61354 (Tuan Pham Anh )。
temporary_files_codec 設定が、一時データを作成するすべての処理(例:外部メモリソートおよび外部メモリ GROUP BY)で使用されるようになりました。以前は partial_merge JOIN アルゴリズムでのみ利用可能でした。 #61456 (Maksim Kita )。
重複しているチェック containing_part.empty() を削除。すでにここでチェックされているためです: https://github.com/ClickHouse/ClickHouse/blob/1296dac3c7e47670872c15e3f5e58f869e0bd2f2/src/Storages/MergeTree/MergeTreeData.cpp#L6141 。 #61467 (William Schoeffel )。
クエリの構文解析の複雑さを制限できる新しい設定 max_parser_backtracks を追加しました。 #61502 (Alexey Milovidov )。
ファイルシステムキャッシュの動的リサイズ時のコンテンションを削減。#61524 (Kseniia Sumarokova ).
StorageS3 キューの分片モードを、今後実装が書き換えられる予定のため無効化しました。 #61537 (Kseniia Sumarokova ).
use_leagcy_max_level というタイポを use_legacy_max_level に修正しました。 #61545 (William Schoeffel ).
blob_storage_log 内の重複エントリの一部を削除します。 #61622 (YenchangChan ).
MySQL 互換性のためのエイリアスとして current_user 関数を追加しました。 #61770 (Yarik Briukhovetskyi ).
Azure Blob Storage を使用するバックアップの I/O に managed identity を使用できるようにしました。ストレージアカウントレベルでの権限を必要とする、存在しないコンテナの作成を ClickHouse が試みないようにするための設定を追加しました。 #61785 (Daniel Pozo Escalona )。
以前のバージョンでは、Pretty フォーマットで一部の数値の見栄えが十分ではありませんでした。 #61794 (Alexey Milovidov ).
Pretty フォーマットでは、SHOW CREATE TABLE クエリの結果のように結果セットに単一の値しか含まれていない場合、その値が長くても切り詰められません。 #61795 (Alexey Milovidov ).
clickhouse-local と同様に、clickhouse-client でも --format オプションの別名として --output-format オプションを受け付けるようになりました。これにより #59848 が解決されました。#61797 (Alexey Milovidov )。
stdout がターミナルで、出力フォーマットが指定されていない場合、clickhouse-client などのツールは対話モードと同様に、デフォルトで PrettyCompact を使用します。clickhouse-client と clickhouse-local は、入力および出力フォーマット用のコマンドライン引数を一貫した方法で処理します。これにより #61272 が解決されます。#61800 (Alexey Milovidov )。
可読性を高めるために、Pretty フォーマットで数字の桁グループをアンダースコアで区切って表示できるようにしました。これは新しい設定 output_format_pretty_highlight_digit_groups で制御されます。 #61802 (Alexey Milovidov ).
バグ修正(公式安定版リリースでユーザーに直接影響する不具合)