ClickHouse リリースタグ: 24.2.2.15987
後方互換性を持たない変更
- ネストされた型内の疑わしい型/Experimental 型を検証するようになりました。以前は、Array/Tuple/Map のようなネストされた型内では、そのような型 (JSON を除く) は検証されていませんでした。#59385 (Kruglov Pavel).
- ソート句
ORDER BY ALL (v23.12で導入) は、ORDER BY * に置き換えられました。従来の構文は、all というカラムを持つテーブルではエラーを引き起こしやすすぎました。#59450 (Robert Schulze) 。
- threads の数と block サイズの妥当性チェックを追加しました。#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/59915 のブロック解除に必要な https://github.com/ClickHouse/ClickHouse/pull/59699 の続きです。 #60888 (Nikita Mikhaylov).
- ユーティリティ
clickhouse-copier は、GitHub 上の別のリポジトリに移動されました: https://github.com/ClickHouse/copier。現在はバンドルに含まれていませんが、引き続き個別にダウンロードできます。これにより次をクローズします: #60734 これにより次をクローズします: #60540 これにより次をクローズします: #60250 これにより次をクローズします: #52917 これにより次をクローズします: #51140 これにより次をクローズします: #47517 これにより次をクローズします: #47189 これにより次をクローズします: #46598 これにより次をクローズします: #40257 これにより次をクローズします: #36504 これにより次をクローズします: #35485 これにより次をクローズします: #33702 これにより次をクローズします: #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 と同様に、比較できないため禁止されます) 。許可するには allow_suspicious_primary_key を使用してください。#61399 (Azat Khuzhin).
- ClickHouse では、通常は UTF-8 として扱われる String データ型に、任意のバイナリデータを格納できます。一方、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 では変更していません (Arrow は低レベル用途を重視しているためです) 。#61817 (Alexey Milovidov).
- materialized view のセキュリティ問題を修正しました。この問題により、必要な権限がなくても、ユーザーがテーブルに insert できていました。この修正では、ユーザーが materialized view に対してだけでなく、すべての基になるテーブルに対しても insert 権限を持っていることを検証します。つまり、以前は動作していた一部のクエリが、現在は Not enough privileges で失敗する可能性があります。この問題に対処するため、このリリースではビューに対する SQL security の新機能が導入されています https://clickhouse.com/docs/sql-reference/statements/create/view#sql_security。#54901 (pufit)
新機能
- 値の件数とその誤差を返す Topk/topkweighed のモードをサポート。#54508 (UnamedRus) 。
- view/materialized view で definer user を指定できる新しい構文が追加されました。これにより、基になるテーブルに対する明示的な grants がなくても、view 経由で select/insert を実行できるようになります。#54901 (pufit).
- さまざまな種類の MergeTree テーブルをレプリケーション対応エンジンへ自動変換する機能が実装されました。テーブルのデータディレクトリ (
/clickhouse/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/) に空の convert_to_replicated ファイルを作成すると、そのテーブルは次回のサーバー起動時に自動的に変換されます。#57798 (Kirill).
- テーブル関数
mergeTreeIndex が追加されました。これは、MergeTree テーブルの索引ファイルおよび marks ファイルの内容を表します。イントロスペクションに使用できます。構文: 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) 。
- codec
LZ4HC で、新たにレベル 2 を指定できるようになりました。これは従来の最小レベル 3 より高速ですが、その分圧縮率は低くなります。以前のバージョンでは、LZ4HC(2) 以下は LZ4HC(3) と同じ扱いでした。著者: Cyan4973。#60090 (Alexey Milovidov).
- DNS の問題のデバッグに役立つ system.dns_cache テーブルを実装しました。新しいサーバー設定 dns_cache_max_size を追加しました。#60257 (Kirill Nikiforov) 。
DateTime または DateTime64 型の値に対して、ミリ秒部分を返す関数 toMillisecond を追加しました。#60281 (Shaun Struwig) 。
- mergeテーブル関数で、
merge(['db_name', ] 'tables_regexp') のような単一引数版をサポートしました。#60372 (豪肥肥) 。
- すべてのフォーマット名で大文字・小文字を区別しないようにし、Tsv、TSV、tsv、さらには rowbinary でも使えるようにしました。#60420 (豪肥肥).
- view/materialized view で definer user を指定できる新しい構文が追加されました。これにより、基になるテーブルに対する明示的な権限がなくても、view 経由で select/insert を実行できるようになります。 #60439 (pufit).
StorageMemory (memory-engine) に、4つのプロパティ min_bytes_to_keep, max_bytes_to_keep, min_rows_to_keep および max_rows_to_keep を追加 - 変更内容を反映するテストを追加 - memory.md ドキュメントを更新 - テーブル context プロパティを MemorySink に追加し、テーブル parameter の境界値にアクセスできるようにしました。 #60612 (Jake Bamrah).
DateTime または DateTime64 型の値からミリ秒の部分を返す関数 toMillisecond を追加しました。#60649 (Robert Schulze) 。
- 待機中のクエリ数と実行中のクエリ数の制限を分離しました。
async_load_databases によって待機しているクエリ数を制限する、新しいサーバー設定 max_waiting_queries を追加しました。既存の実行中クエリ数の制限では、待機中のクエリはカウントされなくなりました。#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 出力の build を遅延実行するようにしました。#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 型および高精度の Decimal 型における sum/avg の条件付き処理のパフォーマンスを最適化しました。#59504 (李扬).
- 進行中の mutation がある場合の SELECT のパフォーマンスを改善しました。#59531 (Azat Khuzhin) 。
- カラムフィルタの軽微な最適化。基になるデータ型が数値ではないフィルタ用カラムに対しては、
result_size_hint = -1 を使ったフィルタリングを避けるようにしました。場合によっては、ピークメモリ使用量を元の 44% まで削減できます。#59698 (李扬).
- 主キーのメモリ使用量が少なくなります。#60049 (Alexey Milovidov) 。
- 主キーおよびその他の一部の操作におけるメモリ使用量を改善しました。 #60050 (Alexey Milovidov).
- テーブルの主キーは、最初にアクセスされた時点で遅延的にメモリへ読み込まれます。これは、新しい MergeTree 設定
primary_key_lazy_load で制御されており、デフォルトで有効です。これにはいくつかの利点があります: - 使用されないテーブルの主キーは読み込まれません; - メモリが不足している場合、サーバー起動時ではなく最初の使用時に例外が発生します。これにはいくつかの欠点もあります: - 主キーの読み込みによるレイテンシは、接続を受け付ける前ではなく最初のクエリ時に発生します; このため、理論上はサンダリングハード問題を引き起こす可能性があります。これにより #11188 がクローズされます。 #60093 (Alexey Milovidov).
- vector search に役立つ、ベクトル化関数
dotProduct。 #60202 (Robert Schulze).
- テーブルの主キーにほとんど役に立たないカラムが含まれている場合、それらをメモリに保持しないようになりました。これは新しい設定
primary_key_ratio_of_unique_prefix_values_to_skip_suffix_columns で制御され、デフォルト値は 0.9 です。つまり、複合主キーにおいて、あるカラムの値が全体の少なくとも 0.9 の割合で変化する場合、その後に続くカラムは読み込まれません。 #60255 (Alexey Milovidov).
- result_type の基底型が number の場合に、multiIf 関数を列指向で実行するようにしました。#60384 (李扬) 。
- 図1に示すように、"&&" を "&" に置き換えると、SIMD コードが生成されることがあります。
図1. '&&' (左) と '&' (右) からコンパイルされたコード。 #60498 (Zhiguo Zhou).
- mutex を高速化 (ほぼ 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 の一部は、パース中の大量のバックトラッキングの過程で生成されたり破棄されたりすることがあります。これによりパース処理が遅くなり、その結果、readonly ユーザーによる DoS が可能になっていました。しかし主な問題は、これによってファザーの進展が妨げられることです。 #61543 (Alexey Milovidov).
改善
- materialized view に対して MODIFY COLUMN クエリを実行する際、すべてのカラムが存在することを確認するために内部テーブルの構造をチェックするようにしました。 #47427 (sunny).
- パーサー内のすべてのキーワードを含むテーブル
system.keywords が追加されました。主に、ファジングやシンタックスハイライトを改善するために必要で、今後活用されます。#51808 (Nikita Mikhaylov).
- パラメーター化ビューの CREATE を解析しないよう、アナライザでパラメーター化ビューをサポートするようにしました。既存のパラメーター化ビューのロジックも、パラメーター化ビューの CREATE を解析しないようにリファクタリングしました。 #54211 (SmitaRKulkarni).
- Ordinary データベースエンジンは非推奨です。サーバーでこれを使用している場合、clickhouse-client に警告が表示されます。これにより #52229 がクローズされます。 #56942 (shabroo).
- テーブルがドロップされる際には、そのテーブルに関連するすべての zero copy ロックも削除する必要があります。これらのロックが格納されているディレクトリもあわせて削除する必要があります。 #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 codecで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 のような non-const の仮想カラムでは特に有用です。 #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 config で制御できます。デフォルトでは、フォーマット済みのクエリでは括弧が出力されます。これは、フォーマット済みの ALTER 操作を一部の箇所でメタデータ (例: ミューテーション) として保存しているためです。新しい構文により、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).
- Intel QPL (
DEFLATE_QPL codec で使用) を v1.3.1 から v1.4.0 に更新しました。あわせて、polling timeout mechanism に関する不具合も修正しました。一部のケースで timeout が正しく機能せず、timeout 発生時に IAA と CPU が buffer を同時に処理してしまうことが確認されたためです。現時点では、IAA codec status が QPL_STS_BEING_PROCESSED ではないことを確認したうえで、SW codec にフォールバックするようにしました。 #59551 (jasperzhu).
- libhdfs3 に positional pread を追加しました。libhdfs3 で positional read を呼び出すには、次のように hdfs.h の hdfsPread 関数を使用します。
tSize hdfsPread(hdfsFS fs, hdfsFile file, void * buffer, tSize length, tOffset position);。#59624 (M1eyu).
- ユーザーが
max_parser_depth 設定を極端に大きな値に誤設定していた場合でも、パーサーでスタックオーバーフローを検出するようにしました。これにより #59622 がクローズされます。 #59697 (Alexey Milovidov).
- Kafkaストレージで、XML と SQL で作成された named collection の動作を統一。#59710 (Pervakov Grigorii) 。
- CREATE TABLE で明示的に指定されている場合は、replica_path で uuid を使用できるようにしました。#59908 (Azat Khuzhin).
system.tables システムテーブルに、ReplicatedMergeTree テーブルの metadata_version カラムを追加しました。#59942 (Maksim Kita) 。
- Keeperの改善: ディスク関連の操作が失敗した際の再試行を追加しました。#59980 (Antonio Andelic) 。
- 新しい config 設定
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 に複数の分片がある場合 (num_layers > 1) 、バックグラウンドでのフラッシュが、すべての分片に対して複数のスレッドで同時に実行されるようになりました。#60111 (alesapin).
- configで
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 型を含む
Variant 型の作成を許可しません (設定 allow_suspicious_variant_types を有効にすると許可されます) 。Closes #59996。Closes #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).
- マージ時にリードスルー cache を強制する設定を追加しました。#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 formatで、ブロックが100万を超える単一の数値1つで構成されている場合、読みやすい数値が表の右側に表示されます。たとえば、
┌──────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) 。
- 高度なダッシュボードでは、スクロールしてもコントロールが常に表示されるようになりました。これにより、上までスクロールしなくても新しいチャートを追加できます。#60692 (Alexey Milovidov).
- String 型と Enum は、配列、UNION クエリ、条件式など、同じコンテキストで使用できるようになりました。これで #60726 は解決されます。#60727 (Alexey Milovidov)。
- tzdata を 2024a に更新しました。 #60768 (Raúl Marín).
- Filesystem database で、フォーマット拡張子のないファイルに対応。 #60795 (Kruglov Pavel).
- Keeperの改善: Keeperの設定で
leadership_expiry_ms がサポートされました。#60806 (Brokenice0415) 。
- 設定
input_format_try_infer_exponent_floats に関係なく、JSON フォーマットでは常に指数表記の数値を推論するようにしました。input_format_json_use_string_type_for_ambiguous_paths_in_named_tuples_inference_from_objects 設定を追加し、JSON オブジェクトから named Tuples を推論する際に、あいまいなパスについては例外を発生させる代わりに String type を使用できるようにしました。#60808 (Kruglov Pavel).
- SMJ で null を最大値/最小値として扱えるようにするフラグを追加しました。これにより、Apache Spark などの他の SQL システムと互換性のある動作になります。 #60896 (loudongfeng).
- ClickHouse のバージョンが Docker ラベルに追加されました。#54224 をクローズしました。#60949 (Nikolay Monkov) 。
- 並列レプリカで IN 句のサブクエリを使用できるようにする設定
parallel_replicas_allow_in_with_subquery = 1 を追加しました。#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"> の config の substitution で、属性 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 でマネージド ID を使用するようにしました。ストレージ アカウント レベルの権限が必要となる、存在しないコンテナーを 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) 。
バグ修正 (正式な安定版リリースにおけるユーザーに影響する不具合)