Back to Clickhouse

2026 Changelog

docs/changelogs/v26.1.5.41-stable.md

26.4.1.1-new17.1 KB
Original Source

2026 Changelog

ClickHouse release v26.1.5.41-stable (d1072851f03) FIXME as compared to v26.1.4.35-stable (94d63f06ae9)

Performance Improvement

  • Backported in #99050: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Allow read-in-order optimization and primary-key pruning when the CAST target type is Nullable and the conversion is monotonic; for example, with PRIMARY KEY x, ClickHouse can use read-in-order optimization for ORDER BY x::Nullable(UInt64) and can apply primary-key pruning for predicates such as WHERE x::Nullable(UInt64) > 500000. #98482 (Nihal Z. Miaji).

Improvement

  • Backported in #98885: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): New setting allow_nullable_tuple_in_extracted_subcolumns controls whether extracted Tuple(...) subcolumns from Tuple, Variant, Dynamic and JSON are returned as Nullable(Tuple(...)) (NULL for missing rows) or as Tuple(...) (default tuple values for missing rows). Disabled by default, this setting can only be changed by restarting the server. #97299 (Nihal Z. Miaji).
  • Backported in #99783: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md):. #99232 (Xu Jia).

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

  • Backported in #98634: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fix wrong result or exception during reading subcolumns of ALIAS columns. #95408 (Pavel Kruglov).
  • Backported in #96521: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fix null pointer dereference in certain expressions with lambda functions. #96479 (Alexey Milovidov).
  • Backported in #97127: Fix crash (SEGFAULT) in clearCaches caused by BlockIO::operator= not moving query_metadata_cache, leading to premature destruction of cached storage snapshots and use-after-free of MergeTreeData storage. #96995 (Alexey Milovidov).
  • Backported in #97253: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md):. #97239 (Alexey Milovidov).
  • Backported in #97369: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fix segfault in StorageKeeperMap backup due to use-after-free of dangling storage pointer in lazy backup batch. #97336 (Alexey Milovidov).
  • Backported in #98818: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fix sumCount aggregate function not being able to read older serialized states after introduction of Nullable(Tuple). Closes #97370. #97502 (Nihal Z. Miaji).
  • Backported in #97613: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fix a possible use after free in StorageKafka2. #97520 (Bharat Nallan).
  • Backported in #98035: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Remove incorrect replaceRegexpOne to extract query rewrite that produced wrong results when the regexp didn't match; also fix exception when replaceRegexpOne is used with GROUP BY ... WITH CUBE and group_by_use_nulls=1. #97546 (Alexey Milovidov).
  • Backported in #98400: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): The loop table function was calling inner_storage->read() directly, bypassing the interpreter layer where row policies, column-level grants, and other security checks are applied. This allowed a user restricted by row policies to read all rows via loop(table) even when a direct SELECT returned zero rows. #97682 (pufit).
  • Backported in #98567: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): After this patch, hasPartitionId will return false if another partition with a higher partition ID exists in the data part set. #97748 (Mikhail Artemenko).
  • Backported in #98023: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): - Fixed ClickHouse server crash/assert in call to mapContainsKey/mapContainsKeyLike with tokenbf_v1 skip index. #97826 (Shankar Iyer).
  • Backported in #98657: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Enforce READ ON FILE checks for scalar file() and DESCRIBE TABLE file(). #98115 (Nikolay Degterinsky).
  • Backported in #98386: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fixed LOGICAL_ERROR exception "Invalid binary search result in MergeTreeSetIndex" triggered by toDate conversion on key columns with data crossing the 65535 boundary. #98276 (Alexey Milovidov).
  • Backported in #98928: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): * Fix unexpected result with read_in_order_use_virtual_row and monotonic functions, close #97837. #98514 (Vladimir Cherkasov).
  • Backported in #98649: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fix column rollback in Buffer engine during handling an exception during appending a new block. Old logic could lead to corrupted in-memory state of columns. #98551 (Pavel Kruglov).
  • Backported in #98621: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fixed usage of the text index with other skip indexes. Previously, logical errors such as "Trying to get non-existing mark" could be thrown when a query filter utilized a text index and other regular skip indexes simultaneously. #98555 (Anton Popov).
  • Backported in #99092: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fix tuple subcolumn access by name (e.g. SELECT x.a for Tuple(a UUID, b Int32)) for external tables passed via --external in clickhouse-client. Closes #96925. #98755 (Pavel Kruglov).
  • Backported in #99418: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fix reverseUTF8 exception on invalid (truncated) UTF-8 input. #98770 (Alexey Milovidov).
  • Backported in #98836: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fix detecting set skip index usefulness with OR with false (i.e. or(x, 0)) predicate. #98776 (Azat Khuzhin).
  • Backported in #98853: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fix SYSTEM START REPLICATED VIEW not waking up the refresh task. #98797 (Pablo Marcos).
  • Backported in #98878: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fix adjusting RLIMIT_SIGPENDING (via pending_signals). #98829 (Azat Khuzhin).
  • Backported in #99637: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fix NOT_FOUND_COLUMN_IN_BLOCK for some queries with GROUP BY and expressions that include inverse dictionary lookup, Date/DateTime conversion comparisons, and tuple comparisons. Closes #98888. #98980 (Nihal Z. Miaji).
  • Backported in #99771: Fix server crash (std::terminate) when executing ALTER TABLE ... DROP PART on a patch part after a schema change (e.g. ADD COLUMN). The crash was caused by missing system columns (_part) in the empty coverage part metadata, leading to an uncaught exception inside a NOEXCEPT_SCOPE. #99036 (Peng Jian).
  • Backported in #99445: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fix segfault in recursive CTE with remote() + view(). #99081 (Konstantin Bogdanov).
  • Backported in #99187: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md):. #99084 (Vladimir Cherkasov).
  • Backported in #99301: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fixed a crash triggered by a memory limit exception thrown during patch part application. #99086 (Anton Popov).
  • Backported in #99149: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fixed rebuild of text indexes on merges with TTL. #99107 (Anton Popov).
  • Backported in #99216: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fixes a bug in query_plan_convert_any_join_to_semi_or_anti_join optimization, returning an incorrect result for unmatched rows. Related: https://github.com/ClickHouse/ClickHouse/pull/95995. #99112 (Yarik Briukhovetskyi).
  • Backported in #99292: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fix max_execution_time not being applied for backup/restore. #99205 (Kseniia Sumarokova).
  • Backported in #99253: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): This patch fixes access checks during InverseDictionaryLookupPass; they are apparently visible in a flame graph. Instead, check access only once before running the optimization pass. #99210 (Mikhail Artemenko).
  • Backported in #99732: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fix CHECK TABLE with sparse serialization inside Tuple with Dynamic. Closes #96588. #99351 (Pavel Kruglov).
  • Backported in #99691: Fix incorrect results when using hasAllTokens with OR across columns that have separate text indexes. #99505 (Anton Popov).
  • Backported in #99905: //github.com/ClickHouse/ClickHouse/blob/master/docs/changelog_entry_guidelines.md) of the changes that goes into CHANGELOG.md): Fixed reading of text index in table with existing lightweight deletes and row policies. #99661 (Anton Popov).

Build/Testing/Packaging Improvement

NOT FOR CHANGELOG / INSIGNIFICANT