Back to Clickhouse

2026 Changelog

docs/changelogs/v26.1.4.35-stable.md

26.4.1.1-new11.4 KB
Original Source

2026 Changelog

ClickHouse release v26.1.4.35-stable (94d63f06ae9) FIXME as compared to v26.1.3.52-stable (5549f2acae9)

Improvement

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

  • Backported in #97491: When a table has no statistics defined, ClickHouse shouldn't try to them. This avoids some overhead (100+ms) for checking if the statistics files exist. (issue #96068). #96233 (Han Fei).
  • Backported in #97765: Fix ColumnConst not materialized before squashing. #97019 (Hasyimi Bahrudin).
  • Backported in #97409: Fix cases where indexes were affecting the result for queries with row policy/PREWHERE and FINAL. #97076 (Yarik Briukhovetskyi).
  • Backported in #97450: Fix LOGICAL_ERROR exception when reading .size subcolumn of a sparse Nullable(String) in a Tuple with PREWHERE. #97264 (Alexey Milovidov).
  • Backported in #97469: Fix SEGFAULT in supportsTrivialCountOptimization due to null dereference. #97281 (Pablo Marcos).
  • Backported in #97440: Remove TABLE_UUID_MISMATCH check for non-analyzer. #97323 (Azat Khuzhin).
  • Backported in #97994: Continue of https://github.com/ClickHouse/ClickHouse/pull/61135, but with sharded cache. #97411 (Konstantin Vedernikov).
  • Backported in #97697: Fix LOGICAL_ERROR exception in Array-to-QBit conversion when nullable_source from an outer Tuple wrapper replaces the converted array column with a mismatched column type. Closes #97389. #97413 (Alexey Milovidov).
  • Backported in #97809: Fix applying setting type_json_allow_duplicated_key_with_literal_and_nested_object to typed paths in JSON. Closes #97278. #97422 (Pavel Kruglov).
  • Backported in #97580: 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 #97631: 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 #97799: Fix LOGICAL_ERROR exception when reading sparse column and its subcolumn together. #97515 (Pavel Kruglov).
  • Backported in #97958: Fix logical error about missing stream during INSERT SELECT with JSON and buckets in shared data. Closes #97331. #97523 (Pavel Kruglov).
  • Backported in #97879: 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 #97739: Fix LOGICAL_ERROR exception when using isNull/isNotNull on subcolumns of Nullable(Tuple(... Nullable(T) ...)) types. Closes #97224. #97582 (Alexey Milovidov).
  • Backported in #97603: Fix null pointer dereference when applying patch parts during lightweight updates. #97583 (Alexey Milovidov).
  • Backported in #97720: 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 #97757: Fix filterPartsByVirtualColumns for constant-false predicates. #97620 (Bharat Nallan).
  • Backported in #97689: Fix logical error exception during GROUP BY ... WITH ROLLUP/CUBE when keys include LowCardinality(Nullable(...)) inside Nullable(Tuple(...)). #97647 (Alexey Milovidov).
  • Backported in #97791: Fix LOGICAL_ERROR exception in concat when an argument contains a Variant type with LowCardinality inside. #97654 (Alexey Milovidov).
  • Backported in #97755: Fixed a possible ClickHouse process crash/assert if the WHERE clause had more than 32 expressions with AND/ORs. #97698 (Shankar Iyer).
  • Backported in #98223: Fix possible crashes during reading of empty granules in advanced shared data in JSON. Closes #97563. #97778 (Pavel Kruglov).
  • Backported in #97983: Fix LOGICAL_ERROR exceptions caused by LowCardinality inside compound types (Variant, Dynamic, Tuple) in concatWithSeparator, format, IN subqueries, GLOBAL IN, and joins with runtime filters. #97831 (Raúl Marín).
  • Backported in #97917: Fix incorrect result when grace_hash algorithm is used with non-equi joins and left block cannot be processed completely because of the size constraints on the join result. #97866 (János Benjamin Antal).
  • Backported in #98061: Fix data race in ZooKeeper client between sendThread and receiveThread. #97887 (Pablo Marcos).
  • Backported in #98174: Fix Keeper data loss after restart when using Azure Blob Storage with s3_plain metadata for log storage. #97987 (Antonio Andelic).
  • Backported in #98308: Fix incorrect result of FINAL queries when mixing primary key and non primary key skip indexes. #98097 (Raúl Marín).
  • Backported in #98198: Fix segfault in query plan optimization when converting outer join to inner join with arrayJoin in filter expression. #98147 (Alexey Milovidov).

NO CL CATEGORY

NOT FOR CHANGELOG / INSIGNIFICANT