後方互換性のない変更
Parquet 出力フォーマットは、Date および DateTime 列を生の数値として書き出すのではなく、Parquet がサポートする日付/時刻型に変換します。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 は、進捗が発生するたびに進捗情報を書き出すようになりました。以前のバージョンでは、結果の各ブロックごとにしか進捗が表示されず、実用的ではありませんでした。進捗の表示方法を変更しました。ゼロの値は表示されません。進捗は、頻繁に発生する場合でも送信されることに注意してください。大量のトラフィックが発生する可能性があります。出力が圧縮されている場合、進捗はフラッシュされないことにも注意してください。これにより #70800 が解決されました。 #73834 (Alexey Milovidov )。
mysql 辞書ソースは、もはや 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 の場合、マテリアライズドビュー内のすべてのカラムが対象テーブルのカラムと一致していることを確認します。 #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 )。
format_alter_operations_with_parentheses のデフォルト値を true に変更し、ALTER コマンドのリストをあいまいさなく解釈できるようにします(https://github.com/ClickHouse/ClickHouse/pull/59532 を参照)。この変更により、24.3 より前のバージョンを実行しているクラスタとのレプリケーションは動作しなくなります。古いリリースを使用しているクラスタをアップグレードする場合は、サーバー設定でこの設定を無効にするか、先にクラスタを 24.3 へアップグレードしてください。 #75302 (Raúl Marín )。
レプリケートされたデータベースでは TRUNCATE DATABASE ができないようになりました。 #76651 (Bharat Nallan )。
analyzer が無効化されている場合は、compatibility 設定に関係なく parallel replicas をデフォルトで無効化するようにしました。この動作は、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 ).
新機能
デシリアライズ済みの skipping index granule 用のインメモリキャッシュを追加しました。これにより、skipping index を使用する繰り返しクエリが高速化されます。新しいキャッシュのサイズは、サーバー設定 skipping_index_cache_size および skipping_index_cache_max_entries で制御されます。このキャッシュを導入した主な動機はベクトル類似性インデックスであり、これらは今回の変更によって大幅に高速化されました。 #70102 (Robert Schulze ).
Userspace Page Cache の新しい実装。OS のページキャッシュに依存するのではなく、プロセス内メモリ上にデータをキャッシュできるようにします。データがローカルファイルシステムキャッシュによる裏付けなしにリモート仮想ファイルシステム上に保存されている場合に有用です。 #70509 (Michael Kolupaev ).
特定のタイムスタンプ時点の状態として Iceberg テーブルをクエリできる設定を追加しました。 #71072 (Brett Hoerner ).
Iceberg テーブルで、時間関連の変換を用いるパーティション操作向けのパーティションプルーニングを実装しました。 #72044 (Daniil Ivanik ).
MergeTree によって管理される列に対して、デフォルトで min-max(スキッピング)インデックスを作成できるようにする機能を追加しました。これは、数値列向けの設定 enable_minmax_index_for_all_numeric_columns と、文字列列向けの設定 enable_minmax_index_for_all_string_columns によって制御されます。現時点では両方の設定が無効のため、まだ挙動の変更はありません。 #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 )。
新しい設定 enable_adaptive_memory_spill_scheduler を追加しました。この設定により、同一クエリ内の複数の grace JOIN の合計メモリ使用量を監視し、MEMORY_LIMIT_EXCEEDED エラーを防ぐために、外部ストレージへのスピルを適応的にトリガーできるようになりました。 #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 )。
MergeTree によって管理されるカラムに対して、デフォルトで min-max(スキップ)インデックスを作成できるようにする機能を追加しました。数値カラムには設定 add_minmax_index_for_numeric_columns を、文字列カラムには設定 add_minmax_index_for_string_columns を使用します。現時点ではどちらの設定も無効のため、挙動に変更はまだありません。 #74266 (Smita Kulkarni )。
system.query_log、ネイティブプロトコルの ClientInfo、およびサーバーログに script_query_number と script_line_number フィールドを追加しました。これにより #67542 が解決されました。#68133 でこの機能の立ち上げに貢献した pinsvin00 に感謝します。#74477 (Alexey Milovidov )。
DateTime64 に minus 演算子のサポートを追加し、DateTime と同様に DateTime64 値同士を減算できるようにしました。 #74482 (Li Yin ).
Azure Blob Storage 向け DeltaLake テーブルエンジンをサポートします。#68043 を修正。#74541 (Smita Kulkarni )。
ClickHouse クライアント接続の送信元 IP アドレスを設定するための bind_host 設定を追加しました。 #74741 (Todd Yocum ).
SELECT クエリを送信した直後の実行時に、未完了(バックグラウンドプロセスでマテリアライズされていない)の 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 )。
データベースコメントを変更できるようにしました。 Closes #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 コーデックを復元しました。 #76021 (Konstantin Bogdanov ).
関数 arraySymmetricDifference を追加しました。複数の配列引数のうち、すべての引数に共通して出現しない要素をすべて返します。例:SELECT arraySymmetricDifference([1, 2], [2, 3]) は [1, 3] を返します。(issue #61673 )。 #76231 (Filipp Abapolov )。
estimatecompressionratio 集約関数を追加しました — #70801 を参照してください。#76661 (Tariq Almawash )。
FilterTransformPassedRows と FilterTransformPassedBytes のプロファイルイベントは、クエリ実行中にフィルタリングされた行数とバイト数を示します。 #76662 (Onkar Deshpande )。
ブロックチェーンの実装、特に EVM ベースのシステムで一般的に使用される keccak256 ハッシュ関数を追加しました。 #76669 (Arnaud Briche )。
SCRAM-SHA-256 を導入し、Postgres ワイヤプロトコル認証を更新。 #76839 (scanhex12 ).
この機能により、クライアントリクエストのヘッダーから外部 HTTP 認証器へ転送するヘッダーのリストを定義できるようになりました。 #77054 (inv2004 )。
IcebergMetadataFilesCache をサポートしました。これにより、単一のキャッシュ内に manifest ファイル/リストおよび metadata.json を保存できるようになります。 #77156 (Han Fei )。
関数 arrayLevenshteinDistance、arrayLevenshteinDistanceWeighted、arraySimilarity を追加。 #77187 (Mikhail f. Shiryaev ).
3 つの新しい関数を追加しました。仕様に準拠した icebergTruncate(https://iceberg.apache.org/spec/#truncate-transform-details を参照)、toYearNumSinceEpoch、および toMonthNumSinceEpoch です。Iceberg エンジンでのパーティションプルーニングにおいて truncate 変換をサポートしました。#77403 (alesapin )。
ユーザーが、以前の時点に存在していた Iceberg テーブルの状態をクエリできるようにします。 #77439 (Daniil Ivanik )。
ワークロード向けに CPU スロットによるスケジューリングを追加しました。詳細については https://clickhouse.com/docs/operations/workload-scheduling#cpu_scheduling を参照してください。#77595 (Sergei Trifonov )。
hasAll() 関数で、tokenbf_v1 および ngrambf_v1 の全文スキップインデックスを利用できるようになりました。 #77662 (UnamedRus ).
JSON データ型は本番運用で利用可能です。https://jsonbench.com/ を参照してください。Dynamic と Variant データ型も本番運用で利用可能です。 #77785 (Alexey Milovidov )。
デシリアライズ済みのベクトル類似性インデックス用インメモリキャッシュを追加しました。これにより、近似最近傍(ANN)検索クエリの繰り返し実行が高速になります。この新しいキャッシュのサイズは、サーバー設定 vector_similarity_index_cache_size および vector_similarity_index_cache_max_entries によって制御されます。この機能は、以前のリリースにおけるスキップインデックスキャッシュ機能を置き換えるものです。 #77905 (Shankar Iyer ).
関数 sparseGrams と sparseGramsHashes に UTF-8 対応バージョンが追加されました。作成者: scanhex12 。#78176 (Pervakov Grigorii )。
toInterval 関数を導入しました。この関数は 2 つの引数(value と unit)を受け取り、その値を指定された Interval 型に変換します。#78723 (Andrew Davis )。
実験的機能
未使用カラムを読み取らない lazy projection によりパフォーマンスを最適化。 #55518 (Xiaozhe Yu ).
行の比較では、まず値が異なる可能性が最も高い列から比較を開始するようにしました。 #63780 (UnamedRus ).
RowBinary 入力フォーマットを最適化。 #63805 を解決。 #65059 (Pavel Kruglov )。
一部の低レベルな最適化により、文字列のデシリアライズを高速化しました。 #65948 (Nikita Taranov ).
コードの一部で preserve_most 属性を適用しました。 #67778 (Nikita Taranov ).
繰り返し使用される条件を持つクエリのパフォーマンスを向上させるため、クエリ条件キャッシュ機能を実装しました。条件を満たさないデータの範囲を、メモリ上の一時インデックスとして保持します。後続のクエリはこのインデックスを利用します。クローズ: #67768 ### ユーザー向け変更のドキュメントエントリ。 #69236 (zhongyuankai ).
NativeORCBlockInputFormat に対して非同期 I/O プリフェッチをサポートし、リモート I/O のレイテンシーを隠蔽することで全体的なパフォーマンスを向上させました。テストケースでは、最大で 1.47 倍の高速化が確認できました。 #70534 (李扬 ).
右側の結合テーブルをキーで並べ替えることで Grace ハッシュ結合のパフォーマンスを向上しました。 #72237 (kevinyhzou ).
materialize ttl において ttl_only_drop_parts の設定を再び尊重し、TTL を再計算して空のパーツに置き換えることでパーツを削除する際に、必要な列だけを読み込むようにしました。 #72751 (Andrey Zvonov ).
巨大なデータセットに対する計算を並列化できるよう、arrayROCAUC および arrayAUCPR で曲線全体の部分面積を計算できるようにしました。 #72904 (Emmanuel ).
不要なアイドルスレッドが多数生成されないようにしました。 #72920 (Guo Wangyang ).
ハッシュによる左テーブルブロックの分割処理が、parallel_hash JOIN アルゴリズムの probe フェーズから削除されました。 #73089 (Nikita Taranov )。
table function で波括弧展開のみを使用している場合は、blob storage のキーを列挙しない。 #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 ).
Wide パートにおける S3 からの JSON カラム全体の読み取り性能を改善しました。サブカラムプレフィックスのデシリアライズ用プリフェッチの追加、デシリアライズ済みプレフィックスのキャッシュ、サブカラムプレフィックスの並列デシリアライズにより実現しています。これにより、SELECT data FROM table のようなクエリでは S3 からの JSON カラム読み取りが約 4 倍、SELECT data FROM table LIMIT 10 のようなクエリでは約 10 倍高速になります。 #74827 (Pavel Kruglov ).
非同期インサートで使用するメモリを事前確保し、パフォーマンスを向上。 #74945 (Ilya Golshtein ).
オプティマイザによって結合の左右が入れ替えられた場合に、ConcurrentHashJoin で二重に事前割り当てが行われる問題を修正しました。 #75149 (Nikita Taranov ).
max_rows_in_join = max_bytes_in_join = 0 の場合に parallel_hash における不要な競合を修正しました。 #75155 (Nikita Taranov ).
一部の結合シナリオにおける性能をわずかに改善: 出力行数を事前に計算し、その分のメモリを予約します。 #75376 (Alexander Gololobov ).
plain_rewritable メタデータファイルは小さいため、大きなデフォルトバッファは不要です。対象のパスに収まるよう適切なサイズの書き込みバッファを使用することで、多数のアクティブなパートがある場合のメモリ使用効率を改善できます。### ユーザー向け変更のドキュメント項目。#75758 (Julia Kartseva )。
一部のケース(例: 空の配列カラム)では、データパートに空のファイルが含まれることがあります。テーブルがメタデータとオブジェクトストレージを分離したディスク上にある場合、そのようなファイルについては、ObjectStorage への空の BLOB の書き込みを省略し、メタデータのみを保存するようにしました。#75860 (Alexander Gololobov )。
同時実行制御により、INSERT と SELECT 間で CPU の分配が不公平になる可能性があることが判明しました。すべての CPU スロットが無条件に(競合なしで)max_threads = 1 の INSERT に割り当てられてしまい、一方で高い max_threads 値を指定している SELECT も、実際には単一スレッドしか使用できないためパフォーマンスが低下してしまいます。 #75941 (Sergei Trifonov )。
不要な null マップ割り当てを避けるための wrapInNullable に対する軽微な最適化。 #76489 (李扬 ).
Decimal32/Decimal64/DateTime64 に対する min/max 演算のパフォーマンスを改善。 #76570 (李扬 )。
パーツ削除時にキャッシュからデータを積極的に削除するようにしました。データ量が最大サイズ未満の場合は、キャッシュが不要に最大サイズまで増加しないようにします。 #76641 (Alexey Milovidov )。
クエリコンパイル(設定 compile_expressions)がマシンタイプを考慮するようになりました。これにより、これらのクエリの実行速度が大幅に向上します。 #76753 (Robert Schulze )。
arraySort を最適化。 #76850 (李扬 ).
col->insertFrom() への呼び出しを非仮想化することで、JOIN 結果の生成を高速化しました。 #77350 (Alexander Gololobov ).
同一パートのマークをマージし、クエリ条件キャッシュに一度に書き込むことで、ロックの使用量を削減しました。 #77377 (zhongyuankai ).
単一の Nullable 列または低カーディナリティ列での ORDER BY を最適化。#77789 (李扬 )。
filesystem_cache_prefer_bigger_buffer_size は、マージなどキャッシュがパッシブに使用される場合には無効にします。 #77898 (Kseniia Sumarokova ).
Iceberg 用の単純な count 最適化を実装しました。これにより、フィルターなしの count() クエリがより高速になります。#77639 をクローズしました。#78090 (alesapin )。
列の lower_bound および upper_bound 値に基づく Iceberg データのプルーニングをサポートしました。 #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 を保存することで、新しい analyzer インフラストラクチャのパフォーマンスを向上させました。#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 リクエストにおけるファーストバイトの読み書きおよび接続までの時間を追跡します。これにより、後で収集したデータから近似的なパーセンタイルを算出し、タイムアウト値を調整できるようにします。 #69783 (Alexey Katsman ).
Executable ストレージに渡されるクエリは、単一スレッドでの実行に制限されなくなりました。 #70084 (yawnt ).
トレーサビリティを強化するために、OpenTelemetry のスパンログテーブルに HTTP ヘッダーを追加しました。 #70516 (jonymohajanGmail ).
GMT タイムゾーンだけでなく、任意のタイムゾーンで ORC ファイルを書き込めるようにしました。 #70615 (kevinyhzou ).
並列レプリカが有効になっている場合は、テーブル関数を対応する -Cluster 版に置き換えるようにしました。#65024 を修正。#70659 (Konstantin Bogdanov )。
クラウド間でバックアップを書き込む際に、I/O スケジューリング設定を考慮するようにしました。 #71093 (János Benjamin Antal ).
MySQL および Postgres の辞書レプリカへの接続をバックグラウンドで再確立し、対応する辞書へのリクエストが遅延しないようにしました。 #71101 (Yakov Olkhovskiy ).
メトリクスのエイリアス名を system.asynchronous_metrics に追加。 #71164 (megao )。
リフレッシュ可能なマテリアライズドビューのリフレッシュ処理が system.query_log に記録されるようになりました。 #71333 (Michael Kolupaev ).
Parquet の Bloom フィルターと min/max インデックスを併せて評価するようにしました。これは、データ = [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 )。
ハッシュ結合アルゴリズムが有効な場合に、より汎用的な結合計画アルゴリズムを利用できるようにしました。 #71926 (János Benjamin Antal ).
EXPLAIN QUERY TREE の出力から機密情報を非表示にする。 #72025 (Yakov Olkhovskiy ).
データベースおよびテーブルのメタデータファイルを保存するために、構成可能なディスクを使用できるようにしました。ディスク名は database_disk.disk 設定パラメータで指定できます。 #72027 (Tuan Pham Anh ).
ネイティブリーダーで Parquet の整数論理型をサポート。 #72105 (Arthur Passos ).
JSON 出力フォーマットをデフォルトで見やすい形式にしました。これを制御するための新しい設定 output_format_json_pretty_print を追加し、デフォルトで有効にしています。 #72148 (Pavel Kruglov ).
デフォルトユーザーにパスワードが必要な場合、ブラウザで対話的に認証情報を要求するようにしました。以前のバージョンではサーバーは 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 カラムを追加します。このカラムは、スタックしている mutation に関する新しいメトリクスを導入し、クラウドで発生したエラーのグラフを作成するために使用します。また、必要に応じて、ノイズの少ない新しいアラートを追加するためにも利用されます。 #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 ).
トレースコレクターによるメモリ制限を無視するようにしました。 #72606 (Azat Khuzhin ).
MergeTree のソートキーおよびスキップインデックスでサブカラムをサポートしました。 #72644 (Pavel Kruglov ).
サーバー設定 dictionaries_lazy_load および wait_dictionaries_load_at_startup を system.server_settings に追加しました。 #72664 (Christoph Wurm )。
BACKUP/RESTORE クエリで指定可能な設定一覧に max_backup_bandwidth を追加しました。 #72665 (Christoph Wurm )。
並列レプリカでは、レプリカの可用性に関する過去の情報を用いてレプリカ選択を改善していましたが、接続できない場合にそのレプリカのエラー回数を更新していませんでした。このPRでは、レプリカが利用不能な場合にも、そのレプリカのエラー回数が更新されるようにしました。 #72666 (zoomxi ).
レプリケーション構成のクラスタで生成されるログ量を最小限に抑えるため、ReplicatedMergeTree エンジンにおけるレプリケートパーツ出現時のログレベルを引き下げました。 #72876 (mor-akamai ).
多くの新機能の実現には、Iceberg メタデータに関連する部分のより良いコードのカプセル化と、より適切なコード抽象化が必要になります。 #72941 (Daniil Ivanik )。
JSON カラム値の等値比較をサポートしました。 #72991 (Pavel Kruglov ).
JSON サブカラムを含む識別子のフォーマットを改善し、不要なバッククォートが付かないようにしました。 #73085 (Pavel Kruglov ).
Test レベルのログに PREWHERE 条件を出力するようにしました。 #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 ).
論理和(disjunction)における共通式の抽出を改善しました。すべての論理和項に共通部分式が存在しない場合でも、結果のフィルター式を簡略化できるようにしました。#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 関数に NULL 引数が渡されたときに、無条件に NULL を返す(true の場合)か、それらを無視する(false の場合)かを制御する設定 least_greatest_legacy_null_behavior(デフォルト: false)を導入しました。 #73344 (Robert Schulze )。
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 )。
修飾子付きの照合ロケールを使用するとエラーが発生していたリグレッションを修正しました。例えば、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 )。
storage 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 ワイヤープロトコルでの 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 設定で制御できます。初期実装は #72996 の Braden Burns によるものです。#71590 をクローズします。#73847 (Alexey Milovidov )。
clickhouse-client と clickhouse-local は、ファイルからリダイレクトされた標準入力の圧縮方式を自動検出するようになりました。これにより #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(デフォルト 50ms)と output_format_pretty_squash_max_wait_ms(デフォルト 1000ms)で制御されます。これは #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 アドレスの後にゼロバイトが続いている場合に true を返していましたが、この場合は false を返すべきでした。#65387 の継続対応です。#73946 (Alexey Milovidov )。
MySQL ワイヤープロトコルにおけるエラーコードを MySQL と互換性のあるものにしました。#56831 の対応の続きです。#50957 をクローズしました。#73948 (Alexey Milovidov )。
IN や NOT IN などの演算子で使用される列挙型リテラルを、その列挙型定義と照らして検証し、リテラルが有効な列挙値でない場合に例外をスローする設定 validate_enum_literals_in_opearators を追加しました。 #73985 (Vladimir Cherkasov )。
Storage S3(Azure)Queue で、コミット設定によって定義される単一のバッチ内のすべてのファイルを、単一の Keeper トランザクションでコミットするようになりました。 #73991 (Kseniia Sumarokova ).
実行可能な UDF とディクショナリに対するヘッダー検出を無効化(Function 'X': wrong result, expected Y row(s), 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 ).
マテリアライズドビューの 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 No Content に変更。 #74170 (Michael Dempsey ).
ブラウザ上の JavaScript から X-ClickHouse 系 HTTP ヘッダーにアクセスできるようにしました。これにより、アプリケーションの開発がより行いやすくなります。 #74180 (Alexey Milovidov ).
JSONEachRowWithProgress フォーマットでは、メタデータ付きのイベントに加えて、totals と extremes も含まれます。さらに、rows_before_limit_at_least と rows_before_aggregation も含まれます。このフォーマットは、部分的な結果の後に例外が発生した場合でも、その例外を正しく出力します。進捗情報には経過ナノ秒が含まれるようになりました。処理の最後に、最終的な progress イベントが 1 回送出されます。クエリ実行中の progress は、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 でユーザー名だけでユーザーを認証できるようにしました(従来はパスワードの入力も必要でした)。 #74221 (Azat Khuzhin ).
代替クエリ言語である PRQL および KQL のサポートは、実験的機能としてマークされました。これらを使用するには、設定 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_mutations_ms と同様の新しい設定として、max_postpone_time_for_failed_replicated_fetches_ms、max_postpone_time_for_failed_replicated_merges_ms、max_postpone_time_for_failed_replicated_tasks_ms を追加しました。 #74576 (MikhailBurdukov ).
parallel_hash JOIN アルゴリズムにおける max_joined_block_size_rows 設定の扱いをより正確にしました。これにより、hash アルゴリズムと比較してメモリ消費量が増加してしまう事態を回避できます。 #74630 (Nikita Taranov ).
libhdfs3 の dfs.client.use.datanode.hostname 設定オプションのサポートを追加しました。 #74635 (Mikhail Tiukavkin )。
「Invalid: Codec 'snappy' doesn't support setting a compression level.」というエラーが発生する問題を修正しました。 #74659 (Arthur Passos ).
clickhouse-keeper とのクライアント通信にパスワードを使用できるようにしました。サーバーおよびクライアントに適切な SSL 構成を指定している場合、この機能はそれほど有用ではありませんが、一部のケースでは依然として有用な場合があります。パスワードは 16 文字を超えることはできません。Keeper Auth モデルとは関連していません。 #74673 (alesapin ).
バックアップの作成時にチェックサムを計算するために blob パスを使用できるようにしました。 #74729 (Vitaly Baranov ).
JOIN キーが両方のテーブルで PK の先頭部分(プレフィックス)になっている場合、JOIN に対して動的シャーディングを使用します。この最適化は query_plan_join_shard_by_pk_ranges 設定で有効化できます(デフォルトでは無効)。 #74733 (Nikolai Kochetov ).
config reloader にエラーコードを追加。 #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 プロトコルを再度有効化しました。カスタム pager の使用や server-logs-file の指定ができないよう、いくつかの重大な脆弱性を修正しました。デフォルトでは、環境変数経由でクライアントオプションを渡す機能を無効にしました(config.xml の ssh-server.enable_client_options_passing により、引き続き有効化することは可能です)。progress テーブル、クエリのキャンセル、補完、profile events の進捗表示、stdin および send_logs_level オプションをサポートしました。これにより次の Issue がクローズされました: #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 )。
PostgreSQL ワイヤプロトコルにおいてプリペアドステートメントをサポートしました。 #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 log がフラッシュに失敗した回数を計測する 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_commit 設定で有効化できます。リクエストの前処理時には引き続きダイジェストが計算されます。#75490 (Antonio Andelic )。
可能な場合、JOIN の ON 句に含まれるフィルター式をプッシュダウンするようにしました。 #75536 (Vladimir Cherkasov ).
構文エラー時のエラーメッセージを改善しました。以前は、クエリが大きすぎて、長さが上限を超えるトークンが非常に長い文字列リテラルだった場合、その原因を説明するメッセージが、この非常に長いトークンの 2 つの例の間に埋もれて失われていました。エラーメッセージ内で UTF-8 文字を含むクエリが誤って途中で切り詰められる問題を修正しました。クエリ断片が過剰に引用符で囲まれてしまう問題を修正しました。これにより #75473 がクローズされました。#75561 (Alexey Milovidov )。
ストレージ S3(Azure)Queue に ProfileEvents を追加。#75618 (Kseniia Sumarokova )。
互換性維持のため、サーバーからクライアントへの設定送信機能(send_settings_to_client=false)を無効化しました(この機能は、使い勝手向上のため後にクライアント側の設定として再実装される予定です)。 #75648 (Michael Kolupaev ).
バックグラウンドスレッドで定期的に読み取られる別ソースからの情報を用いて、内部メモリトラッカーの値を補正できるようにする設定 memory_worker_correct_memory_tracker を追加しました。 #75714 (Antonio Andelic ).
PrometheusRemoteReadProtocol で Analyzer を使用するようにしました。 #75729 (Dmitry Novik )。
ゲージ型およびカウンター型のメトリクスには対応していますが、一部のメトリクス(例: Keeper へのリクエストの応答時間)には不十分なため、ヒストグラム型メトリクスへの対応が必要です。インターフェイスは Prometheus クライアントと非常によく似ており、値に対応するバケット内のカウンターを増加させるには、単に observe(value) を呼び出します。ヒストグラムメトリクスは system.histogram_metrics を通じて公開されます。 #75736 (Miсhael Stetsyuk )。
system.processes に normalized_query_hash カラムを追加しました。注記: normalizedQueryHash 関数を使えばその場で容易に計算できますが、後続の変更に備えるためにこのカラムが必要です。 #75756 (Alexey Milovidov ).
system.tables をクエリしても、既に存在しないデータベース上に作成された Merge テーブルがあっても例外はスローされません。Hive テーブルからは getTotalRows メソッドを削除しました。Hive テーブルでは複雑な処理を行うことを許可していないためです。 #75772 (Alexey Milovidov ).
Web UI にインタラクティブなデータベースナビゲーション機能が追加されました。 #75777 (Alexey Milovidov ).
ストレージポリシーで読み取り専用ディスクと読み書き可能ディスクを(複数ボリュームまたは複数ディスクとして)組み合わせて使用できるようにしました。これにより、ボリューム全体からデータを読み取ることができる一方で、挿入処理は書き込み可能なディスクが優先されます(いわゆる Copy-on-Write ストレージポリシー)。 #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 による補正が行われていない内部グローバルメモリトラッカーの値を示す MemoryTrackingUncorrected メトリクスを追加。 #75935 (Antonio Andelic ).
MergeTree でカラムとインデックスのサイズを遅延して計算するように変更しました。 #75938 (Pavel Kruglov ).
出力列が左テーブルにのみ依存している場合に join を in サブクエリへ変換する最適化を追加。ただし最初に一意性を確保するステップが必要なため、そのステップが後で追加されるまではデフォルトでは無効となっている。#75942 (Shichao Jin )。
サーバー設定 throw_on_unknown_workload を追加しました。この設定により、workload 設定に未知の値が指定されたクエリに対して、無制限のアクセスを許可する(デフォルト)か、RESOURCE_ACCESS_DENIED エラーをスローするかの挙動を選択できます。すべてのクエリで workload スケジューリングの利用を必須にしたい場合に有用です。 #75999 (Sergei Trifonov )。
新しい実験的な Kafka テーブルエンジンが Keeper の機能フラグを完全に考慮するようにしました。 #76004 (János Benjamin Antal )。
不要な場合は ARRAY JOIN 内でサブカラムを getSubcolumn に書き換えないようにしました。 #76018 (Pavel Kruglov ).
テーブル読み込み時のコーディネーションエラーを再試行。 #76020 (Alexander Tokmakov ).
system.warnings テーブルを改良し、追加・更新・削除が可能な動的な警告メッセージをいくつか追加。 #76029 (Bharat Nallan ).
SYSTEM FLUSH LOGS でログを個別にフラッシュできるようになりました。 #76132 (Raúl Marín )。
/binary サーバーのページを改善しました。Morton 曲線の代わりに Hilbert 曲線を使用するようにしました。正方形内に 512 MB 分のアドレスを表示し、正方形をよりよく埋められるようにしました(以前のバージョンでは、アドレスは正方形の半分のみを埋めていました)。関数名ではなくライブラリ名に近いアドレスを優先して色分けするようにしました。領域外へ少し多めにスクロールできるようにしました。#76192 (Alexey Milovidov )。
このPRにより、ALTER USER user1 ADD PROFILES a, DROP ALL PROFILES というクエリは実行できなくなりました。すべての DROP 操作は文中で先に記述されていなければならないためです。 #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 ).
読み取り専用 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 テーブルのシャットダウンシーケンスを改善することで、テーブル削除時やサーバー再起動時の遅延を軽減しました。engine=Kafka は、テーブルが削除された際にコンシューマグループから明示的に離脱しないようになりました。その代わり、コンシューマは非アクティブ状態が 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 )。
以前は DatabaseReplicated が、クエリで指定された認証情報をログに出力してしまうことがありました。この動作は修正されました。これにより次の問題が解決されました: #77123 。#77133 (Nikita Mikhaylov )。
zstd を 1.5.5 から 1.5.7 に更新しました。1.5.7 には かなりのパフォーマンス改善 が含まれています。#77137 (Pradeep Chhetri )。
plain_rewritable ディスクで ALTER TABLE DROP PARTITION ができるようになりました。 #77138 (Julia Kartseva ).
ゼロコピー レプリケーションの場合に、マージ/ミューテーション実行前にパーツのサイズとは無関係に最大で 500ms の範囲でランダムに待機できる機能を追加しました。 #77165 (Alexey Katsman ).
TRUNCATE を INTO OUTFILE と併用した場合にアトミックなリネームをサポートするようにしました。#70323 を解決しました。#77181 (Onkar Deshpande )。
PostgreSQL の CHARACTER、CHAR および BPCHAR 型に対して FixedString を使用するようにしました。 #77304 (Pablo Marcos ).
Iceberg 用のストレージ / テーブル関数設定 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 ネイティブコピーを試み、その後必要に応じて読み取り+書き込み方式にフォールバックします。異なる場合は、最初から読み取り+書き込み方式を使用します。 #77401 (Vitaly Baranov )。
plain_rewritable ディスクに対する ALTER TABLE ... ATTACH|DETACH|MOVE|REPLACE PARTITION のサポートを追加。 #77406 (Julia Kartseva ).
インデックスキャッシュをスキップする変更を元に戻しました。 #77447 (Nikita Mikhaylov ).
Wide parts における JSON カラムのプリフェッチ時のメモリ使用量を削減しました。#77640 (Pavel Kruglov )。
DeltaLake テーブルエンジン用 delta kernel で、AWS セッショントークンおよび環境変数ベースのクレデンシャルの利用をサポートしました。 #77661 (Kseniia Sumarokova ).
additional_table_filters 設定内でクエリパラメータをサポートするようにしました。この変更により、次のクエリは成功するようになります。 #77680 (wxybear )。
ユーザー定義関数 (UDF) を、その XML 定義内の新しいタグによって決定的 (deterministic) とマークできるようになりました。また、クエリキャッシュは、クエリ内で呼び出される UDF が決定的かどうかを確認するようになりました。決定的であれば、そのクエリ結果をキャッシュします。(Issue #59988 )。#77769 (Jimmy Aguilar Mena )。
Buffer テーブルエンジンのパラメータ検証機能を追加しました。 #77840 (Pervakov Grigorii ).
enable_hdfs_pread の設定項目を追加し、hdfs の pread を有効または無効にできるようにしました。 #77885 (kevinyhzou )。
ZooKeeper の「multi」読み取り/書き込みリクエスト数に関するプロファイルイベントを追加。 #77888 (JackyWoo ).
disable_insertion_and_mutation が有効な場合でも、一時テーブルの作成とデータ挿入を許可します。 #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 構文における年のパースを修正しました。 #77973 (李扬 ).
MergeTree テーブルのパーツのアタッチ処理はブロック順に行われます。これは 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 )。
S3 のパススタイルでキーが指定されていない場合に誤って URI をパースしていた問題を修正しました。 #78185 (Arthur Passos ).
BlockActiveTime、BlockDiscardTime、BlockWriteTime、BlockQueueTime、BlockReadTime の非同期メトリクスで、値が誤って 1 秒が 0.001 と報告されていた問題を修正。#78211 (filimonov )。
StorageS3(Azure)Queue 向けにマテリアライズドビューへプッシュする際のエラーに対して、loading_retries の制限を適用するようにしました。それ以前は、そのようなエラーは無制限に再試行されていました。 #78313 (Kseniia Sumarokova ).
delta-kernel-rs 実装を用いた StorageDeltaLake において、パフォーマンスおよびプログレスバー表示を修正しました。 #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 ).
長時間実行中の mutation に対する動的な警告を 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 )。
disk= が設定されている場合、他ディスク上の MergeTree パーツをチェックしないようにしました。 #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 ).
非同期分散 INSERT で保留バッチの処理中にハングしてしまう問題を修正(例:No such file or directory が原因)。 #72939 (Azat Khuzhin ).
Azure SAS トークンのサポートを追加。 #72959 (Azat Khuzhin ).
formatDateTime スカラー関数における正のタイムゾーンの書式処理を修正しました。 #73091 (ollidraese ).
PROXYv1 経由で接続が行われ、auth_use_forwarded_address が設定されている場合に、ソースポートが正しく反映されるように修正しました。以前はプロキシのポート番号が誤って使用されていました。currentQueryID() 関数を追加しました。 #73095 (Yakov Olkhovskiy ).
TCPHandler でフォーマット設定を NativeWriter に伝播させ、output_format_native_write_json_as_string のような設定が正しく適用されるようにしました。#73179 (Pavel Kruglov )。
誤ったプレフィックスで JSON サブオブジェクトのサブカラムを読み取ってしまう問題を修正。 #73182 (Pavel Kruglov ).
StorageObjectStorageQueue で発生していたクラッシュを修正。 #73274 (Kseniia Sumarokova ).
サーバーシャットダウン中にまれに発生していた、リフレッシュ可能なマテリアライズドビューのクラッシュを修正しました。 #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 列に対する squash 処理の準備ロジックを修正しました。以前は、型やパスの上限に達していない場合でも、一部のケースで shared variant/shared data に新しい型を挿入できてしまうことがありました。 #73388 (Pavel Kruglov ).
型のバイナリデコード時に不正なサイズをチェックし、過大なメモリアロケーションを回避するようにしました。 #73390 (Pavel Kruglov ).
並列レプリカを有効にした単一レプリカのクラスタからの読み取り時に発生していた論理エラーを修正しました。 #73403 (Michael Kolupaev ).
ZooKeeper および旧バージョンの Keeper 使用時の ObjectStorageQueue の不具合を修正。 #73420 (Antonio Andelic ).
Hive パーティショニングをデフォルトで有効化するために必要な修正を実装。#73479 (Yarik Briukhovetskyi )。
ベクトル類似インデックス作成時のデータレースを修正。 #73517 (Antonio Andelic ).
辞書のソースに誤ったデータを持つ関数が含まれている場合に発生していたセグメンテーションフォルトを修正しました。 #73535 (Yarik Briukhovetskyi )。
storage S3(Azure)Queue での insert 失敗時の再試行処理を修正。#70951 をクローズ。#73546 (Kseniia Sumarokova )。
関数 tupleElement において、LowCardinality 要素を持つタプルで設定 optimize_functions_to_subcolumns が有効な場合に特定のケースで発生していた不具合を修正しました。 #73548 (Anton Popov ).
enum glob の後に range one が続く場合のパースを修正。#73473 に対応。#73569 (Konstantin Bogdanov )。
非レプリケートなテーブルのサブクエリにおいて parallel_replicas_for_non_replicated_merge_tree が無視されていた問題を修正。 #73584 (Igor Nikonov ).
タスクをスケジュールできなかった場合にスローされる std::logical_error の修正。ストレステスト中に発見。スタックトレースの例: 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 サポートが動作していなかった問題)を修正。#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 フォーマットの設定が正しく伝播されるように修正しました。 #73924 (Pavel Kruglov ).
暗黙的な権限の挙動を修正(以前はワイルドカードとして動作していた)。 #73932 (Azat Khuzhin ).
ネストされた Maps の作成時における高いメモリ使用量を修正。 #73982 (Pavel Kruglov ).
空のキーを含むネストされた JSON のパースを修正。 #73993 (Pavel Kruglov ).
修正: 別のエイリアスから参照され、逆順で選択された場合にエイリアスがプロジェクションに追加されないことがある問題を修正しました。 #74033 (Yakov Olkhovskiy ).
plain_rewritable メタデータを使用するディスクは、複数のサーバーインスタンスで共有できます。あるインスタンスがメタデータオブジェクトを読み込んでいる間に、別のインスタンスがそれを変更することが想定されています。S3 に対して実装されている動作と同様に、Azure Storage で plain_rewritable を初期化する際には、オブジェクトが見つからないエラーは無視されます。 #74059 (Julia Kartseva )。
Enum 型および空テーブルにおける any と anyLast の動作を修正。 #74061 (Joanna Hulboj ).
ユーザーが Kafka テーブルエンジンでキーワード引数を指定した場合に発生する不具合を修正しました。 #74064 (Yarik Briukhovetskyi )。
Storage S3Queue の設定を、s3queue_ プレフィックスあり/なしの間で切り替える際に正しく動作するよう修正。 #74075 (Kseniia Sumarokova ).
設定 allow_push_predicate_ast_for_distributed_subqueries を追加しました。これにより、analyzer を用いた分散クエリで 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 を使用することはできなくなりました。この組み合わせが原因で、以前はセグメンテーションフォルトが発生していました。#74137 (Yarik Briukhovetskyi )。
PostgreSQL および SQLite の table 関数において SQL インジェクションが発生するセキュリティ上の問題を修正。 #74144 (Pablo Marcos ).
圧縮された Memory エンジンテーブルからサブカラムを読み取る際に発生していたクラッシュを修正。#74009 の不具合を解消。#74161 (Nikita Taranov )。
system.detached_tables へのクエリで発生していた無限ループを修正しました。 #74190 (Konstantin Morozov )。
ファイルを失敗としてマークする際の s3queue における論理エラーを修正。 #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 上でのネイティブコピー処理における「JSON API で Rewrite メソッドを使用する」ことの検出ロジックを修正しました。 #74338 (Azat Khuzhin ).
Interval を挿入する際にクラッシュする問題を修正しました (issue #74299 ). #74478 (NamNguyenHoai ).
count(nullable) が集計プロジェクションで使用されている場合に、プロジェクション解析が誤った結果になる問題を修正しました。これにより、#74495 が修正されます。この PR では、プロジェクションがなぜ使用されるのか/使用されないのかを明確にするために、プロジェクション解析に関するログもいくつか追加しています。 #74498 (Amos Bird ).
BackgroundMergesAndMutationsPoolSize の誤った計算を修正(実際の値の 2 倍になっていた)。#74509 (alesapin )。
Cluster Discovery を有効にした際に keeper の watch がリークするバグを修正しました。 #74521 (RinChanNOW ).
定数 JSON リテラルのフォーマットを修正しました。以前は、クエリを別のサーバーに送信した際に構文エラーを引き起こす可能性がありました。 #74533 (Pavel Kruglov )。
UBSan によって報告されたメモリアラインメントに関する問題を修正しました #74512 。#74534 (Arthur Passos )。
テーブル作成中の KeeperMap の並行クリーンアップ処理を修正。 #74568 (Antonio Andelic ).
EXCEPT または INTERSECT が存在する場合、クエリ結果の正しさを保つために、サブクエリ内の未使用の投影列を削除しないようにしました。 #73930 および #66465 の問題を修正。 #74577 (Dmitry Novik )。
暗黙的プロジェクションを有効にした状態で定数パーティション式を使用した場合に、CREATE クエリが不正になる問題を修正しました。これにより #74596 が修正されます。 #74634 (Amos Bird )。
Tuple 列を持ち、スパースシリアライゼーションを有効にしているテーブル間での INSERT SELECT クエリを修正しました。 #74698 (Anton Popov ).
関数 right が負の定数オフセットに対して正しく動作していませんでした。 #74701 (Daniil Ivanik ).
クライアント側での不正な解凍処理が原因で、gzip圧縮されたデータの挿入が失敗することがある問題を修正。 #74707 (siyuan ).
例外により INSERT が終了した後でも、接続が異常な状態のまま残らないようにしました。 #74740 (Azat Khuzhin ).
中間状態のまま残っている接続を再利用しないようにしました。 #74749 (Azat Khuzhin ).
ワイルドカードを含む権限付与に対する部分的な権限の取り消しで、想定より多くの権限が削除されてしまう可能性がある問題を修正しました。#74263 をクローズ。#74751 (pufit ).
JSON 型宣言の解析中に、型名が大文字でない場合にクラッシュする問題を修正。 #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 ).
BACKUP および RESTORE 操作において query_log の used_privileges および missing_privileges フィールドが記録されていなかった問題を修正。 #74887 (Alexey Katsman ).
Azure Blob Storage 上の空の列を含むテーブルでのデータパーツのマージ中に発生していた FILE_DOESNT_EXIST エラーを修正しました。 #74892 (Julia Kartseva ).
一時テーブル結合時のプロジェクション列名を修正し、#68872 をクローズしました。#74897 (Vladimir Cherkasov )。
HDFS の SELECT リクエスト中に SASL エラーが発生した場合に、Kerberos チケットをリフレッシュするようにしました。 #74930 (inv2004 ).
startup_scripts 内の Replicated データベースに対するクエリを修正。 #74942 (Azat Khuzhin ).
null セーフな比較が使用されている場合に、JOIN ON 句内の型エイリアスが適用された式に関する問題を修正しました。 #74970 (Vladimir Cherkasov ).
削除処理が失敗した場合、パーツの状態を削除中から古い状態に戻すようにしました。 #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 実行時の例外発生後に、クライアント側で接続が不正な状態のまま残る問題を修正。 #75030 (Azat Khuzhin ).
PSQL レプリケーションでの未処理の例外により発生していたクラッシュを修正。 #75062 (Azat Khuzhin ).
SASL により任意の RPC 呼び出しが失敗する可能性があり、krb5 チケットの有効期限が切れている場合に呼び出しを再試行できるよう修正しました。 #75063 (inv2004 ).
optimize_function_to_subcolumns 設定が有効な場合に、Array、Map、Nullable(..) カラムに対するインデックス(プライマリおよびセカンダリ)が正しく使用されるように修正しました。以前は、これらのカラム向けインデックスが無視されることがありました。 #75081 (Anton Popov ).
内部テーブルを持つマテリアライズドビューを作成する場合は、そのようにフラット化されたカラムを使用できなくなるため、flatten_nested を無効にしてください。 #75085 (Christoph Wurm ).
一部の IPv6 アドレス(::ffff:1.1.1.1 など)が forwarded_for フィールドで誤って解釈され、その結果クライアント接続が切断され例外が発生していた問題を修正。 #75133 (Yakov Olkhovskiy )。
LowCardinality の Nullable データ型に対する NULL セーフ JOIN の処理を修正しました。以前は、IS NOT DISTINCT FROM、<=>、a IS NULL AND b IS NULL OR a == b といった NULL セーフな比較を用いた JOIN の ON 句が、LowCardinality 列で正しく動作していませんでした。#75143 (Vladimir Cherkasov )。
新しいアナライザーで、未使用の補間を含むクエリの問題を修正しました。 #75173 (János Benjamin Antal ).
CTE と INSERT の組み合わせで発生するクラッシュバグを修正。 #75188 (Shichao Jin ).
Keeper の修正: ログをロールバックする際に破損したチェンジログに書き込まないようにしました。 #75197 (Antonio Andelic ).
適切な箇所では BFloat16 をスーパータイプとして使用するようにしました。これにより次の Issue がクローズされました: #74404 。#75236 (Nikita Mikhaylov )。
any_join_distinct_right_table_keys と JOIN ON 句での OR を使用した場合に、結合結果に予期しないデフォルト値が含まれる問題を修正。 #75262 (Vladimir Cherkasov )。
azureblobstorage テーブルエンジンの認証情報をマスクするようにしました。 #75319 (Garrett Thomas ).
ClickHouse が PostgreSQL、MySQL、SQLite などの外部データベースに対して誤ってフィルタープッシュダウンを行ってしまうことがある不具合を修正しました。これにより次の Issue が解決されました: #71423 . #75320 (Nikita Mikhaylov ).
Protobuf 形式での出力中に、並列クエリ SYSTEM DROP FORMAT SCHEMA CACHE によって発生する可能性のあった Protobuf スキーマキャッシュのクラッシュを修正しました。 #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 ).
マテリアライズドビューが URL エンジンに書き込みを行う際に接続障害が発生している場合に、materialized_views_ignore_errors 設定が正しく適用されるようにしました。#75679 (Christoph Wurm )。
異なる型を持つカラム間で alter_sync = 0 の複数の非同期な RENAME クエリを実行した後に、MergeTree テーブルから読み込む際にまれに発生していたクラッシュを修正しました。 #75693 (Anton Popov ).
一部の UNION ALL を含むクエリで Block structure mismatch in QueryPipeline stream エラーが発生する問題を修正しました。 #75715 (Nikolai Kochetov ).
PK 列を ALTER ... MODIFY で変更した際に、その列を PK として使用している projection を再構築するようにしました。以前は、projection の PK に使用されている列を ALTER ... MODIFY した後に SELECT を実行すると、CANNOT_READ_ALL_DATA エラーが発生する可能性がありました。#75720 (Pavel Kruglov )。
スカラーサブクエリに対する ARRAY JOIN で誤った結果が返される問題を修正(analyzer 使用時)。#75732 (Nikolai Kochetov )。
DistinctSortedStreamTransform におけるヌルポインタ参照の問題を修正しました。 #75734 (Nikita Taranov )。
allow_suspicious_ttl_expressions の挙動を修正しました。 #75771 (Aleksei Filatov )。
関数 translate における未初期化メモリの読み取りを修正。これにより #75592 が解決されます。#75794 (Alexey Milovidov )。
Native フォーマットにおいて、フォーマット設定を JSON にも文字列フォーマットとして伝播するようにしました。 #75832 (Pavel Kruglov ).
設定変更履歴に、v24.12 でハッシュ結合アルゴリズムの並列実行をデフォルトで有効化したことを記録しました。これにより、互換レベルに v24.12 より古いバージョンが設定されている場合、ClickHouse は引き続き非並列のハッシュ結合を使用します。 #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 認証を要求しないようにしました。Closes #76319 。#76637 (Alexey Milovidov )。
分散テーブルでブール値リテラルを選択する際に発生していた THERE_IS_NO_COLUMN 例外を修正しました。 #76656 (Yakov Olkhovskiy ).
テーブルディレクトリ内のサブパスが、より高度な方法で選択されるようになりました。 #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 )。テーブル関数を使用する場合の MongoDB への WHERE 句のプッシュダウンを修正しました(#72210 )。MongoDB のバイナリ UUID が ClickHouse の UUID にのみ変換されるように、MongoDB - ClickHouse の型マッピングを変更しました。これにより、将来のあいまいさや予期せぬ挙動を回避できます。OID マッピングを修正し、後方互換性を維持しました。#76762 (Kirill Nikiforov )。
JSON サブカラムのプレフィックス並列デシリアライズにおける例外処理を修正。 #76809 (Pavel Kruglov )。
負の整数に対する lgamma 関数の動作を修正。#76840 (Ilya Kataev )。
明示的に定義された primary key に対する reverse key 解析を修正しました。#76654 と同様の問題です。#76846 (Amos Bird )。
JSON 形式における bool 値の整形表示を修正しました。 #76905 (Pavel Kruglov ).
非同期インサート中のエラー時に、JSON 列の不正なロールバックによりクラッシュが発生しうる問題を修正。 #76908 (Pavel Kruglov ).
以前は、multi_if がプランニング時と本実行時で異なる型のカラムを返す場合がありました。これにより、C++ の観点からは未定義動作となるコードが生成される原因になっていました。#76914 (Nikita Taranov )。
MergeTree における定数 Nullable キーのシリアル化の不具合を修正しました。これにより #76939 が解決されます。#76985 (Amos Bird )。
BFloat16 値のソートを修正しました。これにより #75487 および #75669 がクローズされます。 #77000 (Alexey Milovidov )。
パーツの整合性チェックでエフェメラルなサブカラムをスキップするチェックを追加し、variant サブカラムを含む JSON に関するバグを修正しました。 #72187 。 #77034 (Smita Kulkarni )。
型不一致がある場合に Values フォーマットでテンプレートをパースするとクラッシュしていた問題を修正しました。 #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 ).
アナライザでリテラルを含む式を使う skip index が正しく動作しない問題を修正し、インデックス解析時に自明なキャストを除去しました。 #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 要素を含むタプルと文字列の比較時の挙動を修正しました。例として、この変更前はタプル (1, null) と文字列 '(1,null)' の比較でエラーが発生していました。別の例としては、a が Nullable カラムであるタプル (1, a) と文字列 '(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 がエラー NOT_FOUND_COLUMN_IN_BLOCK で失敗することがありました。INTERPOLATE 式に対して計算される DAG の不整合に関連して、同様の問題が発生していました。 #77343 (Yakov Olkhovskiy ).
差し戻しました。 #77390 (Vladimir Cherkasov ).
NATS サーバーから、対応する MV のないメッセージを受信していた問題を修正しました。 #77392 (Dmitry Novikov ).
merge テーブル関数経由で空の FileLog から読み取る際の論理エラーを修正し、#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 ).
'Avoid toAST() in execution of scalar subqueries' をリバート。 #77584 (Raúl Marín ).
ローカルディスク上にテーブルデータのパスが存在するかどうかのチェックを修正。 #77608 (Tuan Pham Anh )。
クエリキャッシュは、UDF を非決定的であるとみなすようになりました。そのため、UDF を含むクエリの結果はキャッシュされなくなりました。以前は、結果が誤ってキャッシュされてしまう非決定的な UDF をユーザーが定義できていました(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 における期限切れのコンテキストが原因で発生するクラッシュを修正。 #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 ).
(skim を必要とするため)SSH サーバーにおける履歴のファジー検索を無効化しました。 #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 の origin 引数が 0 の場合に発生するバグを修正。 #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* 関数は、max_size 引数に Int 型の 0 値が指定された場合に、そのまま実行を試みるのではなく、既に UInt 型の 0 値に対して行われているように、BAD_ARGUMENTS エラーを発生させるようになりました。#78140 (Eduard Karacharov ).
ローカルテーブルがデタッチされる前に削除されていた場合に recoverLostReplica がクラッシュしないようにしました。 #78173 (Raúl Marín ).
system.s3_queue_settings の「alterable」カラムが常に false を返していた問題を修正。 #78187 (Kseniia Sumarokova ).
Azure のアクセスシグネチャがユーザーからもログ上でも見えないようにマスクしました。 #78189 (Kseniia Sumarokova ).
Wide parts におけるプレフィックスを持つサブストリームのプリフェッチを修正。 #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 ).
Distributed エンジンのテーブルで FINAL 修飾子が失われる可能性がありました。#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 ).
ストレージ S3Queue で発生していた論理エラー「Cannot unregister: table uuid is not registered」を修正しました。#78285 をクローズしました。 #78541 (Kseniia Sumarokova ).
ClickHouse は、cgroup v1 および v2 の両方が有効になっているシステムで、自身が属する cgroup v2 を特定できるようになりました。 #78566 (Grigory Korolev ).
ObjectStorage クラスター向けテーブル関数が、テーブルレベルの設定と併用した場合に失敗していた問題を修正しました。 #78587 (Daniil Ivanik )。
INSERT におけるトランザクションに対するより厳密なチェックは、ReplicatedMergeTree ではサポートされていません。 #78633 (Azat Khuzhin )。
アタッチ時にクエリ設定を適用。#78637 (Raúl Marín )。
iceberg_metadata_file_path に無効なパスが指定されたときのクラッシュを修正しました。 #78688 (alesapin ).
delta-kernel 実装を使用する DeltaLake テーブルエンジンにおいて、読み取りスキーマがテーブルスキーマと異なり、かつパーティション列が存在する場合に「列が見つかりません」エラーが発生する問題を修正しました。 #78690 (Kseniia Sumarokova ).
このアップデートでは、同じ名前を持つセッションにおいて、古いセッションのタイムアウトがまだ有効なうちに新しい名前付きセッションを作成すると、新しいセッションが古いセッションの予定終了時刻に誤ってクローズされてしまう不具合を修正します。 #78698 (Alexey Katsman )。
CHECK TABLE の実行中にテーブルのシャットダウンをブロックしないようにしました。 #78782 (Raúl Marín ).
Keeper の修正: すべてのケースでの ephemeral ノード数のカウントを修正。 #78799 (Antonio Andelic ).
view() 以外のテーブル関数を使用している場合に StorageDistributed で発生する不適切なキャストを修正しました。#78464 をクローズしました。#78828 (Konstantin Bogdanov )。
tupleElement(*, 1) の書式を修正し、#78639 をクローズ。#78832 (Konstantin Bogdanov )。
ssd_cache 型の辞書は、0 または負の値の block_size および write_buffer_size パラメータを拒否するようになりました(issue #78314 )。#78854 (Elmi Ahmadov )。
異常終了後に ALTER を行った場合に REFRESHABLE MV がクラッシュする問題を修正。 #78858 (Azat Khuzhin ).
CSV フォーマットでの不正な DateTime 値の解析を修正しました。 #78919 (Pavel Kruglov ).
ビルド/テスト/パッケージングの改善