v25.12 Changelog for Cloud

[Edit this page](https://github.com/ClickHouse/clickhouse-docs/blob/main/docs/cloud/reference/01_changelog/02_release_notes/25_12.md)

## Backward Incompatible Changes[​](#backward-incompatible-changes "Direct link to Backward Incompatible Changes")

### Data type changes[​](#data-type-changes "Direct link to Data type changes")

- Introduce `Geometry` type. Support reading `WKB` and `WKT` formats for it. In previous versions, the `Geometry` type was aliased to `String`, but now it is a full-featured type. [#83344](https://github.com/ClickHouse/ClickHouse/pull/83344) ([Konstantin Vedernikov](https://github.com/scanhex12)).
- Remove deprecated Object type. [#85718](https://github.com/ClickHouse/ClickHouse/pull/85718) ([Pavel Kruglov](https://github.com/Avogar)).
- Escape filenames created for Variant type subcolumns in Wide data part of MergeTree tables. This change breaks compatibility with old tables with Variant/Dynamic/JSON data types. It fixes storing types with special symbols inside Variant (like DateTime with specific timezone that contains `\`). Escaping can be disabled by changing MergeTree setting `escape_variant_subcolumn_filenames` (to keep compatibility disable this setting in the config for MergeTree or set `compatibility` setting to the previous version before upgrade). Resolves [#69590](https://github.com/ClickHouse/ClickHouse/issues/69590). [#87300](https://github.com/ClickHouse/ClickHouse/pull/87300) ([Pavel Kruglov](https://github.com/Avogar)).

### Query and function changes[​](#query-and-function-changes "Direct link to Query and function changes")

- 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)).
- 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)).
- 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)).
- 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)).

### Storage and index changes[​](#storage-and-index-changes "Direct link to Storage and index changes")

- Remove the obsolete `LIVE VIEW` feature. If you use `LIVE VIEW`, upgrading to the new version will not be possible. [#88706](https://github.com/ClickHouse/ClickHouse/pull/88706) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
- Prohibit the creation of multiple `plain-rewritable` disks on top of the shared object storage path, as this can lead to undefined behavior during collisions of different metadata storage transactions. [#89038](https://github.com/ClickHouse/ClickHouse/pull/89038) ([Mikhail Artemenko](https://github.com/Michicosun)).
- 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)).
- 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. [#91429](https://github.com/ClickHouse/ClickHouse/pull/91429) ([Raúl Marín](https://github.com/Algunenano)).

### Settings and configuration changes[​](#settings-and-configuration-changes "Direct link to Settings and configuration changes")

- Support exception tagging for HTTP results response to enable clients to parse exceptions more reliably. Resolves [#75175](https://github.com/ClickHouse/ClickHouse/issues/75175). The setting `http_write_exception_in_output_format` is disabled by default for consistency across formats. [#88818](https://github.com/ClickHouse/ClickHouse/pull/88818) ([Kaviraj Kanagaraj](https://github.com/kavirajk)).
- Fixes Kafka storage SASL settings precedence. Table-level SASL settings specified in CREATE TABLE queries now correctly override consumer/producer-specific settings from configuration files. [#89401](https://github.com/ClickHouse/ClickHouse/pull/89401) ([János Benjamin Antal](https://github.com/antaljanosbenjamin)).
- Renamed ACME configuration parameters `refresh_certificates_task_interval` to `refresh_certificates_task_interval_seconds` and `refresh_certificates_before to refresh_certificates_before_seconds`. The `refresh_certificates_task_interval_seconds` parameter now expects a value in seconds. [#92211](https://github.com/ClickHouse/ClickHouse/pull/92211) ([Konstantin Bogdanov](https://github.com/thevar1able)).
- 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)).

### Client changes[​](#client-changes "Direct link to Client changes")

- 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)).

### Statistics format changes[​](#statistics-format-changes "Direct link to Statistics format changes")

- When alter column from `String` to `Nullable(String)`, we will not do mutation to the data. But for `uniq` aggregate function, it uses different data structure: 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 format of statistics has changed, the server will crash if we have statistics with old format. To avoid exception, run `ALTER TABLE [db.]table MATERIALIZE STATISTICS ALL` to regenerate the statistics. [#90311](https://github.com/ClickHouse/ClickHouse/pull/90311) ([Han Fei](https://github.com/hanfei1991)).

### Other breaking changes[​](#other-breaking-changes "Direct link to Other breaking changes")

- Fix `Fatal` when compressing data with size not aligned to element size (in T64 codec). Resolves [#89282](https://github.com/ClickHouse/ClickHouse/issues/89282). [#89432](https://github.com/ClickHouse/ClickHouse/pull/89432) ([yanglongwei](https://github.com/ylw510)).

## New Features[​](#new-features "Direct link to New Features")

### Functions[​](#functions "Direct link to Functions")