2025 Changelog

#### New Feature[​](#new-feature "Direct link to New Feature")

- Users can now configure S3/Azure Queue tables to move or tag processed files, in addition to the previous options to keep or remove files. Resolves [#72944](https://github.com/ClickHouse/ClickHouse/issues/72944). [#86907](https://github.com/ClickHouse/ClickHouse/pull/86907) ([Murat Khairulin](https://github.com/mxwell)).
- In storage S3/Azure Queue add setting `commit_on_select` (to define whether processed data needs to be committed and whether to apply `after_processing` action). The default value is `false`, fix check for attached mv during select. [#91450](https://github.com/ClickHouse/ClickHouse/pull/91450) ([Kseniia Sumarokova](https://github.com/kssenii)).
- Add instrumentation at runtime using XRay to debug issues in production and profile deterministically. Resolves [#74249](https://github.com/ClickHouse/ClickHouse/issues/74249). [#89173](https://github.com/ClickHouse/ClickHouse/pull/89173) ([Pablo Marcos](https://github.com/pamarcos)).
- Allows the use of non-constant second arguments for `IN`. It also supports a tuple as a second argument. [#77906](https://github.com/ClickHouse/ClickHouse/pull/77906) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
- Functions to calculate area and perimeter for the geometry type. [#89047](https://github.com/ClickHouse/ClickHouse/pull/89047) ([Konstantin Vedernikov](https://github.com/scanhex12)).
- Implement `dictGetKeys` function that returns the dictionary key(s) whose attribute equals the specified value. It uses a per-query reverse-lookup cache, tuned by the `max_reverse_dictionary_lookup_cache_size_bytes` setting, to speed up repeated lookups. [#89197](https://github.com/ClickHouse/ClickHouse/pull/89197) ([Nihal Z. Miaji](https://github.com/nihalzp)).
- Add setting `type_json_skip_invalid_typed_paths` to disable exceptions for inserts/type casts to JSON type when input JSON cannot be cast to explicit typed paths in JSON type. Falls back to null/zero value of typed path. [#89886](https://github.com/ClickHouse/ClickHouse/pull/89886) ([Max Justus Spransy](https://github.com/maxjustus)).
- Support `direct` (nested loop) join for MergeTree tables. To use it, specify it as the single option in the setting: `join_algorithm = 'direct'`. [#89920](https://github.com/ClickHouse/ClickHouse/pull/89920) ([Vladimir Cherkasov](https://github.com/vdimir)).
- Support `ORDER BY` in `CREATE` operation for iceberg + sorting in `INSERT`. Resolves [#89916](https://github.com/ClickHouse/ClickHouse/issues/89916). [#90141](https://github.com/ClickHouse/ClickHouse/pull/90141) ([Konstantin Vedernikov](https://github.com/scanhex12)).
- Introduce projection-level settings, exposed through the new `WITH SETTINGS` clause in `ALTER TABLE ... ADD PROJECTION`. These settings allow projections to override certain MergeTree storage parameters (e.g. `index_granularity`, `index_granularity_bytes`) on a per-projection basis. [#90158](https://github.com/ClickHouse/ClickHouse/pull/90158) ([Amos Bird](https://github.com/amosbird)).
- Add `HMAC(algorithm, message, key)` sql function as a part of [#73900](https://github.com/ClickHouse/ClickHouse/issues/73900) and [#38775](https://github.com/ClickHouse/ClickHouse/issues/38775). [#90837](https://github.com/ClickHouse/ClickHouse/pull/90837) ([Mikhail f. Shiryaev](https://github.com/Felixoid)).
- Add support for `has` function to use primary key and data skipping indexes when first argument is constant array. Closes [#90980](https://github.com/ClickHouse/ClickHouse/issues/90980). [#91023](https://github.com/ClickHouse/ClickHouse/pull/91023) ([Nihal Z. Miaji](https://github.com/nihalzp)).
- Implement new input output format `Buffers`. This format is similar to `Native`; however, unlike `Native`, it does not store column names, column types, or any extra metadata. Closes [#84017](https://github.com/ClickHouse/ClickHouse/issues/84017). [#91156](https://github.com/ClickHouse/ClickHouse/pull/91156) ([Nihal Z. Miaji](https://github.com/nihalzp)).
- Add a setting `max_streams_for_files_processing_in_cluster_functions` to control number of streams for parallel files reading in Cluster table functions. Closes [#90223](https://github.com/ClickHouse/ClickHouse/issues/90223). [#91323](https://github.com/ClickHouse/ClickHouse/pull/91323) ([Pavel Kruglov](https://github.com/Avogar)).
- Data masking for Row-level security (only available in ClickHouse Cloud). Add data masking policy parser to support it in clickhouse-client. [#90552](https://github.com/ClickHouse/ClickHouse/pull/90552) ([pufit](https://github.com/pufit)).
- Add `allow_reentry` option to `windowFunnel` aggregate function. When enabled with strict\_order, it ignores events that violate the order instead of stopping the funnel analysis. This enables handling user journeys with refreshes (A->A->B) or back-navigation (A->B->A->C) without underreporting conversion rates. [#86916](https://github.com/ClickHouse/ClickHouse/pull/86916) ([Lee ChaeRok](https://github.com/LeeChaeRok)).
- Keeper compatibility with zookeeper: create with statistics. [#88797](https://github.com/ClickHouse/ClickHouse/pull/88797) ([Konstantin Vedernikov](https://github.com/scanhex12)).
- Support for ZooKeeper persistent watches in ClickHouse Keeper. Continuation part 2: <https://github.com/ClickHouse/ClickHouse/pull/78207>. [#88813](https://github.com/ClickHouse/ClickHouse/pull/88813) ([Konstantin Vedernikov](https://github.com/scanhex12)).
- Add a MergeTree setting `alter_column_secondary_index_mode` to control what to do with indices during mutations. Possible values: throw, drop, rebuild, and compatibility. Closes [#77797](https://github.com/ClickHouse/ClickHouse/issues/77797). [#89335](https://github.com/ClickHouse/ClickHouse/pull/89335) ([Raúl Marín](https://github.com/Algunenano)).
- As `Time` and `Time64` data types are production ready, the setting `enable_time_time64_type` is now enabled by default. [#89345](https://github.com/ClickHouse/ClickHouse/pull/89345) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
- Support reading DeltaLake CDF via `deltaLake` table function with settings `delta_lake_snapshot_start_version`, `delta_lake_snapshot_end_version`. The CDF (Change Data Feed, a feature that lets you automatically capture and query row-level data changes—such as inserts, updates, and deletes—between versions of a Delta table) is enabled in DeltaLake via `delta.enableChangeDataFeed`. The columns provided along with the data are `_change_type`, `_commit_version`, `_commit_timestamp`. [#90431](https://github.com/ClickHouse/ClickHouse/pull/90431) ([Kseniia Sumarokova](https://github.com/kssenii)).
- Support negative indexes for tuple element access (e.g. `tuple.-1`). [#91665](https://github.com/ClickHouse/ClickHouse/pull/91665) ([Amos Bird](https://github.com/amosbird)).

#### Experimental Feature[​](#experimental-feature "Direct link to Experimental Feature")

- Introduce Text index format v3 and promote it to Beta status.
- The new logic is introduced to automatically execute queries using parallel replicas, controlled by the setting `automatic_parallel_replicas_mode`. During normal single-node execution, ClickHouse collects statistics that will later be considered during the planning stage. If statistics suggest that parallel replicas are likely to be beneficial, ClickHouse will automatically execute the given query with parallel replicas. The set of supported queries is currently fairly limited. [#87541](https://github.com/ClickHouse/ClickHouse/pull/87541) ([Nikita Taranov](https://github.com/nickitat)).
- Access ClickHouse Cloud instances using Cloud credentials with --login. [#89261](https://github.com/ClickHouse/ClickHouse/pull/89261) ([Krishna Mannem](https://github.com/kcmannem)).
- Adds session-level setting `aggregate_function_input_format` to improve `INSERT` queries into tables with `AggregateFunction` columns, allowing insertion of data as serialized state, raw values, or arrays. [#88088](https://github.com/ClickHouse/ClickHouse/pull/88088) ([Punith Nandyappa Subashchandra](https://github.com/punithns97)).