2025 Changelog

- UNION should unify types with `Variant` if needed when `use_variant_as_common_type` is set. Resolves [#82772](https://github.com/ClickHouse/ClickHouse/issues/82772). [#83246](https://github.com/ClickHouse/ClickHouse/pull/83246) ([Mithun p](https://github.com/mithunputhusseri)).
- Roles defined in SQL can now be granted to users defined in `users.xml`. [#88139](https://github.com/ClickHouse/ClickHouse/pull/88139) ([c-end](https://github.com/c-end)).
- Log internal queries (those executed internally by dictionaries, refreshable materialized views, etc) and add the new `is_internal` column to `system.query_log`. [#83277](https://github.com/ClickHouse/ClickHouse/pull/83277) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
- Enhanced `IS NOT DISTINCT FROM` (`<=>`) operator: added support for inverse `IS DISTINCT FROM`, support compatible numeric operands of different types (e.g., `Nullable(UInt32)` and `Nullable(Int64)`). Resolves [#86763](https://github.com/ClickHouse/ClickHouse/issues/86763). [#87581](https://github.com/ClickHouse/ClickHouse/pull/87581) ([yanglongwei](https://github.com/ylw510)).
- `clickhouse-client` and `clickhouse-local` in the interactive mode will highlight identifiers in the command line that have the same name as the current one under the cursor. [#89689](https://github.com/ClickHouse/ClickHouse/pull/89689) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
- Output format-related settings now don't affect query caching. Also, the query caching will ignore the `http_response_headers` setting. This is needed to allow implementation of features such as downloading the result from the cache in the Web UI. [#89756](https://github.com/ClickHouse/ClickHouse/pull/89756) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
- The HTTP interface will provide `Age` and `Expires` headers when the query result cache is used. The presence of the `Age` header tells whether the result is from the cache, while `Expires` is also set at the first write. Introduce new profile events: `QueryCacheAgeSeconds`, `QueryCacheReadRows`, `QueryCacheReadBytes`, `QueryCacheWrittenRows`, `QueryCacheWrittenBytes`. [#89759](https://github.com/ClickHouse/ClickHouse/pull/89759) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
- Allow inserting into remote and data lake tables when `disable_insertion_and_mutation` is enabled (which means - read only warehouses in ClickHouse Cloud). [#88549](https://github.com/ClickHouse/ClickHouse/pull/88549) ([Alexander Tokmakov](https://github.com/tavplubix)).
- Add query `SYSTEM DROP TEXT INDEX CACHES`. [#90287](https://github.com/ClickHouse/ClickHouse/pull/90287) ([Anton Popov](https://github.com/CurtizJ)).
- Enable `enable_shared_storage_snapshot_in_query` by default for better consistency guarantees. There should be no downsides. [#82634](https://github.com/ClickHouse/ClickHouse/pull/82634) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
- Added `send_profile_events` setting which allows clients to reduce network traffic when profile events are unused. [#89588](https://github.com/ClickHouse/ClickHouse/pull/89588) ([Kaviraj Kanagaraj](https://github.com/kavirajk)).
- Allow disabling background download of nearby segments on a per query basis. Fixes [#89524](https://github.com/ClickHouse/ClickHouse/issues/89524). [#89668](https://github.com/ClickHouse/ClickHouse/pull/89668) ([tanner-bruce](https://github.com/tanner-bruce)).
- Allow `FETCH PARTITION` when there are broken disks in replicated merge tree tables. [#58663](https://github.com/ClickHouse/ClickHouse/pull/58663) ([Duc Canh Le](https://github.com/canhld94)).
- Fix uncaught exception while getting MySQL table schema in MySQL database engine. [#69358](https://github.com/ClickHouse/ClickHouse/pull/69358) ([Duc Canh Le](https://github.com/canhld94)).
- All DDL `ON CLUSTER` queries now execute with the original query user context for better access validation. [#71334](https://github.com/ClickHouse/ClickHouse/pull/71334) ([pufit](https://github.com/pufit)).
- Added support for `UUID` in `Parquet` when it is represented by `FixedString(16)` with the logical type `UUID`. [#74484](https://github.com/ClickHouse/ClickHouse/pull/74484) ([alekseev-maksim](https://github.com/alekseev-maksim)).
- Disable ThreadFuzzer in non-server binaries by default. [#89115](https://github.com/ClickHouse/ClickHouse/pull/89115) ([Raúl Marín](https://github.com/Algunenano)).
- Make query plan optimizations visible to the correlated subquery input subplan by postponing it's materialization. Part of [#79890](https://github.com/ClickHouse/ClickHouse/issues/79890). [#85455](https://github.com/ClickHouse/ClickHouse/pull/85455) ([Dmitry Novik](https://github.com/novikd)).
- You can see a progress bar, logs and performance statistics for `CREATE OR REPLACE TABLE` queries with `SELECT` in clickhouse-client. This query will no longer lead to timeout even if the `SELECT` is quite time consuming. Resolves [#38416](https://github.com/ClickHouse/ClickHouse/issues/38416). [#87247](https://github.com/ClickHouse/ClickHouse/pull/87247) ([Diskein](https://github.com/Diskein)).
- Support `JSON` and `Dynamic` types in hash functions. Resolves [#87734](https://github.com/ClickHouse/ClickHouse/issues/87734). [#87791](https://github.com/ClickHouse/ClickHouse/pull/87791) ([Pavel Kruglov](https://github.com/Avogar)).
- Implement missing parts of the ArrowFlight server. [#88013](https://github.com/ClickHouse/ClickHouse/pull/88013) ([Vitaly Baranov](https://github.com/vitlibar)).
- Add multiple histogram metrics for the server and the keeper to instrument the durations of the keeper request execution stages. The following metrics will be added to the server: `keeper_client_queue_duration_milliseconds`, `keeper_client_send_duration_milliseconds`, `keeper_client_roundtrip_duration_milliseconds`. The following metrics will be added to the keeper: `keeper_server_preprocess_request_duration_milliseconds`, `keeper_server_process_request_duration_milliseconds`, `keeper_server_queue_duration_milliseconds`, `keeper_server_send_duration_milliseconds`. [#88158](https://github.com/ClickHouse/ClickHouse/pull/88158) ([Miсhael Stetsyuk](https://github.com/mstetsyuk)).
- Add `input_headers` option to `EXPLAIN` query to add input headers to steps. [#88311](https://github.com/ClickHouse/ClickHouse/pull/88311) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
- Adds profile events to count the number of S3 and AzureBlobStorage requests delayed by throttlers. Fixes the inconsistency of disk-related and non-disk-related ThrottlerCount profile events. Now AzureBlobStorage HTTP DELETE requests are not throttled. [#88535](https://github.com/ClickHouse/ClickHouse/pull/88535) ([Sergei Trifonov](https://github.com/serxa)).
- Cache table-level statistics, add two settings: merge tree setting `refresh_statistics_interval` means the interval of refreshing statistics cache, 0 means no cache will be created. Session setting `use_statistics_cache` means whether to use table-level statistics in a query. Sometimes we want better statistics so we choose to ignore it. [#88670](https://github.com/ClickHouse/ClickHouse/pull/88670) ([Han Fei](https://github.com/hanfei1991)).
- Fixed binary deserialization of `Array` and `Map` to use the `max_binary_array_size` setting instead of `max_binary_string_size` when validating size limits. This ensures that the proper limits are applied when reading in `RowBinary` format. [#88744](https://github.com/ClickHouse/ClickHouse/pull/88744) ([Raufs Dunamalijevs](https://github.com/rienath)).
- Introduced a `LockGuardWithStopWatch` class and used it in the background pool for executing merges. In case a mutex was held for a second or some thread was struggling to get it within a second a warning message will be printed. Moved the heavy code from the destructor of `MergeMutateSelectedEntry` to `finalize` method to avoid holding the lock in `MergeTreeBackground` executor for too long. [#88898](https://github.com/ClickHouse/ClickHouse/pull/88898) ([Nikita Mikhaylov](https://github.com/nikitamikhaylov)).