後方互換性を持たない変更
JSON とデータフォーマットの変更
ストレージとパーティション化
関数の機能強化
データ型の改善
パフォーマンスとリソース管理
- 以前は、
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).
- ドットを含む識別子が複合識別子としてパースされるのを防ぐため、デフォルト式内ではそのような識別子を backticks で囲むことを必須化。 #83162 (Pervakov Grigorii).
- PostgreSQL スタイルのヒアドキュメント構文
$tag$ string contents... $tag$ (dollar-quoted 文字列リテラルとも呼ばれる) をサポート。以前のバージョンではタグに対する制約がより緩く、句読点や空白を含む任意の文字を含めることができました。このため、ドル記号で始まる識別子との間でパース上の曖昧さが生じていました。一方、PostgreSQL ではタグに単語文字しか使用できません。この問題を解決するため、ヒアドキュメントのタグに使用できる文字を単語文字のみに制限しました。 #84731 をクローズ。 #84846 (Alexey Milovidov).
セキュリティと権限
SYSTEM RESTART REPLICAS は、SHOW TABLES 権限のあるデータベース内のレプリカのみを再起動するようになりました。以前は、このクエリにより、Lazy データベースへのアクセス権がなくても、そのデータベース内のテーブルが同時に drop されている最中に、それらのテーブルが起動されていました。#83321 (Alexey Milovidov).
- 関数
azureBlobStorage、deltaLakeAzure、icebergAzure は、AZURE 権限を正しく検証するよう更新されました。すべてのクラスター対応関数 (-Cluster 関数) は、対応する非クラスター版の関数に対して権限を検証するようになりました。権限エラーを防ぐため、-Cluster 関数を呼び出すユーザーに適切な特権 (例: GRANT S3 ON *.* TO user) が付与されていることを確認してください。さらに、icebergLocal および deltaLakeLocal 関数でも、FILE 権限チェックが適用されるようになりました。#84938 ([Nikita Mikhaylov](https://github.com/nikitamikhaylov
新機能
データ型
関数
システムテーブル
Iceberg と Delta Lake
MergeTree とストレージ
- すべてのテーブルで
_table 仮想カラムがサポートされるようになり、Merge 型テーブルに限られなくなりました。#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 仮想カラムをサポートしました。このカラムは、各行が属する granule/mark の、その data part 内における 0 始まりの索引を示します。これにより #79572 に対応しています。#82341 (Amos Bird)。
プロトコルとクライアントのサポート
SQL とクエリ機能
フォーマット
format_schema の取得元を定義する format_schema_source 設定を追加しました。#80874 (Tuan Pham Anh).
- 新しい出力フォーマット
Hash を追加しました。これは、結果のすべてのカラムと行に対する単一のハッシュ値を計算します。たとえば、データ転送がボトルネックになるユースケースで、結果の「フィンガープリント」を計算するのに役立ちます。例: SELECT arrayJoin(['abc', 'def']), 42 FORMAT Hash は e5f9e676db098fdb9530d2059d8c23ef を返します。#84607 (Robert Schulze).
サーバー設定とワークロード管理
Cloud ストレージ
client_id と tenant_id を使用して認証できるよう、AzureBlobStorage に extra_credentials を追加しました。#84235 (Pablo Marcos).
Keeper
実験段階の機能
テーブルエンジンとテーブル関数
テキスト索引の改善
- テキスト索引を検索するための汎用関数
searchAny と searchAll を追加しました。 #80641 (Elmi Ahmadov).
- テキスト索引で
string トークナイザーがサポートされるようになりました。 #81752 (Elmi Ahmadov).
text 索引のデフォルトの粒度値を 64 に変更しました。これにより、内部ベンチマークにおける平均的なテストクエリの想定性能が向上します。 #82162 (Jimmy Aguilar Mena).
- 256-bit bitmap は state の outgoing label を順序付きで保持しますが、outgoing state は hash table に現れる順でディスクに保存されます。そのため、ディスクから読み込む際に label が誤った次の state を指してしまうことがありました。 #82783 (Elmi Ahmadov).
- 現在、FST tree は非圧縮のままディスクに保存されます。これにより、ディスクへの書き込み時とディスクからの読み取り時の両方で、性能低下や I/O 帯域の増加を招く可能性があります。 #83093 (Elmi Ahmadov).
機能の成熟度に関する更新
パフォーマンス改善
クエリ実行と集計
JOIN の最適化
- JOIN の入力 ブロック と出力 ブロック の最小サイズ (行数) を制御する新しい設定
min_joined_block_size_rows を追加しました (min_joined_block_size_bytes と同様。デフォルトは 65409) 。join algorithm が対応している場合に有効で、小さな ブロック はまとめられます。#81886 (Nikita Taranov).
- キーカラムが 1 つだけの典型的なケースで hash map への追加ループを削除し、
HashJoin の性能を最適化しました。また、常に true/false となる場合の null_map と join_mask のチェックも省略しました。#82308 (Nikita Taranov).
- #82308 の
null_map と JoinMask の最適化を、複数の論理和条件を持つ JOIN のケースにも適用しました。あわせて、KnownRowsHolder data structure も最適化しました。#83041 (Nikita Taranov).
- フラグにアクセスするたびに hash を計算しないよう、join フラグには単純な
std::vector<std::atomic_bool> を使用します。#83043 (Nikita Taranov).
- hash JOIN のメインループの外で
max_joined_block_rows を処理するようにしました。ALL JOIN の性能がわずかに向上します。#83216 (Nikolai Kochetov).
HashJoin が lazy 出力モードを使用する場合、結果カラム用メモリを事前確保しないようにしました。これは特に一致数が少ない場合に非効率です。さらに、JOIN 完了後には一致数を正確に把握できるため、より適切に事前確保できます。#83304 (Nikita Taranov).
- 右側が join キーカラムによって関数的に決定される場合 (すべての行の join key 値が一意な場合) 、すべての
LEFT/INNER JOIN は自動的に 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).
- ネイティブプロトコルで logs とプロファイルイベントを圧縮するようにしました。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).
column が Array 型ではない場合の has([c1, c2, ...], column) のような条件でも、bloom filter 索引が使われるようになりました。これにより、この種のクエリの性能が向上し、IN 演算子と同程度に効率的になります。#83945 (Doron David).
- ファイルサイズの昇順で索引を処理するようにしました。その結果、索引の順序付けでは、minmax 索引とベクトル索引がそれぞれ単純さと選択性の高さから優先され、その後に小さい索引が続きます。minmax/ベクトル索引の内部でも、より小さい索引が優先されます。#84094 (Maruth Goyal).
- 以前は、テキスト索引のデータは複数のセグメントに分割されていました (各セグメントのサイズはデフォルトで 256 MiB でした) 。これによりテキスト索引の構築時のメモリ消費量は抑えられる可能性がありましたが、その一方で必要なディスク容量が増え、クエリ応答時間も長くなっていました。#84590 (Elmi Ahmadov).
サブクエリの最適化
- 同値類を用いて冗長な
JOIN 操作を削除することで、相関サブクエリに対して生成される実行計画を最適化しました。すべての相関カラムに等価な式がある場合、query_plan_correlated_subqueries_use_substitution 設定が有効であれば CROSS JOIN は生成されません。 #82435 (Dmitry Novik).
- 相関サブクエリが関数
EXISTS の引数として現れる場合、必要なカラムだけを読み取るようにしました。 #82443 (Dmitry Novik).
Azure Blob Storage の改善
azureBlobStorage テーブルエンジンで、可能な場合はマネージド ID の認証トークンを cache して再利用するようになり、スロットリングを回避できるようになりました。 #79860 (Nick Blakely).
- Azure Blob Storage 向けの curl HTTP client を poco HTTP client に置き換えました。これらのクライアント向けに、S3 の設定に対応する複数の設定が追加されました。Azure と S3 の両方で、短めの接続 timeout が導入されました。Azure の プロファイルイベント とメトリクスの introspection も改善されました。新しい client はデフォルトで有効になっており、Azure Blob Storage 上のコールドクエリのレイテンシを大幅に改善します。古い
Curl client に戻すには、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 時間も readonly モードのままになることさえあります。しかし、cancel の呼び出しにこのロックは不要なようです。 #84311 (Alexander Tokmakov).
フォーマットの改善
- 新しい Parquet リーダーの実装。通常は従来より高速で、ページレベルのフィルタ pushdown と
PREWHERE をサポートします。現在は実験的です。有効にするには、設定 input_format_parquet_use_native_reader_v3 を使用してください。#82789 (Michael Kolupaev).
- パースエラーが発生しない場合にシリアライザーを再利用することで、ProtobufSingle 入力フォーマットのパフォーマンスを改善しました。#83613 (Eduard Karacharov).
データ型とシリアライゼーションの最適化
パイプラインと実行の改善
メモリとリソースの最適化
クエリ計画と分析
ロギングの改善
関数の最適化
- 一時データを削除することで
largestTriangleThreeBuckets を最適化しました。#84479 (Alexey Milovidov).
- 多くの文字列処理関数の実装を最適化・簡素化しました。いくつかの関数で誤っていたドキュメントも修正しました。注: String カラムおよび String カラムを含む複合型に対する
byteSize の出力は、空文字列あたり 9 バイトから 8 バイトに変更されました。これは想定どおりの動作です。#85063 (Alexey Milovidov).
Keeper の改善
データレイクの改善
改善
アクセス制御とセキュリティ
- ソースに対する新しいアクセス種別として
READ と WRITE を導入し、ソース関連の従来のアクセス種別はすべて非推奨になりました。これまでは GRANT S3 ON *.* TO user でしたが、現在は GRANT READ, WRITE ON S3 TO user となります。これにより、たとえば GRANT READ ON * TO user、GRANT WRITE ON S3 TO user のように、ソースに対する READ 権限と WRITE 権限を分離して付与できるようになりました。この機能は access_control_improvements.enable_read_write_grants 設定で制御され、デフォルトでは無効です。#73659 (pufit).
CREATE USER クエリで、ユーザー名にパラメーターを使用できるようにしました。#81387 (Diskein).
- コアダンプから機密データを除外するようにしました。AWS ライブラリ互換の
AwsNodumpMemoryManager と、STL 互換の JemallocNodumpSTLAllocator という 2 つのアロケータを追加しました。どちらも Jemalloc アロケータのラッパーです。これらは Jemalloc の extent hooks と madvise を使用して、メモリページを「ダンプしない」ようにマークします。S3 の認証情報、ユーザーの認証情報、および一部のクエリデータで使用されます。#82441 (Miсhael Stetsyuk).
- 一時ユーザーが作成したビューは、実際のユーザーのコピーを保持するようになり、一時ユーザーが削除された後も無効化されなくなりました。#84763 (pufit).
- 外部認証の forward_headers を大文字と小文字を区別せずに照合するようにしました。#84737 (ingodwerust).
GRANT READ/WRITE のソースタイプと GRANT TABLE ENGINE のテーブルエンジンを判別するため、system.grants に parameter カラムを追加しました。#85643 (MikhailBurdukov).
バックアップとリストア
データ整合性と検証
Iceberg テーブルエンジン
DeltaLake テーブルエンジン
DeltaLake テーブルエンジンを改善: delta-kernel-rs には ExpressionVisitor API があり、この PR で実装され、パーティションカラム式の変換に適用されました。これにより、これまでコード内で使われていた delta-kernel-rs の古い非推奨の方法が置き換えられます。今後、この ExpressionVisitor によって、統計ベースのプルーニングや Delta Lake 固有の機能も実装できるようになります。さらに、この変更は DeltaLakeCluster テーブルエンジンでパーティションプルーニングをサポートすることも目的としています (パース済み式の結果である ActionsDAG はデータパスとともにイニシエーターからシリアライズして送信されます。これは、プルーニングに必要なこの種の情報が、データファイル一覧の取得時に得られるメタ情報としてしか存在せず、その一覧取得はイニシエーターでしか行われない一方で、その情報自体は各読み取りサーバー上のデータに適用する必要があるためです) 。 #81136 (Kseniia Sumarokova).
- データレイクのクラスターテーブル関数でのパーティションプルーニングを修正。 #82131 (Kseniia Sumarokova).
DeltaLakeCluster テーブル関数でパーティション化されたデータの読み取りを修正。この PR ではクラスター関数のプロトコルバージョンを引き上げ、イニシエーターからレプリカへ追加情報を送信できるようにしました。この追加情報には、パーティションカラム (および今後は generated columns など) をパースするために必要な delta-kernel の変換式が含まれます。 #82132 (Kseniia Sumarokova).
- database Datalake が、よりわかりやすい例外を返すようになりました。#81211 を修正。 #82304 (alesapin).
- storage
DeltaLake に、内部 delta-kernel-rs フィルタリング (統計およびパーティションプルーニング) を実装。 #84006 (Kseniia Sumarokova).
- デバッグ時には test log level であっても expression visitor のログが冗長になりすぎる場合があるため、それを無効化する設定
delta_lake_enable_expression_visitor_logging を追加。 #84315 (Kseniia Sumarokova).
- テーブルエンジン
DeltaLake で特定の スナップショットバージョン を読み取れるようにする設定 delta_lake_snapshot_version を追加。 #85295 (Kseniia Sumarokova).
データレイク インテグレーション
- 非同期リクエストにより、データカタログでのテーブル一覧表示を高速化。 #81084 (alesapin).
- Glue カタログで
TimestampTZ をサポート。これにより #81654 をクローズ。 #83132 (scanhex12).
- FormatParserGroup を 2 つの独立した構造体に分割。1 つ目は共有のコンピュートおよび I/O リソース、2 つ目は共有のフィルターリソース (filter ActionDag、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).
- この PR では、
s3_slow_all_threads_after_network_error 設定が有効な場合に、S3 の再試行メカニズムへジッターを導入しました。 #81849 (zoomxi).
- 明示的に指定した IAM role を使用する AWS S3 認証を実装しました。GCS 向けの OAuth も実装しました。これらの機能は最近まで ClickHouse Cloud でのみ利用可能でしたが、現在はオープンソース化されています。さらに、オブジェクトストレージ向けの接続パラメータのシリアライゼーションなど、一部のインターフェイスも同期しました。 #84011 (Alexey Milovidov).
- 外部集約/ソートに対して、任意のストレージポリシー (つまり S3 などのオブジェクトストレージ) を使用できるようにしました。 #84734 (Azat Khuzhin).
- 削除されたすべてのオブジェクトを収集し、オブジェクトストレージに対する削除操作を 1 回で実行するようにしました。 #85316 (Mikhail Artemenko).
S3Queue テーブルエンジン
Kafka インテグレーション
ClickHouse Keeper の改善
- Keeper の改善: バックグラウンドスレッドで変更ログファイルをディスク間で移動できるようにしました。従来は、変更ログを別のディスクに移動すると、移動が完了するまで Keeper 全体がブロックされていました。そのため、移動に長時間かかる場合 (たとえば S3 ディスクへの移動) には、パフォーマンスが低下していました。 #82485 (Antonio Andelic).
- Keeper の改善: 新しい config
keeper_server.cleanup_old_and_ignore_new_acl を追加しました。これを有効にすると、すべてのノードの ACL がクリアされ、新しいリクエストの ACL は無視されます。ノードから ACL を完全に削除することが目的であれば、新しい snapshot が作成されるまで、この config を有効のままにしておくことが重要です。 #82496 (Antonio Andelic).
- Keeper の改善: world:anyone ACL に対する個別の権限をサポートしました。 #82755 (Antonio Andelic).
- config で、パスごとに追加の Keeper ACL を指定できるようにしました。特定のパスに追加 ACL を設定する場合は、config の
zookeeper.path_acls で定義します。 #82898 (Antonio Andelic).
- ソフトメモリ制限により Keeper が書き込みを拒否したときの ProfileEvent を追加しました。 #82963 (Xander Garbett).
- 新しい種類のリクエストを有効にする
create_if_not_exists、check_not_exists、remove_recursive の feature flags を、Keeper でデフォルトで有効にしました。 #83488 (Antonio Andelic).
apply_to_children config を使用して、特定の 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 のログエントリ cache サイズをエントリ数で制限できるようにしました。 #84877 (Antonio Andelic).
JSON 型と Dynamic 型
- パーツ内に格納されているすべてのサブストリームを追跡するため、wide パーツに
columns_substreams.txt ファイルを追加しました。これにより、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 の圧縮ブロックサイズを設定するための設定を導入し、Spark や Hive との整合性を保つため、デフォルト値を 64KB から 256KB に変更しました。 #80602 (李扬).
- spec の規定に従い、Parquet の enum をバイト配列として書き込めるようにしました。詳細は後ほど追記します。 #81090 (Arthur Passos).
- GeoParquet を出力フォーマットとして書き込めるようにしました。 #81784 (scanhex12).
分散クエリと並列レプリカ
- 新しい設定
enable_add_distinct_to_in_subqueries が導入されました。有効にすると、ClickHouse は分散クエリの IN 句内のサブクエリに自動的に DISTINCT を追加します。これにより、分片間で転送される一時テーブルのサイズを大幅に削減でき、ネットワーク効率の向上が見込めます。注: これはトレードオフです。ネットワーク転送量は減る一方で、各ノードで追加のマージ (重複排除) 処理が必要になります。ネットワーク転送がボトルネックで、マージのコストを許容できる場合にこの設定を有効にしてください。 #81908 (fhw12345).
address_expression 引数でクラスターが指定されている場合、remote-() テーブル関数で並列レプリカをサポートするようになりました。あわせて、#73295 も修正されています。 #82904 (Igor Nikonov).
- 並列レプリカを使用する JOIN で、join の論理ステップを使用するようになりました。並列レプリカを使用する 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).
- TCP サーバーのキュー (デフォルトは 64) を、listen_backlog (デフォルトは 4096) に基づいて調整しました。#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).
- サイズの大きいカラムを含む JOIN のメモリ使用量を制限するため、
max_joined_block_size_rows に加えて 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 の非同期メトリクスに pressure メトリクスを追加しました。 #80779 (Xander Garbett).
- mark cache からのエビクションを追跡するためのメトリクス
MarkCacheEvictedBytes、MarkCacheEvictedMarks、MarkCacheEvictedFiles を追加しました。 (issue #60989). #80799 (Shivji Kumar Jha).
system.formats テーブルに、HTTP の content type や schema inference の機能など、フォーマットに関する拡張情報が含まれるようになりました。 #81505 (Alexey Milovidov).
TRUNCATE TABLE system.warnings を使って system.warnings テーブル内のすべての警告を消去できるようになりました。 #82087 (Vladimir Cherkasov).
system.licenses に Rust crate のライセンス一覧を追加しました。 #82440 (Raúl Marín).
- たとえば
(a < 1 and a > 0) or b = 3 のような複雑な CNF/DNF を、統計に基づいて推定するようにしました。 #82663 (Han Fei).
- 場合によっては、メトリクスに複数の次元が必要です。たとえば、単一のカウンターにするのではなく、失敗した merge や mutation をエラーコードごとにカウントするケースです。 #83030 (Miсhael Stetsyuk).
MergeParts エントリ向けの part_log profile events に、プロセス resource メトリクス (UserTimeMicroseconds、SystemTimeMicroseconds、RealTimeMicroseconds など) を追加しました。 #83460 (Vladimir Cherkasov).
- Cgroup レベルのメトリクスとシステム全体のメトリクスが、まとめて報告されるようになりました。Cgroup レベルのメトリクスは
CGroup<Metric>、OS レベルのメトリクス (procfs から収集) は OS<Metric> という名前になります。 #84317 (Nikita Taranov).
- 同時実行の bounded queue のサイズを監視するための次元メトリクスを追加しました。オブザーバビリティ向上のため、queue type と instance ID のラベルが付与されます。 #84675 (Miсhael Stetsyuk).
system.columns テーブルで、既存の name カラムの alias として column が利用できるようになりました。 #84695 (Yunchi Pang).
system.errors に format string カラムを追加しました。このカラムは、アラートルールで同じ error type ごとにグループ化するために必要です。 #84776 (Miсhael Stetsyuk).
- Async Log の制限を調整可能にし、イントロスペクションを追加しました。 #85105 (Raúl Marín).
system.columns のテーブルカラムサイズを取得する際に UNKNOWN_DATABASE を無視するようにしました。 #85632 (Azat Khuzhin).
データベース エンジン
システムおよび内部の改善
- DatabaseCatalog にテーブル UUID を手動で追加することで、読み取り専用のリモートディスクを持つデータベースをアタッチできない問題を修正しました。 #82670 (Tuan Pham Anh).
distributed_ddl_output_mode='*_only_active' における DDL task の処理を改善し、レプリケーションラグが 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 database の設定向けに server setting
logs_to_keep を追加し、Replicated databases に対するデフォルトの logs_to_keep parameter を設定できるようにしました。小さい値にすると ZooKeeper ノード数を削減でき (特にデータベース数が多い場合に有効) 、大きい値にすると長時間停止していたレプリカでも追いつけるようになります。 #84183 (Alexey Khatskevich).
- Replicated database setting
max_retries_before_automatic_recovery のデフォルト値を 10 に変更し、一部のケースでより高速に復旧できるようにしました。 #84369 (Alexander Tokmakov).
- 古い一時テーブルの作成とリネームをスキップすることで、Replicated databases における追記型ではないリフレッシャブルmaterialized view の DDL 操作を最適化しました。 #84858 (Tuan Pham Anh).
レプリケーションと同期
SystemAndInternalImprovements
- ZooKeeper の接続問題が発生した際にテーブル作成を再試行するよう
SYSTEM RESTART REPLICA を改善し、テーブルが失われるのを防ぐようにしました。#82616 (Nikolay Degterinsky).
- StorageID の取得から
IDatabase::alterTable の呼び出しまでの間にテーブルが EXCHANGE された場合でも不正なテーブル定義を防げるよう、ReplicatedMergeTree::executeMetadataAlter に UUID の検証を追加しました。#82666 (Nikolay Degterinsky).
- 実験的なゼロコピー レプリケーションに関連する、実験的な
send_metadata ロジックを削除しました。このコードは一度も使われたことがなく、サポートもされておらず、おそらく壊れていたうえ、その機能を検証するテストもありませんでした。#82508 (alesapin).
remote_fs_zero_copy_zookeeper_path でのマクロ展開をサポートしました。#85437 (Mikhail Koviazin).
関数と式
MergeTree の改善
- オンザフライで更新されたカラムやパッチパートに依存するスキッピング索引を、より細かい粒度で無効化できるようにしました。これにより、スキッピング索引はオンザフライミューテーションまたはパッチパートの影響を受けたパーツでのみ無効化され、従来のようにすべてのパーツで無効化されることはなくなりました。#84241 (Anton Popov).
- MergeTree setting
search_orphaned_parts_drives を追加し、たとえばローカルメタデータを持つディスクごとに、パーツを探索する範囲を制限できるようにしました。#84710 (Ilya Golshtein).
WHERE に対する read_in_order_use_virtual_row の不足していたサポートを追加しました。これにより、フィルターが PREWHERE に完全にプッシュダウンされていないクエリで、追加のパーツの読み取りをスキップできるようになります。#84835 (Nikolai Kochetov).
- MergeTree における「compact」な Variant 判別子のシリアライゼーションの使用を修正しました。以前は、使用可能なケースでも一部で使われていませんでした。#84141 (Pavel Kruglov).
- パッチパート内の非圧縮バイト総量に対する制限 (テーブル設定
max_uncompressed_bytes_in_patches) を追加しました。これにより、論理更新後の SELECT クエリの大幅な遅延を防ぎ、論理更新の不適切な使用も抑制します。#85641 (Anton Popov).
キャッシュとメモリ管理
ベクトル類似度索引
NumericIndexedVector でユーザーが nan と inf を使用できないようにしました。#82239 の修正に加え、関連する追加修正も含まれています。#82681 (Raufs Dunamalijevs).
- ベクトル類似度索引が二値量子化をサポートするようになりました。二値量子化により、メモリ消費量が大幅に削減され、ベクトル索引の構築も高速化されます (距離計算が高速になるため) 。また、既存の設定
vector_search_postfilter_multiplier は廃止され、より汎用的な設定 vector_search_index_fetch_multiplier に置き換えられました。#85024 (Shankar Iyer).
- ベクトル類似度索引を使用した近似ベクトル検索が GA になりました。#85888 (Robert Schulze).
エラー処理とメッセージ
SQL フォーマットの改善
External integrations
- named collections を使用する際の ODBC と JDBC のパラメータ名を統一しました。#83410 (Andrey Zvonov).
- MongoDB: String から数値型への暗黙的なパース。従来は、ClickHouseテーブルの数値カラムに対して MongoDB ソースから String 値を受け取ると、例外がスローされていました。現在は、エンジンがその String から数値を自動的にパースするようになりました。#81167 をクローズしました。#84069 (Kirill Nikiforov).
- サポート対象外のアーキテクチャでも
simdjson を使用できるようにしました (従来は CANNOT_ALLOCATE_MEMORY エラーの原因となっていました) 。#84966 (Azat Khuzhin).
その他の改善
バグ修正 (正式な安定版リリースでユーザーに明らかに見える不具合)
パフォーマンス最適化
クエリ実行に関する修正
Iceberg と DataLake の修正
Delta Lake の修正
有効期限 (TTL) と MergeTree の修正
- 有効期限 (TTL) によって行数が減った際に min-max 索引を再計算し、
minmax_count_projection など、これに依存するアルゴリズムの正しさを確保するようにしました。これにより #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)。
プロジェクションの修正
- カラム型が Nullable に変更された際に、プロジェクションの実体化中に発生する論理エラーを修正しました。#80741 (Pavel Kruglov).
enable_shared_storage_snapshot_in_query = 1 のとき、mergeTreeProjection テーブル関数 で親メタデータが誤って使用される問題を修正しました。これは #82634 に対する修正です。#82638 (Amos Bird).
- テーブルにプロジェクションがあり、
lightweight_mutation_projection_mode = 'rebuild' が設定されていて、ユーザーがテーブル内のいずれかの block からすべての行を削除する lightweight delete を実行した場合に、まれに ClickHouse がクラッシュする問題を修正しました。#84158 (alesapin).
- 壊れたプロジェクションを含むパーツのバックアップを修正しました。#85362 (Antonio Andelic).
_part_offset カラムは、安定化されるまでリリース版ではプロジェクション内で使用できないようにしました。#85372 (Sema Checherinda).
並列レプリカの修正
- 並列レプリカで実行される一部のクエリでは、順序どおりに読み取る最適化がイニシエーターには適用されても、リモートノードには適用されないことがありました。その結果、並列レプリカのコーディネーター (イニシエーター上) とリモートノードで異なる読み取りモードが使われるという論理的な誤りが発生していました。 #80652 (Igor Nikonov).
- サブクエリに
FINAL が含まれる場合は、並列レプリカを無効化します #81401 by . #83455 (zoomxi).
- 並列レプリカを使用するクエリで、複数の INNER JOIN の後に RIGHT JOIN が続く場合の
LOGICAL_ERROR を修正しました。このようなクエリでは並列レプリカを使用しません。 #84299 (Vladimir Cherkasov).
- 逆順で順序どおりに読み取る最適化を使用する並列レプリカのクエリでは、誤った結果が生成される可能性があります。 #85406 (Igor Nikonov).
認証とセキュリティ
バックアップと復元に関する修正
ウィンドウ関数と集約関数
- マージ中に例外が発生した場合に
Aggregator がクラッシュする可能性がある問題を修正しました。 #81450 (Nikita Taranov).
- マージ中に例外が発生した場合に
Aggregator がクラッシュする可能性がある問題を修正しました。 #82022 (Nikita Taranov).
- arraySimilarity のコピー&ペーストミスを修正し、UInt32 および Int32 の重みを使用できないようにしました。テストとドキュメントも更新しました。 #82103 (Mikhail f. Shiryaev).
numericIndexedVectorPointwiseAdd、numericIndexedVectorPointwiseSubtract、numericIndexedVectorPointwiseMultiply、numericIndexedVectorPointwiseDivide の各関数を大きな数値に適用した際に発生していたオーバーフローを修正しました。 #82165 (Raufs Dunamalijevs).
Parquet とファイルフォーマットの修正
WHERE function(key) IN (...) のような条件を、WHERE key IN (...) であるかのように誤って適用していた Parquet bloom filter の問題を修正しました。#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 の修正
Replicated database の修正
- DDLWorker と DatabaseReplicatedDDLWorker の
markReplicasActive を修正しました。#81395 (Tuan Pham Anh)。
DatabaseReplicated::getClusterImpl を修正しました。hosts の先頭要素 (または先頭の複数要素) が id == DROPPED_MARK を持ち、かつ同じ分片に属する他の要素が存在しない場合、shards の先頭要素が空のベクターとなり、std::out_of_range につながる問題がありました。#82093 (Miсhael Stetsyuk)。
- 非同期テーブル loading ジョブの数を追跡するようにしました。実行中のジョブがある場合、
TransactionLog::removeOldEntries で tail_ptr を更新しません。#82824 (Tuan Pham Anh)。
- MergeTree table を
add_minmax_index_for_numeric_columns=1 または add_minmax_index_for_string_columns=1 を指定して作成した場合、その後の ALTER 操作で索引が materialized され、新しいレプリカ上で Replicated database を正しく初期化できなくなる問題を修正しました。#83751 (Nikolay Degterinsky)。
- DEFINER が削除されている場合に、Replicated database の新しいレプリカ上で RMV を作成できない問題を修正しました。#85327 (Nikolay Degterinsky)。
- メタデータファイルの移動に時間がかかる場合に、replicated databases を復旧できない問題を修正しました。#85177 (Tuan Pham Anh)。
- Keeper 内の database メタデータを復元した後、Replicated Database を強制的に復旧するようにしました。#85960 (Tuan Pham Anh)。
Replicated database の復旧に関するバグを修正しました。テーブル名に % 記号が含まれている場合、復旧中に別名でテーブルが再作成される可能性がありました。#85987 (Alexander Tokmakov)。
- DDL worker がレプリカ集合から outdated なホストをクリーンアップするようになりました。これにより、ZooKeeper に保存されるメタデータ量が削減されます。#88154 (alesapin)。
論理更新の修正
ReplacingMergeTree および CollapsingMergeTree エンジンを使用するテーブルでの論理更新を修正しました。#84851 (Anton Popov).
- テーブル内のすべてのカラムを更新する論理更新におけるロジックエラーを修正しました。#84380 (Anton Popov).
- 25.7 未満のバージョンのサーバー上で作成された
ReplicatedMergeTree エンジンのテーブルでの論理更新を修正しました。#84933 (Anton Popov).
- 非レプリケートの
MergeTree エンジンのテーブルで、ALTER TABLE ... REPLACE PARTITION クエリ実行後の論理更新を修正しました。#84941 (Anton Popov).
ReplicatedMergeTree におけるパッチパートのクリーンアップを修正しました。これまでは、パッチパートを実体化するマージ済みまたはミューテーション済みのパーツが別のレプリカからダウンロードされるまで、論理更新の結果がそのレプリカ上で一時的に見えなくなることがありました。#85121 (Anton Popov).
S3 およびオブジェクトストレージの修正
DynamicAndVariantTypeFixes
Keeper の修正
索引関連の修正
- alternation を含み、かつ最初の選択肢がリテラルでない regexp による 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 索引でグラニュールが filter を通過するかどうかを判定する際に、Nullable カラムが考慮されていませんでした (issue #75485) 。#84305 (Elmi Ahmadov).
MinMax 索引の評価時に、nan 値との比較で正しい範囲が使われていませんでした。#84386 (Elmi Ahmadov).
ngram および no_op トークナイザーで、空の入力トークンに対して (Experimental な) テキスト索引がクラッシュしなくなりました。#84849 (Robert Schulze).
materialized view の修正
Azure とクラウドストレージ関連の修正
- AzureBlobStorage でネイティブコピー時に authentication methods を比較する際、例外が発生した場合は、読み取りとコピー (つまり非ネイティブコピー) にフォールバックするようコードを更新しました。#82693 (Smita Kulkarni).
AzureIteratorAsync における二重解放を修正しました。#85064 (Nikita Taranov).
クラッシュおよび安定性の修正
Glue とカタログの修正
- Glue カタログのインテグレーションの不具合を修正しました。これにより、ClickHouse は一部のサブカラムに Decimal 型を含むネストされたデータ型を持つテーブルを読み取れるようになりました。たとえば、
map<string, decimal(9, 2)> です。#81301 を修正しました。#82114 (alesapin)。
- ClickHouse は、テーブルタイプが小文字で指定された Glue カタログ のテーブルを読み取れるようになりました。#84316 (alesapin)。
- Unity Catalog は、Delta テーブル以外の場合、異常なデータ型を持つスキーマを無視するようになりました。#85699 を修正しました。#85950 (alesapin)。
関数の修正
分散クエリの修正
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).
- background schedule pool と executor に起因するメモリ追跡のずれを修正しました。 #84946 (Azat Khuzhin).
データ型と変換の修正
メモリとリソース管理
構成と設定の修正
- URI 経由で設定を渡した場合は、最後の値が使用されるようになりました。#82137 (Sema Checherinda).
- クライアントでのデータ競合 (グローバルコンテキストを使わないことで回避) と
session_timezone の override を修正しました (従来は、たとえば session_timezone が users.xml / クライアントオプションでは空でない値に設定され、クエリコンテキストでは空に設定されている場合、誤って users.xml の値が使用されていました。現在は、クエリコンテキストが常にグローバルコンテキストより優先されます) 。#82444 (Azat Khuzhin).
- サーバー処理が停止しないよう、
threadpool_writer_pool_size を 0 に設定できないようにしました。#82532 (Bharat Nallan).
- 設定
role_cache_expiration_time_seconds の構成における軽微な整数 overflow を解消しました (issue #83374) 。#83461 (wushap).
- 論理 error を引き起こす可能性があるため、max_insert_block_size に 0 を設定できないようにしました。#83688 (Bharat Nallan).
block_size_bytes=0 の場合に estimateCompressionRatio() で発生する無限ループを修正しました。#83704 (Azat Khuzhin).
date_time_input_format のような parameter は、multipart を使用する HTTP では無視されていました。#85570 (Sema Checherinda).
MongoDB の修正
- これまで、
MongoDB テーブルエンジンの定義では、host:port argument に path 部分を含めることができましたが、その部分は暗黙的に無視されていました。mongodb integration はこのようなテーブルを読み込めませんでした。今回の修正により、MongoDB engine の引数が 5 つある場合は、そのようなテーブルも読み込めるようになり、arguments の database 名を使用して path 部分を無視します。注: この修正は、新規に作成されるテーブルや mongo table function を使用する queries、ならびに Dictionary ソースおよび named collections には適用されません。#81942 (Vladimir Cherkasov).
その他の修正