Back to Clickhouse

2025 Changelog

docs/changelogs/v25.3.4.190-lts.md

26.4.1.1-new26.8 KB
Original Source

2025 Changelog

ClickHouse release v25.3.4.190-lts (93636ae3130) FIXME as compared to v25.3.3.42-lts (c4bfe68b052)

Performance Improvement

  • Backported in #79660: Introduced threshold (regulated by setting parallel_hash_join_threshold) to fall back to the hash algorithm when the size of the right table is below the threshold. #76185 (Nikita Taranov).
  • Backported in #79922: Prevent LogSeriesLimiter from doing cleanup on every construction, avoiding lock contention and performance regressions in high-concurrency scenarios. #79864 (filimonov).
  • Backported in #81857: Avoid unnecessary update and reduce lock contention in QueryConditionCache. #80247 (Jiebin Sun).
  • Backported in #81757: Fixed performance regression in memory tracking. #81694 (Michael Kolupaev).

Improvement

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

  • Backported in #80474: Analyzer: Fix column projection name after column type promotion in join. Closes #63345. #63519 (Dmitry Novik).
  • Backported in #81724: Fix CTE usage in pushed-down predicates when allow_push_predicate_ast_for_distributed_subqueries is enabled. Fixes #75647. Fixes #79672. #77316 (Dmitry Novik).
  • Backported in #80698: Fix sending constant values to remote for some types. #77634 (Pavel Kruglov).
  • Backported in #79784: Fixed refreshable materialized views breaking backups. #77893 (Michael Kolupaev).
  • Backported in #79485: Fix old firing logical error for transform. #78247 (Yarik Briukhovetskyi).
  • Backported in #79211: Fix delta-kernel auth options. #78255 (Kseniia Sumarokova).
  • Backported in #79796: In storage S3Queue fix logical error "Cannot unregister: table uuid is not registered". Closes #78285. #78541 (Kseniia Sumarokova).
  • Backported in #79500: ```sql CREATE TABLE t0 ( key Int32, value Int32 ) ENGINE=MergeTree() PRIMARY KEY key PARTITION BY key % 2;. #78593 (Vlad).
  • Backported in #78916: Keeper fix: fix ephemeral count in all cases. #78799 (Antonio Andelic).
  • Backported in #79433: Fixes a bug where arrayUnion() returned extra (incorrect) values on tables that had batch inserts. Fixes #79157. #79158 (Peter Nguyen).
  • Backported in #80464: Try to use IColumn instead of Field in SingleValueDataGeneric. It fixes the incorrect return values for some aggregate functions like argMax for types Dynamic/Variant/JSON. #79166 (Pavel Kruglov).
  • Backported in #81241: Forbid Dynamic and JSON types in IN. With current implementation of IN it can lead to incorrect results. Proper support of this types in IN is complicated and can be done in future. #79282 (Pavel Kruglov).
  • Backported in #79605: Fix loading of plain_rewritable disks containing data. #79439 (Julia Kartseva).
  • Backported in #79739: Fix crash in dynamic subcolumns discovery in Wide parts in MergeTree. #79466 (Pavel Kruglov).
  • Backported in #79754: Verify the table name's length only for initial create queries. Do not verify this for secondary creates to avoid backward compatibility issues. #79488 (Miсhael Stetsyuk).
  • Backported in #79523: Fixed error Block structure mismatch in several cases with tables with sparse columns. #79491 (Anton Popov).
  • Backported in #79614: Fix result duplication when reading from remote with both use_hedged_requests and allow_experimental_parallel_reading_from_replicas disabled. #79599 (Eduard Karacharov).
  • Backported in #80047: Fixes the result of SQL function formatDateTime if a variable-size formatter (e.g. %W aka. weekday Monday Tuesday, etc.) is followed by a compound formatter (a formatter that prints multiple components at once, e.g. %D aka. the American date 05/04/25). #79835 (Robert Schulze).
  • Backported in #80529: Fix the sorting order of the NaNs with a negative sign bit. #79847 (Pervakov Grigorii).
  • Backported in #81621: Disabling hive partitioning for datalakes Partially addresses https://github.com/issues/assigned?issue=ClickHouse%7CClickHouse%7C79937. #80005 (Daniil Ivanik).
  • Backported in #80076: Allow materialized views with UNIONs to work correctly on new replicas. #80037 (Samay Sharma).
  • Backported in #80193: Fix warnings Cannot find 'kernel' in '[...]/memory.stat' in ClickHouse's log (issue #77410). #80129 (Robert Schulze).
  • Backported in #80454: Fix logical error in Arrow format with LowCardinality(FixedString). #80156 (Pavel Kruglov).
  • Backported in #80628: Fix reading subcolumns from Merge engine. #80158 (Pavel Kruglov).
  • Backported in #80321: Fix incorrect count optimization for string prefix filters like LIKE 'ab_c%' when using implicit projections. This fixes #80250. #80261 (Amos Bird).
  • Backported in #80400: Fix text representation of DateTime and DateTime64 for PostgreSQL storage. #80301 (Yakov Olkhovskiy).
  • Backported in #80974: Disable filter-push-down for the predicate with a non-deterministic function in case the query plan step changes the number of rows. Fixes #40273. #80329 (Nikolai Kochetov).
  • Backported in #80837: Fix possible logical errors and crashes in projections with subcolumns. #80333 (Pavel Kruglov).
  • Backported in #80560: Fixed refreshable materialized view DROP getting stuck if the view was paused using SYSTEM STOP REPLICATED VIEW. #80543 (Michael Kolupaev).
  • Backported in #80892: Fix 'Cannot find column' with constant tuple in distributed query. #80596 (Yakov Olkhovskiy).
  • Backported in #81287: Fix incorrect result during reading column that exists in subset of tables in Merge engine. #80643 (Pavel Kruglov).
  • Backported in #80751: Fix possible crash in case of dictionary registration failed (when CREATE DICTIONARY failed with CANNOT_SCHEDULE_TASK it is possible to leave dangling pointer in the dictionary registry, which later lead to crash). #80714 (Azat Khuzhin).
  • Backported in #81139: Fix wrong result type of comparison functions with Tuple(Dynamic) and String that led to logical error. #80728 (Pavel Kruglov).
  • Backported in #82183: Fix logical error during materialize projection when column type was changed to Nullable. #80741 (Pavel Kruglov).
  • Backported in #80897: Fix THERE_IS_NO_COLUMN error for distributed queries with IN cte. Fixes #75032. #80757 (Nikolai Kochetov).
  • Backported in #80968: Fix excessive number of files (leads to excessive memory usage) for external ORDER BY. #80777 (Azat Khuzhin).
  • Backported in #81112: Fix crash in Kafka due to get_member_id() was creating std::string from NULL (it was likely an issue only in case of connection to broker had been failed). #80793 (Azat Khuzhin).
  • Backported in #80908: Properly wait consumers before shutting down Kafka engine (active consumers after shutdown can trigger various debug assertions and also may read data from brokers in background after table has been dropped/detached). #80795 (Azat Khuzhin).
  • Backported in #81057: Fix wrong partitioning with nullable partition key. #80913 (Pervakov Grigorii).
  • Backported in #81946: Fix Table does not exist error for distributed queries with pushed-down predicate (allow_push_predicate_ast_for_distributed_subqueries=1) when the source table does not exist on the initialtor. Fixes #77281. #80915 (Nikolai Kochetov).
  • Backported in #81095: Fix the logical error in the nested functions with named windows. #80926 (Pervakov Grigorii).
  • Backported in #80999: Fix extremes for nullable and floating-point columns. #80970 (Pervakov Grigorii).
  • Backported in #81013: Fix possible crash while querying from system.tables (likely the case under memory pressure). #80976 (Azat Khuzhin).
  • Backported in #81006: Fix atomic rename with truncate for files which compression is inferred from their file extension. #80979 (Pablo Marcos).
  • Backported in #81276: Fix parsing of DateTime64 from integers in JSONExtract and JSON type parsing. #81050 (Pavel Kruglov).
  • Backported in #81151: Reflect date_time_input_format setting in schema inference cache. #81052 (Pavel Kruglov).
  • Backported in #81203: Fixed Too large size ... passed to allocator errors or possible crashes on inserts via http protocol with text formats (JSON, Values, ...) and omitted Enum fields. #81145 (Anton Popov).
  • Backported in #82012: Fix Unknown table expression identifier for distributed_product_mode_local=local with cross-replication. #81162 (Nikolai Kochetov).
  • Backported in #81339: Fixed clickhouse-local crashing when outputting const tuples or maps in Parquet format. #81249 (Michael Kolupaev).
  • Backported in #81364: Fix some corner case in query that joins empty tables and uses window functions. The bug leads to exploding number of parallel streams which leads to OOMs. #81299 (Alexander Gololobov).
  • Backported in #81542: Fix region error in delta-kernel. Fixes #79914. #81353 (Kseniia Sumarokova).
  • Backported in #82173: Don't validate experimental/suspicious types in default/materialize expression execution during reading from existing table. #81618 (Pavel Kruglov).
  • Backported in #82122: Fix "Context has expired" during merges when dict used in TTL expression. #81690 (Azat Khuzhin).
  • Backported in #81844: Fix crash in ConcurrentHashJoin with empty USING () and old analyzer enabled. #81754 (Nikita Taranov).
  • Backported in #81905: Keeper fix: block commits of new logs if there is invalid entry in the logs. Previously, if leader applied some logs incorrectly, it would continue to commit new logs, even though the follower would detect digest mismatch and abort. #81780 (Antonio Andelic).
  • Backported in #82322: In previous versions, the server returned excessive content for requests to /js. This closes #61890. #81895 (Alexey Milovidov).

Build/Testing/Packaging Improvement

NOT FOR CHANGELOG / INSIGNIFICANT