Back to Clickhouse

2025 Changelog

docs/changelogs/v25.8.12.129-lts.md

26.4.1.1-new18.6 KB
Original Source

2025 Changelog

ClickHouse release v25.8.12.129-lts (25db09bd0a0) FIXME as compared to v25.8.11.66-lts (fa393206741)

Performance Improvement

  • Backported in #90369: Enable saving marks in cache and avoid direct IO for the MergeTreeLazy reader. #87989 (Nikita Taranov).
  • Backported in #89502: Queries can now benefit from optimize_read_in_order and query_plan_optimize_lazy_materialization simultaneously. Resolves #88767. #88866 (Manuel).

Improvement

  • Backported in #89421: Subqueries which take part inside IN expressions when querying Iceberg table will be precomputed in the right way before partition pruning analysis. #89177 (Daniil Ivanik).
  • Backported in #90070: Fix wrong FilesystemCacheBytes (and others) in system.asynchronous_metrics. Run SYSTEM queries on filesystem caches only once. Atomic view for caches that points to the same path in system.filesystem_caches. #89640 (Azat Khuzhin).
  • Backported in #90169: Changed default of filesystem cache setting keep_free_space_remove_batch from 10 to 100, because it is more optimal. #90030 (Kseniia Sumarokova).
  • Backported in #90350: Use lower node limit for RemoveRecursive Keeper request during S3Queue cleanup. #90201 (Antonio Andelic).
  • Backported in #90710: Retry network errors when S3 library parses XML response. #90216 (Sema Checherinda).
  • Backported in #90774: Update warning messages when approaching guardrails limits: show current and throw values. #90438 (Nikita Fomichev).

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

  • Backported in #89991: Fix creating an array of empty tuples. #87520 (Pavel Kruglov).
  • Backported in #88690: Don't remove injective functions from GROUP BY if arguments types are not allowed in GROUP BY. #87958 (Pavel Kruglov).
  • Backported in #89574: Fix reading mixed array of Floats and Bools in JSON. Previously inserting such data led to an exception. #88008 (Pavel Kruglov).
  • Backported in #89277: Using shared_ptr for QueryState in TCPHandler to detect if the state is invalid in setProgressCallback, setFileProgressCallback and setBlockMarshallingCallback. #88201 (Tuan Pham Anh).
  • Backported in #89237: Fix SQL SECURITY DEFINER with *cluster functions. #88588 (Julian Maicher).
  • Backported in #88732: A Poco::TimeoutException exception thrown from Poco::Net::HTTPChunkedStreamBuf::readFromDevice leads to a crash with SIGABRT. #88668 (Miсhael Stetsyuk).
  • Backported in #89442: Fix possible "Context has expired" with new analyzer with subqueries. #88694 (Azat Khuzhin).
  • Backported in #89462: Fix propagation of size restrictions by settings max_table_size_to_drop and max_partition_size_to_drop on DROP of inner tables. #88812 (Nikolay Degterinsky).
  • Backported in #90296: Fixed performance degradation in analysis of skipping indexes. #89004 (Anton Popov).
  • Backported in #89291: Fix ACCESS_ENTITY_NOT_FOUND error when trying to execute clusterAllReplicas from a user with a non-existing role. Resolves #87670. #89068 (pufit).
  • Backported in #89322: Fix calculation of buffer size needed for base32/base58 encoding and decoding operations. #89133 (Antonio Andelic).
  • Backported in #89347: Avoid possible data-races due to mutable exceptions while parsing Parquet. Fixes #88385. #89174 (Azat Khuzhin).
  • Backported in #89264: Refreshable materialized view: fixed rare server crash if source table was fully dropped during a refresh. #89203 (Michael Kolupaev).
  • Backported in #89483: Fixed incorrect merge handling of TTL-emptied parts with non-empty projections when using deduplicate_merge_projection_mode='ignore'. Resolves #89430. #89458 (Amos Bird).
  • Backported in #89566: Fix reading of changelogs during Keeper startup in cases a changelog was not renamed properly during rotation. #89496 (Antonio Andelic).
  • Backported in #89629: Fix incorrect JOIN results when using OR conditions with unique right table keys. Resolves #89391. #89512 (Vladimir Cherkasov).
  • Backported in #89591: Fix possible "Context has expired" with analyzer and PK IN (subquery) (v2). Fixes #89433. #89527 (Azat Khuzhin).
  • Backported in #89684: Fix a crash in case if a state of an aggregate function contains a serialized value of a column of LowCardinality(String). #89550 (Pavel Kruglov).
  • Backported in #90735: Avoid crash due to reading from remote server after disconnect in remote queries during cancellation. Resolves #89468. #89740 (Azat Khuzhin).
  • Backported in #89857: Fix possible logical error during reading of paths and their subcolumns in advanced JSON shared data serialization. Closes #89805. #89819 (Pavel Kruglov).
  • Backported in #90189: Fix possible stack overflow in data types binary deserialization. Closes #88710. #89822 (Pavel Kruglov).
  • Backported in #89900: Fix logical error with empty tuple inside IN function. Closes #88343. #89850 (Nihal Z. Miaji).
  • Backported in #89890: Remove injective functions from GROUP BY regardless optimize_injective_functions_in_group_by in old analyzer for compatibility. Resolves #89854. #89870 (Raufs Dunamalijevs).
  • Backported in #90213: If the merge was interrupted by, for example, a memory limit, the merge mutate background executor will call cancel on the merge task without a lock, but, in this case, the partially created resulting part will not be removed (since it was not finished and at this stage was not visible). After that, the merge task will be destroyed, which will trigger the destruction of the resulting part. This will revert the disk transaction and cause the data to be removed from S3. At the end, this garbage cleanup was executed under the merge mutate background executor lock. #89875 (Mikhail Artemenko).
  • Backported in #89933: Fix logical error with empty tuple inside reverse and CAST function. Closes #89137. #89908 (Nihal Z. Miaji).
  • Backported in #89961: Fix using native copy on GCS for backups. Because of incorrect client cloning, GCS native copy always failed and used less optimal approach of manual reading and writing the data. #89923 (Antonio Andelic).
  • Backported in #90035: Fix buffer size calculation for base32Encode. Calculating base32Encode for column of strings of size smaller than 5 could lead to crashes. Resolves #89911. #89929 (Antonio Andelic).
  • Backported in #90105: Fix wrong escaping for SHOW COLUMNS and SHOW FUNCTIONS queries. #89942 (alesapin).
  • Backported in #90354: Fix URL validation in MongoDB engine when username contains '@' character. Previously, usernames with '@' would cause an error due to improper encoding. #89970 (Kai Zhu).
  • Backported in #90086: Fix logical error caused by empty tuple column in BSONEachRow and MsgPack. Closes #89814. Closes #71536. #90018 (Nihal Z. Miaji).
  • Backported in #90501: Do size checks when deserializing data from aggregation states and other sources. #90031 (Raúl Marín).
  • Backported in #90181: Allow files starting with dots in user_files. Closes #89662. #90079 (Raúl Marín).
  • Backported in #90308: Fix incorrect formatting of certain skip indexes in the table definition, causing METADATA_MISMATCH and breaking creation of new replicas in the Replicated Database. #90251 (Nikolay Degterinsky).
  • Backported in #90619: Fix possible logical error in prewhere on non-existing JSON path with index_granularity_bytes=0. Resolves #86924. #90375 (Pavel Kruglov).
  • Backported in #90703: Fixed a race condition in Hive partitioning where a static KeyValuePairExtractor caused data corruption or crashes during concurrent file reads. #90474 (Paresh Joshi).

Build/Testing/Packaging Improvement

NO CL ENTRY

  • NO CL ENTRY: 'Revert "Backport #89395 to 25.8: Revert "Do not perform PrimaryKeyExpand step if skip index is already part of primary key""'. #89913 (Shankar Iyer).

NOT FOR CHANGELOG / INSIGNIFICANT