Cloud 向け v25.8 の変更履歴
後方互換性を損なう変更
JSON およびデータ形式の変更
- JSON フォーマットで、64 ビット整数をデフォルトでクォートしないようにしました。 #74079 (Pavel Kruglov).
- JSON 内で異なる型の値を要素に持つ配列について、名前なしの
TupleではなくArray(Dynamic)を推論するようにしました。以前の動作を使用するには、input_format_json_infer_array_of_dynamic_from_array_of_different_types設定を無効にしてください。 #80859 (Pavel Kruglov). - Parquet 出力フォーマットでは、
Enum型の値をデフォルトで、論理型ENUMを持つBYTE_ARRAYとして書き出すようにしました。 #84169 (Pavel Kruglov).
ストレージとパーティション
- hive パーティションスタイルでの書き込みをサポートし、読み取り実装をリファクタリングしました(hive パーティションカラムはもはや仮想ではありません)。#76802(Arthur Passos)。
- MergeTree の設定
write_marks_for_substreams_in_compact_partsをデフォルトで有効にしました。これにより、新たに作成された Compact パーツからのサブカラム読み取りのパフォーマンスが大幅に向上します。バージョン 25.5 未満のサーバーは、新しい Compact パーツを読み取ることができません。#84171(Pavel Kruglov)。 - SummingMergeTree において、集計対象カラムとして明示的に列挙されているカラムを含む
RENAME COLUMNまたはDROP COLUMNを禁止しました。#81836 をクローズします。#82821(Alexey Milovidov)。
関数の拡張
extractKeyValuePairs関数に、新しい引数unexpected_quoting_character_strategyを追加しました。この引数は、quoting_characterが想定外に検出された場合の動作を制御します。詳細については、extractKeyValuePairsのドキュメントを参照してください。 #80657 (Arthur Passos)。- 以前は、
countMatches関数は、パターンが空マッチを許容していても、最初の空マッチが発生した時点でカウントを停止していました。この問題を解決するため、countMatchesは空マッチが発生した場合に 1 文字分だけ位置を進めて実行を継続するようになりました。従来の動作を維持したいユーザーは、SETTINGcount_matches_stop_at_empty_matchを有効にできます。 #81676 (Elmi Ahmadov)。
データ型の改善
DecimalからFloat32への変換精度を改善し、DecimalからBFloat16への変換を実装しました。#82660 をクローズします。#82823(Alexey Milovidov)。
パフォーマンスとリソース管理
- これまで、
BACKUPクエリ、マージ、ミューテーションはローカルトラフィック(max_local_read_bandwidth_for_serverとmax_local_write_bandwidth_for_server)およびリモートトラフィック(max_remote_read_network_bandwidth_for_serverとmax_remote_write_network_bandwidth_for_server)向けのサーバー全体のスロットリングは使用せず、専用のサーバー設定(max_backup_bandwidth_for_server、max_mutations_bandwidth_for_server、max_merges_bandwidth_for_server)によるスロットリングのみが行われていました。現在は、両方の種類のスロットリングが同時に適用されます。 #81753 (Sergei Trifonov)。 - 新しい設定
cluster_function_process_archive_on_multiple_nodesを追加しました。これは、デフォルトでtrueに設定されている場合に、クラスタ関数内でアーカイブを処理する際のパフォーマンスを向上させます。以前のバージョンでアーカイブ付きのクラスタ関数を使用している場合、25.7+ へのアップグレード時の互換性確保およびエラー回避のためにはfalseに設定する必要があります。 #82355 (Kseniia Sumarokova)。 - 以前の
concurrent_threads_schedulerのデフォルト値はround_robinでしたが、これは多数の単一スレッドのクエリ(例:INSERT)が存在する場合に不公平であることが分かりました。この変更により、より安全な代替であるfair_round_robinスケジューラがデフォルトになります。 #84747 (Sergei Trifonov)。 - 遅延マテリアライゼーションは、問題が発生する可能性のある(たとえば条件内で
indexHint()を使用する場合など)アナライザなしでの運用を避けるため、アナライザ有効時にのみ有効になります。 #83791 (Igor Nikonov)。
スキーマと SQL 構文
- 挿入可能なカラムを持たないテーブルの作成を禁止しました。 #81835 (Pervakov Grigorii).
- デフォルト式内でドットを含む識別子について、それらが複合識別子として解釈されるのを防ぐため、バッククォートで囲むことを必須にしました。 #83162 (Pervakov Grigorii).
- PostgreSQL 形式の heredoc 構文
$tag$ string contents... $tag$(いわゆるドルクォートされた文字列リテラル)をサポートしました。以前のバージョンでは、タグに対する制約が少なく、句読点や空白を含む任意の文字を使用できました。その結果、ドル記号で始まる識別子とも解釈できる構文上の曖昧さが生じていました。一方で、PostgreSQL ではタグには単語構成文字のみが許可されています。この問題を解決するため、heredoc のタグについても単語構成文字のみを使用できるように制限しました。 #84731 をクローズしました。 #84846 (Alexey Milovidov).
セキュリティと権限
SYSTEM RESTART REPLICASは、ユーザーがSHOW TABLESの権限を持つデータベース内のレプリカのみを再起動します。以前は、このクエリは、アクセス権のない Lazy データベース内のテーブルが同時に削除されている最中であっても、それらのテーブルを起動していました。 #83321 (Alexey Milovidov).- 関数
azureBlobStorage、deltaLakeAzure、icebergAzureが更新され、AZURE権限を正しく検証するようになりました。すべてのクラスタ版関数(-Cluster関数)は、対応する非クラスタ版関数と同じ権限検証を行うようになりました。権限エラーを防ぐため、-Cluster関数を呼び出すユーザーに適切な権限(例:GRANT S3 ON *.* TO user)が付与されていることを確認してください。さらに、icebergLocalおよびdeltaLakeLocal関数は、FILE権限チェックを強制するようになりました。 #84938 ([Nikita Mikhaylov](https://github.com/nikitamikhaylov
新機能
データ型
- 新しいデータ型
Time([H]HH:MM:SS)およびTime64([H]HH:MM:SS[.fractional])を追加し、これらと他のデータ型との変換・連携のための基本的なキャスト関数および関数をいくつか追加しました。レガシー関数ToTimeとの互換性を確保するための設定を追加しました。#81217 (Yarik Briukhovetskyi)。
関数
NumericIndexedVectorを追加しました。これは、ビットスライスされた Roaring Bitmap 圧縮を基盤とする新しいベクトルデータ構造であり、ベクトルの構築・解析・要素ごとの算術演算のための 20 個以上の関数を備えています。疎なデータに対するストレージ使用量を削減し、結合・フィルタ・集約を高速化できます。#70582 および T. Xiong および Y. Wang による VLDB 2024 の論文「Large-Scale Metric Computation in Online Controlled Experiment Platform」(https://arxiv.org/abs/2405.08411) を実装しています。 #74193 (FriendLey)。- 財務関数を追加:
financialInternalRateOfReturnExtended(XIRR)、financialInternalRateOfReturn(IRR)、financialNetPresentValueExtended(XNPV)、financialNetPresentValue(NPV)。#81599(Joanna Hulboj)。 - 2 つのポリゴンが交差しているかを判定する地理空間関数
polygonIntersectsCartesianおよびpolygonIntersectsSphericalを追加しました。 #81882 (Paul Lamb) - ウィンドウ関数
lagおよびleadをサポートしました。#9887 をクローズ。#82108(Dmitry Novik)。 - sRGB と OkLCH の各色空間の間で色を相互変換するための関数
colorSRGBToOkLCHおよびcolorOkLCHToSRGBを追加しました。 #83679 (Fgrtue). - ユーザーは、
JSONExtractCaseInsensitive(およびJSONExtractのその他のバリアント)を使用して、大文字と小文字を区別しない JSON キー検索を行えるようになりました。#83770(Alistair Evans)。 - 新しい関数
nowInBlock64を追加。 #84178 (Halersson Paris)。 - DateTime 型の値を UUIDv7 に変換する関数
dateTimeToUUIDv7を追加しました。使用例:SELECT dateTimeToUUIDv7(toDateTime('2025-08-15 18:57:56'))は0198af18-8320-7a7d-abd3-358db23b9d5cを返します。 #84319 (samradovich)。 timeSeriesDerivToGridおよびtimeSeriesPredictLinearToGrid集約関数を追加し、指定された開始タイムスタンプ・終了タイムスタンプ・ステップで定義される時間グリッドにデータを再サンプリングします。それぞれ PromQL のderivおよびpredict_linearに類似した計算を行います。#84328(Stephen Chi)。timeSeriesRangeおよびtimeSeriesFromGrid関数を追加。 #85435 (Vitaly Baranov)。
システムテーブル
- Kafka などのエンジンからの誤った受信メッセージを保持するために、
system.dead_letter_queueテーブルを追加しました。 #68873 (Ilya Golshtein)。 - ZooKeeper 接続に関する履歴情報を保存するためのシステムテーブル
system.zookeeper_connection_logを追加しました。 #79494 (János Benjamin Antal)。 - 利用可能なコーデックを参照するための新しいシステムテーブル
system.codecsを追加しました(issue #81525)。 #81600 (Jimmy Aguilar Mena)。 system.completionsテーブルを導入しました(#81889 をクローズ)。 #83833 (|2ustam)。
Iceberg と DeltaLake
- Iceberg のスキーマ進化で複合型をサポート。#73714(scanhex12)。
insertクエリ向けの Iceberg 書き込みを導入。#82692(scanhex12)。- Iceberg テーブルエンジンで位置指定削除(positional deletes)をサポート。#83094(Daniil Ivanik)。
- フィールド ID による Iceberg データファイルの読み取りをサポート。#83065 をクローズ。#83653(scanhex12)。
- CREATE に対する Iceberg 書き込みをサポート。#83927 をクローズ。#83983(scanhex12)。
- Glue カタログ向けの書き込みをサポート。#84136(scanhex12)。
- Iceberg REST カタログ向けの書き込みをサポート。#84684(scanhex12)。
- すべての Iceberg の positional delete ファイルをデータファイルにマージ。これにより Iceberg ストレージ内の Parquet ファイルの数とサイズが削減される。構文:
OPTIMIZE TABLE table_name。#85250(scanhex12)。 - Iceberg に対する
DROP TABLEをサポート(REST/Glue カタログからの削除 + テーブルに関するメタデータの削除)。#85395(scanhex12)。 - merge-on-read 形式の Iceberg に対する
ALTER DELETEミューテーションをサポート。#85549(scanhex12)。 - DeltaLake への書き込みをサポート。#79603 をクローズ。#85564(Kseniia Sumarokova)。
- min-max プルーニング向けに、メタデータ(manifest entries)により多くの Iceberg 統計情報(カラムサイズ、下限値および上限値)を書き込む。#85746(scanhex12)。
- Iceberg において単純な型に対するカラムの追加/削除/変更をサポート。#85769(scanhex12)。
MergeTree とストレージ
- Merge 系テーブルだけでなく、すべてのテーブルで
_table仮想カラムがサポートされるようになりました。#63665 (Xiaozhe Yu)。 Float32およびFloat64型のカラム向けに、損失ありだが誤差範囲が保証された圧縮コーデックとして SZ3 を追加しました。#67161 (scanhex12)。MergeTree系テーブルに対する論理更新のサポートを追加しました。論理更新は新しい構文UPDATE <table> SET col1 = val1, col2 = val2, ... WHERE <condition>によって使用できます。lightweight_delete_mode = 'lightweight_update'を設定することで有効化できる、論理更新を利用した論理削除の実装も追加しました。#82004 (Anton Popov)。- MergeTree 系テーブルで
_part_granule_offset仮想カラムをサポートしました。このカラムは、各行が属するデータパート内でのグラニュール/マークの 0 から始まるインデックスを示します。これは #79572 に対応するものです。#82341 (Amos Bird)。
プロトコルおよびクライアントサポート
arrowflightテーブルエンジンを追加し、ArrowFlight RPC プロトコルをサポートします。 #74184 (zakr600).- PostgreSQL プロトコルの
COPYコマンドをサポートします。 #74344 (scanhex12). - MySQL プロトコル向けの C# クライアントをサポートします。これにより #83992 が解決されます。 #84397 (scanhex12).
mysql_portおよびpostgresql_portで安全な接続を必須とします。 #82962 (Shaohua Wang).
SQL とクエリの機能
DESCRIBE (SELECT ...)に加えてDESCRIBE SELECTをサポートするようになりました。 #82947 (Yarik Briukhovetskyi).USE DATABASE {name}と記述できるようになりました。 #81307 (Yarik Briukhovetskyi).- 並列レプリカに対してプロジェクションからの読み取りが実装されました。プロジェクションのサポートを有効にするかどうかを制御する新しい設定
parallel_replicas_support_projectionが追加されました。実装を簡素化するため、プロジェクションのサポートはparallel_replicas_local_planが有効な場合にのみ有効になります。 #82807 (zoomxi).
フォーマット
format_schemaのソースを定義するformat_schema_source設定を追加しました。 #80874 (Tuan Pham Anh)。- 新しい出力フォーマットとして
Hashを追加しました。これは、結果のすべてのカラムと行を対象に単一のハッシュ値を計算します。例えば、データ転送がボトルネックとなるユースケースにおいて、結果の「フィンガープリント」を計算するのに有用です。例:SELECT arrayJoin(['abc', 'def']), 42 FORMAT Hashはe5f9e676db098fdb9530d2059d8c23efを返します。 #84607 (Robert Schulze)。
サーバー構成とワークロード管理
- サーバー設定
cpu_slot_preemptionにより、ワークロードに対するプリエンプティブな CPU スケジューリングが有効になり、ワークロード間での CPU 時間の max-min 公平な割り当てが保証されます。CPU スロットル制御用の新しいワークロード設定が追加されました:max_cpus、max_cpu_share、max_burst_cpu_seconds。#80879 (Sergei Trifonov)。 - ワークロード設定
max_waiting_queriesがサポートされました。待機クエリキューのサイズを制限するために使用できます。上限に達した場合、それ以降のすべてのクエリはSERVER_OVERLOADEDエラーで終了します。#81250 (Oleg Doronin)。 - 設定されたクエリ数または時間のしきい値に達したら TCP 接続を切断します。#68000 を解決しました。#81472 (Kenny Sun)。
Cloud ストレージ
client_idとtenant_idを使用して認証するために、AzureBlobStorageにextra_credentialsを追加します。 #84235 (Pablo Marcos)
Keeper
- Keeper Multi クエリで任意のウォッチを設定できるようにしました。 #84964 (Mikhail Artemenko).
- 部分集約されたメトリクスをサポートしました。 #85328 (Mikhail Artemenko).
実験的機能
テーブルエンジンとテーブル関数
- Ytsaurus テーブルエンジンおよびテーブル関数を追加しました。 #77606 (MikhailBurdukov)
テキスト索引の改善
- テキスト索引を検索するための汎用ツールである
searchAnyとsearchAll関数を追加しました。 #80641 (Elmi Ahmadov). - テキスト索引で
stringトークナイザーがサポートされるようになりました。 #81752 (Elmi Ahmadov). text索引のデフォルトの索引粒度値を 64 に変更しました。これにより、社内ベンチマークにおける平均的なテストクエリの想定パフォーマンスが向上します。 #82162 (Jimmy Aguilar Mena).- 256 ビットのビットマップは状態の遷移ラベルを順序付きで保持しますが、遷移先状態自体はハッシュテーブル内に現れる順序でディスクに保存されます。そのため、ディスクから読み出す際に、あるラベルが誤った次の状態を指してしまう可能性がありました。 #82783 (Elmi Ahmadov).
- 現在は FST ツリーを圧縮せずにディスクに保存しています。このため、ディスクへの書き込みおよびディスクからの読み取りのいずれにおいても、パフォーマンスの低下や I/O 帯域幅の増大を招く可能性があります。 #83093 (Elmi Ahmadov).
機能の成熟度に関する更新
- catalog をベータ段階に移行しました。 #85848 (Melvyn Peignon)
- 論理更新を experimental 段階からベータ段階に移行しました。 #85952 (Anton Popov)
パフォーマンスの向上
クエリ実行と集約
-If集約関数コンビネータに対する簡易な最適化。#78454(李扬)。- メモリ効率の高い集約中に、一部のバケットを順不同で送信できるようにする新しいロジック(設定
enable_producing_buckets_out_of_order_in_aggregationによって制御され、デフォルトで有効)を追加しました。いくつかの集約バケットのマージに他よりも大幅に時間がかかる場合、発行側がその間により大きいバケット ID のバケットをマージできるようにすることでパフォーマンスが向上します。欠点としては、メモリ使用量が増加する可能性があります(顕著ではないはずです)。#80179(Nikita Taranov)。 TOTALSステップ以降のパイプラインをマルチスレッド化しました。#80331(UnamedRus)。- 集約クエリが
NOT NULLカラムに対する単一のCOUNT()関数のみを含む場合、ハッシュテーブル探索中に集約ロジックを完全にインライン展開します。これにより、いかなる集約状態の確保や維持も不要になり、メモリ使用量と CPU オーバーヘッドを大幅に削減します。これは #81982 を部分的に解決します。#82104(Amos Bird)。 - 複数の文字列または数値カラムで GROUP BY を行う場合に、シリアライズされたキーを列指向で計算します。#83884(李扬)。
-Ifコンビネータ向けにaddManyDefaultsを実装しました。#83870(Raúl Marín)。
JOIN の最適化
- JOIN の入力および出力ブロック(結合アルゴリズムが対応している場合)の最小ブロックサイズ(行数)を制御するため、新しい設定
min_joined_block_size_rows(min_joined_block_size_bytesに類似、デフォルトは 65409)を追加しました。小さいブロックはまとめられます。#81886(Nikita Taranov)。 - 典型的な「キーカラムが 1 つだけ」のケースにおいてハッシュマップに対する追加ループを削除し、さらに
null_mapとjoin_maskが常にtrue/falseになる場合にはそれらのチェックを省略することで、HashJoinのパフォーマンスを最適化しました。#82308(Nikita Taranov)。 - #82308 の
null_mapおよびJoinMaskに対する最適化を、複数の OR 条件を含む JOIN のケースにも適用しました。また、KnownRowsHolderデータ構造も最適化しました。#83041(Nikita Taranov)。 - 各フラグへのアクセスごとにハッシュ計算を行うことを避けるため、JOIN フラグには単純な
std::vector<std::atomic_bool>を使用するようにしました。#83043(Nikita Taranov)。 max_joined_block_rowsの処理をハッシュ JOIN のメインループ外で行うようにしました。ALL JOIN においてわずかにパフォーマンスが向上します。#83216(Nikolai Kochetov)。HashJoinがlazy出力モードを使用する場合、結果カラム用のメモリを事前に確保しないようにしました。特にマッチ数が少ない場合には非効率的であるためです。さらに、結合完了後にはマッチ数が正確に分かるため、より正確に事前確保できるようになります。#83304(Nikita Taranov)。- 右側が結合キーとなるカラムによって関数的に決定される(すべての行が一意な結合キー値を持つ)場合、すべての
LEFT/INNERJOIN は自動的にRightAnyに変換されます。#84010(Nikita Taranov)。 Joinモードでパッチパーツを適用する処理のパフォーマンスを改善しました。#85040(Anton Popov)。
分散クエリの改善
- ネットワーク接続に紐づく単一スレッドではなく、ブロックの圧縮/伸長およびシリアライズ/デシリアライズをパイプラインスレッドにオフロードするオプションを追加しました。
enable_parallel_blocks_marshalling設定で制御します。これにより、イニシエータとリモートノード間で多量のデータを転送する分散クエリの高速化が期待できます。#78694(Nikita Taranov)。 - 各分片ごとに
INSERT SELECTを独立して実行するモードで、分散INSERT SELECTの並列実行がデフォルトで有効になりました。parallel_distributed_insert_select設定を参照してください。#80425(Igor Nikonov)。 - ネイティブプロトコルでログとプロファイルイベントを圧縮するようにしました。100 以上のレプリカからなるクラスタでは、非圧縮のプロファイルイベントが 1〜10 MB/秒 を消費し、遅いインターネット接続ではプログレスバーの更新が鈍くなります。これにより #82533 が解消されます。#82535(Alexey Milovidov)。
- 各分片ごとに INSERT SELECT を独立して実行するモードで、分散
INSERT SELECTの並列実行がデフォルトで有効になりました。parallel_distributed_insert_select設定を参照してください。#83040(Igor Nikonov)。 - 並列レプリカにおける最小タスクサイズの計算を修正しました。#84752(Nikita Taranov)。
索引の改善
- ベクター類似度索引を使用するベクター検索クエリは、ストレージ読み取りの削減と CPU 使用率の低減により、より低いレイテンシーで完了します。 #79103 (Shankar Iyer).
- 他の索引によるフィルタリング手法と整合させるため、
filterPartsByQueryConditionCacheでmerge_tree_min_{rows,bytes}_for_seekを考慮するようにしました。 #80312 (李扬). - より細かい粒度の min-max 索引から先に処理するようにしました。 #75381 をクローズ。 #83798 (Maruth Goyal).
- Bloom filter 索引が、
columnがArray型ではない場合のhas([c1, c2, ...], column)のような条件に対しても使用されるようになりました。これにより、そのようなクエリのパフォーマンスが向上し、IN演算子と同等の効率になります。 #83945 (Doron David). - 索引をファイルサイズが小さいものから順に処理するようにしました。最終的な索引の処理順序では、(それぞれ単純さと選択性により)min-max 索引とベクター索引を優先し、その後に小さな索引を処理します。min-max / ベクター索引の中でも、より小さい索引が優先されます。 #84094 (Maruth Goyal).
- 以前は、テキスト索引データは複数のセグメントに分割されていました(各セグメントサイズはデフォルトで 256 MiB)。これはテキスト索引の構築時のメモリ消費を削減できる可能性がある一方で、ディスク上の必要容量を増加させ、クエリ応答時間も長くしていました。 #84590 (Elmi Ahmadov).
サブクエリの最適化
- 相関サブクエリに対して、同値クラスを用いて冗長な
JOIN操作を削除することで、生成されるクエリプランを最適化しました。すべての相関カラムに対して同値な式が存在する場合、query_plan_correlated_subqueries_use_substitutionSETTING が有効であればCROSS JOINは生成されません。#82435(Dmitry Novik)。 - 関数
EXISTSの引数として用いられる場合、相関サブクエリで必要なカラムのみを読み取るようにしました。#82443(Dmitry Novik)。
Azure Blob Storage の改善
azureBlobStorageテーブルエンジンは、スロットリングを回避するため、可能な場合にはマネージド ID の認証トークンをキャッシュして再利用するようになりました。#79860(Nick Blakely)。- Azure Blob Storage 向けの HTTP クライアントとして、
curlをpocoに置き換えました。これらのクライアントには、S3 の設定を反映した複数の設定を導入しました。また、Azure と S3 の両方に対して短めの接続タイムアウトを設定しました。Azure プロファイルイベントおよびメトリクスの観測性も改善されています。新しいクライアントはデフォルトで有効になっており、Azure Blob Storage 上のコールドクエリに対してははるかに優れたレイテンシを実現します。従来のCurlクライアントは、azure_sdk_use_native_client=falseを設定することで再度使用できます。#83294(alesapin)。
ストレージエンジンの改善
- Redis および KeeperMap ストレージにおけるキーによるフィルタリングを修正。 #81833 (Pervakov Grigorii).
ATTACH PARTITIONがすべてのキャッシュを削除しないように変更。 #82377 (Alexey Milovidov).- 高い同時実行負荷下でのロック競合を減らすため、ストレージスナップショットデータの作成中にロックを保持しないように変更。 #83510 (Duc Canh Le).
- 一時パーツの削除には時間がかかることがあり(特に S3 利用時)、現在は
MergeTreeBackgroundExecutor内のグローバルロックを保持したまま実行している。そのため、接続喪失によりすべてのテーブルを再起動する必要があり、バックグラウンドタスクの完了を待つ場合、テーブルが読み取り専用モードのまま 1 時間ほど固まってしまうこともある。しかし、cancelを呼び出すためにこのロックは不要と思われる。 #84311 (Alexander Tokmakov).
フォーマットの改善
- 新しい Parquet リーダーの実装。概ねより高速で、ページレベルのフィルタープッシュダウンと
PREWHEREをサポートします。現在は実験的機能です。設定input_format_parquet_use_native_reader_v3を使用して有効化します。#82789 (Michael Kolupaev). - 解析エラーが発生しない場合にシリアライザーを再利用することで、ProtobufSingle 入力フォーマットのパフォーマンスを改善しました。#83613 (Eduard Karacharov).
データ型とシリアライゼーションの最適化
- MergeTree 内の共有データに対する
JSON共有データ用の新しいシリアライゼーションを実装することで、MergeTree からのJSONサブカラム読み取りのパフォーマンスを大幅に改善しました。 #83777 (Pavel Kruglov). - コードを簡素化することで文字列のデシリアライズを最適化しました。#38564 をクローズ。 #84561 (Alexey Milovidov).
パイプラインと実行の改善
- パイプライン構築時のポートヘッダーにおけるメモリコピーを最小化しました。元のPRはheymindによるものです。#83381(Raúl Marín)。
- パイプライン構築のパフォーマンスを改善しました。#83631(Raúl Marín)。
- MergeTreeReadersChain::getSampleBlock を最適化しました。#83875(Raúl Marín)。
- 単一の行を返すためだけに定数のマテリアライゼーションを行う場合、そのマテリアライゼーションを最適化しました。#85071(Alexey Milovidov)。
メモリおよびリソースの最適化
- パフォーマンス向上のため、一部の jemalloc 設定値を調整。#81807 (Antonio Andelic).
- フォールスシェアリングを減らすため、ProfileEvents の Counter にアライメントを追加。#82697 (Jiebin Sun).
- CompressedReadBufferBase::readCompressedData 内の不要な memcpy 呼び出しを削減。#83986 (Raúl Marín).
クエリの計画と分析
- QueryTreeHash の高速化。 #82617 (Nikolai Kochetov).
ロギングの改善
- 非同期ロギングを導入しました。 #82516 (Raúl Marín)。
関数の最適化
- 一時データを削除することで
largestTriangleThreeBucketsを最適化しました。#84479 (Alexey Milovidov). - 多くの文字列処理関数の実装を最適化および簡素化しました。いくつかの関数について誤っていたドキュメント記述を修正しました。注記: String カラムおよび String カラムを含む複合型に対する
byteSizeの出力は、空文字列 1 つあたり 9 バイトから 8 バイトに変更されましたが、これは想定どおりの動作です。#85063 (Alexey Milovidov).
Keeper の改善
- RocksDB の初期ロードにより Keeper を改善しました。 #83390 (Antonio Andelic).
データレイクの改善
- delta-kernel-rs バックエンドを使用して、ファイルの並列処理を改善。 #85642 (Azat Khuzhin)
改善点
アクセス制御とセキュリティ
- ソースに対して 2 つの新しいアクセス権種別
READとWRITEを導入し、ソースに関連する従来のすべてのアクセス権種別を非推奨としました。これまでのGRANT S3 ON *.* TO userは、現在ではGRANT READ, WRITE ON S3 TO userとなります。これにより、ソースに対するREADとWRITE権限を分離して付与できます。例:GRANT READ ON * TO user,GRANT WRITE ON S3 TO user。この機能はaccess_control_improvements.enable_read_write_grantsという設定項目によって制御され、デフォルトでは無効になっています。#73659(pufit)。 - ユーザー名に対して
CREATE USERクエリでパラメータを使用できるようにしました。#81387(Diskein)。 - コアダンプから機密データを除外しました。2 つのアロケータを追加しました: AWS ライブラリ互換の
AwsNodumpMemoryManagerと STL 互換のJemallocNodumpSTLAllocator。どちらも Jemalloc アロケータのラッパーです。これらは Jemalloc の extent hooks と madvise を使用してメモリページを「ダンプ対象外」としてマークします。S3 認証情報、ユーザー認証情報、および一部のクエリデータに使用されます。#82441(Miсhael Stetsyuk)。 - 一時ユーザーによって作成された VIEW は、実際のユーザー情報のコピーを保持するようになり、一時ユーザーが削除された後も無効にならなくなりました。#84763(pufit)。
- 外部認証の forward_headers を大文字小文字を区別しない方法で照合するようにしました。#84737(ingodwerust)。
system.grantsにparameterカラムを追加し、GRANT READ/WRITEにおけるソース種別と、GRANT TABLE ENGINEにおけるテーブルエンジンを判別できるようにしました。#85643(MikhailBurdukov)。
バックアップとリストア
- PostgreSQL、MySQL、および DataLake データベースのバックアップが可能になりました。このようなデータベースのバックアップでは、定義のみが保存され、中のデータは保存されません。#79982(Nikolay Degterinsky)。
- バックアップファイルの書き込みに関するすべてのログメッセージのレベルを
TRACEに設定しました。#82907(Hans Krutzer)。 - バックアップおよびリストア操作中に使用される S3 のリトライ・バックオフ戦略を構成するために、
backup_restore_s3_retry_initial_backoff_ms、backup_restore_s3_retry_max_backoff_ms、backup_restore_s3_retry_jitter_factorを追加しました。#84421(Julia Kartseva)。 SlowDownなどのエラーによって発生するリトライ・ストーム時に、単一のリトライ可能なエラーが検出された時点で全スレッドを減速させることで S3 への負荷を軽減する、新しいbackup_slow_all_threads_after_retryable_s3_error設定を追加しました。#84854(Julia Kartseva)。
データ整合性と検証
- コミット直前に、パーツに含まれる checksum.txt ファイルの整合性を検証します。#76625 (Sema Checherinda).
- 不完全なデータミューテーションの影響を現在受けているカラムがリネーム対象となる場合は、
RENAME COLUMNの alter mutation を開始できないようにします。#81823 (Mikhail Artemenko). - 現在はミューテーションのスナップショットは、可視なパーツのスナップショットから構築されます。スナップショットで使用されるミューテーションカウンターも、含まれるミューテーションに基づいて再計算されます。#82945 (Mikhail Artemenko).
- パーツのプレフィックスおよびサフィックスを解析する機能を追加し、さらに定数ではないカラムに対するカバレッジも検証します。#83377 (Mikhail Artemenko).
Iceberg テーブルエンジン
- Iceberg テーブルエンジン向けに position delete をサポートしました。#80237 (YanghongZhong).
- ClickHouse で Iceberg 用の圧縮された
metadata.jsonファイルをサポートしました。#70874 を修正。#81451 (alesapin). - 複合型に対するフィールド ID による Iceberg の読み取りを修正しました。#84821 (scanhex12).
- pyiceberg で読み取ることができる Iceberg への書き込みをサポートしました。#84466 (scanhex12).
- データレイク テーブルエンジンにスナップショットバージョンを追加しました。#84659 (Pete Hampton).
- Iceberg で version-hint ファイルの書き込みをサポートしました。これにより #85097 がクローズされました。#85130 (scanhex12).
iceberg_metadata_compression_method設定により、圧縮された.metadata.jsonファイルをサポートしました。ClickHouse のすべての圧縮方式をサポートします。これにより #84895 がクローズされました。#85196 (scanhex12).- Iceberg の positional delete ファイルに対するメモリ使用量を最適化しました。すべての delete ファイルデータをメモリに読み込む代わりに、Parquet delete ファイルから現在の row-group のみを RAM に保持するようにしました。これにより、大きな positional delete ファイルを扱う際のメモリ消費が大幅に削減されます。#85329 (scanhex12).
- 各データファイルごとにオブジェクトを明示的に保持することなく、Iceberg テーブルからオブジェクトを非同期に反復処理できるようにしました。#85369 (Daniil Ivanik).
- Iceberg の equality delete をサポートしました。#85843 (Han Fei).
DeltaLake テーブルエンジン
DeltaLakeテーブルエンジンを改善。delta-kernel-rs にはExpressionVisitorAPI があり、この PR で実装され、パーティションカラムの式変換に適用されています(これは、これまで我々のコードで使用していた、delta-kernel-rs 側の古い非推奨の方法を置き換えるものです)。将来的には、このExpressionVisitorによって統計情報ベースのプルーニングや、いくつかの Delta Lake 独自機能も実装できるようになります。さらに、この変更の目的は、DeltaLakeClusterテーブルエンジンでのパーティションプルーニングをサポートすることです(パースされた式の結果である ActionsDAG はシリアライズされ、データパスとともにイニシエータから送信されます。これはプルーニングに必要な情報であり、データファイル一覧のメタ情報としてのみ利用可能で、その処理はイニシエータのみが行いますが、読み取りを行う各サーバ上のデータに適用される必要があります)。#81136 (Kseniia Sumarokova).- データレイククラスタ関数でのパーティションプルーニングを修正。#82131 (Kseniia Sumarokova).
- DeltaLakeCluster テーブル関数におけるパーティション化されたデータの読み取りを修正。この PR ではクラスタ関数のプロトコルバージョンを引き上げ、イニシエータからレプリカへ追加情報を送信できるようにしています。この追加情報には、パーティションカラムをパースするために必要な delta-kernel の変換式(および将来的には生成カラムなどのその他の情報)が含まれます。#82132 (Kseniia Sumarokova).
- Datalake データベースが、よりわかりやすい例外をスローするようになりました。#81211 を修正。#82304 (alesapin).
- ストレージ
DeltaLakeにおいて、内部的なdelta-kernel-rsによるフィルタリング(統計情報およびパーティションプルーニング)を実装。#84006 (Kseniia Sumarokova). - 設定
delta_lake_enable_expression_visitor_loggingを追加し、式ビジターのログを無効化できるようにしました。これは、デバッグ時にテスト用ログレベルであっても冗長になりすぎる可能性があるためです。#84315 (Kseniia Sumarokova). - 設定
delta_lake_snapshot_versionを追加し、DeltaLakeテーブルエンジンで特定のスナップショットバージョンを読み取れるようにしました。#85295 (Kseniia Sumarokova).
データレイク統合
- 非同期リクエストにより、データカタログでのテーブル一覧処理を高速化。#81084 (alesapin).
- Glue カタログで
TimestampTZをサポート。この変更により #81654 をクローズ。#83132 (scanhex12). FormatParserGroupを 2 つの独立した構造体に分割。1 つ目は共有の計算および I/O リソースを担当し、2 つ目は共有フィルターリソース(filterActionDag、KeyCondition)を担当。この変更により、これらの構造体をスレッド間でより柔軟に共有利用できるようにした。#83997 (Daniil Ivanik).azure設定に不足していたpartition_columns_in_data_fileを追加。#85373 (Arthur Passos).- データレイクテーブルを
system.tablesに追加するかどうかを制御するためのフラグshow_data_lake_catalogs_in_system_tablesを追加し、#85384 を解決。#85411 (Smita Kulkarni).
S3 とオブジェクトストレージ
s3_plain_rewritableにメソッドmoveFileとreplaceFileを実装し、データベースディスクとして利用できるようにしました。 #79424 (Tuan Pham Anh).max_remote_read_network_bandwidth_for_serverおよびmax_remote_write_network_bandwidth_for_serverのスロットリングに起因する問題を回避するため、S3 の読み取りおよび書き込みリクエストを、S3 リクエスト全体ではなく HTTP ソケットレベルでスロットリングするようにしました。 #81837 (Sergei Trifonov).- この変更では、
s3_slow_all_threads_after_network_error設定が有効な場合に、S3 のリトライメカニズムにジッターを導入しました。 #81849 (zoomxi). - 明示的に指定された IAM ロールを用いた AWS S3 認証を実装しました。GCS 向けに OAuth を実装しました。これらの機能は最近まで ClickHouse Cloud でのみ利用可能でしたが、今回オープンソース化されました。オブジェクトストレージの接続パラメータのシリアル化など、一部のインターフェースを統一しました。 #84011 (Alexey Milovidov).
- 外部での集約/ソート処理に対して、任意のストレージポリシー(S3 のようなオブジェクトストレージなど)を使用できるようにしました。 #84734 (Azat Khuzhin).
- 削除対象のすべてのオブジェクトを収集し、1 回のオブジェクトストレージ削除操作としてまとめて実行するようにしました。 #85316 (Mikhail Artemenko).
S3Queue テーブルエンジン
{uuid}のようなマクロが、S3Queue テーブルエンジンのkeeper_path設定で使用できるようになりました。 #82463 (Nikolay Degterinsky).- S3Queue テーブルエンジンを持つテーブルでのストリーミングを無効化する新しいサーバー設定
s3queue_disable_streamingを追加しました。この設定はサーバーを再起動せずに変更可能です。 #82515 (Kseniia Sumarokova). system.s3queue_logにcommit_time、commit_idカラムを追加しました。 #83016 (Kseniia Sumarokova).- s3queue のシャットダウン処理に関するログを追加しました。 #83163 (Kseniia Sumarokova).
- サーバーシャットダウン時に他のテーブルをシャットダウンする前に、S3(Azure/etc)Queue のストリーミングを停止するようにしました。 #83530 (Kseniia Sumarokova).
S3Queueテーブルレベルでのマテリアライズドビュー挿入設定(mv insert 設定)の変更をサポートしました。新たにS3Queueレベルの設定min_insert_block_size_rows_for_materialized_viewsおよびmin_insert_block_size_bytes_for_materialized_viewsを追加しました。デフォルトではプロファイルレベルの設定が使用され、S3Queueレベルの設定がそれらを上書きします。 #83971 (Kseniia Sumarokova).- S3Queue の ordered モードを修正し、shutdown が呼び出された場合には早期に終了するようにしました。 #84463 (Kseniia Sumarokova).
Kafka 統合
- StorageKafka2 において、以前にコミットされたオフセットに依存しないよう、消費したメッセージを手動でカウントするようにしました。 #81662 (János Benjamin Antal).
StorageKafka2をsystem.kafka_consumersに統合しました。 #82652 (János Benjamin Antal).
ClickHouse Keeper の改良
- Keeper の改良: バックグラウンドスレッドでディスク間の changelog ファイルの移動を行うようにしました。以前は、changelog を別のディスクに移動する際、移動が完了するまで Keeper 全体がブロックされていました。その結果、移動処理が長時間かかる場合(例: S3 ディスクへの移動)にパフォーマンス低下を引き起こしていました。#82485 (Antonio Andelic).
- Keeper の改良: 新しい設定
keeper_server.cleanup_old_and_ignore_new_aclを追加しました。有効化すると、すべてのノードの ACL がクリアされ、新しいリクエストに対する ACL は無視されます。ノードから ACL を完全に削除することが目的である場合は、新しいスナップショットが作成されるまでこの設定を有効なままにしておくことが重要です。#82496 (Antonio Andelic). - Keeper の改良: world:anyone ACL に対する特定のパーミッションのサポートを追加しました。#82755 (Antonio Andelic).
- 設定内でパスに対して追加の Keeper ACL を指定する機能を追加しました。特定のパスに対して追加 ACL を付与したい場合は、設定の
zookeeper.path_acls配下で定義します。#82898 (Antonio Andelic). - Keeper がソフトメモリ制限により書き込みを拒否した際に ProfileEvent を追加するようにしました。#82963 (Xander Garbett).
- Keeper で
create_if_not_exists、check_not_exists、remove_recursiveの各フィーチャーフラグをデフォルトで有効化し、新しい種類のリクエストを許可しました。#83488 (Antonio Andelic). apply_to_children設定を使用して、特定の Keeper ノード上に追加 ACL を適用する機能を追加しました。#84137 (Antonio Andelic).- KeeperClient に
get_aclコマンドを追加しました。#84641 (Antonio Andelic). - Keeper において、受信したリクエストのログ記録をトグルするための 4LW コマンド
lgrqを追加しました。#84719 (Antonio Andelic). - Keeper におけるストレージロックの競合を削減しました。#84732 (Antonio Andelic).
encrypt_decryptツールが暗号化された ZooKeeper 接続をサポートするようになりました。#84764 (Roman Vasin).keeper_server.coordination_settings.latest_logs_cache_entry_count_thresholdおよびkeeper_server.coordination_settings.commit_logs_cache_entry_count_thresholdを使用して、Keeper のログエントリキャッシュサイズをエントリ数で制限できるようにしました。#84877 (Antonio Andelic).
JSON と Dynamic 型
columns_substreams.txtファイルを Wide パーツに追加して、パーツ内に保存されているすべてのサブストリームを追跡できるようにしました。これにより、JSON および Dynamic 型における動的ストリームを追跡できるようになり、動的ストリームの一覧を取得するために、これらのカラムのサンプルデータを読み取る必要がなくなります(たとえばカラムサイズの計算のためなど)。また、すべての動的ストリームがsystem.parts_columnsに反映されるようになりました。 #81091 (Pavel Kruglov).- JSON および Dynamic カラムで
ALTER UPDATEを使用できるようになりました。 #82419 (Pavel Kruglov). - JSON 型内で
TimeおよびTime64型を使用できるようになりました。 #83784 (Yarik Briukhovetskyi). - JSON 型のパース中に JSON キー内のドットをエスケープするための設定項目
json_type_escape_dots_in_keysを追加しました。この設定はデフォルトでは無効です。 #84207 (Pavel Kruglov).
Parquet と ORC フォーマット
- ORC 圧縮ブロックサイズを設定するための設定を導入し、そのデフォルト値を 64KB から 256KB に更新して、Spark や Hive と一貫性を持たせるようにしました。 #80602 (李扬). spark
- Parquet の enum を、仕様どおりバイト配列として書き込めるようにしました。詳しい情報は後ほど追記します。 #81090 (Arthur Passos). spec
- Geoparquet を出力フォーマットとして書き込めるようにしました。 #81784 (scanhex12).
分散クエリと並列レプリカ
- 新しい設定
enable_add_distinct_to_in_subqueriesが追加されました。有効化すると、分散クエリにおいて ClickHouse は IN 句内のサブクエリに自動的にDISTINCTを追加します。これにより、分片間で転送される一時テーブルのサイズを大幅に削減し、ネットワーク効率を向上させることができます。注意: これはトレードオフであり、ネットワーク転送量は削減されますが、各ノードで追加のマージ(重複排除)処理が必要になります。ネットワーク転送がボトルネックとなっており、マージコストが許容できる場合にこの設定を有効化してください。 #81908 (fhw12345). address_expression引数でクラスタが指定されている場合、並列レプリカと併用したremote-()テーブル関数のサポートが追加されました。また、#73295 も修正しています。 #82904 (Igor Nikonov).- 並列レプリカを用いた Join は、
join logical stepを使用するようになりました。並列レプリカを使用した Join クエリで問題が発生した場合は、SET query_plan_use_new_logical_join_step=0を試し、Issue を報告してください。 #83801 (Vladimir Cherkasov).
設定と構成
allow_experimental_join_condition設定を廃止予定としてマークしました。 #80566 (Vladimir Cherkasov).- 全体およびユーザー単位のネットワークスロットル機構はリセットされなくなり、
max_network_bandwidth_for_all_usersとmax_network_bandwidth_for_all_usersの制限値が超過されないようになりました。 #81729 (Sergei Trifonov). optimize_rewrite_regexp_functions設定を導入しました(デフォルトで有効)。これにより、特定の正規表現パターンを検出した際に、オプティマイザが一部のreplaceRegexpAll、replaceRegexpOne、extract呼び出しを、より単純で効率的な形式に書き換えられるようになります(issue #81981)。 #81992 (Amos Bird).- listen_backlog(デフォルト 4096)に基づいて TCP サーバーのキュー(デフォルト 64)を調整しました。 #82045 (Azat Khuzhin).
- サーバーを再起動せずに、
max_local_read_bandwidth_for_serverとmax_local_write_bandwidth_for_serverをその場で再読み込みできるようにしました。 #82083 (Kai Zhu). - ベクトル類似度索引を使用するために有効化が必須となる
enable_vector_similarity_index設定を導入しました。既存の設定allow_experimental_vector_similarity_indexは現在は廃止予定ですが、必要な場合には引き続き機能します。 #83459 (Robert Schulze). max_joined_block_size_rowsに加えて、サイズの大きいカラムを含む JOIN のメモリ使用量を制限するためにmax_joined_block_size_bytesを追加しました。 #83869 (Nikolai Kochetov).cluster_function_process_archive_on_multiple_nodesの互換性を修正しました。 #83968 (Kseniia Sumarokova).- 相関サブクエリのサポートをデフォルトで有効化しました。 #85107 (Dmitry Novik).
- DatabaseReplicatedSettings のデフォルト値を定義する
database_replicated設定を追加しました。Replicated DB の CREATE クエリ内に設定が存在しない場合、この設定の値が使用されます。 #85127 (Tuan Pham Anh). s3およびs3Clusterテーブルエンジン/関数でキー・バリュー形式の引数を許可しました。例えばs3('url', CSV, structure = 'a Int32', compression_method = 'gzip')のように指定できます。 #85134 (Kseniia Sumarokova).- 非相関の
EXISTSをスカラーサブクエリとして実行するようにしました。これによりスカラーサブクエリキャッシュを利用でき、結果を定数畳み込みして索引に役立てることができます。互換性維持のため、新しい設定execute_exists_as_scalar_subquery=1を追加しました。 #85481 (Nikolai Kochetov). - 複合識別子に対して、より多くのケースの解決をサポートしました。特に、旧アナライザとの
ARRAY JOINの互換性が改善されています。以前の挙動を維持するための新しい設定analyzer_compatibility_allow_compound_identifiers_in_unflatten_nestedを導入しました。 #85492 (Nikolai Kochetov).
システムテーブルとオブザーバビリティ
- ClickHouse の async metrics に pressure メトリクスを追加。#80779(Xander Garbett)。
- マークキャッシュからのエビクションを追跡するためのメトリクス
MarkCacheEvictedBytes、MarkCacheEvictedMarks、MarkCacheEvictedFilesを追加。(issue #60989)。#80799(Shivji Kumar Jha)。 system.formatsテーブルに、HTTP content type やスキーマ推論の可否など、フォーマットに関する拡張情報を含めるようにした。#81505(Alexey Milovidov)。TRUNCATE TABLE system.warningsを使用してsystem.warningsテーブルからすべての警告をクリアできるようにした。#82087(Vladimir Cherkasov)。system.licensesで Rust クレートのライセンスを一覧表示。#82440(Raúl Marín)。(a < 1 and a > 0) or b = 3のような複雑な cnf/dnf を STATISTICS で推定するようにした。#82663(Han Fei)。- 場合によっては、メトリクスに複数の次元が必要となる。たとえば、単一のカウンタではなく、エラーコードごとに失敗したマージや mutation の回数をカウントするなど。#83030(Miсhael Stetsyuk)。
MergePartsエントリの part_log プロファイルイベントに、UserTimeMicroseconds、SystemTimeMicroseconds、RealTimeMicrosecondsなどのプロセスリソースメトリクスを追加。#83460(Vladimir Cherkasov)。- Cgroup レベルおよびシステム全体のメトリクスを、現在はまとめてレポートするように変更。Cgroup レベルのメトリクスは
CGroup<Metric>、OS レベルのメトリクス(procfs から収集)はOS<Metric>という名前を持つ。#84317(Nikita Taranov)。 - 同時実行される有界キューのサイズを監視するための多次元メトリクスを追加。キュータイプとインスタンス ID でラベル付けし、オブザーバビリティを向上。#84675(Miсhael Stetsyuk)。
system.columnsテーブルで、既存のnameカラムに対するエイリアスとしてcolumnを提供するようにした。#84695(Yunchi Pang)。system.errorsにフォーマット文字列カラムを追加。このカラムは、アラートルールで同じエラータイプごとにグルーピングするために必要。#84776(Miсhael Stetsyuk)。- Async Log の制限をチューニング可能にし、イントロスペクション機能を追加。#85105(Raúl Marín)。
system.columns向けにテーブルのカラムサイズを取得する際に、UNKNOWN_DATABASEを無視するようにした。#85632(Azat Khuzhin)。
データベースエンジン
システムおよび内部の改善
- テーブル UUID を手動で DatabaseCatalog に追加することで、read-only なリモートディスク上のデータベースのアタッチ処理の問題を修正しました。#82670 (Tuan Pham Anh)。
distributed_ddl_output_mode='*_only_active'の場合の DDL タスク処理を改善し、max_replication_lag_to_enqueueを超えるレプリケーションラグを持つ新規または復旧済みのレプリカを待機しないようにしました。これにより、新しいレプリカが初期化または復旧後にアクティブになったものの、大きなレプリケーションログが蓄積されている場合に発生するDDL task is not finished on some hostsエラーを回避できます。また、レプリケーションログがmax_replication_lag_to_enqueue未満になるまで待機するSYSTEM SYNC DATABASE REPLICA STRICTクエリも実装しました。#83302 (Alexander Tokmakov)。- SystemLogs のシャットダウン順序を、通常テーブルの後(かつシステムテーブルの前。従来は通常テーブルの前)に行うように変更しました。#83134 (Kseniia Sumarokova)。
- Replicated データベース用の設定としてサーバー設定
logs_to_keepを追加し、Replicated データベースに対するデフォルトのlogs_to_keepパラメータを構成できるようにしました。値を小さくすると ZooKeeper ノードの数が減少します(特にデータベースが多数ある場合に有益)一方、値を大きくすると、長時間のダウンタイム後でも欠落しているレプリカが追いつけるようになります。#84183 (Alexey Khatskevich)。 - Replicated データベース設定
max_retries_before_automatic_recoveryのデフォルト値を 10 に変更し、一部のケースでより高速なリカバリを可能にしました。#84369 (Alexander Tokmakov)。 - Replicated データベースにおける非追記型のリフレッシャブルmaterialized view の DDL 操作を最適化し、古い一時テーブルの作成およびリネーム処理をスキップするようにしました。#84858 (Tuan Pham Anh)。
レプリケーションと同期
SystemAndInternalImprovements
- ZooKeeper 接続に問題が発生した場合にテーブル作成を再試行するように
SYSTEM RESTART REPLICAを改善し、テーブルが取りこぼされることを防ぎます。#82616 (Nikolay Degterinsky). ReplicatedMergeTree::executeMetadataAlterに UUID 検証を追加し、StorageID の取得とIDatabase::alterTableの呼び出しの間にテーブルが入れ替えられた場合でも、不正なテーブル定義が発生するのを防ぎます。#82666 (Nikolay Degterinsky).- 実験的なゼロコピーレプリケーションに関連する
send_metadataロジックを削除しました。このコードは一度も使用されておらず、サポートもされておらず、おそらく壊れていて、その機能を検証するテストも存在しませんでした。#82508 (alesapin). remote_fs_zero_copy_zookeeper_pathでマクロ展開をサポートしました。#85437 (Mikhail Koviazin).
関数と式
- 関数
addressToSymbolおよびsystem.symbolsテーブルでは、仮想メモリアドレスではなくファイルオフセットが使用されるようになりました。#81896(Alexey Milovidov)。 - 名前付きタプルのスーパータイプを導出する際、要素名を可能な限り保持するようにしました。 #81345 (lgbo).
- 同じ列に対しても、ウィンドウごとに異なる照合順序を使用できるようにしました。 #82877 (Yakov Olkhovskiy).
- 型を WKB 形式で出力する関数を追加。 #82935 (scanhex12).
TimeおよびTime64を MM:SS、M:SS、SS、または S としてパースできる機能を追加しました。 #83299 (Yarik Briukhovetskyi)。- 関数
reinterpret()は、Tが固定長データ型である場合のArray(T)への変換をサポートするようになりました(issue #82621)。#83399(Shankar Iyer)。 structureToProtobufSchemaとstructureToCapnProtoSchema関数を修正し、改行文字ではなくゼロ終端バイトを正しく追加するようにして、出力から改行が抜けてしまう問題と、ゼロバイトに依存する関数(logTrace、demangle、extractURLParameter、toStringCutToZero、encrypt/decryptなど)で発生しうるバッファオーバーフローを防止しました。#85062 をクローズ。#85063(Alexey Milovidov)。regexp_tree辞書レイアウトを修正し、ゼロバイトを含む文字列を処理できるようにしました。 #85063 (Alexey Milovidov)。Valuesフォーマット、または行末に改行を含まないフォーマットで呼び出された場合に、出力の末尾の 1 文字を誤って切り落としていたformatRowNoNewline関数を修正しました。 #85063 (Alexey Milovidov).- まれな状況でメモリリークにつながる可能性があった
stem関数の例外安全性に関する不具合を修正しました。 #85063 (Alexey Milovidov)。 FixedString引数に対するinitcap関数を修正し、ブロック内で直前の文字列が単語文字で終わっている場合でも、文字列の先頭を単語の開始として正しく認識できるようにしました。 #85063 (Alexey Milovidov).- 初期化されていないメモリが露出するおそれのある Apache
ORC形式のセキュリティ脆弱性を修正しました。 #85063 (Alexey Milovidov). replaceRegexpAllとそのエイリアスであるREGEXP_REPLACEの動作を変更し、直前のマッチで文字列全体が処理されていた場合でも、文字列末尾での空マッチを許可するようにしました(例:^a*|a*$や^|.*)。これにより、JavaScript、Perl、Python、PHP、Ruby の仕様と整合しますが、PostgreSQL とは異なります。 #85063 (Alexey Milovidov).- 多くの文字列処理関数の実装を最適化および簡素化しました。いくつかの関数について、誤っていたドキュメント内容を修正しました。注記: String カラムおよび String カラムを含む複合型に対する
byteSizeの出力は、空文字列 1 つあたり 9 バイトから 8 バイトへと変更されました。これは期待される挙動です。 #85063 (Alexey Milovidov)。 - 関数
timeSeries*ToGrid()でステップ値 0 を許可します。これは https://github.com/ClickHouse/ClickHouse/pull/75036 のパート#3です。#85390(Vitaly Baranov)。 - 関数
nestedが内部配列をサポートするようになりました。 #85719 (Nikolai Kochetov)。
MergeTree の改善
- オンザフライで更新されるカラムやパッチパーツに依存するスキップ索引の無効化を、より細かい粒度で行うようにしました。これにより、スキップ索引はオンザフライで行われる mutation やパッチパーツの影響を受けたパーツでのみ使用されなくなり、以前のようにすべてのパーツで無効化されることはなくなりました。#84241 (Anton Popov).
- パーツを探索する範囲を制限するために、たとえばローカルメタデータを持つディスク単位でパーツを探索できるようにする MergeTree の設定
search_orphaned_parts_drivesを追加しました。#84710 (Ilya Golshtein). WHEREに対する、これまで不足していたread_in_order_use_virtual_rowのサポートを追加しました。これにより、PREWHEREに完全にはプッシュダウンされなかったフィルタを持つクエリで、より多くのパーツの読み取りをスキップできるようになりました。#84835 (Nikolai Kochetov).- MergeTree における「compact」Variant discriminator のシリアライゼーションの利用を修正しました。以前は、利用可能であるにもかかわらず、一部のケースで使用されていませんでした。#84141 (Pavel Kruglov).
- パッチパーツ内の非圧縮バイト数の合計に対する上限(テーブル設定
max_uncompressed_bytes_in_patches)を追加しました。これにより、論理更新後のSELECTクエリの大幅な低速化を防ぎ、論理更新の不適切な使用を防止します。#85641 (Anton Popov).
キャッシュとメモリ管理
- ファイルシステムキャッシュにおける論理エラー「Having zero bytes but range is not finished」を修正しました。 #81868 (Kseniia Sumarokova).
- キャッシュ局所性を改善するためにランデブーハッシュ法を追加しました。 #82511 (Anton Ivashkin).
- ファイルシステムキャッシュの動的リサイズ機能をリファクタリングし、解析用のログをさらに追加しました。 #82556 (Kseniia Sumarokova).
- 実行可能なユーザー定義関数に対するクエリのメモリトラッキングのオーバーヘッドを削減しました。 #83929 (Eduard Karacharov).
- 外部ライブラリによるすべてのメモリアロケーションが、ClickHouse のメモリトラッカーから把握され、正しく計上されるようになりました。これにより、一部のクエリでは報告されるメモリ使用量が「増加」して見えたり、
MEMORY_LIMIT_EXCEEDEDによる失敗が発生する可能性があります。 #84082 (Nikita Mikhaylov). - 暗号化された名前付きコレクション用の
encrypted_bufferについて、必要最小限のメモリのみを割り当てるようにしました。 #84432 (Pablo Marcos).
ベクター類似度インデックス
NumericIndexedVectorでnanおよびinfを使用できないようにしました。これにより #82239 が修正され、関連するいくつかの問題も解消されています。 #82681 (Raufs Dunamalijevs).- ベクター類似度インデックスがバイナリ量子化をサポートするようになりました。バイナリ量子化によりメモリ消費量が大幅に削減され、(距離計算が高速になるため)ベクターインデックスの構築プロセスが高速化されます。また、既存の
vector_search_postfilter_multiplier設定は廃止され、より汎用的な設定であるvector_search_index_fetch_multiplierに置き換えられました。 #85024 (Shankar Iyer). - ベクター類似度インデックスを用いた近似ベクター検索が一般提供(GA)となりました。 #85888 (Robert Schulze).
エラー処理とメッセージ
- ヘッダー
Connectionは、接続を維持すべきかどうかが判明したタイミングで、ヘッダーの末尾に送信されるようになりました。#81951(Sema Checherinda)。 - 以前のバージョンでは、集約関数状態を IPv4 で乗算した際に、適切なエラーコードではなく論理エラーが発生していました。#82817 をクローズ。#82818(Alexey Milovidov)。
AsynchronousMetricsにおけるエラー処理を改善しました。/sys/blockディレクトリが存在するがアクセスできない場合、サーバーはブロックデバイスを監視せずに起動するようになります。#79229 をクローズ。#83115(Alexey Milovidov)。- materialized view に不正な
SELECT文が含まれる場合のINSERTに対して、依存関係チェックが誤っており、明確な説明を伴う有用なエラーではなく、不明瞭なstd::exceptionを受け取る可能性がありました。現在はこれが修正されています。この修正は #82889 に対応します。#83190(Nikita Mikhaylov)。 - 例外メッセージ内に、式アクションの非常に長い説明を出力しないようにしました。#83164 をクローズ。#83350(Alexey Milovidov)。
- ストレージのシャットダウン時に、
getStatusはErrorCodes::ABORTED例外をスローします。以前はこれによりSELECTクエリが失敗していましたが、現在はErrorCodes::ABORTED例外を捕捉し、意図的に無視するようになりました。#83435(Miсhael Stetsyuk)。 - PROJECTION の読み込みおよび追加に関する特定の状況での例外メッセージを、より読みやすくしました。#83728(Robert Schulze)。
- 閉じた接続から読み込むことを防ぐため、EOF をチェックする前に接続がキャンセルされているかどうかを確認するようにしました。#83893 を修正。#84227(Raufs Dunamalijevs)。
- 内部チェックを簡素化することで、クライアント接続に対するサーバーのシャットダウン処理を改善しました。#84312(Raufs Dunamalijevs)。
- UDF 実行中の低レベルエラーは、これまではさまざまなエラーコードが返される可能性がありましたが、現在はエラーコード
UDF_EXECUTION_FAILEDで失敗するようになりました。#84547(Xu Jia)。
SQL フォーマットの改善
CREATE DICTIONARYのフォーマットが一貫していない問題を修正しました。 #82105 をクローズしました。 #82829(Alexey Milovidov)。materialize関数を含む場合のTTLのフォーマットが一貫していない問題を修正しました。 #82828 をクローズしました。 #82831(Alexey Milovidov)。- INTO OUTFILE などの出力オプションを含む場合に、サブクエリ内の
EXPLAIN ASTのフォーマットが一貫していない問題を修正しました。 #82826 をクローズしました。 #82840(Alexey Milovidov)。 - エイリアスが許可されていないコンテキストで、エイリアス付きの丸括弧で囲まれた式のフォーマットが一貫していない問題を修正しました。 #82836 をクローズしました。 #82837 をクローズしました。 #82867(Alexey Milovidov)。
- クエリパラメータを含む CREATE USER(例:
CREATE USER {username:Identifier} IDENTIFIED WITH no_password)のフォーマットを修正しました。 #84376(Azat Khuzhin)。 - パラメータ付きのカラム(例: Decimal(8))の後に続くカラム定義で末尾にカンマが付いている場合の、CREATE DICTIONARY クエリ内でのパース処理を修正しました。 #85586 をクローズしました。 #85653(Nikolay Degterinsky)。
外部統合
- ODBC と JDBC で名前付きコレクションを使用する場合に、パラメータ名を統一しました。 #83410 (Andrey Zvonov).
- MongoDB: 文字列から数値型への暗黙的なパース。以前は、ClickHouse テーブルの数値カラムに対して MongoDB ソースから文字列値が渡された場合、例外がスローされていました。現在は、エンジンが文字列から数値として解釈できる値を自動的にパースしようとします。 #81167 をクローズ。 #84069 (Kirill Nikiforov).
- サポートされていないアーキテクチャ上でも
simdjsonの利用を許可しました(以前はCANNOT_ALLOCATE_MEMORYエラーの原因となっていました)。 #84966 (Azat Khuzhin).
その他の改善
- Ytsaurus テーブルエンジンおよびテーブル関数を追加。#77606 (MikhailBurdukov).
- HashJoin::needUsedFlagsForPerRightTableRow を改善し、クロス JOIN の場合は false を返すようにした。#82379 (lgbo).
- map カラムをタプル配列として読み書きできるようにした。#82408 (MikhailBurdukov).
- この PR はリバートされた。#82884 (Mithun p).
- 非同期ログ: キュー内に保持されるエントリ数の上限を制限した。#83214 (Raúl Marín).
- JSON 入力フォーマットで Date/Date32 を整数として扱えるようにした。#83597 (MikhailBurdukov).
- bloom filter 索引(通常、ngram、token)について、1 つ目の引数が定数配列(Set)で 2 つ目が索引付きカラム(部分集合)の場合に活用できるようサポートを改善し、より効率的なクエリ実行を可能にした。#84700 (Doron David).
- KeyValue ストレージのプライマリキー(例: EmbeddedRocksDB, KeeperMap)に対して
IN/GLOBAL INフィルタをプッシュダウンする際に、set の値の型変換を許可した。#84515 (Eduard Karacharov). - 並列レプリカでの読み取りにおいて、索引解析の結果レンジが空になるケースでのフルスキャンを排除した。#84971 (Eduard Karacharov).
- ローカルホストでインテグレーションテストを実行しようとした際に発生しうる問題を修正。#82135 (Oleg Doronin).
- 既存のデプロイメントに対して trace_log.symbolize をデフォルトで有効化。#85456 (Azat Khuzhin).
バグ修正(公式安定版リリースにおいてユーザーに影響する不具合)
パフォーマンスの最適化
- 25.5 で https://github.com/ClickHouse/ClickHouse/pull/79051 によって発生した SummingMergeTree におけるパフォーマンス低下を修正しました。#82130 (Pavel Kruglov).
- analyzer が有効な場合に、セカンダリクエリが常に VIEW からすべてのカラムを読み取ってしまうことで発生していたパフォーマンス低下を修正しました。#81718 を修正します。#83036 (Dmitry Novik).
- 依存関係を持たないテーブル作成時には循環依存関係をチェックしないようにしました。これにより、https://github.com/ClickHouse/ClickHouse/pull/65405 で導入された、数千個のテーブルを作成するユースケースでのパフォーマンス低下が改善されます。#83077 (Pavel Kruglov).
DISTINCTウィンドウ集計が線形時間で実行されるようにし、sumDistinctのバグを修正しました。#79792 をクローズします。#52253 をクローズします。#79859 (Nihal Z. Miaji).
クエリ実行の修正
ORDER BY ... LIMIT BY ... LIMIT Nを組み合わせたクエリにおいて、ORDER BY が PartialSorting として実行される場合、カウンタrows_before_limit_at_leastは、ソート変換で消費された行数ではなく、LIMIT 句で消費された行数を反映するようになりました。 #78999 (Eduard Karacharov)。<=>演算子とJoinストレージにおける論理エラーを修正し、クエリが適切なエラーコードを返すようになりました。 #80165 (Vladimir Cherkasov).remote関数ファミリーと併用した場合にloop関数がクラッシュする問題を修正しました。loop(remote(...))で LIMIT 句が正しく適用されるようにしました。 #80299 (Julia Kartseva).- Unix エポック (1970-01-01) より前および最大日時 (2106-02-07 06:28:15) より後の日付を扱う際の
to_utc_timestamp関数とfrom_utc_timestamp関数の不正な動作を修正しました。これらの関数は、値をそれぞれエポック開始時刻と最大日時に正しく切り詰める(クランプする)ようになりました。 #80498 (Surya Kant Ranjan). - 左辺引数に NULL が含まれ、サブクエリ結果が非 NULL の場合における、
transform_null_in=1設定時のIN実行を修正。 #81584 (Pavel Kruglov). - スカラー相関サブクエリの処理中に必要な列が読み取られない問題を修正しました。#81716 を修正。#81805(Dmitry Novik)。
- クエリで定数エイリアス列のみが使用されている場合のフィルタ解析を修正しました。これにより #79448 が修正されます。#82037(Dmitry Novik)。
WHERE句およびIndexSetを含むクエリでarrayJoinを使用した際に発生していたNot found columnエラーを修正しました。 #82113 (Nikolai Kochetov).- CTE 定義が同名の別のテーブル式を参照している場合に発生する
TOO_DEEP_SUBQUERIES例外を修正。 #83413 (Dmitry Novik). WHERE ... IN (<subquery>)句を含むクエリで、use_query_condition_cache設定によるクエリ条件キャッシュを有効化している場合に誤った結果が返される問題を修正しました。 #83445 (LB7666).UNION ALLを伴うINSERT SELECTが、特定のレアケースにおいてヌルポインタ参照を引き起こす可能性がありました。この修正により #83618 がクローズされました。#83643(Alexey Milovidov)。- 相関付けられた列に対する行ポリシー式の解析中に発生する
LOGICAL_ERRORを修正しました。 #82618 (Dmitry Novik). - クエリ条件キャッシュを再帰CTEと併用した場合に誤った結果が返される不具合を修正しました(issue #81506)。#84026(zhongyuankai)。
- 不正な
WINDOW定義に対する無限再帰的な解析を修正します。 #83131 を解決します。 #84242(Dmitry Novik)。 additional_table_filters expression設定内でIN (subquery)を使用した場合のNot-ready Setの問題を修正しました。 #85210 (Nikolai Kochetov).optimize_syntax_fuse_functionsが有効な場合に発生する重複サブクエリに関する論理エラーを修正し、#75511 をクローズしました。#83300(Vladimir Cherkasov)。
Iceberg と DataLake の修正
- REST カタログ経由で Iceberg テーブルをクエリした際のメタデータの解決処理を修正しました。... #80562 (Saurabh Kumar Ojha).
- Iceberg 内のデータレースを修正しました。 #82088 (Azat Khuzhin).
- Iceberg における "Context has expired" エラーを修正しました。 #82146 (Azat Khuzhin).
- ClickHouse は、スキーマ進化後でも Glue カタログから Iceberg テーブルを読み取れるようになりました。 #81272 を修正。 #82301 (alesapin).
- Iceberg 内のデータレースを修正しました。 #82841 (Azat Khuzhin).
- Iceberg の配列要素および Iceberg の map 値(そのすべてのネストしたサブフィールドを含む)に対する、境界に基づくファイルプルーニングを無効化しました。 #83520 (Daniil Ivanik).
- 複合型に対する Iceberg への書き込みを修正しました。 #85330 (scanhex12).
- 複合型に対しては、下限値および上限値の書き込みはサポートされません。 #85332 (scanhex12).
- Iceberg におけるフィールドの NULL 許容性を修正しました。 #85977 (scanhex12).
- 空の Iceberg delete ファイルを作成しないようにしました。 #86061 (scanhex12).
- Iceberg への書き込み時にメタデータのタイムスタンプを更新するようにしました。 #85711 (scanhex12).
- Spark が position delete ファイルを読み取れない問題を修正しました。 #85762 (scanhex12).
- マニフェストファイルからスキーマを取得するのをやめ、各スナップショットごとに関連するスキーマを個別に保存するようにしました。各データファイルに対して、そのスナップショットから関連スキーマを推論します。これまでの挙動では、既存ステータスを持つマニフェストファイルエントリに関する Iceberg 仕様に違反していました。 #84588 (Daniil Ivanik).
- Iceberg は、
SELECTクエリ間で関連スナップショットバージョンをキャッシュしようとせず、常にその都度スナップショットを解決するようになりました。以前の Iceberg スナップショットをキャッシュしようとする挙動は、time travel 機能を用いた Iceberg テーブルの利用で問題を引き起こしていました。 #85038 (Daniil Ivanik). - REST カタログ経由で Iceberg テーブルをクエリした際のメタデータの解決処理を修正しました。... #85531 (Saurabh Kumar Ojha).
icebergS3ClusterおよびicebergAzureClusterテーブル関数でのシークレットマスキングを修正しました。 #85658 (MikhailBurdukov).
DeltaLake の修正
- ストレージ
DeltaLakeの delta-kernel におけるカラムプルーニングを修正しました。#84543、#84745(Kseniia Sumarokova)。 - ストレージ DeltaLake の delta-kernel においてクレデンシャルをリフレッシュするようにしました。#84751(Kseniia Sumarokova)。
- delta-kernel 実装でのセグメンテーションフォルトを修正しました。#85160(Kseniia Sumarokova)。
DeltaLakeエンジンの delta-kernel 実装におけるレースコンディションを修正しました。#85221(Kseniia Sumarokova)。DeltaLakeエンジンで delta-kernel を無効化した状態でパーティション化されたデータを読み取む処理を修正しました。これは 25.7 で動作しなくなっていました(https://github.com/ClickHouse/ClickHouse/pull/81136)。[#85223](https://github.com/ClickHouse/ClickHouse/pull/85223)([Kseniia Sumarokova](https://github.com/kssenii))。- 互換性のため、25.5 以前の
allow_experimental_delta_kernel_rsの値をfalseに変更しました。#84587(Kseniia Sumarokova)。 - DeltaLake でキャッシュから count を読み取る処理を修正しました。#85704(Kseniia Sumarokova)。
有効期限 (TTL) と MergeTree の修正
- 有効期限 (TTL) によって行が削除された際に、
minmax_count_projectionなど、それに依存するアルゴリズムの正しさを確保するために min-max 索引を再計算するようにしました。これにより#77091 が解決されました。#77166 (Amos Bird). - TTL を更新する際の TTL GROUP BY における誤った TTL 再計算を修正しました。#81222 (Evgeniy Ulasik).
- TTL 式で dict が使用されている場合に、マージ中に発生していた「Context has expired」エラーを修正しました。#81690 (Azat Khuzhin).
- GROUP BY と SET の両方の TTL で同じカラムを使用した場合に発生していた LOGICAL_ERROR と、それに続くクラッシュを修正しました。#82054 (Pablo Marcos).
- テーブルからすべての TTL が削除された場合、MergeTree は TTL に関連する処理を一切行わないようになりました。#84441 (alesapin).
ALTER MODIFY ORDER BYがソートキー内の TTL カラムを検証していなかった問題を修正しました。ALTER操作中のORDER BY句で TTL カラムが使用された場合に正しく拒否されるようになり、テーブル破損の可能性を防ぎます。#84536 (xiaohuanlin).
Projection の修正
- カラム型が Nullable に変更された場合に、projection を materialize する際の論理エラーを修正しました。#80741 (Pavel Kruglov).
enable_shared_storage_snapshot_in_query = 1のときに、mergeTreeProjectionテーブル関数で親メタデータを誤って使用していた問題を修正しました。これは #82634 に対応するものです。#82638 (Amos Bird).- テーブルに projection があり、
lightweight_mutation_projection_mode = 'rebuild'の状態で、テーブル内の任意のブロックから ALL 行を削除する lightweight delete をユーザーが実行したときに、まれに ClickHouse がクラッシュする問題を修正しました。#84158 (alesapin). - 破損した projection を含むパーツのバックアップ処理を修正しました。#85362 (Antonio Andelic).
- 安定化するまでのリリースでは、projection 内で
_part_offsetカラムを使用することを禁止しました。#85372 (Sema Checherinda).
Parallel replicas の修正
- 一部の parallel replicas を用いたクエリにおいて、順序どおりに読み取るための最適化がイニシエータでは適用されるものの、リモートノードでは適用されない場合がありました。その結果、parallel replicas のコーディネータ(イニシエータ上)とリモートノードで異なる読み取りモードが使用されており、論理エラーが発生していました。#80652(Igor Nikonov)。
- サブクエリに
FINALが含まれている場合は parallel replicas を無効化します。#81401 による対応。#83455(zoomxi)。 - parallel replicas と、複数の INNER join に続く RIGHT join を含むクエリで発生していた
LOGICAL_ERRORを修正しました。このようなクエリでは parallel replicas を使用しないようにしました。#84299(Vladimir Cherkasov)。 - 読み取りの逆順最適化を使用する parallel replicas のクエリで、誤った結果が生成される可能性がありました。#85406(Igor Nikonov)。
認証とセキュリティ
- logs/query_log 内で名前付きコレクションの値が非表示にならない問題を修正しました。 #82405 をクローズします。 #82510(Kseniia Sumarokova)。
- SCRAM_SHA256_PASSWORD 型で AST から解析する際に、認証データの salt を設定するようにしました。 #82888(Tuan Pham Anh)。
- Avro schema registry の認証情報がユーザーに表示されたりログに出力されたりしないようマスクしました。 #83713(János Benjamin Antal)。
REVOKE S3 ON system.*を実行した際に、*.*に対する S3 権限まで取り消してしまう誤った動作を修正しました。これにより #83417 が修正されます。 #83420(pufit)。no_passwordで作成されたユーザーが、サーバー設定allow_no_passwordを 0 に変更した後にログインを試みるとサーバーがクラッシュする問題を修正しました。 #84426(Shankar Iyer)。- JWT で識別されるユーザーを作成しようとした際のエラーメッセージを改善しました。 #85072(Konstantin Bogdanov)。
deltaLakeAzure、deltaLakeCluster、icebergS3Cluster、icebergAzureClusterの認証情報をマスクするようにしました。 #85889(Julian Maicher)。- #79963 で導入されたバグを修正しました。definer を持つ materialized view に対して INSERT する場合、権限チェックは定義者に付与された権限を使用する必要があります。これにより #79951 を修正します。 #83502(pufit)。
バックアップとリストアの修正
- 空の
Memoryテーブルをバックアップする際に、バックアップからのリストアがBACKUP_ENTRY_NOT_FOUNDエラーで失敗していた問題を修正しました。#82791 (Julia Kartseva). - 読み取り専用ディスク上でバックアップをリストアする際に、誤解を招くエラーメッセージが表示される問題を修正しました。#83051 (Julia Kartseva).
- 接続障害の後に不要な内部バックアップが開始される問題を修正しました。#84755 (Vitaly Baranov).
ウィンドウ関数と集約関数
- マージ中の例外発生時に
Aggregatorがクラッシュする可能性がある問題を修正しました。#81450 (Nikita Taranov). - マージ中の例外発生時に
Aggregatorがクラッシュする可能性がある問題を修正しました。#82022 (Nikita Taranov). - arraySimilarity におけるコピー&ペーストの誤りを修正し、UInt32 と Int32 の重みの使用を禁止しました。テストとドキュメントを更新しました。#82103 (Mikhail f. Shiryaev).
- 大きな数値に対して適用した際に発生していた
numericIndexedVectorPointwiseAdd、numericIndexedVectorPointwiseSubtract、numericIndexedVectorPointwiseMultiply、numericIndexedVectorPointwiseDivide関数でのオーバーフローを修正しました。#82165 (Raufs Dunamalijevs).
Parquet およびファイルフォーマットに関する修正
- Parquet のブルームフィルタが、
WHERE key IN (...)であるかのようにWHERE function(key) IN (...)という条件を誤って適用していた問題を修正しました。#81255 (Michael Kolupaev). - Parquet writer が Decimal 型に対して不正な統計情報 (min/max) を出力していた問題を修正しました。#83754 (Michael Kolupaev).
- 要素が空の場合の
groupArraySample/groupArrayLastのデシリアライズを修正しました (入力が空の場合にバイナリの一部をスキップしてしまう可能性があり、これによりデータ読み取り時の破損や TCP プロトコルでの UNKNOWN_PACKET_FROM_SERVER を引き起こすことがありました)。これは数値型および日時型には影響しません。#82763 (Pedro Ferreira). - RowBinary フォーマットで、値が NULL の JSON パスを書き込む際の問題を修正しました。#83923 (Pavel Kruglov).
JOIN の修正
- ストレージ
Mergeを持つテーブルとの JOIN 式を含むクエリに対するフィルタの書き換え処理を修正しました。#82092 を修正。 #82950 (Dmitry Novik). - キーが型変換されたキー・バリュー型ストレージを JOIN した場合にクラッシュする問題を修正しました。 #82497 (Pervakov Grigorii).
- 複数の JOIN を含むクエリで matcher を解決する際に発生していた論理エラーを修正しました。#81969 をクローズ。 #82421 (Vladimir Cherkasov).
- 等値比較のオペランドの型が異なる、または定数を参照している場合に、JOIN 条件へのフィルタのマージ処理を修正しました。#83432 を修正。 #84145 (Dmitry Novik).
- 一方のカラムが
LowCardinalityで、もう一方が定数である不等号条件で JOIN を行う際に、Expected single dictionary argument for functionという論理エラーが発生していた問題を修正しました。#81779 をクローズ。 #84019 (Alexey Milovidov).
Replicated データベースの修正
- DDLWorker と DatabaseReplicatedDDLWorker における markReplicasActive を修正しました。 #81395 (Tuan Pham Anh).
DatabaseReplicated::getClusterImplを修正しました。hostsの最初の要素(またはいくつかの要素)がid == DROPPED_MARKであり、同じ分片に対する他の要素が存在しない場合、shardsの最初の要素が空のベクタとなり、std::out_of_rangeが発生していました。 #82093 (Miсhael Stetsyuk).- 非同期テーブル読み込みジョブの数を追跡するようにしました。実行中のジョブがある場合は、
TransactionLog::removeOldEntries内でtail_ptrを更新しないようにしました。 #82824 (Tuan Pham Anh). - MergeTree テーブルを
add_minmax_index_for_numeric_columns=1またはadd_minmax_index_for_string_columns=1付きで作成した場合に、後続の ALTER 操作時にその索引がマテリアライズされ、新しいレプリカで Replicated データベースが正しく初期化できなくなる問題を修正しました。 #83751 (Nikolay Degterinsky). - DEFINER が削除された場合に、Replicated データベースの新しいレプリカ上での RMV 作成が失敗する問題を修正しました。 #85327 (Nikolay Degterinsky).
- メタデータファイルの移動に長時間かかる場合の Replicated データベースの復旧処理を修正しました。 #85177 (Tuan Pham Anh).
- Keeper 内でデータベースメタデータをリストアした後、Replicated データベースを強制的に復旧するようにしました。 #85960 (Tuan Pham Anh).
Replicatedデータベースの復旧におけるバグを修正しました。テーブル名に%記号が含まれている場合、復旧処理中に別の名前でテーブルが再作成されてしまう可能性がありました。 #85987 (Alexander Tokmakov).- DDL ワーカーがレプリカセットから古くなったホストをクリーンアップするようになりました。これにより ZooKeeper に保存されるメタデータ量が削減されます。 #88154 (alesapin).
論理更新に関する修正
ReplacingMergeTreeおよびCollapsingMergeTreeエンジンを使用するテーブルに対する論理更新の問題を修正しました。 #84851 (Anton Popov).- テーブル内のすべてのカラムを更新する論理更新における論理エラーを修正しました。 #84380 (Anton Popov).
- バージョン 25.7 未満のサーバー上で作成された
ReplicatedMergeTreeエンジンを使用するテーブルに対する論理更新の問題を修正しました。 #84933 (Anton Popov). ALTER TABLE ... REPLACE PARTITIONクエリ実行後に、レプリケーションなしのMergeTreeエンジンを使用するテーブルに対する論理更新で発生する問題を修正しました。 #84941 (Anton Popov).ReplicatedMergeTreeにおけるパッチパーツのクリーンアップ処理を修正しました。以前は、パッチパーツをマテリアライズするマージ済みまたはミューテーション済みパーツが別のレプリカからダウンロードされるまで、論理更新の結果がそのレプリカ上で一時的に見えない状態になる可能性がありました。 #85121 (Anton Popov).
S3 とオブジェクトストレージの修正
- シークレットマスキングにおける S3 テーブル関数の引数検証を修正し、発生し得る
LOGICAL_ERRORを防止しました。#80620 をクローズしました。#82056(Vladimir Cherkasov)。 - サーバーがメモリプレッシャー下にあるときにリモートクエリで発生し得るデッドロックを修正しました。#82160(Kirill)。
- 再読み込みできるように AWS ECS トークンに有効期限を追加しました。#82422(Konstantin Bogdanov)。
- 外部テーブルエンジンでキャッシュされたバッファに対する境界アラインメントの無効化を正しく行うように修正しました。この問題は https://github.com/ClickHouse/ClickHouse/pull/81868 によって発生していました。#82493(Kseniia Sumarokova)。
- S3 クライアントの
no_sign_requestを修正しました。これは S3 リクエストへの署名を明示的に行わないようにするために使用できます。また、エンドポイントベースの設定を利用して特定のエンドポイントに対して定義することもできます。#83379(Antonio Andelic)。 - s3Cluster() から Replicated MergeTree への INSERT SELECT 中に、利用不能なノードをスキップするようにしました。#83676(Igor Nikonov)。
- S3 リクエストレートのスローダウンに対する早期リターンの条件を修正しました。リトライ可能なエラーにより全スレッドが一時停止している際にスローダウン動作を有効化するために、
s3_slow_all_threads_after_network_errorかbackup_slow_all_threads_after_retryable_s3_errorのいずれかが true であればよいようにし、両方が必要にならないようにしました。#85505(Julia Kartseva)。 - 分散テーブルまたはリモートテーブル関数経由でオブジェクトストレージ関数から読み取る際の論理エラーを修正しました。次の issue を修正しています: #84658、#85173、#52022。#85359(alesapin)。
- S3Queue の "Table is already registered" による論理エラーを修正しました。#84433 をクローズしました。https://github.com/ClickHouse/ClickHouse/pull/83530 以降で発生していました。#84677(Kseniia Sumarokova)。
- 大きな設定値により S3Queue テーブルおよびレプリカの再起動で不具合が発生する問題を修正しました。#86074(Nikolay Degterinsky)。
DynamicAndVariantTypeFixes
- パースに失敗した際の Dynamic カラムのロールバック処理を修正。#82169 (Pavel Kruglov).
- UNION における Variant 型で発生する可能性のあるクラッシュを修正。#83295 (Pavel Kruglov).
- 遅延マテリアライズ時の Variant カラムの読み取りを修正。#84400 (Pavel Kruglov).
- 既存テーブルからの読み取り中に、default/materialize 式の実行時には experimental/suspicious な型を検証しないように修正。#81618 (Pavel Kruglov).
Keeper の修正
- Keeper の修正: セッション終了時に ephemeral node が削除された場合に、合計 watch 数が正しく更新されるように修正。#83583 (Antonio Andelic)。
- Keeper の changelog への順序不正な書き込みを修正。以前は、changelog への書き込みが進行中の状態で、ロールバックによって出力先ファイルが同時に変更される可能性がありました。この問題はログの不整合およびデータ損失につながる可能性がありました。#84434 (Antonio Andelic)。
- rocksdb ストレージを使用する Keeper におけるリーク (iterator が解放されていなかった) を修正。#84523 (Azat Khuzhin)。
- Keeper の設定
rotate_log_storage_interval = 0により ClickHouse がクラッシュする問題を修正。(issue #83975)。#84637 (George Larionov)。 - Keeper が返す合計 watch 数を修正。#84890 (Antonio Andelic)。
- RefreshTask 内で 'view' から zookeeper を取得する際に 'mutex' をロックするように修正。#84699 (Tuan Pham Anh)。
インデックスに関する修正
- 交互指定(オルタネーション)を含み、かつ先頭の選択肢がリテラルでない正規表現を用いた token/ngram 索引でのフィルタリングにおいて、過度にグラニュールをスキップしてしまう問題を修正しました。 #79373 (Eduard Karacharov).
use_skip_indexes_if_final_exact_mode設定の実装(25.6 で導入)が、MergeTreeエンジンの設定やデータ分布に応じて、適切な候補レンジを選択できない場合がありました。この問題は解消されました。 #82667 (Shankar Iyer).use_skip_indexes_if_final_exact_mode設定の最適化(25.6 で導入)が、MergeTreeエンジンの設定やデータ分布に応じて、適切な候補レンジを選択できない場合がありました。この問題は解消されました。 #82879 (Shankar Iyer).- 以前は、
set索引がフィルタを通過したグラニュールかどうかを判定する際に、Nullableカラムを考慮していませんでした(issue #75485)。 #84305 (Elmi Ahmadov). - NaN 値との比較において、
MinMax索引評価時に正しいレンジが使用されていませんでした。 #84386 (Elmi Ahmadov). ngramおよびno_opトークナイザーが、空の入力トークンに対して(実験的な)テキスト索引をクラッシュさせなくなりました。 #84849 (Robert Schulze).
materialized view の修正
- テーブルの依存関係に起因して Materialized Views が INSERT クエリを取り逃していたバグを修正しました。#82222 (Nikolay Degterinsky).
- https://github.com/ClickHouse/ClickHouse/pull/79963 以降、Materialized Views でサブカラムを使用すると動作しなくなり、ユーザーが
Not found column X in blockエラーを受け取る可能性がありました。この挙動を修正しました。修正対象: #82784。#83221 (Nikita Mikhaylov). - 型が異なる場合に materialized view 内で発生していた
illegal_type_of_argumentの問題を修正しました。#85135 (Sema Checherinda).
Azure およびクラウド ストレージの修正
- AzureBlobStorage においてネイティブコピーを行う際、認証方式を比較している途中で例外が発生した場合には、読み取りとコピー(非ネイティブコピー)にフォールバックするようコードを更新しました。 #82693 (Smita Kulkarni)。
AzureIteratorAsyncにおける二重解放(double-free)を修正しました。 #85064 (Nikita Taranov)。
クラッシュおよび安定性に関する修正
- セッション終了時のログ記録において、
user_idが空になる場合があることに起因するクラッシュを修正しました。#82513 (Bharat Nallan). - 不正な
INSERT実行後に接続が切断状態のまま残ることで発生していたクライアントのクラッシュを修正しました。#83253 (Azat Khuzhin). - 空のカラムを含むブロックのサイズを計算する際に発生していたクラッシュを修正しました。#83271 (Raúl Marín).
- CPU スケジューリングが有効な状態で、負荷下において設定
max_threads=1のクエリを実行した際に発生し得るクラッシュを修正しました。#83387 (Fan Ziqi). zoutofmemoryをハードウェアエラーとして扱うようにし、それ以外の場合には論理エラーをスローするようにしました。詳細は https://github.com/clickhouse/clickhouse-core-incidents/issues/877 を参照してください。#84420 (Han Fei).BackgroundSchedulePoolのシャットダウン時に、タスクからスレッドを join することに起因する可能性のある abort および(ユニットテストにおける)ハングを修正しました。#83769 (Azat Khuzhin).- バックグラウンドのキャンセルチェック用スレッドにより発生していたデッドロックを修正しました。#84203 (Antonio Andelic).
- ライブラリブリッジのクリーンアップ中の再帰的なコンテキストロックに起因する、シャットダウン時のデッドロックを修正しました。#83824 (Azat Khuzhin).
- 不正な
INSERT実行後に接続が切断状態のまま残ることで発生していたクライアントのクラッシュを修正しました。#83842 (Azat Khuzhin). - 文字列のデシリアライズ中に
MEMORY_LIMIT_EXCEEDEDが発生した場合に起こり得る未定義動作(UB、クラッシュ)を修正しました。#85440 (Azat Khuzhin). - 設定
log_commentまたはinsert_deduplication_tokenを変更する非同期のINSERTで、まれに発生していたクラッシュを修正しました。#85540 (Anton Popov).
Glue とカタログの修正
- Glue カタログ連携のバグを修正しました。ClickHouse は、一部のサブカラムに Decimal 型を含むネストされたデータ型のテーブルも読み取れるようになりました(例:
map<string, decimal(9, 2)>)。#81301 を修正。 #82114(alesapin)。 - ClickHouse は、テーブルタイプが小文字で指定されている場合でも Glue カタログからテーブルを読み取れるようになりました。 #84316(alesapin)。
- Unity カタログは、Delta 以外のテーブルの場合に、異常なデータ型を持つスキーマを無視するようになりました。#85699 を修正。 #85950(alesapin)。
関数に関する修正
- 関数
trim{Left,Right,Both}は、FixedString(N)型の入力文字列をサポートするようになりました。たとえば、SELECT trimBoth(toFixedString('abc', 3), 'ac')が動作するようになりました。#82691 (Robert Schulze). - 関数
trimがすべて定数の引数で呼び出された場合、定数の出力文字列を生成するようになりました。(バグ #78796)。#82900 (Robert Schulze). - フォーマッタ
%fを可変長フォーマッタ(例:%M)と一緒に使用した場合に、関数formatDateTimeが誤った出力を返す問題を修正しました。#83020 (Robert Schulze). - 関数
CASEにおけるNULL引数のバグを修正しました。#82436 (Yarik Briukhovetskyi). lowCardinalityKeys関数で、共有 Dictionary の無関係なパーツを使用しないようにしました。#83118 (Alexey Milovidov).- const 引数と非 const 引数が混在する場合の colorSRGBToOKLCH/colorOKLCHToSRGB を修正しました。#83906 (Azat Khuzhin).
array()関数で空のタプルが不正に構築される問題を修正しました。この修正により #84202 が解決されます。#84297 (Amos Bird).- Bech32 のエンコードおよびデコードが誤って行われる原因となっていたバグを修正しました。このバグは、テストで使用していたオンライン実装も同じ問題を抱えていたため、当初は検出されませんでした。#84257 (George Larionov).
Distributed query fixes
LIMITを伴う並列分散INSERT SELECTが許可されていましたが、これは正しくなく、ターゲットテーブルのデータが重複する原因になります。#84477 (Igor Nikonov).JOINまたはサブクエリが存在する場合は、テーブル関数をクラスタ版の代替関数に置き換えようとしないようにしました。#84335 (Konstantin Bogdanov).- 分散コンテキストで相関サブクエリが使用されている場合を検出してクラッシュを回避するチェックを追加しました。これにより #82205 が修正されました。#85030 (Dmitry Novik).
*Cluster関数の指標としてdistributed_depthを使用するのは誤りであり、データ重複を引き起こす可能性があるため、代わりにclient_info.collaborate_with_initiatorを使用するようにしました。#85734 (Konstantin Bogdanov).Distributed宛先テーブルに対する並列分散INSERT SELECTで、WITHステートメントからのグローバル定数をサポートしました。以前は、クエリがUnknown expression identifierエラーをスローする可能性がありました。#85811 (Nikolai Kochetov).DatabaseReplicatedを伴うCREATE ... AS (SELECT * FROM s3Cluster(...))を実行しようとした際の論理エラーを修正しました。#85904 (Konstantin Bogdanov).Distributedテーブルに対する ALTER 時にsharding_keyを検証するチェックを追加しました。以前は、不正な ALTER によってテーブル定義が壊れ、サーバーの再起動に失敗する可能性がありました。#86015 (Nikolay Degterinsky).
メトリクスと監視に関する修正
- 非同期メトリクス設定
asynchronous_metrics_update_period_sとasynchronous_heavy_metrics_update_period_sの検証ロジックを修正。#82310 (Bharat Nallan). IndexUncompressedCacheBytes/IndexUncompressedCacheCells/IndexMarkCacheBytes/IndexMarkCacheFilesメトリクスを修正(以前はCacheプレフィックスなしのメトリクスに含まれていた)。#83730 (Azat Khuzhin).- QueryMetricLog における
LOGICAL_ERRORを修正: Mutex をNULLにできない問題を修正。#82979 (Pablo Marcos). - KafkaAssignedPartitions および KafkaConsumersWithAssignment メトリクスが誤っていた問題を修正。#85494 (Ilya Golshtein).
PREWHERE(明示的または自動)使用時に処理バイト数の統計が過小評価される問題を修正。#85495 (Michael Kolupaev).- バックグラウンドスケジュールプールおよび executor におけるメモリトラッキングのずれを修正。#84946 (Azat Khuzhin).
データ型と変換に関する修正
- Time のパース処理で MSan の問題が発生する可能性があったケースを修正しました。これにより次の問題が修正されます: #82477。#82514(Yarik Briukhovetskyi)。
LowCardinality(Float32|Float64|BFloat16)型における NaN 値のソート順を修正しました。#83786(Pervakov Grigorii)。DateからDateTime64へのキャスト時に、大きな値(>2106-02-07)がオーバーフローする問題を修正しました。#83982(Yarik Briukhovetskyi)。- 負の Time 値をテーブルに暗黙的に読み込む際の問題を修正し、ドキュメントの記述も分かりやすくしました。#83091(Yarik Briukhovetskyi)。
- コーデック
DoubleDeltaは、数値型のカラムにのみ適用できるようになりました。特に、FixedStringカラムはもはやDoubleDeltaを用いて圧縮できません(#80220 の修正)。#84383(Jimmy Aguilar Mena)。 - JSON 数値を Decimal 型に変換する際の
JSONExtractにおける精度損失を修正しました。これにより、数値の JSON 値は浮動小数点の丸め誤差を回避しつつ、正確な 10 進表現が保持されるようになりました。#85665(ssive7b)。
メモリおよびリソース管理
max_untracked_memory周りの誤ったメモリ管理を修正。 #83607 (Azat Khuzhin).- クエリ間で
async_read_countersを共有しないようにする。 #83423 (Azat Khuzhin). - 一時データストレージとして使用される場合に、ファイルキャッシュの未初期化が原因となり得るエラーを修正。 #83539 (Bharat Nallan).
filesystem_prefetches_limitを常に適用するようにする(MergeTreePrefetchedReadPoolからの場合だけでなく)。 #83999 (Azat Khuzhin).
コンフィグレーションおよび設定の修正
- URI 経由で settings を渡す場合、最後に指定された値が使用されます。#82137 (Sema Checherinda).
- クライアント内のデータレース(グローバルコンテキストを使用しないことで回避)および
session_timezoneの上書き動作を修正しました(以前は、session_timezoneがusers.xml/クライアントオプションで空ではない値に設定され、クエリコンテキストでは空に設定された場合、本来は誤りであるにもかかわらずusers.xml側の値が使用されていましたが、現在は常にクエリコンテキストがグローバルコンテキストより優先されます)。#82444 (Azat Khuzhin). - サーバーの処理がスタックしないように、
threadpool_writer_pool_sizeを 0 に設定することを禁止しました。#82532 (Bharat Nallan). - 設定
role_cache_expiration_time_secondsの構成における軽微な整数オーバーフローを解消しました(issue #83374)。#83461 (wushap). - 論理エラーを引き起こす可能性があるため、
max_insert_block_sizeに 0 を指定することを禁止しました。#83688 (Bharat Nallan). estimateCompressionRatio()において、block_size_bytes=0 の場合に発生する無限ループを修正しました。#83704 (Azat Khuzhin).date_time_input_formatのようなパラメータが、HTTP の multipart リクエスト使用時に無視されていた問題を修正しました。#85570 (Sema Checherinda).
MongoDB の修正
- 以前は、
MongoDBテーブルエンジン定義でhost:port引数にパス要素を含めることができましたが、そのパス要素は暗黙的に無視されていました。MongoDB 連携機能では、そのようなテーブルの読み込みを拒否します。この修正では、MongoDBエンジンに 5 つの引数が指定されている場合に、そのようなテーブルの読み込みを許可し、引数から取得したデータベース名を使用してパス要素を無視します。注意: この修正は、新しく作成されたテーブルやmongoテーブル関数を使用したクエリ、さらに Dictionary のソースおよび名前付きコレクションには適用されません。#81942 (Vladimir Cherkasov).
その他の修正
- 以前のバージョンでは、
/jsへのリクエストに対してサーバーが過剰な内容を返していました。これにより #61890 が解決されました。#81895(Alexey Milovidov)。 InterpreterInsertQuery::extendQueryLogElemImplを修正し、(名前に-のような特殊文字が含まれている場合など)必要に応じてデータベース名およびテーブル名にバッククォートを追加するよう修正しました。 #81528 (Ilia Shvyrialkin).- suggestion スレッドとメインクライアントスレッドの間で発生し得るデータレースを修正。 #82233 (Azat Khuzhin).
- union/intersect/except_default_mode の書き換えにおける例外安全性の問題を修正。 #82664 をクローズ。 #82820 (Alexey Milovidov).
- キャッシュを行わない Database 実装を使用している場合、対応するテーブルのメタデータは、カラムが返されて参照が無効になった後に削除されます。 #82939 (buyval01).
- JSONEachRowWithProgress における Onprogress 呼び出しが終了処理と同期されるように変更されました。 #83879 (Sema Checherinda).
MATERIALIZE COLUMNクエリの実行時にchecksums.txtに予期しないファイルが含まれ、最終的にデータパートが detached 状態になる可能性があった、まれに発生するバグを修正しました。 #84007 (alesapin).- パーツの定期的なリフレッシュ時に例外を適切に処理するようにしました。 #84083 (Azat Khuzhin).
- クエリ内のブール値リテラルに対するカラム名の生成を、
1/0ではなくtrue/falseを使用するように修正し、ブール値リテラルと整数リテラルのあいだでカラム名が衝突しないようにします。 #84945 (xiaohuanlin). - Merge テーブルエンジンにおいて不正確なソートが発生する可能性のある問題を修正します。 #85025 (Xiaozhe Yu).
- DiskEncrypted 向けの不足していた API を実装。 #85028 (Azat Khuzhin).
- 名前の競合が発生する場合に、新しいアナライザーが
WITH句内で外側のエイリアスを参照できるようにする後方互換性用の設定を導入しました。これにより #82700 が修正されます。 #83797 (Dmitry Novik)。 - analyzer を有効にしている場合、
remoteテーブル関数のview(...)引数内で任意のテーブルを参照できるようにしました。#78717 を修正。#79377 を修正。#83844(Dmitry Novik)。 plain_rewritable/plainメタデータタイプに対して、(実験的トランザクションで使用される MergeTree での)追記型書き込みが適切に処理されるように修正しました。以前はこれらのタイプは単純に無視されていました。 #83695 (Tuan Pham Anh).IAccessStorageにおけるロガーの使用を修正。 #84365 (Konstantin Bogdanov)。- データレイクでの仮想カラムを用いたファイルのプルーニングを修正。 #84520 (Kseniia Sumarokova).
- 遅延しているリモートソースをクエリした際に、ベクターの範囲外アクセスが発生する可能性があった問題を修正しました。 #84820 (George Larionov).
- オブジェクトキューエンジンのテーブルメタデータに、すべての設定が正しく保存されるようにしました。 #84860 (Antonio Andelic).
- lazyカラムを外部ソートと併用した場合に発生する
CORRUPTED_DATAエラーを修正しました。 #84738 (János Benjamin Antal). SYSTEM DROP REPLICAクエリ中の不要なgetStatus()呼び出しを削除しました。バックグラウンドでテーブルが削除されている場合に、Shutdown for storage is called例外がスローされてしまう問題を修正しました。 #85220 (Nikolay Degterinsky).CREATE OR REPLACEおよびRENAMEクエリに、不足していたテーブル名の長さチェックを追加しました。 #85326 (Michael Kolupaev).- JSON に対する
ALTER UPDATEの実行中に発生するクラッシュとデータ破損を修正。 #85383 (Pavel Kruglov). - 長い文字列に対する CoalescingMergeTree のセグメンテーションフォルトを修正しました。これにより #84582 がクローズされます。#85709(scanhex12)。
send_logs_source_regexpを修正(#85105 における非同期ログ処理のリファクタリング後)。 #85797(Azat Khuzhin)。MEMORY_LIMIT_EXCEEDEDエラー時に update_field を持つ辞書で起こりうる不整合を修正。#85807(Azat Khuzhin)。url()テーブル関数による HTTP リクエストを修正し、標準以外のポートへアクセスする際にHostヘッダーにポート番号が正しく含まれるようにしました。これにより、開発環境で一般的な、カスタムポートで動作する MinIO などの S3 互換サービスに対して事前署名付き URL を使用する場合に発生していた認証エラーが解消されます。(#85898 を修正)。#85921(Tom Quist)。