Changelog 2026

- Fix crash on usage of Buffer table with SAMPLE when destination does not support it. [#99141](https://github.com/ClickHouse/ClickHouse/pull/99141) ([Kseniia Sumarokova](https://github.com/kssenii)).
- Fix LOGICAL\_ERROR due to patch parts column order mismatch. [#99164](https://github.com/ClickHouse/ClickHouse/pull/99164) ([Pablo Marcos](https://github.com/pamarcos)).
- Fix very rare crash when Iceberg table contains files of mixed format (ORC and Parquet). Fixes [#88126](https://github.com/ClickHouse/ClickHouse/issues/88126). [#99168](https://github.com/ClickHouse/ClickHouse/pull/99168) ([alesapin](https://github.com/alesapin)).
- Fix max\_execution\_time not being applied for backup/restore. [#99205](https://github.com/ClickHouse/ClickHouse/pull/99205) ([Kseniia Sumarokova](https://github.com/kssenii)).
- Fix `insert_deduplication_token` being silently ignored for `INSERT SELECT` queries without `ORDER BY ALL`. Previously, deduplication was disabled entirely for unsorted `INSERT SELECT`, even when an explicit user token was provided. Now, providing `insert_deduplication_token` is sufficient to enable deduplication regardless of `ORDER BY ALL`. [#99206](https://github.com/ClickHouse/ClickHouse/pull/99206) ([Desel72](https://github.com/Desel72)).
- Fix excessive access checks during `InverseDictionaryLookupPass` optimization by checking `CREATE_TEMPORARY_TABLE` grant once before the pass instead of for every visited node. [#99210](https://github.com/ClickHouse/ClickHouse/pull/99210) ([Mikhail Artemenko](https://github.com/Michicosun)).
- Fix `clickhouse format --obfuscate` producing invalid SQL by obfuscating skip index types, compression codec names, database engine names, and dictionary layout/source definitions. [#99260](https://github.com/ClickHouse/ClickHouse/pull/99260) ([Raúl Marín](https://github.com/Algunenano)).
- Fixed a bug where, in some cases, comparing between Time[64] and DateTime[64] types was confusing; now, in cases like this, Time[64] values are promoted to DateTime[64] by adding the `1970-01-01` as a date part. [#99267](https://github.com/ClickHouse/ClickHouse/pull/99267) ([Yarik Briukhovetskyi](https://github.com/yariks5s)).
- Clamp settings constraints in DDL worker for distributed DDL queries. [#99317](https://github.com/ClickHouse/ClickHouse/pull/99317) ([Pablo Marcos](https://github.com/pamarcos)).
- Fix minor issues with TOTP authentication: the `--one-time-password` CLI option with empty password, validation of `<digits>` and `<period>` configuration values. [#99322](https://github.com/ClickHouse/ClickHouse/pull/99322) ([Vladimir Cherkasov](https://github.com/vdimir)).
- Fix logical error `unordered_map::at: key not found` in Avro output format when serializing `Enum8`/`Enum16` columns with values not present in the enum definition. [#99332](https://github.com/ClickHouse/ClickHouse/pull/99332) ([Desel72](https://github.com/Desel72)).
- Fix CHECK TABLE with sparse serialization inside Tuple with Dynamic. Closes [#96588](https://github.com/ClickHouse/ClickHouse/issues/96588). [#99351](https://github.com/ClickHouse/ClickHouse/pull/99351) ([Pavel Kruglov](https://github.com/Avogar)).
- Fixed too strict validation of text index preprocessor. [#99359](https://github.com/ClickHouse/ClickHouse/pull/99359) ([Anton Popov](https://github.com/CurtizJ)).
- Fix compatibility when upgrading replicated tables with implicit minmax indices from 25.10 to newer versions. [#99392](https://github.com/ClickHouse/ClickHouse/pull/99392) ([Raúl Marín](https://github.com/Algunenano)).
- Removed support for negated functions (`notEquals`, `notLike`, `notIn`) in text index analysis. These functions could never skip any granules, so analyzing the index for them only added overhead without any benefit. [#99393](https://github.com/ClickHouse/ClickHouse/pull/99393) ([Anton Popov](https://github.com/CurtizJ)).
- Fix `optimize_skip_unused_shards` with a new analyzer for the case when a `Distributed` table was used inside an IN subquery. [#99436](https://github.com/ClickHouse/ClickHouse/pull/99436) ([Nikolai Kochetov](https://github.com/KochetovNicolai)).
- Fix heap-use-after-free in `INTERSECT`/`EXCEPT` when the query produces duplicate column names. [#99471](https://github.com/ClickHouse/ClickHouse/pull/99471) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
- Fix logical error in `ALTER TABLE ... DROP PART` when a typed query parameter is used for the part name. [#99489](https://github.com/ClickHouse/ClickHouse/pull/99489) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
- Fixed `NOT_FOUND_COLUMN_IN_BLOCK` exception when a text index predicate (e.g. `hasAllTokens`) is referenced in both `SELECT` and `WHERE` clauses via an alias. [#99504](https://github.com/ClickHouse/ClickHouse/pull/99504) ([Anton Popov](https://github.com/CurtizJ)).
- Fix incorrect results when using `hasAllTokens` with OR across columns that have separate text indexes. [#99505](https://github.com/ClickHouse/ClickHouse/pull/99505) ([Anton Popov](https://github.com/CurtizJ)).
- Initialize page cache in `clickhouse-local` so that `page_cache_max_size` setting takes effect. [#99510](https://github.com/ClickHouse/ClickHouse/pull/99510) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
- Fixed rare incorrect marking of a data part as broken and detaching it after `DETACH/ATTACH TABLE` query. [#99529](https://github.com/ClickHouse/ClickHouse/pull/99529) ([Anton Popov](https://github.com/CurtizJ)).
- Fix `std::length_error` exception when querying empty system tables with Pretty format via HTTP interface. [#99541](https://github.com/ClickHouse/ClickHouse/pull/99541) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
- Fix `LOGICAL_ERROR` when using `ALTER TABLE ADD COLUMN` to create an `EPHEMERAL` column with the same name as a virtual column (e.g. `_part_offset`). [#99549](https://github.com/ClickHouse/ClickHouse/pull/99549) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
- Fix `VectorSimilarityIndexCache` entries never being evicted after part removal due to mismatched cache keys. [#99575](https://github.com/ClickHouse/ClickHouse/pull/99575) ([Seva Potapov](https://github.com/seva-potapov)).
- Forbid reading Google credentials from a local file. This setting is insecure because it allows reading other credentials if the file path is known. [#99584](https://github.com/ClickHouse/ClickHouse/pull/99584) ([Konstantin Vedernikov](https://github.com/scanhex12)).
- Fix performance degradation in the analyzer. Prune unused columns from ARRAY JOIN. [#99587](https://github.com/ClickHouse/ClickHouse/pull/99587) ([Dmitry Novik](https://github.com/novikd)).
- Fixed reading of text index in table with existing lightweight deletes and row policies. [#99661](https://github.com/ClickHouse/ClickHouse/pull/99661) ([Anton Popov](https://github.com/CurtizJ)).
- Fix nullptr dereference in Parquet reader when filter-in-decoder path encounters filtered-out pages. Closes [#99676](https://github.com/ClickHouse/ClickHouse/issues/99676). [#99677](https://github.com/ClickHouse/ClickHouse/pull/99677) ([Alexey Milovidov](https://github.com/alexey-milovidov)).
- Fix incorrect seek in AsynchronousReadBufferFromFileDescriptor with O\_DIRECT. Closes [#99358](https://github.com/ClickHouse/ClickHouse/issues/99358). [#99678](https://github.com/ClickHouse/ClickHouse/pull/99678) ([Pavel Kruglov](https://github.com/Avogar)).
- Fixed heap-buffer-overflow in `CompressionCodecT64` and process abort in `CompressionCodecMultiple` when decompressing malformed compressed data. Both issues were found by new libFuzzer targets. The codecs now throw an exception instead of crashing. [#99680](https://github.com/ClickHouse/ClickHouse/pull/99680) ([Rahul](https://github.com/motsc)).
- Delay processing until server has finished loading all the tables. [#99700](https://github.com/ClickHouse/ClickHouse/pull/99700) ([Seva Potapov](https://github.com/seva-potapov)).
- Fix MySQL dictionary source bypassing `RemoteHostFilter` for inline DDL params. [#99720](https://github.com/ClickHouse/ClickHouse/pull/99720) ([Shaohua Wang](https://github.com/tiandiwonder)).