2025 Changelog

[Edit this page](https://github.com/ClickHouse/clickhouse-docs/blob/main/docs/whats-new/changelog/2025.md)

### Table of Contents[​](#table-of-contents "Direct link to Table of Contents")

**[ClickHouse release v25.12, 2025-12-18](#2512)**  
**[ClickHouse release v25.11, 2025-11-27](#2511)**  
**[ClickHouse release v25.10, 2025-10-30](#2510)**  
**[ClickHouse release v25.9, 2025-09-25](#259)**  
**[ClickHouse release v25.8 LTS, 2025-08-28](#258)**  
**[ClickHouse release v25.7, 2025-07-24](#257)**  
**[ClickHouse release v25.6, 2025-06-26](#256)**  
**[ClickHouse release v25.5, 2025-05-22](#255)**  
**[ClickHouse release v25.4, 2025-04-22](#254)**  
**[ClickHouse release v25.3 LTS, 2025-03-20](#253)**  
**[ClickHouse release v25.2, 2025-02-27](#252)**  
**[ClickHouse release v25.1, 2025-01-28](#251)**  
**[Changelog for 2024](https://clickhouse.com/docs/whats-new/changelog/2024/)**  
**[Changelog for 2023](https://clickhouse.com/docs/whats-new/changelog/2023/)**  
**[Changelog for 2022](https://clickhouse.com/docs/whats-new/changelog/2022/)**  
**[Changelog for 2021](https://clickhouse.com/docs/whats-new/changelog/2021/)**  
**[Changelog for 2020](https://clickhouse.com/docs/whats-new/changelog/2020/)**  
**[Changelog for 2019](https://clickhouse.com/docs/whats-new/changelog/2019/)**  
**[Changelog for 2018](https://clickhouse.com/docs/whats-new/changelog/2018/)**  
**[Changelog for 2017](https://clickhouse.com/docs/whats-new/changelog/2017/)**

### ClickHouse release 25.12, 2025-12-18[​](#2512 "Direct link to ClickHouse release 25.12, 2025-12-18")

#### Backward Incompatible Change[​](#backward-incompatible-change "Direct link to Backward Incompatible Change")

- ALTER MODIFY COLUMN now requires explicit DEFAULT when converting nullable columns to non-nullable types. Previously such ALTERs could get stuck with cannot convert null to not null errors, now NULLs are replaced with column's default expression. Resolves [#5985](https://github.com/ClickHouse/ClickHouse/issues/5985). [#84770](https://github.com/ClickHouse/ClickHouse/pull/84770) ([Vladimir Cherkasov](https://github.com/vdimir)).
- Ngram tokenizer will no longer return ngrams less than the length N it was set with. Text Search will return no rows when search tokens are empty. [#89757](https://github.com/ClickHouse/ClickHouse/pull/89757) ([George Larionov](https://github.com/george-larionov)).
- When alter column from `String` to `Nullable(String)`, we will not do mutation to the data. But for `uniq` aggregate function, it use different data strucuture: for nullable column, it will use `AggregateFunctionNull` with a nested uniq aggregator. the `AggregateFunctionNull` will serialize an extra bool flag. This will make the statistics file incompatible. The fix is add a flag to record if it is a nullable column during serialization. The format of statisticis has changed, and the server can fail if we have statistics with old format. This PR [#90904](https://github.com/ClickHouse/ClickHouse/pull/90904) will fix the crash, and throw exception when the existing statisticis uses lagecy format. To avoid exception, we should run `ALTER TABLE table MATERIALIZE STATISTICS ALL` to regenerate the statistics to fix it. [#90311](https://github.com/ClickHouse/ClickHouse/pull/90311) ([Han Fei](https://github.com/hanfei1991)).
- Remove settings `allow_not_comparable_types_in_order_by`/`allow_not_comparable_types_in_comparison_functions`. Allowing non-comparable types in order by or comparison functions may lead to logical errors and unexpected results. Resolves [#90028](https://github.com/ClickHouse/ClickHouse/issues/90028). [#90527](https://github.com/ClickHouse/ClickHouse/pull/90527) ([Pavel Kruglov](https://github.com/Avogar)).
- Changed the default of setting `check_query_single_value_result` from `true` to `false`. This causes `CHECK TABLE` to return detailed per-part results instead of an aggregated result (1 = okay, 0 = errors found). Compared to the previous behavior, this is likely more aligned with what the user wants. [#91009](https://github.com/ClickHouse/ClickHouse/pull/91009) ([Robert Schulze](https://github.com/rschu1ze)).
- Multiple fixes around implicit indices. The schema shown or stored (keeper metadata) won't include implicit indices, such as the ones created by settings `add_minmax_index_for_numeric_columns` or `add_minmax_index_for_string_columns`. This might cause metadata errors when a ReplicatedMergeTree table is created or updated in a newer version, while there is a replica in an older release. For those cases send DDLs to the old replica until the cluster is upgraded completely. [#91429](https://github.com/ClickHouse/ClickHouse/pull/91429) ([Raúl Marín](https://github.com/Algunenano)).
- Update clickhouse-client to return a non-zero exit code (159 - TIMEOUT\_EXCEEDED) when a query times out due to `receive_timeout`. Previously, timeouts would return exit code 0 (success), making it difficult for scripts and automation to detect timeout failures. [#91432](https://github.com/ClickHouse/ClickHouse/pull/91432) ([Sav](https://github.com/sberss)).
- It is now forbidden to create special `MergeTree` tables (such as `ReplacingMergeTree`, `CollapsingMergeTree`, etc.) with an empty `ORDER BY` key, since merge behavior in these tables is undefined. If you still need to create such a table, enable the `allow_suspicious_primary_key` setting. [#91569](https://github.com/ClickHouse/ClickHouse/pull/91569) ([Anton Popov](https://github.com/CurtizJ)).
- Fix functions `bitShiftLeft` and `bitShiftRight` to return 0 or empty value in case of a shift exactly of the size of the type. [#91943](https://github.com/ClickHouse/ClickHouse/pull/91943) ([Pablo Marcos](https://github.com/pamarcos)).
- Follow-up to [#88380](https://github.com/ClickHouse/ClickHouse/pull/88380). This PR marks disabled positional arguments in the projections as a backward-incompatible change. Additionally, it introduces the `enable_positional_arguments_for_projections` setting to enable a safe ClickHouse cluster upgrade when positional arguments are present in the projections. [#92007](https://github.com/ClickHouse/ClickHouse/pull/92007) ([Dmitry Novik](https://github.com/novikd)).
- Enable advanced shared data for JSON by default. After that change downgrade to versions before 25.8 will be not possible, because these versions won't be able to read new data parts with JSON column. For safe upgrades, it's recommended to set `compatibility` setting to the previous version or set MergeTree settings `dynamic_serialization_version='v2', object_serialization_version='v2'`. [#92511](https://github.com/ClickHouse/ClickHouse/pull/92511) ([Pavel Kruglov](https://github.com/Avogar)).

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