Back to Clickhouse

2026 Changelog

docs/changelogs/v25.12.7.21-stable.md

26.4.1.1-new7.5 KB
Original Source

2026 Changelog

ClickHouse release v25.12.7.21-stable (9e05d7c47a2) FIXME as compared to v25.12.6.38-stable (8bca0c86b58)

Backward Incompatible Change

  • Backported in #97402: Enable apply_row_policy_after_final by default. Initially, when optimize_move_to_prewhere_if_final=0, both ROW POLICY and PREWHERE respect FINAL and were applied after FINAL. This was broken by #87303, which ignored the optimize_move_to_prewhere_if_final for the ROW POLICY filter. To fix this, this PR enables the setting apply_row_policy_after_final introduced in #91065. With apply_row_policy_after_final enabled, ROW POLICY would continue to respect FINAL by default, as previously. This PR is an incompatible change because it changes the behaviour for optimize_move_to_prewhere_if_final=1. Now, to get the ROW POLICY applied before FINAL, apply_row_policy_after_final should be used instead of optimize_move_to_prewhere_if_final. #97279 (Nikolai Kochetov).

Improvement

Bug Fix (user-visible misbehavior in an official stable release)

  • Backported in #95490: The mergeTreeProjection table function was missing an access check, allowing users without SELECT permission on a table (but with permissions for table functions) to read data from its projections. This fix adds the same access check that mergeTreeIndex and mergeTreeAnalyzeIndexes already have. #95480 (Alexey Milovidov).
  • Backported in #97185: Fix executing tupleElement on JSON with nested paths, previously it could lead to wrong query result. #95907 (Pavel Kruglov).
  • Backported in #96785: Fix crash order by in iceberg. Continue https://github.com/ClickHouse/ClickHouse/pull/93296. Closes #93280. #96484 (Konstantin Vedernikov).
  • Backported in #97763: Fix ColumnConst not materialized before squashing. #97019 (Hasyimi Bahrudin).
  • Backported in #97964: Fix cases where indexes were affecting the result for queries with row policy/PREWHERE and FINAL. #97076 (Yarik Briukhovetskyi).
  • Backported in #97467: Fix SEGFAULT in supportsTrivialCountOptimization due to null dereference. #97281 (Pablo Marcos).
  • Backported in #97438: Remove TABLE_UUID_MISMATCH check for non-analyzer. #97323 (Azat Khuzhin).
  • Backported in #97993: Continue of https://github.com/ClickHouse/ClickHouse/pull/61135, but with sharded cache. #97411 (Konstantin Vedernikov).
  • Backported in #97578: Fix ACCESS_DENIED for users without CREATE TEMPORARY TABLE permission when optimize_inverse_dictionary_lookup optimization rewrites dictGet(...) predicates. ClickHouse now skips the rewrite and executes the original expression. Closes #97269. #97484 (Nihal Z. Miaji).
  • Backported in #97629: Fix assertion failure (exception in debug/sanitizer builds) in Set and MergeTreeIndexSet when processing columns with inner sparse subcolumns (e.g., Tuple columns from MergeTree parts with different sparse serialization profiles). #97493 (Alexey Milovidov).
  • Backported in #97797: Fix LOGICAL_ERROR exception when reading sparse column and its subcolumn together. #97515 (Pavel Kruglov).
  • Backported in #97611: Fix a possible use after free in StorageKafka2. #97520 (Bharat Nallan).
  • Backported in #97877: Allow read-in-order optimization to use row policies. For example, a table with ORDER BY (key1, key2) and a row policy USING key1 = 5 can now serve ORDER BY key2 queries without an explicit sort. #97538 (János Benjamin Antal).
  • Backported in #97601: Fix null pointer dereference when applying patch parts during lightweight updates. #97583 (Alexey Milovidov).
  • Backported in #97718: BaseSettings::readBinary passes the index from accessor.find to field_infos[] without checking for the not-found sentinel value (i.e., -1), which may cause a std::vector out-of-bounds access. The issue was caught thanks to libcxx hardening. This probably happened during query plan deserialization when a newer server sends a setting unknown to an older server. The string-based read method already handles this correctly; readBinary was missing the same check. #97585 (Miсhael Stetsyuk).
  • Backported in #97753: Fixed a possible ClickHouse process crash/assert if the WHERE clause had more than 32 expressions with AND/ORs. #97698 (Shankar Iyer).

NOT FOR CHANGELOG / INSIGNIFICANT

  • Backported in #95338: Add a server setting to stop the server startup if a replicated access storage contains broken access queries. #95032 (pufit).
  • Backported in #97399: Add additional validations of ColumnVariant state. #97282 (Pavel Kruglov).