後方互換性を持たない変更
- Parquet 出力フォーマットでは、Date および DateTime カラムは生の数値として書き込まれる代わりに、Parquet がサポートする date/time 型に変換されます。DateTime は DateTime64(3) になりました (従来は UInt32) 。
output_format_parquet_datetime_as_uint32を設定すると、従来の動作に戻せます。Date は Date32 になりました (従来は UInt16) 。#70950 (Michael Kolupaev) 。 - デフォルトでは、ORDER BY および比較関数
less/greater/equal/etcでは、比較可能な型 (JSON/Object/AggregateFunction など) を許可しないようにしました。#73276 (Pavel Kruglov) 。 JSONEachRowWithProgressは、進捗が発生するたびにその進捗を書き出すようになります。以前のバージョンでは、進捗は結果の各 block の後でしか表示されず、実質的に役に立ちませんでした。進捗の表示方法も変更され、ゼロの値は表示されなくなります。進捗は高頻度で発生する場合でも送信される点に注意してください。これにより、大量のトラフィックが発生する可能性があります。また、出力が compressed の場合、進捗は flush されない点にも注意してください。これにより #70800 がクローズされます。 #73834 (Alexey Milovidov).mysqlの Dictionary ソースでは、SHOW TABLE STATUSクエリはもう実行されません。これは、少なくとも最近の MySQL バージョンでは、InnoDB テーブルに対してこのクエリから有用な値が得られないためです。これにより #72636 はクローズされます。この変更には後方互換性がありますが、気付きやすいようにこのカテゴリに含めています。#73914 (Alexey Milovidov).Mergeテーブルは、基になるテーブルのカラムのユニオンを取り、共通の型を導出することで、それらの構造を統一します。これにより #64864 がクローズされます。これにより #35307 がクローズされます。場合によっては、この変更は後方互換性がない可能性があります。たとえば、テーブル間に共通の型はないものの、UInt64 と Int64 の組み合わせや任意の数値型と String の組み合わせのように、最初のテーブルの型への変換自体は可能な場合です。以前の動作に戻したい場合は、merge_table_max_tables_to_look_for_schema_inferenceを1に設定するか、compatibilityを24.12以前に設定してください。#73956 (Alexey Milovidov).CHECK TABLEクエリを実行するには、別途CHECK権限が必要になりました。以前のバージョンでは、これらのクエリの実行にはSHOW TABLES権限があれば十分でした。ただし、CHECK TABLEクエリは高負荷になる可能性があり、SELECTクエリに通常適用されるクエリ複雑度の制限も適用されません。そのため、DoS を引き起こすおそれがありました。#74471 (Alexey Milovidov).allow_materialized_view_with_bad_selectがfalseの場合、materialized view 内のすべてのカラムがターゲットテーブルと一致することを確認します。#74481 (Christoph Wurm) 。- 関数
h3ToGeo()は、結果を(lat, lon)の順序で返すようになりました (これは幾何関数の標準的な順序です) 。従来の結果順(lon, lat)を維持したい場合は、設定h3togeo_lon_lat_result_order = trueを指定できます。 #74719 (Manish Gill). JSONCompactEachRowWithProgressおよびJSONCompactStringsEachRowWithProgressフォーマットを追加しました。#69989 の続きです。JSONCompactWithNamesとJSONCompactWithNamesAndTypesは、“totals” を出力しなくなりました。どうやら、これは実装上の誤りだったようです。#75037 (Alexey Milovidov).- ALTER コマンドのリストを曖昧さなくするため、
format_alter_operations_with_parenthesesのデフォルト値を true に変更しました (https://github.com/ClickHouse/ClickHouse/pull/59532 を参照) 。この変更により、24.3 より前のクラスターとのレプリケーションは互換性がなくなります。古いリリースを使用しているクラスターをアップグレードする場合は、server config でこの設定を無効にするか、先に 24.3 へアップグレードしてください。#75302 (Raúl Marín). - Replicated データベースでは
TRUNCATE DATABASEを禁止しました。#76651 (Bharat Nallan) 。 compatibility設定にかかわらず、アナライザが無効な場合はデフォルトで並列レプリカが無効になります。parallel_replicas_only_with_analyzerをfalseに明示的に設定すれば、この動作は引き続き変更可能です。#77115 (Igor Nikonov).- 設定の浮動小数点値として
NaNまたはinfを使用することはできなくなりました。#77546 (Yarik Briukhovetskyi) 。 dateTruncに負の date/datetime 引数を指定して使用した場合の不具合を修正しました。#77622 (Yarik Briukhovetskyi) 。- 従来のMongoDBインテグレーションは削除されました。サーバー設定
use_legacy_mongodb_integrationは廃止され、現在は何も行いません。#77895 (Robert Schulze). - パーティションキーまたはソートキーに使用されるカラムでは集約をスキップするよう、SummingMergeTree の検証を強化しました。#78022 (Pervakov Grigorii) 。
新機能
- デシリアライズ済みのスキッピング索引グラニュール向けのインメモリ cache を追加しました。これにより、スキッピング索引を使用する繰り返し実行されるクエリが高速になるはずです。新しい cache のサイズは、サーバー設定
skipping_index_cache_sizeおよびskipping_index_cache_max_entriesで制御されます。この cache はもともとベクトル類似度索引を念頭に導入されたもので、これらも大幅に高速化されました。#70102 (Robert Schulze). - OSページキャッシュに依存せず、プロセス内メモリにデータをキャッシュできる、新しいユーザー空間ページキャッシュの実装です。ローカルのファイルシステムキャッシュによる裏付けのないリモート仮想ファイルシステムにデータが保存されている場合に有用です。#70509 (Michael Kolupaev) 。
- 特定のタイムスタンプ時点の Iceberg テーブルをクエリできる設定を追加しました。#71072 (Brett Hoerner) 。
- Iceberg の時間関連の transform パーティション操作に対する、Iceberg テーブルのパーティションプルーニングを実装しました。 #72044 (Daniil Ivanik).
- 設定
enable_minmax_index_for_all_numeric_columns(数値カラム用) およびenable_minmax_index_for_all_string_columns(文字列カラム用) により、MergeTree が管理するカラムに対して、デフォルトで min-max (スキップ) 索引を作成する機能が追加されました。現時点では両方の設定は無効のため、動作に変更はまだありません。 #72090 (Smita Kulkarni). - パターンにおける最長のイベントチェーンに一致したイベントのタイムスタンプを返す集約関数 sequenceMatchEvents が追加されました。#72349 (UnamedRus) 。
SELECTおよびVIEWステートメントで別名がサポートされるようになりました。たとえば、SELECT b FROM (SELECT number, number*2 FROM numbers(2)) AS x (a, b);のように使用できます。これにより、TPC-H クエリ 15 を変更せずに実行できるようになります。#72480 (Yarik Briukhovetskyi).- 同じクエリ内の複数の grace JOIN が合計のメモリ使用量を監視し、MEMORY_LIMIT_EXCEEDED を防ぐために外部ストレージへのスピルを適応的にトリガーできるようにする新しい設定
enable_adaptive_memory_spill_schedulerが追加されました。 #72728 (lgbo). - 関数
arrayNormalizedGiniが追加されました。#72823 (flynn) 。 - 低カーディナリティのDecimal型をサポートし、#72256を修正しました。 #72833 (zhanglistar).
min_age_to_force_merge_secondsとmin_age_to_force_merge_on_partition_onlyの両方が有効な場合、パーツマージでは最大バイト数の上限が無視されます。 #73656 (Kai Zhu) 。- Apache Arrow/Parquet/ORC からの HALF_FLOAT 値の読み取りをサポートしました (Float32 として読み込まれます) 。これにより #72960 がクローズされます。IEEE-754 half float は BFloat16 とは異なる点に注意してください。#73835 をクローズしました。#73836 (Alexey Milovidov).
system.trace_logテーブルには、シンボル化されたスタックトレースを含むsymbolsとlinesという 2 つの新しいカラムが含まれるようになります。これにより、プロファイル情報を簡単に収集およびエクスポートできるようになります。これはtrace_log内のサーバー設定値symbolizeによって制御され、デフォルトで有効になっています。 #73896 (Alexey Milovidov).- 新しい関数
generateSerialIDを追加しました。これは、テーブルで自動増分の番号を生成するために使用できます。kazalika による #64310 の続きです。これにより #62485 はクローズされます。#73950 (Alexey Milovidov)。 - 構文
query1 PARALLEL WITH query2 PARALLEL WITH query3 ... PARALLEL WITH queryNを追加しました。これは、サブクエリ{query1, query2, ... queryN}を互いに並列に実行でき、しかもそうすることが推奨されることを意味します。#73983 (Vitaly Baranov)。 - Play UI でクエリ実行中に進捗バーが表示されるようになりました。これにより、クエリをキャンセルできます。総レコード数と速度に関する詳細情報を表示します。テーブルは、データが到着し次第、順次レンダリングできます。HTTP圧縮を有効化しました。テーブルのレンダリングが高速化されました。テーブルヘッダーは固定表示になりました。セルを選択し、矢印キーで移動できるようになりました。選択したセルの枠線によってセルが小さくなってしまう問題を修正しました。セルはマウスホバーでは拡大せず、選択時にのみ拡大するようになりました。受信中のデータのレンダリングを停止するタイミングは、サーバー側ではなくクライアント側で判断されるようになりました。数値の桁区切りを強調表示します。全体のデザインを刷新し、より大胆なものになりました。サーバーに接続可能かどうかと認証情報が正しいかどうかを確認し、サーバーのバージョンと稼働時間を表示します。Safari を含め、どのフォントでもクラウドアイコンが輪郭付きで表示されるようになりました。ネストされたデータ型内の大きな整数が、より適切に表示されるようになりました。inf/nan を正しく表示するようになりました。マウスをカラムヘッダーの上に置くと、データ型を表示します。 #74204 (Alexey Milovidov).
- 設定
add_minmax_index_for_numeric_columns(数値カラム用) およびadd_minmax_index_for_string_columns(文字列カラム用) により、MergeTree が管理するカラムに対して、デフォルトで min-max (スキッピング) 索引を作成できるようになりました。現時点では両方の設定が無効になっているため、まだ動作に変更はありません。#74266 (Smita Kulkarni). script_query_numberフィールドとscript_line_numberフィールドを、system.query_log、ネイティブプロトコルの ClientInfo、およびサーバーログに追加しました。これにより #67542 をクローズします。この機能に早い段階で着手した #68133 の pinsvin00 に感謝します。#74477 (Alexey Milovidov)。- DateTime64 同士および DateTime との減算を可能にするため、DateTime64 の減算演算子のサポートを追加しました。#74482 (Li Yin) 。
- AzureBlobStorage向けのDelta Lakeテーブルエンジンをサポート。 #68043 を修正。 #74541 (Smita Kulkarni).
- clickhouse client からの接続で送信元IPアドレスを指定するための bind_host 設定を追加しました。#74741 (Todd Yocum) 。
SELECTクエリの実行時に、送信直後から未完了の (バックグラウンドプロセスでまだ materialize されていない) mutationをその場で適用できるようになりました。これはapply_mutations_on_flyを設定すると有効になります。#74877 (Anton Popov).toStartOfIntervalの datetime 引数が負の値の場合に、これまで想定外の結果になっていたいくつかのケースを修正しました。これは、toStartOfIntervalAllowNegative という新しい関数を実装することで対応したもので、動作はほぼ同じですが、Date32/DateTime64 のみを返します。#74933 (Yarik Briukhovetskyi).- 新しい関数 initialQueryStartTime が追加されました。これは現在のクエリの開始時刻を返します。この値は、分散クエリ中はすべての分片で共通です。#75087 (Roman Lomonosov) 。
- system.tables に parametrized_view_parameters を導入しました。https://github.com/clickhouse/clickhouse/issues/66756 をクローズしました。#75112 (NamNguyenHoai) 。
- データベースコメントの変更を可能にしました。#73351 をクローズします。### ユーザー向け変更に関するドキュメント項目。#75622 (NamNguyenHoai).
- データベース層を介さずにテーブルをATTACHできるようになりました (UUIDハックを回避) 。 #75788 (Azat Khuzhin).
- 同時実行クエリ間で CPU スロットをどのように分配するかを制御する
concurrent_threads_schedulerサーバー設定が追加されました。round_robin(従来の動作) またはfair_round_robinに設定でき、INSERT と SELECT の間で CPU が不公平に分配される問題に対処できます。#75949 (Sergei Trifonov). - ライセンス上の問題により v24.10 で削除されていた QPL codec を復元しました。#76021 (Konstantin Bogdanov).
- 関数
arraySymmetricDifferenceを追加しました。複数の配列引数のうち、すべての引数に共通しては現れない要素をすべて返します。例:SELECT arraySymmetricDifference([1, 2], [2, 3])は[1, 3]を返します。(issue #61673). #76231 (Filipp Abapolov). - 集約関数
estimatecompressionratioを追加。 #70801 を参照してください。 #76661 (Tariq Almawash). FilterTransformPassedRowsとFilterTransformPassedBytesの profile events には、クエリ実行中にフィルタリングされた行数とバイト数が表示されます。#76662 (Onkar Deshpande) 。- ブロックチェーンの実装、特に EVM ベースのシステムで一般的に使われる
keccak256ハッシュ関数を追加しました。#76669 (Arnaud Briche) 。 - Scram SHA256 および Postgres wire プロトコル認証を更新。#76839 (scanhex12) 。
- この機能により、クライアントリクエストのヘッダーから外部 HTTP 認証機構に転送するヘッダーの一覧を定義できるようになります。#77054 (inv2004).
IcebergMetadataFilesCacheをサポートし、マニフェストファイル/リストと metadata.json を 1 つの cache に保存できるようになりました。#77156 (Han Fei) 。- 関数
arrayLevenshteinDistance、arrayLevenshteinDistanceWeighted、arraySimilarityを追加しました。#77187 (Mikhail f. Shiryaev) 。 - 3つの新しい関数
icebergTruncate、toYearNumSinceEpoch、toMonthNumSinceEpochを追加しました。icebergTruncateは仕様 https://iceberg.apache.org/spec/#truncate-transform-details に準拠しています。Icebergエンジンのパーティションプルーニングでtruncate変換をサポートしました。#77403 (alesapin). - ユーザーが、過去のある時点における Iceberg テーブルの状態をクエリできるようになりました。 #77439 (Daniil Ivanik).
- workload 向けの CPU slot スケジューリングが追加されました。詳細は https://clickhouse.com/docs/operations/workload-scheduling#cpu_scheduling を参照してください。#77595 (Sergei Trifonov) 。
hasAll()関数で、tokenbf_v1 および ngrambf_v1 の全文検索スキッピングインデックスを活用できるようになりました。#77662 (UnamedRus) 。JSONデータ型は本番環境で利用可能になりました。https://jsonbench.com/ を参照してください。DynamicおよびVaraintデータ型も本番環境で利用可能になりました。#77785 (Alexey Milovidov).- デシリアライズ済みのベクトル類似度索引向けに、インメモリ cache が追加されました。これにより、近似最近傍 (ANN) 検索クエリを繰り返し実行する際の性能向上が期待されます。新しい cache のサイズは、サーバー設定
vector_similarity_index_cache_sizeとvector_similarity_index_cache_max_entriesで制御されます。この機能は、以前のリリースにあったスキッピング索引 cache 機能に代わるものです。#77905 (Shankar Iyer). - UTF-8版の sparseGrams 関数および sparseGramsHashes 関数を追加しました。著者: scanhex12。#78176 (Pervakov Grigorii).
toInterval関数を追加しました。この関数は 2 つの引数 (値と単位) を受け取り、値を特定のInterval型に変換します。#78723 (Andrew Davis) 。
実験的な機能
- 新しい設定
enable_replacing_merge_with_cleanup_for_min_age_to_force_mergeにより、設定可能なタイムアウト経過後にパーティション全体の自動クリーンアップマージを有効化しました。#76440 (Christoph Wurm). - AWS S3 およびローカルファイルシステム上の Delta Lake テーブルに対する Unity Catalog のサポートを追加しました。#76988 (alesapin).
- Iceberg テーブル向けに、AWS Glue のサービスカタログとの実験的なインテグレーションを導入しました。#77257 (alesapin).
パフォーマンス改善
- 遅延プロジェクションを使用して不要なカラムの読み取りを回避し、パフォーマンスを最適化しました。 #55518 (Xiaozhe Yu) 。
- 不一致の可能性が高いカラムから先に行を比較するようにしました。 #63780 (UnamedRus).
- RowBinary入力フォーマットを最適化しました。#63805 をクローズしました。#65059 (Pavel Kruglov).
- いくつかの低レベル最適化により、文字列のデシリアライゼーションを高速化しました。 #65948 (Nikita Taranov).
- コード内のいくつかの箇所で
preserve_most属性を適用。 #67778 (Nikita Taranov). - 繰り返し使用される条件を利用してクエリパフォーマンスを向上させるため、クエリ条件キャッシュを実装しました。条件に一致しないデータ範囲を、一時的な索引としてメモリ内に記憶します。後続のクエリではこの索引が使用されます。クローズ #67768 ### ユーザー向けの変更に関するドキュメント項目。 #69236 (zhongyuankai).
NativeORCBlockInputFormatで非同期 I/O prefetch をサポートし、リモート I/O レイテンシを隠蔽することで全体的なパフォーマンスが向上します。私のテストケースでは、最大 1.47 倍の高速化を確認しました。#70534 (李扬) 。- 右側テーブルをキーごとに再配置することで、Grace Hash Join のパフォーマンスを改善しました。#72237 (kevinyhzou) 。
materialize ttlでttl_only_drop_partsが再び尊重されるようになりました。TTL を再計算するために必要なカラムのみを読み取り、パーツは空のものに置き換えることで削除します。#72751 (Andrey Zvonov).arrayROCAUCとarrayAUCPRで曲線全体の部分面積を計算できるようにし、大規模なデータセットに対する計算を並列化できるようにしました。 #72904 (Emmanuel).- アイドル状態のスレッドが過剰に生成されるのを防ぐようにしました。 #72920 (Guo Wangyang).
parallel_hashJOINアルゴリズムのプローブフェーズにおける、ハッシュによる左テーブルブロックの分割が削除されました。#73089 (Nikita Taranov) 。- table function 内で波かっこ展開のみを使用している場合、ブロブストレージのキーを一覧しないようにしました。#73333 をクローズします。#73518 (Konstantin Bogdanov).
- #70502 のテストに基づき、算術計算で Int256 および UInt256 を clang の組み込み i256 に置き換えました。 #73658 (李扬).
- すべての引数型が数値である関数向けに、高速パスを追加しました。https://github.com/ClickHouse/ClickHouse/pull/72258 のパフォーマンス上の問題を修正しました。#73820 (李扬).
- 関数ではないカラムには
maskedExecuteを適用しないようにし、短絡実行のパフォーマンスを改善しました。 #73965 (lgbo). - パフォーマンス向上のため、Kafka/NATS/RabbitMQ/FileLog のヘッダー検出を無効化しました。#74006 (Azat Khuzhin) 。
- ログラッパーは値として使用し、ヒープに割り当てないようにしました。#74034 (Mikhail Artemenko).
- grouping sets を使用した集約後、より高い並列度でパイプラインを実行するようにしました。#74082 (Nikita Taranov) 。
MergeTreeReadPoolのクリティカルセクションを短縮しました。#74202 (Guo Wangyang).- 関数
indexHintを最適化しました。これにより、関数indexHintの引数としてのみ使用されるカラムは、テーブルから読み込まれなくなりました。#74314 (Anton Popov). - 並列レプリカのパフォーマンス改善。並列レプリカのプロトコルに関連しないパケットについては、クエリのイニシエーターでのデシリアライズが、今後は常にパイプラインスレッドで行われるようになりました。従来はパイプラインのスケジューリングを担当するスレッドで行われることもあり、その結果、イニシエーターの応答性が低下し、パイプラインの実行が遅れる可能性がありました。#74398 (Igor Nikonov).
LowCardinalityカラムのメモリ上のサイズ計算を修正しました。#74688 (Nikita Taranov) 。- S3 上の wide パーツにある JSON カラム全体の読み取り性能を改善します。これは、サブカラムのプレフィックスのデシリアライズ用 prefetch、デシリアライズ済みプレフィックスの cache、およびサブカラムのプレフィックスの並列デシリアライズを追加することで実現されています。これにより、
SELECT data FROM tableのようなクエリでは S3 からの JSON カラムの読み取りが 4 倍、SELECT data FROM table LIMIT 10のようなクエリでは約 10 倍向上します。#74827 (Pavel Kruglov). - パフォーマンス向上のため、非同期 INSERT で使用されるメモリを事前に割り当てる。 #74945 (Ilya Golshtein).
- オプティマイザによって join の両側が入れ替えられた場合に、
ConcurrentHashJoinで発生していた事前割り当ての重複を修正しました。#75149 (Nikita Taranov). max_rows_in_join = max_bytes_in_join = 0の場合にparallel_hashで発生していた不要な競合を解消しました。#75155 (Nikita Taranov).- 一部の join シナリオをわずかに改善: 出力行数を事前に計算し、そのためのメモリを確保するようにしました。#75376 (Alexander Gololobov) 。
plain_rewritableメタデータファイルは小さいため、大きなデフォルトバッファは必要ありません。指定したパスに適したサイズの書き込みバッファを使用することで、多数のアクティブなパーツがある場合のメモリ利用効率が向上します。 ### ユーザー向け変更に関するドキュメント項目。 #75758 (Julia Kartseva).- 場合によっては (例:空のArrayカラム) 、データパーツに空のファイルが含まれることがあります。テーブルが、メタデータストレージとオブジェクトストレージが分離されたディスク上にある場合、そのようなファイルについては空のブロブの書き込みを省略し、メタデータのみを保存できます。 #75860 (Alexander Gololobov).
- 並行制御により、INSERT と SELECT の間で CPU の配分が不公平になる可能性があることが判明しました。すべての CPU スロットが INSERT に無条件で (競合なしに) 割り当てられ、
max_threads= 1 になっている一方で、max_threadsの値が大きい SELECT は単一のスレッドしか使用できず、パフォーマンスが低下します。 #75941 (Sergei Trifonov). - 不要な null map の割り当てを避けるため、wrapInNullable に軽微な最適化を実施。 #76489 (李扬).
- Decimal32/Decimal64/DateTime64 の min/max のパフォーマンスを改善しました。#76570 (李扬) 。
- パーツの削除時に、cache からデータを積極的に削除するようにしました。データ量が最大サイズに満たない場合は、cache が最大サイズまで増えないようにしました。 #76641 (Alexey Milovidov).
- クエリのコンパイル (設定
compile_expressions) で、マシンタイプが考慮されるようになりました。これにより、この種のクエリの処理が大幅に高速化されます。#76753 (Robert Schulze) 。 - arraySortを最適化しました。#76850 (李扬) 。
col->insertFrom()の呼び出しを非仮想化することで、JOIN結果の構築を高速化しました。#77350 (Alexander Gololobov) 。- 同一パートのマークをマージして一括でクエリ条件キャッシュに書き込み、ロックの使用を削減します。 #77377 (zhongyuankai).
- 単一の Nullable カラムまたは低カーディナリティのカラムに対する ORDER BY を最適化。#77789 (李扬).
- マージ処理などで cache が受動的に使われる場合は、
filesystem_cache_prefer_bigger_buffer_sizeを無効にします。#77898 (Kseniia Sumarokova) 。 - Iceberg 向けに単純な
count()最適化を実装しました。これにより、フィルターのないcount()クエリがより高速になります。#77639 を修正しました。#78090 (alesapin). - Iceberg で、カラムの lower_bound および uppert_bound の値に基づくデータプルーニングをサポートしました。#77638 を修正しました。#78242 (alesapin).
- NativeReader のメモリ使用量を最適化。 #78442 (Azat Khuzhin).
- 軽微な最適化:
CASTが必要な場合、count(if())を countIf に書き換えないようにしました。#78564 をクローズ。#78565 (李扬).
改善
multiReadが利用可能な箇所では、単一のgetリクエストの使用をやめることで Keeper へのリクエスト数を削減しました。これにより、レプリカ数の増加に伴って Keeper に大きな負荷がかかる可能性があった問題を解消しました。#56862 (Nikolay Degterinsky).- MySQL 向けに、名前付きコレクションによる SSL 認証のサポートを追加しました。#59111 をクローズしました。#59452 (Nikolay Degterinsky).
ConstantNodeにFieldではなくColumnPtrを格納することで、新しいアナライザインフラストラクチャのパフォーマンスを向上させました。#62245 に関連します。#63198 (Dmitry Novik).- サーバーが過負荷の場合、クエリを拒否します。判定は、待機時間 (
OSCPUWaitMicroseconds) とビジー時間 (OSCPUVirtualTimeMicroseconds) の比率に基づいて行われます。この比率がmin_os_cpu_wait_time_ratio_to_throwとmax_os_cpu_wait_time_ratio_to_throwの間にある場合、クエリは一定の確率で棄却されます (これらはクエリレベルの設定です) 。#63206 (Alexey Katsman). - メモリ要件を減らすため、ブロックをできるだけ早く破棄するようにしました。 #65647 (lgbo).
processors_profile_logテーブルのデフォルト設定に、有効期限 (TTL) 30日が追加されました。 #66139 (Ilya Yatsishin) 。- データ型が DateTime64 のカラムに
bloom_filter索引を作成できるようになりました。#66416 (Yutong Xiao). - レイテンシバケットを導入し、これを用いて S3 リクエストの最初の 1 バイトの読み取り/書き込み時間および接続時間を追跡できるようにしました。これにより、後から収集したデータを使って近似パーセンタイルを計算し、タイムアウトを調整できるようになります。 #69783 (Alexey Katsman).
Executableストレージに渡されるクエリは、単一スレッドでの実行に限定されなくなりました。#70084 (yawnt).- トレーサビリティを向上させるため、OpenTelemetry の span logs テーブルに HTTP ヘッダーを追加しました。#70516 (jonymohajanGmail) 。
- orc ファイルをカスタムタイムゾーンで書き込めるようになり、常に
GMTタイムゾーンで書き込む必要がなくなりました。 #70615 (kevinyhzou) 。 - 並列レプリカが有効な場合、テーブル関数を対応する
-Cluster版に置き換えるようにしました。#65024 を修正しました。#70659 (Konstantin Bogdanov) 。 - クラウドをまたいでバックアップを書き込む際に、I/O スケジューリングの設定が考慮されるようになりました。 #71093 (János Benjamin Antal).
- MySQL および Postgres の Dictionary レプリカへの接続をバックグラウンドで再確立するようにし、対応する Dictionary へのリクエストが遅延しないようにしました。 #71101 (Yakov Olkhovskiy).
- system.asynchronous_metrics にメトリクスのエイリアス名を追加しました。#71164 (megao) 。
- リフレッシュ可能なマテリアライズドビューのリフレッシュ処理が
system.query_logに表示されるようになりました。#71333 (Michael Kolupaev) 。 - parquet のブルームフィルタと最小/最大索引を組み合わせて評価するようにしました。これは、data = [1, 2, 4, 5] の場合に
x = 3 or x > 5を適切にサポートするために必要です。#71383 (Arthur Passos). - 対話型メトリクスの改善。並列レプリカからのメトリクスが完全に表示されない問題を修正しました。メトリクスは、更新日時の新しい順に、その後名前の辞書順で表示するようにしました。古くなったメトリクスは表示しません。#71631 (Julia Kartseva).
- これまで、なぜかクエリ
ALTER TABLE MOVE PARTITION TO TABLEでは、専用のALTER_MOVE_PARTITIONではなく、SELECTとALTER DELETEの権限がチェックされていました。この PR では、このアクセス種別を使用するようにしました。互換性のため、SELECTとALTER DELETEが付与されている場合はこの権限も暗黙的に付与されますが、この動作は今後のリリースで削除される予定です。#16403 をクローズします。#71632 (pufit)。 - デフォルトで
use_hive_partitioningを有効にできるようになりました。#71636 (Yarik Briukhovetskyi). - ソートキー内のカラムをマテリアライズしようとした際に、ソート順が壊れるのを許容する代わりに例外をスローするようにしました。ただし、#71777 は未解決のままです。#71891 (Peter Nguyen).
- ハッシュ結合アルゴリズムが有効な場合に、より汎用的なJOIN計画アルゴリズムを使用できるようにしました。#71926 (János Benjamin Antal).
EXPLAIN QUERY TREEで機密情報を非表示にする。#72025 (Yakov Olkhovskiy) 。- database および table のメタデータファイルの保存に、設定可能なディスクを使用できるようになりました。ディスク名は
database_disk.diskconfig パラメータで設定できます。#72027 (Tuan Pham Anh). - native reader で Parquet の整数論理型をサポート。 #72105 (Arthur Passos).
- JSON 出力フォーマットがデフォルトで整形表示されるようになりました。これを制御する新しい設定
output_format_json_pretty_printを追加し、デフォルトで有効にしました。#72148 (Pavel Kruglov). defaultユーザーにパスワードが必要な場合、ブラウザー上で対話的に認証情報の入力を求めるようになりました。以前のバージョンでは、サーバーは HTTP 403 を返していましたが、現在は HTTP 401 を返します。#72198 (Alexey Milovidov).- この PR では、アクセス種別
CREATE_USER、ALTER_USER、DROP_USER、CREATE_ROLE、ALTER_ROLE、DROP_ROLEがグローバルからパラメーター化に変更されました。これにより、アクセス管理権限をよりきめ細かく付与できるようになりました。 #72246 (pufit). - クラスター構成で分片名を指定可能にしました。 #72276 (MikhailBurdukov).
- 異なるパラメータを持つJSON型間でのCASTとALTERをサポート。#72303 (Pavel Kruglov) 。
system.mutationsにlatest_fail_error_code_nameカラムを追加しました。これは、スタックしたミューテーションに関する新しいメトリクスを追加し、それを使って Cloud で発生したエラーのグラフを作成するとともに、必要に応じて、ノイズを抑えた新しいアラートを追加するために必要です。#72398 (Miсhael Stetsyuk).- パーティションのアタッチ時のメモリ割り当て量を削減しました。#72583 (Konstantin Morozov) 。
- max_bytes_before_external_sort の上限が、クエリ全体のメモリ消費量に基づくようになりました (以前は 1 つのソートスレッドにおけるソートブロックのバイト数を指していましたが、現在は
max_bytes_before_external_group_byと同じ意味になり、全スレッドを対象としたクエリ全体のメモリ使用量の上限を表します) 。また、ディスク上のブロックサイズを制御するための設定min_external_sort_block_bytesも追加されました。#72598 (Azat Khuzhin). - trace collector のメモリ制限を無視。 #72606 (Azat Khuzhin).
- MergeTree のソートキーおよびスキップ索引でサブカラムをサポートするようになりました。#72644 (Pavel Kruglov) 。
system.server_settingsに、サーバー設定dictionaries_lazy_loadとwait_dictionaries_load_at_startupを追加しました。#72664 (Christoph Wurm) 。BACKUP/RESTOREクエリの一部として指定可能な設定一覧に、max_backup_bandwidthを追加しました。#72665 (Christoph Wurm) 。- 並列レプリカでは、レプリカ選択を改善するためにレプリカの可用性に関する履歴情報を使用していましたが、connection を利用できない場合でもレプリカの error 件数は更新していませんでした。この PR では、利用できない場合にレプリカの error 件数も更新されるようになりました。#72666 (zoomxi).
- ReplicatedMergeTree エンジンで新たに現れるレプリケート済みパーツのログレベルを引き下げ、レプリケートされたクラスターで生成されるログ量を抑えました。 #72876 (mor-akamai).
- 多くの新機能には、コードのカプセル化 (Iceberg メタデータに関連する部分) とコードの抽象化の改善が必要になります。#72941 (Daniil Ivanik).
- JSONカラムの値の等価比較をサポート。 #72991 (Pavel Kruglov).
- 不要なバッククォートを避けるため、JSONサブカラムを含む識別子のフォーマットを改善しました。 #73085 (Pavel Kruglov) 。
PREWHERE条件をTestレベルでログに記録するようにしました。#73116 (Vladimir Cherkasov) 。- 暗黙的なENGINEを用いたSETTINGSと、engine設定およびクエリ設定の混在をサポートしました。 #73120 (Raúl Marín).
optimize_on_insertが有効な場合、パーツをレベル 1 のパーツとして書き込みます。これにより、新しく書き込まれたパーツに対するFINALクエリで、いくつかの最適化を利用できます。 #73132 (Anton Popov).WHERE a<b AND b<c AND c<5のようなクエリでは、新たな比較条件 (a<5 and b<5) を生成できるようになり、フィルタリングをより効果的に行えるようになりました。 #73164 (Shichao Jin).- 論理和における共通式の抽出を改善。すべての選言項に共通する部分式がない場合でも、結果のフィルタ式を簡略化できるようにしました。#71537 の続き。#73271 (Dmitry Novik).
- Storage
S3(Azure)Queueで、設定なしで作成されたテーブルにも設定を追加できるようになりました。#73283 (Kseniia Sumarokova). - Clickhouse-client で、クエリの終了に Ctrl+D を使えるようになりました。セミコロンを入力して Enter を押す代わりに、Ctrl+D を使用できます。さらに、単一行モードでは Ctrl+D が Enter と同様に機能するようになりました。#73293 (Xiaozhe Yu).
- 設定
least_greatest_legacy_null_behavior(デフォルト:false) を導入し、関数leastとgreatestがNULLargument を、無条件にNULLを返す (trueの場合) か、無視する (falseの場合) かを制御できるようにしました。#73344 (Robert Schulze). - cleanup thread ObjectStorageQueueMetadata で Keeper のマルチリクエストを使用するようにしました。 #73357 (Antonio Andelic).
- 新しいMongoDBドライバーがデフォルトになりました。従来のドライバーを引き続き使用したい場合は、サーバー設定
use_legacy_mongodb_integrationを true に設定できます。 #73359 (Robert Schulze) 。 - ClickHouse が cgroup 配下で動作している場合でも、システム負荷、プロセススケジューリング、メモリなどに関するシステム全体の非同期メトリクスは引き続き収集されます。ClickHouse がホスト上で唯一のプロセスであり、リソース消費が高い場合、これらは有用なシグナルとなる可能性があります。 #73369 (Nikita Taranov).
- ストレージ S3Queue で、24.6 より前に作成された古い ordered テーブルを、バケットを備えた新しい構造へ移行できるようになりました。#73467 (Kseniia Sumarokova).
- 既存の
system.s3queueと同様にsystem.azure_queueを追加しました。 #73477 (Kseniia Sumarokova) 。 - 修飾子と組み合わせて collation ロケールを使用するとエラーになるリグレッションを修正しました。例として、
SELECT arrayJoin(['kk 50', 'KK 01', ' KK 2', ' KK 3', 'kk 1', 'x9y99', 'x9y100']) item ORDER BY item ASC COLLATE 'tr-u-kn-true-ka-shiftedが動作するようになりました。 #73544 (Robert Schulze). - Nullable(JSON) 型をサポートしました。 #73556 (Pavel Kruglov).
- 関数
parseDateTime64(およびその派生関数) は、1970年より前 / 2106年より後の入力日付についても正しい結果を返すようになりました。例:SELECT parseDateTime64InJodaSyntax('2200-01-01 00:00:00.000', 'yyyy-MM-dd HH:mm:ss.SSS')。#73594 (zhanglistar) 。 - ユーザーから報告された clickhouse-disks の使い勝手に関するいくつかの問題に対処しました。#67136 をクローズします。#73616 (Daniil Ivanik).
- S3(Azure)Queue ストレージでコミット設定を変更できるようにしました。 (コミット設定: max_processed_files_before_commit、max_processed_rows_before_commit、max_processed_bytes_before_commit、max_processing_time_sec_before_commit) 。#73635 (Kseniia Sumarokova).
- storage S3(Azure)Queue で、コミット制限設定と比較できるよう、ソース間の進捗を集計するようにしました。#73641 (Kseniia Sumarokova).
BACKUP/RESTOREクエリで主要な設定に対応しました。#73650 (Vitaly Baranov) 。- Parquet出力で
output_format_compression_levelを読み取るようにしました。#73651 (Arthur Passos). - 未対応の型として扱う代わりに、arrow fixed_size_list を Array として読み取れるようにしました。#73654 (Julian Meyers) 。
- このPRでは、2つのバックアップエンジン
Memory(現在のユーザーセッション内にバックアップを保持) とNull(バックアップをどこにも保持しない) を追加しました:. #73690 (Vitaly Baranov). concurrent_threads_soft_limit_numとconcurrent_threads_soft_limit_num_ratio_to_coresは、サーバーの再起動なしで変更できるようになりました。#73713 (Sergei Trifonov).- formatReadable 関数で、拡張数値型 (Decimal、任意長整数) のサポートを追加しました。#73765 (Raúl Marín) 。
- タプルカラム内のフィールドでも、カラム名の大文字・小文字を区別しない照合が有効になるようにしました。https://github.com/apache/incubator-gluten/issues/8324 をクローズしました。#73780 (李扬).
- Postgres wire protocol での TLS をサポート。 #73812 (scanhex12).
- デフォルトで
LowCardinality(UUID)を許可するようにしました。これは ClickHouse Cloud の顧客の間で実用的であることが確認されています。 #73826 (Alexey Milovidov). - インストール時のメッセージを改善。 #73827 (Alexey Milovidov).
- ClickHouse Cloud でのパスワードリセットに関するメッセージを改善しました。 #73831 (Alexey Milovidov).
- ファイルに追記できない File テーブルのエラーメッセージを改善しました。 #73832 (Alexey Milovidov).
- ユーザーが誤ってターミナルでバイナリフォーマット (Native、Parquet、Avro など) の出力を要求した際に、確認を求めるようにしました。これにより #59524 がクローズされます。#73833 (Alexey Milovidov).
BFloat16データ型は本番利用に対応しました。#73840 (Alexey Milovidov) 。- ターミナルの Pretty および Vertical フォーマットで、末尾の空白を強調表示して視認性を高めます。これは
output_format_pretty_highlight_trailing_spaces設定で制御されます。初期実装は Braden Burns によるもので、#72996 に基づいています。#71590 をクローズしました。#73847 (Alexey Milovidov). clickhouse-clientとclickhouse-localは、stdinがファイルからリダイレクトされた場合、その圧縮形式を自動検出するようになりました。これにより #70865 がクローズされます。#73848 (Alexey Milovidov) 。- デフォルトで、Prettyフォーマットでは長すぎるカラム名が切り詰められるようになりました。これは
output_format_pretty_max_column_name_width_cut_toおよびoutput_format_pretty_max_column_name_width_min_chars_to_cutの設定で制御されます。これは、#66502 における tanmaydatta の作業を引き継ぐものです。これにより #65968 はクローズされます。#73851 (Alexey Milovidov)。 Prettyフォーマットをさらに見やすくしました。前のブロックの出力からあまり時間が経過していない場合、ブロックをまとめます。これは、新しい設定output_format_pretty_squash_consecutive_ms(デフォルトは 50 ms) とoutput_format_pretty_squash_max_wait_ms(デフォルトは 1000 ms) で制御されます。#49537 の続きです。これにより #49153 をクローズします。#73852 (Alexey Milovidov)。- SQLite の型マッピングを修正 (整数型は
int64、浮動小数点型はfloat64にマッピング) 。 #73853 (Joanna Hulboj). - 現在マージ中のソースパーツ数を示すメトリクスを追加しました。これにより #70809 を解決します。#73868 (Alexey Milovidov).
- 出力先がターミナルの場合、
Verticalフォーマットではカラムが強調表示されます。これはoutput_format_pretty_color設定で無効化できます。 #73898 (Alexey Milovidov). - MySQL 互換性を強化し、
mysqlsh(Oracle の高機能な MySQL CLI) から ClickHouse に接続できるようになりました。これはテストを容易にするために必要です。 #73912 (Alexey Milovidov). - 出力レコード数が N =
output_format_pretty_max_rowsを超える場合、先頭の N 行だけを表示する代わりに、出力テーブルの中間を省略し、先頭の N/2 行と末尾の N/2 行を表示するようになりました。#64200 の続きです。これにより #59502 はクローズされます。#73929 (Alexey Milovidov). - 関数
isIPv4Stringは、正しい IPv4 address の後にゼロバイトが続く場合に true を返していましたが、このケースでは false を返すべきです。#65387 の続きです。#73946 (Alexey Milovidov). - MySQL wire protocol のエラーコードを MySQL と互換性のあるものにしました。#56831 の続き。#50957 をクローズしました。#73948 (Alexey Milovidov).
IN、NOT INなどの演算子で enum リテラルを enum 型に対して検証し、リテラルが有効な enum 値でない場合に例外をスローする設定validate_enum_literals_in_opearatorsを追加しました。#73985 (Vladimir Cherkasov) 。- Storage
S3(Azure)Queueでは、すべてのファイルを (commit 設定で定義された単一バッチで) 1 回の Keeper トランザクションでコミットします。#73991 (Kseniia Sumarokova). - 実行可能 UDF と辞書でのヘッダー検出を無効化しました (これにより、Function ‘X’: wrong result, expected Y rows, actual Y-1 が発生する可能性がありました) 。#73992 (Azat Khuzhin).
EXPLAIN PLAN.にdistributedオプションを追加しました。これにより、EXPLAIN distributed=1 ...はReadFromParallelRemote*ステップにリモートプランを追加します。#73994 (Nikolai Kochetov).- Dynamic 引数を持つ not/xor で、正しい戻り値の型を使用するようにしました。#74013 (Pavel Kruglov) 。
- テーブル作成後でも
add_implicit_sign_column_constraint_for_collapsing_engineを変更できるようにしました。#74014 (Christoph Wurm) 。 - materialized view の SELECT クエリでサブカラムをサポートしました。#74030 (Pavel Kruglov).
- Pretty フォーマットでは、テーブルセル内で複数行のフィールドを表示できるため、可読性が向上します。これはデフォルトで有効になっており、設定
output_format_pretty_multiline_fieldsで制御できます。#64094 における Volodyachan の作業を引き継ぐものです。これにより #56912 はクローズされます。#74032 (Alexey Milovidov) 。 MergingAggregatedステップに対する、クエリプランレベルでのpredicate-push-down最適化をサポートしました。新しいアナライザで、一部のクエリのパフォーマンスが向上します。 #74073 (Nikolai Kochetov).clickhouse-clientでカスタムプロンプトを設定する簡単な方法が、3 つ追加されました。1. コマンドラインパラメーター--promptを使用する方法、2. 設定ファイルで設定<prompt>[...]</prompt>を使用する方法、3. 同じく設定ファイルで、接続ごとの設定<connections_credentials><prompt>[...]</prompt></connection_credentials>を使用する方法です。 #74168 (Christoph Wurm).- Prometheus remote write レスポンスの成功ステータスを 200/OK から 204/NoContent に変更。 #74170 (Michael Dempsey).
- ブラウザ内のJavaScriptから
X-ClickHouseHTTPヘッダーにアクセスできるようにしました。これにより、アプリケーションの作成がより容易になります。 #74180 (Alexey Milovidov). JSONEachRowWithProgressフォーマットには、メタデータ付きのイベントに加え、totals と extremes も含まれます。また、rows_before_limit_at_leastとrows_before_aggregationも含まれます。このフォーマットでは、部分的な結果の出力後に例外が到着した場合でも、例外を適切に出力します。進行状況には、経過ナノ秒も含まれるようになりました。最後に、最終的な進行状況イベントが 1 つ出力されます。クエリ実行中の進行状況は、interactive_delay設定の値を超える頻度では出力されません。 #74181 (Alexey Milovidov).- Play UI で砂時計が滑らかに回転するようになりました。 #74182 (Alexey Milovidov).
- HTTPレスポンスが圧縮されている場合でも、パケットは到着し次第すぐに送信されます。これにより、ブラウザは進捗パケットと圧縮データを受信できます。 #74201 (Alexey Milovidov).
- サーバーを再起動せずに、
max_remote_read_network_bandwidth_for_serveとmax_remote_write_network_bandwidth_for_serverを動的に再読み込みできるようにしました。#74206 (Kai Zhu). - ClickHouse Client でポート 9440 への接続時に、セキュア接続を自動検出します。#74212 (Christoph Wurm) 。
- http_handlers で、username のみでユーザーを認証できるようになりました (以前は password の入力も必要でした) 。 #74221 (Azat Khuzhin).
- 代替クエリ言語である PRQL と KQL のサポートは、Experimental と位置付けられました。これらを使用するには、設定
allow_experimental_prql_dialect = 1およびallow_experimental_kusto_dialect = 1を指定してください。#74224 (Robert Schulze). - より多くの集約関数で、デフォルトのEnum型を返せるようにしました。#74272 (Raúl Marín) 。
OPTIMIZE TABLEで、既存のキーワードFINALに代わるものとして、キーワードFORCEを指定できるようになりました。#74342 (Robert Schulze) 。- マージ時のスキップ索引の作成を抑制するマージツリー設定
materialize_skip_indexes_on_mergeが追加されました。これにより、スキップ索引をいつ作成するかを (ALTER TABLE [..] MATERIALIZE INDEX [...]を使用して) 明示的に制御できます。これは、スキップ索引の構築コストが高い場合 (たとえばベクトル類似度索引) に役立ちます。#74401 (Robert Schulze). - デフォルト式およびマテリアライズド式でサブカラムがサポートされるようになりました。#74403 (Pavel Kruglov) 。
- Storage(S3/Azure)Queue の Keeper リクエストを最適化しました。#74410 (Kseniia Sumarokova) 。
- サーバーのシャットダウンに時間がかかりすぎる場合にアラートをトリガーするために必要な IsServerShuttingDown メトリックを追加しました。 #74429 (Miсhael Stetsyuk).
- EXPLAIN に Iceberg テーブルの名前を追加しました。#74485 (alekseev-maksim) 。
- デフォルトで最大
1000個の並列レプリカを使用できるようになりました。#74504 (Konstantin Bogdanov) 。 - 旧アナライザで RECURSIVE CTE を使用した場合に、より分かりやすいエラーメッセージを表示するようにしました。#74523 (Raúl Marín) 。
- Storage(S3/Azure)Queue の Keeper リクエストを最適化。 #74538 (Kseniia Sumarokova).
- S3 ディスクの読み取り時における HTTP セッションの再利用を改善しました (#72401) 。#74548 (Julian Maicher) 。
system.errorsに詳細なエラーメッセージを表示します。 #74574 (Vitaly Baranov).- すべての種類のレプリケートされたタスクに対してバックオフロジックを有効にしました。これにより、CPU 使用率、メモリ使用量、ログファイルのサイズを削減できます。
max_postpone_time_for_failed_replicated_fetches_ms、max_postpone_time_for_failed_replicated_merges_ms、max_postpone_time_for_failed_replicated_tasks_msという新しい設定を追加しました。これらはmax_postpone_time_for_failed_mutations_msに似ています。#74576 (MikhailBurdukov). parallel_hashJOIN アルゴリズムにおけるmax_joined_block_size_rows設定の算定が、より正確になりました。これにより、hashアルゴリズムと比べてメモリ消費量が増えるのを防ぎやすくなります。#74630 (Nikita Taranov).dfs.client.use.datanode.hostnamelibhdfs3 config オプションへの対応を追加しました。 #74635 (Mikhail Tiukavkin).- 修正: Codec ‘snappy’ は圧縮レベルの設定に対応していません。 #74659 (Arthur Passos).
- clickhouse-keeper とのクライアント通信でパスワードを使用できるようになりました。サーバーとクライアントに適切な SSL 設定を行っている場合、この機能はあまり有用ではありませんが、一部のケースでは依然として役立つ可能性があります。パスワードは 16 文字を超えることはできません。これは Keeper Auth model とは無関係です。 #74673 (alesapin).
- バックアップ作成時に、ブロブパスを使用してチェックサムを計算できるようになりました。#74729 (Vitaly Baranov).
- 両方のパーツで JOIN キーが PK のプレフィックスである場合は、JOIN に動的シャーディングを使用します。この最適化は
query_plan_join_shard_by_pk_ranges設定で有効になります (デフォルトでは無効) 。#74733 (Nikolai Kochetov). - config リローダーにエラーコードを追加。 #74746 (Garrett Thomas).
- MySQLおよびPostgreSQLのテーブル関数とエンジンで、IPv6アドレスがサポートされるようになりました。#74796 (Mikhail Koviazin) 。
- コーデック Gorilla のパラメータは、今後常に .sql ファイル内のテーブルメタデータに保存されます。これにより、#70072 がクローズされます。#74814 (Nikita Mikhaylov).
divideDecimalの短絡評価最適化を実装しました。#74280 を修正します。#74843 (Kevin Mingtarja).- Keeper における大規模な複数リクエストのパフォーマンスを改善しました。 #74849 (Antonio Andelic) 。
- 起動スクリプト内でユーザーを指定できるようになりました。#74894 (pufit).
- ALTER TABLE FETCH PARTITION でパーツを並列にフェッチするようになりました (スレッドプールのサイズは
max_fetch_partition_thread_pool_sizeで制御します) 。 #74978 (Azat Khuzhin). system.query_cacheにクエリ ID カラムを追加しました (issue #68205) 。#74982 (NamNguyenHoai) 。- SSHプロトコルを再度有効化しました。いくつかの重大な脆弱性を修正し、カスタムページャーの使用や
server-logs-fileの指定ができないようにしました。デフォルトでは、環境変数経由でクライアントオプションを渡す機能を無効にしました (config.xml のssh-server.enable_client_options_passingを使用すれば引き続き可能です) 。progress table、クエリのキャンセル、補完、profile events progress、stdin、send_logs_levelオプションをサポートしました。これにより以下をクローズします: #74340。 #74989 (Nikita Mikhaylov). - クエリの解釈中に例外が発生した場合、カスタムフォーマットを使用して例外をフォーマットするよう修正しました。以前のバージョンでは、例外はクエリで指定されたフォーマットではなく、デフォルトのフォーマットでフォーマットされていました。これにより #55422 がクローズされます。#74994 (Alexey Milovidov)。
- パース機能を強化しました (Sequence ID のパース: マニフェストファイル内のシーケンス識別子をパースする機能を追加、および Avro メタデータのパース: 今後の機能強化に備えて拡張しやすいよう、Avro メタデータパーサーを再設計) 。#75010 (Daniil Ivanik) 。
ALTER TABLE ... FREEZE ...クエリを、KILL QUERYやタイムアウト (max_execution_time) でキャンセルできるようになりました。#75016 (Kirill).groupUniqArrayArrayMapがSimpleAggregateFunctionとしてサポートされるようになりました。#75034 (Miel Donkers).- Postgres wire protocolでプリペアドステートメントのサポートを追加しました。#75035 (scanhex12) 。
- データベースエンジン
Icebergで、カタログ認証情報の設定を非表示にしました。#74559 をクローズしました。#75080 (Kseniia Sumarokova). - BuzzHouse に、不足していたいくつかの機能、
ILIKEおよびREGEXP演算子、<=>、ならびにIS NOT DISTINCT FROMが追加されました。#75168 (Pedro Ferreira). - 設定
min_chunk_bytes_for_parallel_parsingは、ゼロに設定できなくなりました。これにより、次の問題が修正されます: #71110。 #75239 (Nikita Mikhaylov). intExp2/intExp10: 未定義動作を明確化しました。引数が小さすぎる場合は 0 を返し、大きすぎる場合は18446744073709551615を返し、nanの場合は例外をスローします。#75312 (Vitaly Baranov).DatabaseIcebergで、カタログ設定で指定したs3.endpointをネイティブにサポートしました。#74558 をクローズしました。#75375 (Kseniia Sumarokova).SYSTEM DROP REPLICAを実行するユーザーに十分な権限がない場合でも、黙って失敗しないようにしました。#75377 (Bharat Nallan).- system logs のいずれかでフラッシュが失敗した回数を示す ProfileEvent を追加しました。#75466 (Alexey Milovidov) 。
- 復号化および解凍時のチェックとログを追加しました。 #75471 (Vitaly Baranov).
parseTimeDelta関数で、マイクロ記号 (U+00B5) がサポートされました。これにより、マイクロ秒の有効な表記として、マイクロ記号 (U+00B5) とギリシャ文字のミュー (U+03BC) の両方が認識されるようになり、ClickHouse の動作が Go の実装と一致するようになりました (time.go を参照 および time/format.go) 。#75472 (Vitaly Orlov) 。- サーバー設定 (
send_settings_to_client) を廃止し、クライアント側のコード (例: INSERT データのパースやクエリ出力のフォーマット) で、サーバーのusers.xmlとユーザープロファイルの設定を使用するかどうかを制御するクライアント設定 (apply_settings_from_server) に置き換えました。それ以外の場合は、クライアントのコマンドライン、セッション、およびクエリの設定のみが使用されます。なお、これはネイティブクライアント (HTTP などは除く) にのみ適用され、クエリ処理の大部分 (サーバー側で行われる処理) には適用されません。 #75478 (Michael Kolupaev). - Keeper の改善: パフォーマンス向上のため、インメモリストレージへのコミット時のダイジェスト計算を無効にしました。
keeper_server.digest_enabled_on_commitconfig で有効化できます。リクエストの前処理時には引き続きダイジェストが計算されます。#75490 (Antonio Andelic). - 可能な場合、JOIN ON のフィルタ式をプッシュダウンするようにしました。 #75536 (Vladimir Cherkasov) 。
- 構文エラー時のエラーメッセージを改善しました。以前は、クエリが大きすぎて、長さ制限を超えたトークンが非常に長い文字列リテラルだった場合、その原因を示すメッセージが、その非常に長いトークンの2つの例の間に埋もれてしまっていました。UTF-8 を含むクエリがエラーメッセージ内で誤って途中で切られてしまう問題を修正しました。クエリ断片に引用符が過剰に付加される問題を修正しました。これにより #75473 をクローズしました。#75561 (Alexey Milovidov).
- ストレージ
S3(Azure)Queueに profile events を追加しました。#75618 (Kseniia Sumarokova) 。 - 互換性のため、サーバーからクライアントへの設定の送信 (
send_settings_to_client=false) を無効にしました (使い勝手向上のため、この機能は後日クライアント設定として再実装されます) 。 #75648 (Michael Kolupaev). - バックグラウンドスレッドで定期的に読み取る別のソースの情報に基づいて内部メモリトラッカーを補正できるようにする設定
memory_worker_correct_memory_trackerを追加しました。 #75714 (Antonio Andelic). - PrometheusRemoteReadProtocol でアナライザを使用するようにしました。 #75729 (Dmitry Novik).
- Gauge/カウンターのメトリックタイプをサポートしています。ただし、これらだけでは一部のメトリクス (例: Keeper へのリクエストの応答時間) には不十分なため、ヒストグラムメトリックタイプのサポートが必要です。インターフェイスは Prometheus client に近く、値に対応する bucket のカウンターを増やすには、
observe(value)を呼び出すだけです。ヒストグラムメトリクスは system.histogram_metrics 経由で公開されます。 #75736 (Miсhael Stetsyuk). system.processesにnormalized_query_hashカラムを追加しました。注:normalizedQueryHash関数を使えばその場で簡単に計算できますが、今後の変更に備えるために必要です。#75756 (Alexey Milovidov).- すでに存在しないデータベース上に作成された
Mergeテーブルがある場合でも、system.tablesへのクエリで例外は送出されなくなりました。HiveテーブルからgetTotalRowsメソッドを削除しました。複雑な処理を行わせない方針のためです。#75772 (Alexey Milovidov). - Web UI でデータベースを対話的にナビゲートできるようになりました。 #75777 (Alexey Milovidov).
- storage policy で、read-only ディスクと read-write ディスクを組み合わせられるようになりました (複数のボリュームまたは複数のディスクとして) 。これにより、ボリューム全体からデータを読み取れる一方、insert では書き込み可能なディスクが優先されます (つまり、Copy-on-Write storage policy です) 。 #75862 (Azat Khuzhin).
- system.opentelemetry_span_log のデフォルトの ORDER BY から trace_id を削除。 #75907 (Azat Khuzhin).
- 暗号化 (XML 属性
encrypted_by) を任意の設定ファイル (config.xml、users.xml、入れ子になった設定ファイル) に適用できるようになりました。以前は、最上位の config.xml ファイルでしか機能しませんでした。 #75911 (Mikhail Gorshkov). - バックアップのstart_time/end_timeをマイクロ秒単位で保存する。 #75929 (Aleksandr Musorin).
- RSS で補正されない、内部のグローバル memory tracker の値を示す
MemoryTrackingUncorrectedメトリクスを追加しました。#75935 (Antonio Andelic) 。 - MergeTree でカラムとインデックスのサイズを遅延計算するように変更しました。#75938 (Pavel Kruglov) 。
- 出力カラムが左側のテーブルに紐づいている場合に join を in サブクエリへ変換するには、まず一意性を確保する step が必要なため、その step が後で追加されるまではデフォルトで無効になっています。#75942 (Shichao Jin) 。
workload設定に未知の値が指定されたクエリに対する動作を選択できるサーバー設定throw_on_unknown_workloadが追加されました。無制限のアクセスを許可する (デフォルト) か、RESOURCE_ACCESS_DENIEDエラーを発生させるかを選択できます。これは、すべてのクエリでワークロードスケジューリングを使用するよう強制するのに役立ちます。#75999 (Sergei Trifonov).- 新しい実験的な Kafka テーブルエンジンが、Keeper の機能フラグに完全に従うようになりました。#76004 (János Benjamin Antal) 。
- 必要がない限り、ARRAY JOIN で subcolumns を getSubcolumn に書き換えないようにしました。#76018 (Pavel Kruglov) 。
- テーブルの読み込み時に発生する協調エラーで再試行を行うようにしました。 #76020 (Alexander Tokmakov).
system.warningsテーブルを改善し、追加・更新・削除できる動的な警告メッセージをいくつか追加しました。#76029 (Bharat Nallan) 。- SYSTEM FLUSH LOGS で個別のログをフラッシュできるようになりました。 #76132 (Raúl Marín).
/binaryサーバーのページを改善しました。Morton curve ではなく Hilbert curve を使用するようにしました。正方形内に 512 MB 分のアドレスを表示することで、正方形をより効率よく埋められるようになりました (以前のバージョンでは、アドレスが正方形の半分しか埋めていませんでした) 。関数名ではなく、ライブラリ名に近いアドレスに基づいて色分けするようにしました。領域の外側にも、これまでより少し多くスクロールできるようになりました。 #76192 (Alexey Milovidov).- このPRにより、すべての
DROP操作は順序上先に記述する必要があるため、クエリALTER USER user1 ADD PROFILES a, DROP ALL PROFILESは実行できなくなりました。#76242 (pufit). - SYNC REPLICA に関する各種改善 (エラーメッセージの改善、テストの強化、妥当性チェックの追加) 。#76307 (Azat Khuzhin) 。
- TOO_MANY_SIMULTANEOUS_QUERIES が発生した場合に、ON CLUSTER クエリを再試行するようにしました。#76352 (Patrick Galbraith) 。
output_format_pretty_max_rowsのデフォルト値を 10000 から 1000 に変更しました。こちらのほうが使い勝手がよいと考えています。#76407 (Alexey Milovidov).- readonly の MergeTree テーブルで refresh をサポート。 #76467 (Alexey Milovidov).
- S3 へのマルチパートコピーが Access Denied で失敗した場合に、適切なフォールバックが使用されるようになりました。異なる認証情報を持つバケット間でバックアップを実行すると、マルチパートコピーで Access Denied エラーが発生することがあります。#76515 (Antonio Andelic).
- ClickHouseサーバーのシャットダウンを高速化 (2.5秒の遅延を解消) 。 #76550 (Azat Khuzhin).
- system.errors に query_id を追加。関連チケット #75815。#76581 (Vladimir Baikov) 。
- librdkafka をバージョン 2.8.0 に更新し、Kafka テーブルのシャットダウンシーケンスを改善することで、テーブルの drop やサーバー再起動時の遅延を削減しました。
engine=Kafkaは、テーブルが drop された際にコンシューマグループから明示的に離脱しなくなりました。代わりに、コンシューマはsession_timeout_msの期間 (デフォルト: 45 秒) 非アクティブな状態が続いたあと自動的に削除されるまで、グループに残ります。#76621 (filimonov). - S3 リクエスト設定の検証を修正しました。 #76658 (Vitaly Baranov).
- readbufferfroms3 やその他のリモート読み取りバッファでの過剰なメモリ割り当てを防ぎ、メモリ消費量を半減しました。 #76692 (Sema Checherinda).
- ViewからのJSON型およびサブカラムの読み取りに対応しました。 #76903 (Pavel Kruglov).
- UInt128 を IPv6 に変換するサポートを追加しました。これにより、IPv6 に対する
bitAnd演算や算術演算を行い、その結果を IPv6 に再変換できるようになります。#76752 を解決しました。これにより、IPv6 に対するbitAnd演算の結果も IPv6 に再変換できるようになります。参照: https://github.com/ClickHouse/ClickHouse/pull/57707。 #76928 (Muzammil Abdul Rehman). server_settingsやsettingsといったシステムテーブルには、便利なdefault値のカラムがあります。merge_tree_settingsとreplicated_merge_tree_settingsにだけは、このカラムがありません。#76942 (Diego Nieto).- デフォルトでは、Variant 型内のテキストフォーマットで特殊な Bool 値はパースされません。設定
allow_special_bool_values_inside_variantで有効にできます。#76974 (Pavel Kruglov) 。 - セッションレベルおよびサーバーレベルで、低優先度クエリのタスク単位の待機時間を設定できるようにしました。#77013 (VicoWu) 。
CurrentMetrics::QueryPreemptedと同じロジックのProfileEvents::QueryPreemptedを追加しました。#77015 (VicoWu) 。- 以前は、レプリケートされたデータベースが、クエリで指定された認証情報をログに出力することがありました。この挙動は修正されました。これにより、#77123 をクローズします。#77133 (Nikita Mikhaylov) 。
- zstd を 1.5.5 から 1.5.7 に更新しました。これにより、大幅なパフォーマンス改善が得られます。#77137 (Pradeep Chhetri) 。
- plain_rewritable ディスクでの ALTER TABLE DROP PARTITION を許可。#77138 (Julia Kartseva)。
- ゼロコピー レプリケーションにおいて、merge/mutation の実行前に、part サイズに関係なく最大 500ms のランダムなスリープを入れられるようにしました。#77165 (Alexey Katsman) 。
TRUNCATEをINTO OUTFILEと併用した際のアトミックリネームをサポートしました。#70323 を解決します。#77181 (Onkar Deshpande).- PostgreSQL’s CHARACTER、CHAR、BPCHAR には FixedString を使用するようになりました。#77304 (Pablo Marcos) 。
- Iceberg で読み込むメタデータファイルを、storage/table function の設定
iceberg_metadata_file_pathで明示的に指定できるようになりました。#47412 を修正しました。#77318 (alesapin) 。 - データベースのメタデータファイル保存にリモートディスクを使用できるようになりました。 #77365 (Tuan Pham Anh)。
- JSON データ型の値を比較できるようにしました。これにより、JSON オブジェクトを Map と同様に比較できます。#77397 (Pavel Kruglov) 。
- 変更を取り消しました。#77399 (Yarik Briukhovetskyi) 。
- バックアップ/リストア設定
allow_s3_native_copyで、3つの設定可能な値がサポートされるようになりました: -False- S3ネイティブコピーは使用されません; -True(従来のデフォルト) - ClickHouse はまず S3ネイティブコピーを試行し、失敗した場合は読み取り+書き込み方式にフォールバックします; -'auto'(新しいデフォルト) - ClickHouse はまずソースと宛先の認証情報を比較します。同一であれば、ClickHouse は S3ネイティブコピーを試行し、その後、必要に応じて読み取り+書き込み方式にフォールバックする場合があります。異なる場合は、ClickHouse は直接、読み取り+書き込み方式を使用します。 #77401 (Vitaly Baranov). - plain_rewritable ディスクでの ALTER TABLE … ATTACH|DETACH|MOVE|REPLACE PARTITION をサポートしました。#77406 (Julia Kartseva) 。
- スキッピング索引 cache は元に戻されました。#77447 (Nikita Mikhaylov) 。
- Wide パーツ内の JSON カラムのプリフェッチ時のメモリ使用量を削減。 #77640 (Pavel Kruglov).
- Delta Kernel の Delta Lake テーブルエンジンで、AWS セッショントークンおよび環境変数の認証情報の利用をサポートしました。 #77661 (Kseniia Sumarokova).
additional_table_filters設定内でクエリパラメータがサポートされました。この変更により、次のクエリは成功します。 #77680 (wxybear).- ユーザー定義関数 (UDF) は、XML 定義内の新しいタグを使って決定論的としてマークできるようになりました。さらに、クエリキャッシュは、クエリ内で呼び出される UDF が決定論的かどうかを確認するようになりました。これに該当する場合は、クエリ結果がキャッシュされます。 (Issue #59988) 。#77769 (Jimmy Aguilar Mena) 。
- Bufferテーブルエンジンのパラメータの検証を追加しました。#77840 (Pervakov Grigorii).
enable_hdfs_preadconfig を追加し、HDFS の pread を有効または無効にできるようにしました。#77885 (kevinyhzou) 。- ZooKeeper の ‘multi’ 読み取りおよび書き込みリクエスト数に関する profile events を追加しました。 #77888 (JackyWoo) 。
- disable_insertion_and_mutation が有効な場合でも、一時テーブルの作成とそのテーブルへの insert を許可。 #77901 (Xu Jia).
- max_insert_delayed_streams_for_parallel_write を 100 に引き下げました。 #77919 (Azat Khuzhin).
max_merge_delayed_streams_for_parallel_writeを使用して、マージ時に並列に書き出せるカラム数を設定できるようにしました (これにより、S3 への垂直マージにおけるメモリ使用量を約1/25に削減できる見込みです) 。#77922 (Azat Khuzhin).- ‘yyy’ のような Joda syntax での年のパースを修正しました。#77973 (李扬) 。
- MergeTree テーブルのパーツのアタッチは、それらの block の順序で実行されるようになりました。これは、ReplacingMergeTree などの特殊なマージアルゴリズムにとって重要です。これで #71009 をクローズします。 #77976 (Alexey Milovidov) 。
- クエリマスキングルールで、一致が発生した場合に LOGICAL_ERROR を発生させられるようになりました。これにより、事前に定義したパスワードがログ内のどこかに漏洩していないかを確認できます。#78094 (Nikita Mikhaylov).
- MySQL との互換性を向上させるため、
information_schema.tablesにindex_length_columnカラムを追加しました。#78119 (Paweł Zakrzewski). - 2つの新しいメトリクス
TotalMergeFailuresとNonAbortedMergeFailuresを導入しました。これらのメトリクスは、短期間に多数のマージが失敗するケースを検出するために必要です。 #78150 (Miсhael Stetsyuk). - パススタイルで key が指定されていない場合に、S3 URI の誤ったパースを修正しました。#78185 (Arthur Passos).
BlockActiveTime、BlockDiscardTime、BlockWriteTime、BlockQueueTime、およびBlockReadTimeの非同期メトリクスにおける誤った値を修正しました (変更前は 1 秒が誤って 0.001 として報告されていました) 。#78211 (filimonov).- StorageS3(Azure)Queue の materialized view へのプッシュ時に発生するエラーについて、
loading_retriesの上限が適用されるようにしました。これ以前は、そのようなエラーは無期限に再試行されていました。#78313 (Kseniia Sumarokova). - StorageDeltaLake における delta-kernel-rs 実装で、パフォーマンスとプログレスバーを修正しました。#78368 (Kseniia Sumarokova).
- ベクトル類似度索引では、メインメモリを最大 2 倍まで過剰に割り当ててしまう可能性がありました。この修正では、メモリ割り当て戦略を見直すことで、メモリ消費量を削減し、ベクトル類似度索引キャッシュの効率も向上させています。 (issue #78056) 。#78394 (Shankar Iyer) 。
system.metric_logテーブルに、スキーマタイプを指定する設定schema_typeを導入しました。使用可能なスキーマは 3 つあります。wide— 現在のスキーマで、各メトリクス/イベントは個別のカラムに格納されます (個別のカラムを読み取る場合に最も効率的です) 。transposed—system.asynchronous_metric_logと同様に、メトリクス/イベントは行として格納されます。さらに、最も興味深いのがtransposed_with_wide_view—transposedスキーマで基になるテーブルを作成しつつ、クエリを基になるテーブルへ変換するwideスキーマのビューも導入します。transposed_with_wide_viewでは、ビューのサブ秒精度はサポートされず、event_time_microsecondsは後方互換性のための単なるエイリアスです。#78412 (alesapin).- ランタイムディスクで
include、from_env、from_zkをサポート。#78177 をクローズ。#78470 (Kseniia Sumarokova). - Iceberg テーブル関数およびエンジンで、ルートの metadata.json ファイルを特定するための便利な方法をいくつか追加しました。 #78455 をクローズします。 #78475 (Daniil Ivanik).
- Delta Lake でパーティションプルーニングをサポートしました。 #78486 (Kseniia Sumarokova).
- ClickHouse の SSH プロトコルでパスワードベース認証をサポート。 #78586 (Nikita Mikhaylov).
- 長時間実行中のミューテーションに対する動的な警告を
system.warningsテーブルに追加しました。#78658 (Bharat Nallan). - CPU が著しく過負荷になっている場合は、接続を切断します。判定は、待機時間 (
OSCPUWaitMicroseconds) とビジー時間 (OSCPUVirtualTimeMicroseconds) の比率に基づいて行われます。この比率がmin_os_cpu_wait_time_ratio_to_drop_connectionとmax_os_cpu_wait_time_ratio_to_drop_connectionの間にある場合、一定の確率でクエリが破棄されます。#78778 (Alexey Katsman). - Hive パーティション化で空の値を使用できるようにしました。 #78816 (Arthur Passos).
BFloat16のIN句における型変換を修正しました (つまり、SELECT toBFloat16(1) IN [1, 2, 3];が1を返すようになりました) 。#78754 をクローズしました。#78839 (Raufs Dunamalijevs) 。- MergeTree で
disk=が設定されている場合、他のディスク上のパーツは確認しないようにしました。#78855 (Azat Khuzhin). system.query_logのused_data_type_familiesにおけるデータ型を正規形に統一しました。#78972 (Kseniia Sumarokova) 。
バグ修正 (正式な安定版リリースにおけるユーザーに影響する不具合)
- keeper-client で SEQUENTIAL ノードを作成できない不具合を修正しました。#64177 (Duc Canh Le) 。
- 親スコープでの識別子解決を修正しました。WITH句で式に別名を使用できるようにしました。#58994 を修正。#62946 を修正。#63239 を修正。#65233 を修正。#71659 を修正。#71828 を修正。#68749 を修正。#66143 (Dmitry Novik).
- PositionImpl::vectorVector における誤った文字数のカウントを修正しました。 #71003 (思维).
- negate 関数の単調性を修正しました。以前のバージョンでは、
xが主キーのselect * from a where -x = -42;というクエリで、誤った結果が返されることがありました。#71440 (Michael Kolupaev). - アクセスエンティティに対する
RESTORE操作では、部分的な権限取り消しが適切に処理されていなかったため、必要以上の権限が必要になっていました。このPRでこの問題を修正します。#71853 をクローズします。#71958 (pufit). ALTER TABLE REPLACE/MOVE PARTITION FROM/TO TABLEの後で一時停止が発生しないようにしました。バックグラウンドタスクのスケジューリングに関する正しい設定を取得するようにしました。#72024 (Aleksei Filatov).- arrayIntersect における空のタプルの処理を修正しました。これにより #72578 が修正されます。 #72581 (Amos Bird).
- 一部の入力/出力フォーマット (Parquet、Arrow など) での空のタプルの処理を修正。 #72616 (Michael Kolupaev).
- ワイルドカードのデータベース/テーブルに対するカラムレベルの GRANT SELECT/INSERT ステートメントは、エラーを返すようになりました。 #72646 (Johann Gan).
- 対象のアクセスエンティティに暗黙的に付与された権限があるために、ユーザーが
REVOKE ALL ON *.*を実行できない問題を修正しました。#72872 (pufit). - async distributed INSERT で、保留中のバッチの処理中に (たとえば
No such file or directoryが原因で) 処理が停止したままになる問題を修正しました。 #72939 (Azat Khuzhin). - Azure SAS トークンのサポートを追加しました。#72959 (Azat Khuzhin) 。
- formatDateTimeスカラー関数で、正のタイムゾーンのフォーマットを修正しました。#73091 (ollidraese) 。
- PROXYv1 経由で接続が確立され、
auth_use_forwarded_addressが設定されている場合に、送信元ポートが正しく反映されるよう修正しました。従来は誤って proxy のポートが使用されていました。currentQueryID()関数を追加しました。#73095 (Yakov Olkhovskiy). - TCPHandler 内の NativeWriter にフォーマット設定が伝播されるようにし、
output_format_native_write_json_as_stringのような設定が正しく適用されるようにしました。#73179 (Pavel Kruglov) 。 - 誤ったプレフィックスを持つ JSON サブオブジェクトのサブカラムを読み取れない問題を修正しました。#73182 (Pavel Kruglov) 。
- StorageObjectStorageQueue のクラッシュを修正しました。#73274 (Kseniia Sumarokova) 。
- serverのシャットダウン時に、リフレッシャブルmaterialized viewでまれに発生するクラッシュを修正しました。 #73323 (Michael Kolupaev).
- 関数
formatDateTimeの%fプレースホルダーは、常に 6 桁の (秒未満の) 数字を生成するようになりました。これにより、MySQL のDATE_FORMAT関数との動作互換性が確保されます。以前の動作は、設定formatdatetime_f_prints_scale_number_of_digits = 1を使用することで復元できます。#73324 (ollidraese). - 暗黙的な Date から DateTime への変換で飽和動作を強制することにより、索引解析中の日時変換を改善しました。これにより、日時範囲の制限に起因する索引解析の不正確さの可能性が解消されます。これにより #73307 が修正されます。また、デフォルト値である
date_time_overflow_behavior = 'ignore'の場合の明示的なtoDateTime変換も修正されます。#73326 (Amos Bird)。 s3ストレージおよびテーブル関数の読み取り時における、_etagカラムによるフィルタリングを修正しました。#73353 (Anton Popov) 。- 古いアナライザ使用時に、
JOIN ON式でIN (subquery)を使用すると発生するNot-ready Set is passed as the second argument for function 'in'エラーを修正しました。 #73382 (Nikolai Kochetov). - Dynamic および JSON カラムでの squashin に向けた準備処理を修正しました。以前は一部のケースで、types/paths の上限に達していない場合でも、新しい型が shared variant/shared data に挿入されることがありました。 #73388 (Pavel Kruglov).
- 過大な割り当てを避けるため、types binary のデコード時に破損したサイズをチェックするようにしました。 #73390 (Pavel Kruglov).
- 並列レプリカが有効な単一レプリカ構成のクラスターから読み取る際に発生していた論理エラーを修正しました。#73403 (Michael Kolupaev).
- ZooKeeper および旧バージョンの Keeper における ObjectStorageQueue の問題を修正しました。#73420 (Antonio Andelic) 。
- デフォルトで Hive パーティション化を有効にするために必要な修正を実装しました。#73479 (Yarik Briukhovetskyi).
- ベクトル類似度索引の作成時に発生するデータ競合を修正しました。 #73517 (Antonio Andelic).
- Dictionary のソースに誤ったデータを含む関数がある場合に発生する segfault を修正しました。 #73535 (Yarik Briukhovetskyi).
- S3(Azure)Queue ストレージにおける、失敗した insert の再試行を修正しました。#70951 をクローズしました。#73546 (Kseniia Sumarokova) 。
optimize_functions_to_subcolumns設定が有効で、要素にLowCardinalityを含むタプルにおいて、一部のケースで発生することがある関数tupleElementのエラーを修正しました。#73548 (Anton Popov).- 範囲指定のパターンが後続する
enumグロブのパースを修正しました。#73473 を修正しました。#73569 (Konstantin Bogdanov) 。 - 非レプリケートテーブルのサブクエリで、parallel_replicas_for_non_replicated_merge_tree が無視されていた問題を修正しました。 #73584 (Igor Nikonov).
- タスクをスケジュールできない場合に
std::logical_errorがスローされる不具合を修正しました。これはストレステストで見つかりました。stacktrace の例:2024.12.19 02:05:46.171833 [ 18190 ] {01f0daba-d3cc-4898-9e0e-c2c263306427} <Fatal> : Logical error: 'std::exception. Code: 1001, type: std::__1::future_error, e.what() = The associated promise has been destructed prior to the associated state becoming ready. (version 25.1.1.18724), Stack trace:.#73629 (Alexander Gololobov). EXPLAIN SYNTAXでクエリを解釈しないようにし、分散クエリで処理段階が誤っていたことによる論理エラーを回避します。修正 #65205。 #73634 (Dmitry Novik).- Dynamic カラムで発生する可能性のあるデータの不整合を修正しました。
Nested columns sizes are inconsistent with local_discriminators column sizeという論理エラーが発生する可能性を修正しました。#73644 (Pavel Kruglov) 。 FINALとSAMPLEを含むクエリで発生していたNOT_FOUND_COLUMN_IN_BLOCKを修正しました。CollapsingMergeTreeに対するFINALを含む SELECT での誤った結果を修正し、FINALの最適化を有効化しました。 #73682 (Anton Popov).- LIMIT BY COLUMNS で発生するクラッシュを修正しました。 #73686 (Raúl Marín).
- 通常のプロジェクションを使用するよう強制されており、かつクエリが定義済みのプロジェクションと完全に同一であるにもかかわらず、プロジェクションが選択されず、その結果エラーが発生する不具合を修正しました。 #73700 (Shichao Jin).
- Dynamic/Object 構造のデシリアライズを修正しました。これにより、CANNOT_READ_ALL_DATA 例外が発生する可能性がありました。 #73767 (Pavel Kruglov) 。
- バックアップからパーツを復元する際に、
metadata_version.txtをスキップするようにしました。 #73768 (Vitaly Baranov). - #73737 を修正。#73775 (zhanglistar) 。
- #72078 を修正しました ( S3 Express Support が機能していなかった問題 ) 。 #73777 (Sameer Tamsekar).
- CollapsingMergeTree テーブルで、sign カラムの値が無効な行同士のマージを許可。#73864 (Christoph Wurm) 。
- 次のエラーを修正:
Row 1: ────── hostname: c-test-wy-37-server-nlkyjyb-0.c-test-wy-37-server-headless.ns-test-wy-37.svc.cluster.local type: ExceptionWhileProcessing event_date: 2024-12-23 event_time: 2024-12-23 16:21:19 event_time_microseconds: 2024-12-23 16:21:19.824624 query_start_time: 2024-12-23 16:21:19 query_start_time_microseconds: 2024-12-23 16:21:19.747142 query_duration_ms: 77 read_rows: 1 read_bytes: 134 written_rows: 0 written_bytes: 0 result_rows: 0 result_bytes: 0 memory_usage: 7824 current_database: default query: CREATE DATABASE db0 formatted_query: normalized_query_hash: 7820917191074023511 -- 7.82 quintillion query_kind: Create databases: ['db0'] tables: [] columns: [] partitions: [] projections: [] views: [] exception_code: 170 exception: Code: 170. DB::Exception: Bad get: has Null, requested Int64: While executing DDLOnClusterQueryStatus. (BAD_GET) (version 25.1.1.19134 (official build)) stack_trace: 0. ./build_docker/./src/Common/Exception.cpp:107: DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0x000000000da5e53b 1. DB::Exception::Exception(PreformattedMessage&&, int) @ 0x00000000088aca4c 2. DB::Exception::Exception<std::basic_string_view<char, std::char_traits<char>>, std::basic_string_view<char, std::char_traits<char>>>(int, FormatStringHelperImpl<std::type_identity<std::basic_string_view<char, std::char_traits<char>>>::type, std::type_identity<std::basic_string_view<char, std::char_traits<char>>>::type>, std::basic_string_view<char, std::char_traits<char>>&&, std::basic_string_view<char, std::char_traits<char>>&&) @ 0x00000000088bae8b 3. auto& DB::Field::safeGet<long>() & @ 0x0000000008a3c748 4. ./src/Core/Field.h:484: DB::ColumnVector<long>::insert(DB::Field const&) @ 0x0000000012e44c0f 5. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:53: DB::DDLOnClusterQueryStatusSource::generateChunkWithUnfinishedHosts() const @ 0x0000000012a40214 6. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:104: DB::DDLOnClusterQueryStatusSource::handleTimeoutExceeded() @ 0x0000000012a41640 7. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:109: DB::DDLOnClusterQueryStatusSource::stopWaitingOfflineHosts() @ 0x0000000012a41be9 8. ./build_docker/./src/Interpreters/DistributedQueryStatusSource.cpp:182: DB::DistributedQueryStatusSource::generate() @ 0x0000000011feb3bf 9. ./build_docker/./src/Processors/ISource.cpp:139: DB::ISource::tryGenerate() @ 0x0000000014148f5b 10. ./build_docker/./src/Processors/ISource.cpp:108: DB::ISource::work() @ 0x0000000014148c47 11. ./build_docker/./src/Processors/Executors/ExecutionThreadContext.cpp:49: DB::ExecutionThreadContext::executeTask() @ 0x0000000014164fc7 12. ./build_docker/./src/Processors/Executors/PipelineExecutor.cpp:290: DB::PipelineExecutor::executeStepImpl(unsigned long, std::atomic<bool>*) @ 0x00000000141577e5. #73876 (Tuan Pham Anh). - ネストされたタプルに明示的な名前 (‘keys’、‘values’) が付いていない
Mapを作成できる可能性があるため、map()型の比較が断続的に失敗する問題を修正しました。#73878 (Yakov Olkhovskiy) 。 - GROUP BY ALL 句の解決時にはウィンドウ関数を無視するよう修正しました。#73501 を修正しました。#73916 (Dmitry Novik) 。
- クライアント・サーバー間通信で、Native format の設定が正しく伝播されるようにしました。#73924 (Pavel Kruglov).
- 暗黙の権限を修正しました (以前はワイルドカードのように機能していました) 。 #73932 (Azat Khuzhin).
- ネストされた Maps の作成時におけるメモリ使用量の増大を修正。 #73982 (Pavel Kruglov).
- 空のキーを含むネストされたJSONのパースを修正しました。#73993 (Pavel Kruglov) 。
- 修正: 別のエイリアスから参照され、逆順で選択された場合に、エイリアスがプロジェクションに追加されないことがある問題を修正しました。 #74033 (Yakov Olkhovskiy).
- plain_rewritable メタデータを使用するディスクは、複数のサーバーインスタンス間で共有できます。あるインスタンスがメタデータオブジェクトを読み取っている間に、別のインスタンスがそれを変更することも想定されています。Azure ストレージで plain_rewritable を初期化する際に発生する「オブジェクトが見つからない」エラーは、S3 に実装されている動作と同様に無視されます。 #74059 (Julia Kartseva).
- enum 型および空テーブルでの
anyとanyLastの動作を修正しました。 #74061 (Joanna Hulboj). - ユーザーが Kafka table engine でキーワード引数を指定した場合に発生する問題を修正しました。#74064 (Yarik Briukhovetskyi) 。
- “s3queue_” プレフィックス付きの Storage
S3Queue設定をプレフィックスなしに、またはその逆に変更する際の不具合を修正しました。#74075 (Kseniia Sumarokova). - 設定
allow_push_predicate_ast_for_distributed_subqueriesを追加しました。これにより、アナライザ使用時の分散クエリで、AST ベースの述語プッシュダウンが有効になります。これは、クエリプランのシリアライゼーションを伴う分散クエリがサポートされるまでの一時的な対応です。#66878 #69472 #65638 #68030 #73718 を修正します。#74085 (Nikolai Kochetov). - #73095 以降、forwarded_for フィールドにポートが含まれることがあり、その結果、ポートを含んだホスト名を解決できなくなる問題を修正しました。#74116 (Yakov Olkhovskiy).
ALTER TABLE (DROP STATISTICS ...) (DROP STATISTICS ...)の誤ったフォーマットを修正しました。#74126 (Han Fei) 。- issue #66112 を修正。 #74128 (Anton Ivashkin).
CREATE TABLEでLoopをテーブルエンジンとして使用することはできなくなりました。以前はこの組み合わせにより segfault が発生していました。 #74137 (Yarik Briukhovetskyi).- PostgreSQL および SQLite のテーブル関数で SQL インジェクションを防ぐため、セキュリティ上の問題を修正しました。#74144 (Pablo Marcos) 。
- 圧縮された Memory engine テーブルからサブカラムを読み取る際のクラッシュを修正。#74009 を修正しました。#74161 (Nikita Taranov).
- system.detached_tables へのクエリで発生していた無限ループを修正しました。 #74190 (Konstantin Morozov).
- s3queueでファイルをFailedとして設定する際の論理エラーを修正。 #74216 (Kseniia Sumarokova).
- 一部のストレージで未サポートの型をチェックするようにしました。 #74218 (Pavel Kruglov).
- macOS 上で PostgreSQL インターフェイス経由のクエリ
INSERT INTO SELECTにより発生していたクラッシュを修正しました (issue #72938) 。#74231 (Artem Yurov) 。 - ベースバックアップからの
RESTOREにおけるネイティブコピー設定 (allow_s3_native_copy/allow_azure_native_copy) を修正しました。#74286 (Azat Khuzhin) 。 - データベース内でデタッチされたテーブル数が max_block_size の倍数になる場合の問題を修正しました。#74289 (Konstantin Morozov) 。
- ソースと宛先の認証情報が異なる場合に、ObjectStorage (つまり S3) 経由のコピーで発生する問題を修正しました。#74331 (Azat Khuzhin) 。
- レプリケーション対応データベースで、未初期化の max_log_ptr を修正しました。#74336 (Konstantin Morozov) 。
- GCS での native copy における「JSON API で Rewrite method を使用する」ことの検出を修正。 #74338 (Azat Khuzhin).
- interval の挿入時に発生するクラッシュを修正しました (issue #74299) 。#74478 (NamNguyenHoai) 。
- 集計プロジェクションで
count(nullable)が使用されている場合に、プロジェクション解析が誤って行われる問題を修正しました。これにより #74495 が修正されます。この PR では、プロジェクションが使用される理由、または使用されない理由を明確にするため、プロジェクション解析まわりのログもいくつか追加しています。#74498 (Amos Bird). BackgroundMergesAndMutationsPoolSizeの計算が誤っていた問題を修正しました (実際の値の2倍として計算されていました) 。#74509 (alesapin) 。- Cluster Discovery を有効にした際に Keeper のウォッチがリークする不具合を修正しました。#74521 (RinChanNOW).
- 定数 JSON リテラルのフォーマットを修正しました。これまでは、クエリを別のサーバーに送信する際に構文エラーが発生する可能性がありました。#74533 (Pavel Kruglov) 。
- UBSan によって報告された mem のアラインメントの問題を修正しました #74512。#74534 (Arthur Passos) 。
- テーブル作成時のKeeperMapの同時実行クリーンアップの問題を修正。 #74568 (Antonio Andelic).
EXCEPTまたはINTERSECTが含まれる場合でも、正しいクエリ結果を維持するため、サブクエリ内の未使用の projection カラムを削除しないようにしました。#73930 を修正しました。#66465 を修正しました。 #74577 (Dmitry Novik).- 暗黙的なプロジェクションが有効な状態で定数のパーティション式を使用した際に発生していた create query の不具合を修正しました。これにより #74596 が修正されます。 #74634 (Amos Bird).
Tupleカラムを持ち、スパースシリアライゼーションが有効になっているテーブル間のINSERT SELECTクエリを修正しました。#74698 (Anton Popov).- Function
rightは、定数の負のオフセットに対して正しく動作しませんでした。#74701 (Daniil Ivanik) 。 - クライアント側の不備のある解凍処理により、gzip 圧縮されたデータの挿入が失敗することがある問題を修正しました。#74707 (siyuan) 。
- INSERT が例外で終了した後、接続が壊れた状態のまま残らないようにしました。#74740 (Azat Khuzhin) 。
- 中間状態のまま残っていた接続が再利用されないようにしました。 #74749 (Azat Khuzhin).
- ワイルドカード付きの権限付与に対する部分的な取り消しにより、想定以上の権限が取り消される可能性がありました。#74263 をクローズしました。#74751 (pufit).
- 型名が大文字でない場合に、JSON type 宣言のパース時にクラッシュする問題を修正しました。#74784 (Pavel Kruglov).
- Keeper修正: ディスクからログエントリを読み込む際の不具合を修正しました。#74785 (Antonio Andelic).
- SYSTEM REFRESH/START/STOP VIEW の権限チェックを修正しました。これにより、特定のビューに対するクエリを実行する際に
*.*に対するこの権限は不要となり、そのビューに対する権限のみが必要になります。#74789 (Alexander Tokmakov). hasColumnInTable関数はエイリアスカラムを考慮していませんでした。エイリアスカラムでも動作するように修正しました。 #74841 (Bharat Nallan).- Keeper: 接続が確立される前に切断されていた場合に発生していた
logical_errorを修正しました。#74844 (Michael Kolupaev). AzureBlobStorageを使用するテーブルがあるとサーバーが起動できない不具合を修正しました。テーブルは Azure へのリクエストを一切行わずに読み込まれます。#74880 (Alexey Katsman).query_logの BACKUP および RESTORE 操作で、used_privilegesフィールドとmissing_privilegesフィールドが欠落していた問題を修正しました。#74887 (Alexey Katsman).- Azure Blob Storage 内で、空のカラムを含むテーブルのデータパーツのマージ中に発生する FILE_DOESNT_EXIST エラーを修正しました。 #74892 (Julia Kartseva).
- 一時テーブルを結合する際の projection のカラム名を修正し、#68872 をクローズしました。#74897 (Vladimir Cherkasov) 。
- HDFS の select リクエスト中に SASL エラーが発生した場合、krb チケットを更新するようにしました。 #74930 (inv2004).
- startup_scripts 内の Replicated database に対するクエリを修正しました。#74942 (Azat Khuzhin) 。
- null-safe 比較を使用した場合に、
JOIN ON句で型エイリアスされた式に関する問題を修正しました。#74970 (Vladimir Cherkasov). - remove 操作が失敗した場合、part の状態を deleting から outdated に戻すようにしました。#74985 (Sema Checherinda).
- 以前のバージョンでは、スカラーサブクエリがある場合、データフォーマットの初期化中、つまり HTTPヘッダーが書き込まれる前の段階で、 (サブクエリの処理で累積された) 進捗情報の書き込みを開始していました。その結果、X-ClickHouse-QueryId や X-ClickHouse-Format、さらに Content-Type などの HTTPヘッダーが失われていました。#74991 (Alexey Milovidov) 。
database_replicated_allow_replicated_engine_arguments=0のときのCREATE TABLE AS...クエリを修正しました。#75000 (Bharat Nallan) 。- INSERT 時の例外発生後、client 側で connection が不正な状態のまま残る問題を修正しました。#75030 (Azat Khuzhin) 。
- PSQL レプリケーションで、未処理の例外によってクラッシュする問題を修正しました。 #75062 (Azat Khuzhin).
- Sasl により任意の RPC 呼び出しが失敗する可能性がありますが、この修正で、krb5 ticker の有効期限が切れている場合に呼び出しを再試行できるようになります。 #75063 (inv2004).
optimize_function_to_subcolumns設定が有効な場合の、Array、Map、Nullable(..)カラムに対する索引 (プライマリおよびセカンダリ) の使用を修正しました。これまで、これらのカラムの索引が無視されることがありました。#75081 (Anton Popov) 。- 内部テーブルを持つmaterialized viewの作成時には、そのようにフラット化されたカラムは使用できないため、
flatten_nestedを無効にしました。 #75085 (Christoph Wurm). - forwarded_for フィールド内の一部の IPv6 アドレス (::ffff:1.1.1.1 など) が誤って解釈され、例外によりクライアントが切断される問題を修正しました。 #75133 (Yakov Olkhovskiy).
- LowCardinality の Nullable データ型に対する nullsafe JOIN の処理を修正しました。これまで、
IS NOT DISTINCT FROM、<=>、a IS NULL AND b IS NULL OR a == bのような nullsafe 比較を使用した JOIN ON は、LowCardinality カラムで正しく動作していませんでした。#75143 (Vladimir Cherkasov). - 新しいアナライザで、未使用の補間があるクエリを修正しました。#75173 (János Benjamin Antal) 。
- CTE を伴う Insert で発生するクラッシュバグを修正しました。#75188 (Shichao Jin) 。
- Keeperの修正:ログのロールバック時に、破損したchangelogに書き込まないようにしました。 #75197 (Antonio Andelic).
- 必要に応じて、
BFloat16を上位型として使用します。これにより #74404 をクローズしました。 #75236 (Nikita Mikhaylov)。 - any_join_distinct_right_table_keys と JOIN ON で OR を使用した際に、JOIN 結果で予期しないデフォルト値が返される問題を修正しました。#75262 (Vladimir Cherkasov).
- azureblobstorage テーブルエンジンの認証情報をマスクする。 #75319 (Garrett Thomas).
- ClickHouse が PostgreSQL、MySQL、SQLite などの外部データベースに対して誤ってフィルタのプッシュダウンを行うことがある問題を修正しました。これにより、#71423 をクローズします。#75320 (Nikita Mikhaylov)。
- Protobuf フォーマットでの出力中や、並行してクエリ
SYSTEM DROP FORMAT SCHEMA CACHEを実行した際に発生する可能性がある Protobuf スキーマ cache のクラッシュを修正しました。#75357 (Pavel Kruglov) 。 - 並列レプリカ使用時に、
HAVINGのフィルタがプッシュダウンされると発生する可能性のある論理エラーまたは未初期化メモリの問題を修正しました。#75363 (Vladimir Cherkasov). icebergS3、icebergAzureのテーブル関数およびテーブルエンジンで、機密情報を非表示にしました。#75378 (Kseniia Sumarokova) 。- 計算結果が空のトリム文字となる場合でも、関数
TRIMが正しく処理されるようになりました。例:SELECT TRIM(LEADING concat('') FROM 'foo')(Issue #69922). #75399 (Manish Gill). - IOutputFormat のデータ競合を修正しました。#75448 (Pavel Kruglov).
- 分散テーブルに対するJOINでArray型のJSONサブカラムが使用された場合に発生する可能性があるエラー
Elements ... and ... of Nested data structure ... (Array columns) have different array sizesを修正しました。#75512 (Pavel Kruglov). - 無効な結果バッファサイズの計算を修正しました。#70031 をクローズしました。#75548 (Konstantin Bogdanov).
- allow_feature_tier と compatibility MergeTree 設定の組み合わせに関する問題を修正しました。#75635 (Raúl Marín) 。
- ファイルが再試行された場合に、system.s3queue_log の processed_rows 値が誤って記録される問題を修正しました。 #75666 (Kseniia Sumarokova).
- materialized view が URL engine への書き込み時に接続の問題が発生した場合でも、
materialized_views_ignore_errorsが適用されるようにしました。#75679 (Christoph Wurm). - 型の異なるカラム間で複数の非同期
RENAMEクエリ (alter_sync = 0を指定) を実行したあと、MergeTreeテーブルの読み取り中にまれに発生していたクラッシュを修正しました。#75693 (Anton Popov) 。 UNION ALLを含む一部のクエリで発生していたBlock structure mismatch in QueryPipeline streamエラーを修正しました。#75715 (Nikolai Kochetov).- 射影の PK カラムに対する alter modify 時に、projection を再構築するようにしました。以前は、projection の PK で使用されているカラムに対して alter modify を行うと、その後の select で
CANNOT_READ_ALL_DATAエラーが発生することがありました。#75720 (Pavel Kruglov). - アナライザ使用時のスカラーサブクエリにおける
ARRAY JOINの誤った結果を修正しました。 #75732 (Nikolai Kochetov). DistinctSortedStreamTransformにおけるヌルポインタ参照を修正しました。 #75734 (Nikita Taranov).allow_suspicious_ttl_expressionsの挙動を修正しました。#75771 (Aleksei Filatov) 。- 関数
translateでの未初期化メモリ読み取りを修正。これにより #75592 をクローズします。#75794 (Alexey Milovidov). - Native format で JSON を文字列としてフォーマットする際に、フォーマット設定が反映されるようにしました。 #75832 (Pavel Kruglov).
- v24.12 で join algorithm として parallel hash がデフォルトで有効になったことを、設定変更履歴に記録しました。これは、v24.12 より古い互換性レベルが設定されている場合、ClickHouse が引き続き non-parallel hash を使用して join することを意味します。#75870 (Robert Schulze).
- 暗黙的に追加された min-max インデックスを持つテーブルを新しいテーブルにコピーできない不具合を修正しました (issue #75677) 。 #75877 (Smita Kulkarni).
clickhouse-library-bridgeはファイルシステム上の任意のライブラリを開けるため、安全に実行するには隔離された環境内に限定する必要があります。clickhouse-server の近くで実行した際の脆弱性を防ぐため、ライブラリのパスは設定で指定された場所に制限します。この脆弱性は、Arseniy Dugin により ClickHouse Bug Bounty Program を通じて発見されました。#75954 (Alexey Milovidov).- 一部のメタデータに JSON シリアライゼーションを使っていましたが、これは誤りでした。というのも、JSON は文字列リテラル内のバイナリデータ (ゼロバイトを含む) をサポートしていないためです。SQLクエリにはバイナリデータや無効な UTF-8 が含まれる可能性があるため、メタデータファイルでもこれをサポートする必要があります。一方で、ClickHouse の
JSONEachRowや同様のフォーマットは、バイナリデータを完全にラウンドトリップできるようにするため、JSON 標準からあえて逸脱することでこの問題に対処しています。動機については https://github.com/ClickHouse/ClickHouse/pull/73668#issuecomment-2560501790 を参照してください。解決策は、Poco::JSONライブラリを ClickHouse の JSON フォーマットのシリアライゼーションと整合させることです。これにより #73668 をクローズします。#75963 (Alexey Milovidov). - DETACH PART 実行中に発生する
Part <...> does not contain in snapshot of previous virtual parts. (PART_IS_TEMPORARILY_LOCKED)を修正しました。#76039 (Aleksei Filatov) 。 - ストレージ
S3Queueのコミット制限に関するチェックを修正しました。#76104 (Kseniia Sumarokova) 。 - 自動索引 (
add_minmax_index_for_numeric_columns/add_minmax_index_for_string_columns) がある MergeTree テーブルをアタッチする際の不具合を修正しました。#76139 (Azat Khuzhin). - ジョブの親スレッドのスタックトレース (
enable_job_stack_trace設定) が出力されない問題を修正しました。enable_job_stack_trace設定がスレッドに正しく伝播されず、その結果、スタックトレースの内容がこの設定に常に従うとは限らない問題を修正しました。#76191 (Yakov Olkhovskiy). - ビッグエンディアンアーキテクチャで FixedString に対して reinterpretAs を使用した場合の問題を修正しました。#76253 (Azat Khuzhin).
- UUID とテーブル名の競合によって発生するさまざまなバグを修正しました (たとえば、
RENAMEとRESTART REPLICAの競合が解消されます。RENAMEとSYSTEM RESTART REPLICAを同時実行した場合、誤ったレプリカを再起動してしまったり、いずれかのテーブルがTable X is being restarted状態のままになる可能性がありました) 。#76308 (Azat Khuzhin) 。 - シグナルハンドラーでのメモリ割り当てを削除しました。 #76446 (Nikita Taranov).
- エビクション中に予期しないエラーが発生した際の、動的ファイルシステムキャッシュのリサイズ処理を修正しました。 #76466 (Kseniia Sumarokova).
- 並列ハッシュにおける
used_flagの初期化を修正しました。これにより、サーバーがクラッシュする可能性がありました。#76580 (Nikita Taranov) 。 - プロジェクション内で
defaultProfiles()関数を呼び出した際に発生する論理エラーを修正しました。#76627 (pufit). - Web UI で、ブラウザによる対話的な Basic 認証を要求しないようにしました。#76319。#76637 (Alexey Milovidov).
- 分散テーブルからブール値リテラルを選択する際に発生する THERE_IS_NO_COLUMN Exception を修正しました。 #76656 (Yakov Olkhovskiy).
table directory内のサブパスが、より適切な方法で選択されるようになりました。#76681 (Daniil Ivanik) 。- PK にサブカラムを含むテーブルを ALTER した後に発生するエラー
Not found column in blockを修正しました。https://github.com/ClickHouse/ClickHouse/pull/72644 の後は、https://github.com/ClickHouse/ClickHouse/pull/74403 も必要です。#76686 (Nikolai Kochetov). - NULLの短絡評価に関するパフォーマンステストを追加し、不具合を修正しました。#76708 (李扬).
- 最終化の前に、出力書き込みバッファをフラッシュするようにしました。一部の出力フォーマット (例:
JSONEachRowWithProgressRowOutputFormat) の最終化中に発生していたLOGICAL_ERRORを修正しました。 #76726 (Antonio Andelic). - MongoDB のバイナリ UUID のサポートを追加しました (#74452) - table function の使用時における MongoDB への WHERE プッシュダウンを修正しました (#72210) - MongoDB - ClickHouse の型マッピングを変更し、MongoDB のバイナリ UUID は ClickHouse の UUID にのみパースされるようにしました。これにより、今後の曖昧さや予期しない動作を回避できます。 - 後方互換性を維持しつつ、OID マッピングを修正しました。#76762 (Kirill Nikiforov) 。
- JSON サブカラムのプレフィックスの並列デシリアライゼーションにおける例外処理を修正しました。#76809 (Pavel Kruglov).
- 負の整数に対する
lgamma関数の挙動を修正しました。#76840 (Ilya Kataev) 。 - 明示的に定義された主キーに対する逆キー解析を修正しました。#76654 と同様です。#76846 (Amos Bird)。
- JSONフォーマットでのBool値の整形表示を修正しました。 #76905 (Pavel Kruglov).
- 非同期 INSERT 中にエラーが発生した際、不正な JSON カラムのロールバックが原因でクラッシュする可能性がある問題を修正しました。 #76908 (Pavel Kruglov).
- 以前は、
multi_ifがプランニング時と実行時で異なる型のカラムを返すことがありました。その結果、C++ の観点ではコードが未定義動作を招いていました。#76914 (Nikita Taranov). - MergeTree における定数 Nullable キーのシリアライゼーションの誤りを修正しました。これにより、#76939 が修正されます。#76985 (Amos Bird) 。
BFloat16値のソートを修正しました。これにより #75487 をクローズします。これにより #75669 をクローズします。 #77000 (Alexey Milovidov) 。- part の整合性チェックで一時的なサブカラムを除外するチェックを追加し、Variant サブカラムを含む JSON に関するバグを修正しました。#72187。#77034 (Smita Kulkarni) 。
- 型不一致時に Values format でテンプレートをパースするとクラッシュする問題を修正しました。#77071 (Pavel Kruglov) 。
- 主キーにサブカラムを含む EmbeddedRocksDB テーブルは作成できないようにしました。以前はこのようなテーブルを作成できましたが、
SELECTクエリは失敗していました。#77074 (Pavel Kruglov) 。 - 述語をリモート側にプッシュダウンする際にリテラルの型が考慮されないために発生していた、分散クエリでの不正な比較を修正しました。#77093 (Duc Canh Le).
- 例外発生時にKafkaテーブルの作成中にクラッシュする問題を修正しました。#77121 (Pavel Kruglov) 。
- Kafka および RabbitMQ エンジンで、新しい JSON とサブカラムのサポートを追加しました。#77122 (Pavel Kruglov) 。
- MacOS での例外のスタックアンワインドを修正しました。#77126 (Eduard Karacharov) 。
- getSubcolumn 関数での ‘null’ サブカラムの読み取りを修正しました。#77163 (Pavel Kruglov).
- リテラルを含む式に対するスキップ索引がアナライザで機能しない問題を修正し、索引の解析時に自明なキャストを削除しました。 #77229 (Pavel Kruglov).
- Array および未サポートの関数に対する bloom filter 索引の不具合を修正しました。#77271 (Pavel Kruglov) 。
- テーブル数の制限は、初回のCREATEクエリ時にのみ確認するようにしました。#77274 (Nikolay Degterinsky) 。
SELECT toBFloat16(-0.0) == toBFloat16(0.0)は、これまでのfalseではなく、正しくtrueを返すようになりました。これにより、Float32およびFloat64と同じ挙動になります。#77290 (Shankar Iyer).- 未初期化の key_index 変数への誤った参照の可能性を修正しました。これはデバッグビルドではクラッシュにつながる可能性があります (この未初期化参照は、後続のコードでエラーがスローされる可能性が高いため、リリースビルドでは問題を引き起こしません) 。 ### ユーザー向けの変更に関するドキュメントエントリ。 #77305 (wxybear).
- 元に戻しました。#77307 (Nikolai Kochetov) 。
- Bool 値のパーティション名を修正しました。これは https://github.com/ClickHouse/ClickHouse/pull/74533 で壊れていました。#77319 (Pavel Kruglov).
- Nullable 要素を含む Tuple と String の比較を修正しました。たとえば、この変更前は Tuple
(1, null)と String'(1,null)'を比較するとエラーになっていました。もう 1 つの例として、aが Nullable カラムである Tuple(1, a)と String'(1, 2)'の比較でも同様の問題がありました。この変更で、これらの問題に対処しました。#77323 (Alexey Katsman). - ObjectStorageQueueSource のクラッシュを修正しました。この問題は https://github.com/ClickHouse/ClickHouse/pull/76358 で導入されたものです。#77325 (Pavel Kruglov).
close_sessionクエリパラメータが機能せず、その結果、名前付きセッションがsession_timeout後にしか閉じられない不具合を修正しました。#77336 (Alexey Katsman).input()使用時のasync_insertを修正。 #77340 (Azat Khuzhin).- 修正:
WITH FILLで、planer がソート用カラムを削除するとNOT_FOUND_COLUMN_IN_BLOCKにより失敗することがある問題を修正しました。INTERPOLATE式に対して計算される DAG の不整合に関連する類似の問題も修正しました。#77343 (Yakov Olkhovskiy). - 元に戻しました。#77390 (Vladimir Cherkasov) 。
- アタッチされた MV がない NATS サーバーからのメッセージ受信に関する不具合を修正しました。#77392 (Dmitry Novikov).
- 空の
FileLogをmergeテーブル関数経由で読み取る際に発生する論理エラーを修正し、#75575 をクローズしました。 #77441 (Vladimir Cherkasov). - 無効な AST ノードにエイリアスを設定する際に発生していた複数の
LOGICAL_ERRORを修正しました。#77445 (Raúl Marín) 。 - ファイルシステムキャッシュの実装で、ファイルセグメントの書き込み中に発生するエラー処理を修正しました。 #77471 (Kseniia Sumarokova).
- DatabaseIceberg がカタログから提供される正しいメタデータファイルを使用するように修正しました。#75187 をクローズします。#77486 (Kseniia Sumarokova).
- shared variant からの Dynamic シリアライゼーションで、デフォルトのフォーマット設定が使用されるようにしました。#77572 (Pavel Kruglov).
- 「スカラーサブクエリの実行で toAST() を使用しない」を元に戻しました。#77584 (Raúl Marín) 。
- ローカルディスク上にテーブルデータのパスが存在するかどうかを確認する処理を修正しました。 #77608 (Tuan Pham Anh).
- query cache は UDFs を非決定論的として扱うようになりました。これに伴い、UDFs を含むクエリの結果はキャッシュされなくなりました。以前は、結果が誤ってキャッシュされてしまう非決定論的な UDFs をユーザーが定義できていました (issue #77553) 。#77633 (Jimmy Aguilar Mena).
- 一部の型で、定数値をリモートに送信する際の不具合を修正しました。#77634 (Pavel Kruglov) 。
enable_filesystem_cache_log設定が有効な場合にのみ system.filesystem_cache_log が動作する問題を修正しました。#77650 (Kseniia Sumarokova).- プロジェクション内で
defaultRoles()関数を呼び出した際に発生する論理エラーを修正しました。#76627 のフォローアップです。#77667 (pufit). - StorageS3(Azure)Queue で、期限切れになった Context が原因のクラッシュを修正しました。#77720 (Kseniia Sumarokova).
- 関数
arrayResizeの第2引数にNullable型を指定することは、現在では許可されなくなりました。以前は、第2引数にNullableを指定すると、エラーから誤った結果まで、さまざまな問題が発生する可能性がありました。 (issue #48398) 。#77724 (Manish Gill) 。 - RabbitMQ、Nats、Redis、AzureQueue テーブルエンジンで認証情報を非表示にする。 #77755 (Kseniia Sumarokova).
- ArgMin/ArgMax における NaN の比較時の未定義動作を修正しました。 #77756 (Raúl Marín).
- 書き込むブロックが生成されない場合でも、マージやミューテーションがキャンセルされていないかを定期的に確認するようにしました。 #77766 (János Benjamin Antal).
- 元に戻しました。#77843 (Vladimir Cherkasov).
NOT_FOUND_COLUMN_IN_BLOCKエラー発生時に起こり得るクラッシュを修正しました。#77854 (Vladimir Cherkasov).StorageSystemObjectStorageQueueSettingsでデータの補完中に発生するクラッシュを修正しました。#77878 (Bharat Nallan) 。- SSHサーバーの履歴に対するあいまい検索を無効化しました (skim が必要になるため) 。 #78002 (Azat Khuzhin).
- ベクトル類似度索引が定義された別のベクトルカラムがテーブル内にある場合に、索引のないカラムに対するベクトル検索クエリが誤った結果を返す不具合を修正しました。 (Issue #77978) 。#78069 (Shankar Iyer).
The requested output format {} is binary... Do you want to output it anyway? [y/N]プロンプトを修正。 #78095 (Azat Khuzhin).toStartOfIntervalの始点引数がゼロの場合に発生するバグを修正しました。#78096 (Yarik Briukhovetskyi).- HTTPインターフェイスで空の
session_idクエリパラメータを指定できないようにしました。#78098 (Alexey Katsman) 。 - ALTERクエリの直後にRENAMEクエリを実行した場合に発生する可能性があった、Database Replicatedでのメタデータの上書きを修正しました。#78107 (Nikolay Degterinsky) 。
- NATSエンジンのクラッシュを修正しました。#78108 (Dmitry Novikov) 。
- SSH 用の埋め込みクライアントで
history_fileを作成しようとしないようにしました。 #78112 (Azat Khuzhin). - RENAME DATABASE または DROP TABLE クエリの実行後に system.detached_tables に誤った情報が表示される問題を修正しました。#78126 (Nikolay Degterinsky).
- https://github.com/ClickHouse/ClickHouse/pull/77274 以降、Database Replicated でテーブル数が多すぎる場合のチェックを修正しました。あわせて、RMT または KeeperMap の場合に ZooKeeper に未計上のノードが作成されるのを防ぐため、ストレージの作成前にチェックを実行するようにしました。#78127 (Nikolay Degterinsky) 。
- S3Queue メタデータの同時初期化によって発生する可能性があるクラッシュを修正しました。 #78131 (Azat Khuzhin).
groupArray*関数は、実行を試みる代わりに、UInt の場合と同様、max_size 引数に Int 型の 0 値が指定されると BAD_ARGUMENTS エラーを返すようになりました。 #78140 (Eduard Karacharov).- ローカルテーブルがデタッチされる前に削除されていた場合でも、recoverLostReplica でクラッシュしないようにしました。#78173 (Raúl Marín).
- system.s3_queue_settings で「alterable」カラムが常に
falseを返す不具合を修正しました。#78187 (Kseniia Sumarokova) 。 - Azure access signature がユーザーから見えず、ログにも出力されないようにマスクしました。 #78189 (Kseniia Sumarokova).
- Wide パーツ内で、プレフィックス付きサブストリームの prefetch を修正しました。 #78205 (Pavel Kruglov).
- キー配列の型が
LowCardinality(Nullable)の場合に発生していたmapFromArraysのクラッシュおよび誤った結果を修正しました。 #78240 (Eduard Karacharov). - delta-kernelの認証オプションを修正しました。#78255 (Kseniia Sumarokova) 。
- レプリカの
disable_insertion_and_mutationが true の場合、RefreshMV タスクをスケジュールしないようにしました。タスクは挿入処理の一種であるため、disable_insertion_and_mutationが true の場合は失敗します。#78277 (Xu Jia). - Mergeエンジンの基になるテーブルへのアクセス検証を追加しました。 #78339 (Pervakov Grigorii).
Distributedengine のテーブルでFINALmodifier が失われる場合があります。#78428 (Yakov Olkhovskiy) 。Bitmapminは、ビットマップがempty(uint64_max when input type >= 8bits)の場合に uint32_max を返します。これは、空のroaring_bitmapのminimum()の挙動と一致します。#78444 (wxybear).- クラッシュを引き起こす可能性があるため、“コード内の一部箇所で preserve_most 属性を適用する” 変更を元に戻しました。 #78449 (Azat Khuzhin) 。
- INFILE のスキーマ推論で挿入カラムを使用するようにしました。 #78490 (Pervakov Grigorii).
distributed_aggregation_memory_efficientが有効な場合、論理エラーを引き起こす可能性があるため、FROMを読み取った直後のクエリ処理の並列化を無効化しました。#76934 を解決します。#78500 (flynn).max_streams_to_max_threads_ratio設定の適用後に計画ストリーム数が 0 になる場合でも、読み取り用に少なくとも 1 つのストリームを設定するようにしました。#78505 (Eduard Karacharov) 。- Storage S3Queue で、論理エラー “Cannot unregister: table uuid is not registered” を修正しました。#78285 をクローズします。#78541 (Kseniia Sumarokova).
- ClickHouse は、cgroups v1 と v2 の両方が有効なシステムで、自身の cgroup v2 を判別できるようになりました。#78566 (Grigory Korolev) 。
- ObjectStorage のクラスター テーブル関数は、テーブルレベルの設定と併用すると失敗していました。#78587 (Daniil Ivanik).
- ReplicatedMergeTree では、
INSERT時にサポートされていないトランザクションに対するチェックを強化しました。#78633 (Azat Khuzhin) 。 - アタッチ時にクエリ設定を適用するようにしました。 #78637 (Raúl Marín).
iceberg_metadata_file_pathに無効なパスが指定されている場合に発生するクラッシュを修正しました。#78688 (alesapin).- Delta Lake table engine の delta-kernel 実装で、読み取りスキーマがテーブルスキーマと異なり、かつパーティションカラムが存在する場合に、カラムが見つからないエラーが発生する不具合を修正しました。#78690 (Kseniia Sumarokova).
- この更新では、2 つのセッションが同じ名前を共有しており、かつ古いセッションのタイムアウトが切れる前に新しい名前付きセッションが作成された場合に、新しいセッションが以前のセッションの予定時刻に意図せず終了してしまう不具合を修正しました。#78698 (Alexey Katsman).
- CHECK TABLE 実行中にテーブルのシャットダウンがブロックされないようにしました。#78782 (Raúl Marín).
- Keeper の修正: すべてのケースでエフェメラル数を修正しました。#78799 (Antonio Andelic) 。
view()以外のテーブル関数を使用した場合にStorageDistributedで発生する不正な型変換を修正しました。#78464 をクローズしました。#78828 (Konstantin Bogdanov).tupleElement(*, 1)のフォーマットを修正しました。#78639 をクローズしました。#78832 (Konstantin Bogdanov).ssd_cache型の辞書で、block_sizeおよびwrite_buffer_sizeparameter に 0 または負の値を指定した場合、それらは拒否されるようになりました (issue #78314) 。#78854 (Elmi Ahmadov) 。- 不正なシャットダウン後に ALTER を実行した場合に REFRESHABLE MV がクラッシュする不具合を修正しました。 #78858 (Azat Khuzhin).
- CSVフォーマットにおける不正なDateTime値のパースを修正しました。#78919 (Pavel Kruglov) 。
ビルド/テスト/パッケージングの改善
- 内部依存の LLVM が 16 から 18 に更新されました。#66053 (Nikita Mikhaylov).
- 削除された nats の結合テストを復元し、エラーを修正。- nats エンジンのいくつかのレースコンディションを修正 - 接続断が発生した場合に nats にデータをストリーミングするとデータが失われる問題を修正 - nats からのストリーミング終了時に最後のデータ chunk の受信が停止する問題を修正 - nats_max_reconnect は非推奨で効果はなく、再接続は nats_reconnect_wait タイムアウトで継続的に実行されます。#69772 (Dmitry Novikov).
- contrib openssl の asm ファイルを生成できない不具合を修正しました。#72622 (RinChanNOW).
- テスト 03210_variant_with_aggregate_function_type の安定性を向上させました。 #74012 (Anton Ivashkin).
- ARM と Intel Mac の両方での HDFS ビルドをサポートしました。#74244 (Yan Xin).
- ユニバーサルインストールスクリプトが、macOS でもインストールを提案するようになりました。 #74339 (Alexey Milovidov) 。
- Kerberosが有効になっていない場合のビルドを修正。#74771 (flynn) 。
- 組み込みの LLVM 19 に更新。#75148 (Konstantin Bogdanov) 。
- 互換性に影響する可能性あり: さらに厳格なデフォルト設定にするための改善。現在のデフォルト設定もすでに安全です。ポートを公開するには、ユーザーが明示的にオプションを指定する必要があります。ただし、
defaultユーザーにCLICKHOUSE_PASSWORDでパスワードが設定されておらず、かつ/またはCLICKHOUSE_USER環境変数でユーザー名が変更されていない場合は、追加の保護策として、ローカルシステムからのみ利用できるようにすべきです。#75259 (Mikhail f. Shiryaev). - 結合テストでは、並列テストを単一バッチで実行する場合のタイムアウトが 1 時間に設定されています。このタイムアウトに達すると、一部のログが出力されないまま
pytestが強制終了されます。セッションの結果を出力し、外部のタイムアウトシグナルがトリガーされないようにするため、pytest の内部タイムアウトは 55 分に設定されています。#75532 をクローズします。#75533 (Ilya Yatsishin) 。 - clickhouse-server 関連のすべての操作を関数化し、
entrypoint.shでデフォルトのバイナリを起動する場合にのみ実行されるようにしました。長らく先送りされていたこの改善は #50724 で提案されていました。users.xmlから値を取得するためのスイッチ--usersがclickhouse-extract-from-configに追加されました。#75643 (Mikhail f. Shiryaev). - ストレステストで、gdb 経由でスタックトレースを収集している間に server が終了しなかった場合、
Possible deadlock on shutdown (see gdb.log)の検出でノイズが増えないよう、待機時間が追加されました。この遅延が追加されるのは、テストが正常に完了しなかった場合に限られます。#75668 (Ilya Yatsishin). - 削除されていた nats の結合テストを復元し、エラーを修正。 - nats エンジンのいくつかのレースコンディションを修正 - 接続が失われた場合に、データを nats にストリーミングするとデータが失われる問題を修正 - nats からのストリーミング終了時に、最後の chunk の受信がフリーズする問題を修正 - nats_max_reconnect は非推奨で効果はなく、再接続は nats_reconnect_wait のタイムアウト間隔で永続的に試行されます。 #75850 (Dmitry Novikov).
- Darwin 向けのクロスコンパイル時に ICU と GRPC を有効化。#75922 (Raúl Marín).
- プロセスグループの kill 処理中に
sleepが入ることで発生していた splitting test の出力を修正。 #76090 (Mikhail f. Shiryaev). - スクリプトはしばしば強制終了されるため、実行の最後に
docker-composeのログを収集しないようにしました。代わりに、バックグラウンドで収集します。 #76140 (Mikhail f. Shiryaev). - Kafka storage のテストを複数のファイルに分割。 #69452 を修正。 #76208 (Mikhail f. Shiryaev).
clickhouse-odbc-bridgeとclickhouse-library-bridgeは、別のrepository (https://github.com/ClickHouse/odbc-bridge/) に移動しました。 #76225 (Alexey Milovidov).- バイナリから約20MBの不要なコードを削除。 #76226 (Alexey Milovidov).
block()の導入により、必要な CMake の最小バージョンを 3.25 に引き上げました。 #76316 (Konstantin Bogdanov) 。- fmt を 11.1.3 に更新。 #76547 (Raúl Marín).
lz4を1.10.0にアップデートしました。#76571 (Konstantin Bogdanov) 。curlを8.12.1に更新。#76572 (Konstantin Bogdanov).libcpuidを0.7.1にアップデートしました。#76573 (Konstantin Bogdanov).- pytest の結果の解析には、機械可読なフォーマットを使用する。 #76910 (Mikhail f. Shiryaev).
- Rust のクロスコンパイルを修正し、Rust を完全に無効化できるようにしました。#76921 (Raúl Marín) 。
- プロジェクトのビルドには clang 19 が必要です。 #76945 (Raúl Marín).
- このテストはシリアルモードで10秒以上かかります。Fast test としては長すぎます。 #76948 (Mikhail f. Shiryaev).
sccacheをバージョン0.10.0に更新しました。#77580 (Konstantin Bogdanov) 。- Rust で CPU のターゲット機能を考慮し、すべての crate で LTO を有効化。 #78590 (Raúl Marín).
minizip-ngを4.0.9にアップデート。#78917 (Konstantin Bogdanov) 。