Back to Clickhouse

2026 Changelog

docs/changelogs/v25.12.5.44-stable.md

26.4.1.1-new14.0 KB
Original Source

2026 Changelog

ClickHouse release v25.12.5.44-stable (6b09ccf262f) FIXME as compared to v25.12.4.35-stable (4b2fbdcba83)

Performance Improvement

  • Backported in #95532: Outer filter is pushed down into view which allows applying PREWHERE on local and remote nodes. Resolves #88189. #88316 (Igor Nikonov).

Improvement

  • Backported in #94935: Force purging of jemalloc arenas in case the ratio of dirty pages size to max_server_memory_usage exceeds memory_worker_purge_dirty_pages_threshold_ratio. #93500 (Eduard Karacharov).
  • Backported in #95133: If a skip index used in a FINAL query is on a column that is part of the primary key, the additional step to check for primary key intersection in other parts is unnecessary and now not performed. Resolves #85897. #93899 (Shankar Iyer).
  • Backported in #94709: Add support for SQL-defined named collections in BACKUP/RESTORE for S3 and Azure Blob Storage. Closes #94604. #94605 (Pablo Marcos).
  • Backported in #94988: Make sure the scheduler would prefer MemoryWorker thread under the CPU starvation, because it protects ClickHouse process from an existential threat. #94864 (Nikita Mikhaylov).
  • Backported in #95167: Run purging of jemalloc dirty pages in a different thread from main thread of MemoryWorker. If purging is slow, it could delay updates of RSS usage which could lead to out of memory kills of the process. Introduce new config memory_worker_purge_total_memory_threshold_ratio to start purging dirty pages based on ratio of total memory usage. #94902 (Antonio Andelic).
  • Backported in #95438: Now view_duration_ms shows the time when group was active, not the sum of the threads duration in it. #94966 (Sema Checherinda).
  • Backported in #95365: Respect max_parts_to_merge_at_once in TTL drop part merges. #95315 (Kseniia Sumarokova).

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

  • Backported in #94805: Related issue #https://github.com/ClickHouse/support-escalation/issues/6365. #92339 (Tuan Pham Anh).
  • Backported in #95288: Fix query parameter substitution in CREATE USER authentication methods when using ON CLUSTER. Query parameters in authentication methods (e.g., password) were not being replaced, causing UNKNOWN_QUERY_PARAMETER errors on remote nodes. #92777 (xiaohuanlin).
  • Backported in #94767: Fix join results when the right-side join key is a sparse column. This closes #92920. I can only reproduce the bug with set compatibility='23.3'. Not sure if it should be backported. #93038 (Amos Bird).
  • Backported in #95530: Backups could crash the server if you do many concurrent backups clashing over the same files. #93659 (Alexey Milovidov).
  • Backported in #94888: Fix attaching Replicated DBs when the interserver host changed after restarting. #93779 (Tuan Pham Anh).
  • Backported in #94955: Fix function to subcolumns optimization not applied to subcolumns. #94323 (Pavel Kruglov).
  • Backported in #94913: Fixes https://github.com/ClickHouse/clickhouse-core-incidents/issues/1160. The segfault occurs because TCPHandler::runImpl expects that the two receivePacketsExpectQuery calls won't both read Protocol::Client::IgnoredPartUUIDs, but given repeated crashes there, it's possible. #94434 (Miсhael Stetsyuk).
  • Backported in #94815: Fix permission issues in BACKUP/RESTORE operations. #94617 (Pablo Marcos).
  • Backported in #94846: Fixes https://github.com/ClickHouse/clickhouse-core-incidents/issues/1250. Likely due to a mix-up, data_type (which may be DataTypeNullable*) is static_cast-ed to DataTypeDateTime64*. Instead, we should cast check_type (the nested type variable). #94627 (Miсhael Stetsyuk).
  • Backported in #94798: Fix possibly incorrect RIGHT join result when using complex ON conditions. Close #92913. #94680 (Vladimir Cherkasov).
  • Backported in #94788: Preserve constant index granularity (use_const_adaptive_granularity) after Vertical merges. #94725 (Azat Khuzhin).
  • Backported in #95644: Fix incorrect primary key and skip index pruning for predicates involving toWeek, toYearWeek, toStartOfWeek, toLastDayOfWeek, and toDayOfWeek, and fix exceptions in some of these functions for valid queries with LowCardinality(String). #94816 (Nihal Z. Miaji).
  • Backported in #95151: The getURLHostRFC function was missing bounds checks before dereferencing pointers. When an empty string was passed to domainRFC, it would read uninitialized memory, triggering MSan errors. #94851 (Alexey Milovidov).
  • Backported in #94997: Fix readonlyness of encrypted disks. #94852 (Azat Khuzhin).
  • Backported in #95632: Fixes a crash during ReplicatedMergeTree startup caused by concurrent removal of delete_tmp_* directories. #94892 (myeongjun).
  • Backported in #95036: Fix logical error in fractional LIMIT/OFFSET when using the old analyzer with Distributed tables. Closes #94712. #94999 (Ahmed Gouda).
  • Backported in #95023: Fix crash under some conditions when join runtime filters are enabled by default. #95000 (Alexander Gololobov).
  • Backported in #95087: Fix crash in the top K optimization when LIMIT is zero. Closes #93893. #95072 (Alexey Milovidov).
  • Backported in #95427: Make column transform only once during getting content of manifesrt .avro list and files. #95164 (Daniil Ivanik).
  • Backported in #95384: Fixed inaccurate memory accounting when applying large patch parts after lightweight updates. Previously, applying large patches could cause excessive memory usage and result in the server process being killed by the OOM killer. #95231 (Anton Popov).
  • Backported in #95575: The password argument of the redis table function now will be masked in the logs and system tables (e.g.: query_log). #95325 (János Benjamin Antal).
  • Backported in #95505: Fix storage lifetime with distributed plan. #95356 (Azat Khuzhin).
  • Backported in #95608: Avoid possible crash for distributed queries in case of cancellation. #95466 (Aleksandr Musorin).
  • Backported in #95549: Fix check for encrypted disks over plain_rewritable (Fixes possible It is not possible to register multiple plain-rewritable disks with the same object storage prefix). #95470 (Azat Khuzhin).
  • Backported in #95697: Fixed There was an error: Cannot obtain error message logical error when waiting for a distributed DDL and dropping the Replicated database concurrently. Fixes #95539. #95664 (Alexander Tokmakov).

Build/Testing/Packaging Improvement

Bugfix

  • Backported in #95759: Fixed UDF debugging by enabling stderr capture in system.query_log.exception. Previously, UDF stderr was only logged to files and not exposed in query logs, making debugging impossible. Now stderr triggers exceptions by default and is fully accumulated (up to 1MB) before throwing, so complete Python tracebacks and error messages appear in system.query_log.exception for effective troubleshooting. #92209 (Xu Jia).

NO CL CATEGORY

NO CL ENTRY

NOT FOR CHANGELOG / INSIGNIFICANT