Back to Clickhouse

2025 Changelog

docs/changelogs/v25.9.2.1-stable.md

26.4.1.1-new75.6 KB
Original Source

2025 Changelog

ClickHouse release v25.9.2.1-stable (c2a9511f7bc) FIXME as compared to v25.9.1.1-new (524fe1daa94)

Backward Incompatible Change

  • Disable non sensical binary operations with IPv4/IPv6: Plus / minus of a IPv4/IPv6 with a non integer type is disabled. Before it would allow operations with floating types and throw logical errors with some other types (such as DateTime). #86336 (Raúl Marín).
  • Deprecate setting allow_dynamic_metadata_for_data_lakes. Now all iceberg tables try to fetch up-to-date table schema from storage before executing of each query. #86366 (Daniil Ivanik).
  • The inverted text index was reworked from scratch to be scalable for datasets that don't fit into RAM. #86485 (Anton Popov).

New Feature

  • Support table engine Alias. #76569 (RinChanNOW).
  • Added function arrayExcept that subtracts one array as a set from another. #82368 (Joanna Hulboj).
  • Add a new system table database_replicas with information about database replicas. #83408 (Konstantin Morozov).
  • Users can now use NATS JetStream to consume messages by specifying the new settings of nats_stream and nats_consumer for the NATS engine. #84799 (Dmitry Novikov).
  • Adds a new system.aggregated_zookeeper_log table. The table contains statistics (e.g. number of operations, average latency, errors) of ZooKeeper operations grouped by session id, parent path and operation type, and periodically flushed to disk. #85102 (Miсhael Stetsyuk).
  • Added isValidASCII function to check if string contains only ASCII characters. Close #85377. #85786 (rajat mohan).
  • Treat a bare setting name in query setting as equal to 1 (e.g. SELECT ... SETTINGS use_query_cache is equivalent to use_query_cache = 1). #85800 (thraeka).
  • New configuration options: logger.startupLevel & logger.shutdownLevel allow for overriding the log level during the startup & shutdown of Clickhouse respectively. #85967 (Lennard Eijsackers).
  • Aggregate functions timeSeriesChangesToGrid and timeSeriesResetsToGrid. Behaves similarly to timeSeriesRateToGrid, accepting parameters for start timestamp, end timestamp, step, and look back window, as well as two arguments for the timestamps and values, but requiring at least 1 sample per window instead of 2. Calculates a PromQL changes/resets, counting the number of times the sample value changes or decreases in the specified window for each timestamp in the time grid defined by the parameters. The return type is Array(Nullable(Float64)). #86010 (Stephen Chi).
  • ALTER UPDATE for Iceberg table engine. #86059 (scanhex12).
  • Add system table iceberg_metadata_log to retrieve Iceberg metadata files during SELECT statements. #86152 (scanhex12).
  • Allows users to create temporary views with the same syntax as temporary tables. #86432 (Aly Kafoury).
  • Iceberg and delta lake tables with disk configuration. This allows to specify user tables with an existing disk. Add setting allowed_disks_for_table_engines which allows specific disks to use for Iceberg. Example: CREATE TABLE test ENGINE = Iceberg('path/inside/disk') SETTING datalake_disk_name = '<some_user_disk>'; ### Documentation entry for user-facing changes. #86778 (scanhex12).
  • Add warnings for cpu and memory to system.warnings table. #86838 (Bharat Nallan).

Performance Improvement

  • Improve prewhere optimization for conditions like func(primary_column) = 'xx' and column in (xxx). #85529 (李扬).
  • Implemented rewriting of JOIN: 1. Convert LEFT ANY JOIN and RIGHT ANY JOIN to SEMI/ANTI JOIN if the filter condition is always false for matched or non-matched rows. This optimization is controlled by a new setting query_plan_convert_any_join_to_semi_or_anti_join. 2. Convert FULL ALL JOIN to LEFT ALL or RIGHT ALL JOIN if the filter condition is always false for non-matched rows from one side. #86028 (Dmitry Novik).
  • Improved performance of vertical merges after executing a lightweight delete. #86169 (Anton Popov).
  • HashJoin performance optimised slightly in the case of LEFT/RIGHT join having a lot of unmatched rows. #86312 (Nikita Taranov).
  • RadixSort: Help the compiler use SIMD and the CPU do better prefetching. Uses dynamic dispatch to use software prefetching with Intel CPUs only. Continues the work by @taiyang-li in https://github.com/ClickHouse/ClickHouse/pull/77029. #86378 (Raúl Marín).
  • Join reordering now uses statistics. The feature can be enabled by setting allow_statistics_optimize = 1 and query_plan_optimize_join_order_limit = 10. #86822 (Han Fei).
  • Improves performance of fast queries with lots of parts in table (by optimizing MarkRanges by using devector over deque). #86933 (Azat Khuzhin).
  • Improved performance of applying patch parts in join mode. #87094 (Anton Popov).

Improvement

  • Support unity catalog on top of azure blob storage. #80013 (Smita Kulkarni).
  • Added experimental join order optimization that can automatically reorder JOINs for better performance (controlled by query_plan_optimize_join_order_limit setting). Note that the join order optimization currently has limited statistics support and primarily relies on row count estimates from storage engines - more sophisticated statistics collection and cardinality estimation will be added in future releases. If you encounter issues with JOIN queries after upgrading, you can temporarily disable the new implementation by setting SET query_plan_use_new_logical_join_step = 0 and report the issue for investigation. Note about resolution of identifiers from USING clause: Changed resolving of the coalesced column from OUTER JOIN ... USING clause to be more consistent: previously, when selecting both the USING column and qualified columns (a, t1.a, t2.a) in a OUTER JOIN, the USING column would incorrectly be resolved to t1.a, showing 0/NULL for rows from the right table with no left match. Now identifiers from USING clause are always resolved to the coalesced column, while qualified identifiers resolve to the non-coalesced columns, regardless of which other identifiers are present in the query. For example: ```sql SELECT a, t1.a, t2.a FROM (SELECT 1 as a WHERE 0) t1 FULL JOIN (SELECT 2 as a) t2 USING (a) -- Before: a=0, t1.a=0, t2.a=2 (incorrect - 'a' resolved to t1.a) -- After: a=2, t1.a=0, t2.a=2 (correct - 'a' is coalesced). #80848 (Vladimir Cherkasov).
  • Support filtering data parts using skip indexes during reading to reduce unnecessary index reads. Controlled by the new setting use_skip_indexes_on_data_read (disabled by default). This addresses #75774. This includes some common groundwork shared with #81021. #81526 (Amos Bird).
  • Make S3 retry strategy configurable and make settings of S3 disk can be hot reload if change the config XML file. #82642 (RinChanNOW).
  • Special column may be used to indicate presence of part of oneof. #82885 (Ilya Golshtein).
  • Give more clear instruction for users when incorrect settings are specified for the new Kafka table engine. #83701 (János Benjamin Antal).
  • It's no longer possible to specify time zones for the Time type. #84689 (Yarik Briukhovetskyi).
  • Simplified (and avoided some bugs) a logic related to parsing Time[64] in a best_effort format. #84730 (Yarik Briukhovetskyi).
  • You can use query parameters after TO when creating a materialized view, for example: CREATE MATERIALIZED VIEW mv TO {to_table:Identifier} AS SELECT * FROM src_table. #84899 (Diskein).
  • Update jemalloc to newer version. Improve allocation profiling based on jemalloc's internal tooling. Global jemalloc profiler can now be enabled with config jemalloc_enable_global_profiler. Sampled global allocations and deallocations can be stored in system.trace_log under JemallocSample type by enabling config jemalloc_collect_global_profile_samples_in_trace_log. Jemalloc profiling can now be enabled for each query independently using setting jemalloc_enable_profiler. Storing samples in system.trace_log can be controlled per query using setting jemalloc_collect_profile_samples_in_trace_log. #85438 (Antonio Andelic).
  • Added deltaLakeAzureCluster function (similar to deltaLakeAzure for cluster) and deltaLakeS3Cluster (alias to deltaLakeCluster) function.resolves #85358. #85547 (Smita Kulkarni).
  • Apply azure_max_single_part_copy_size setting for normal copy operations in the same way as for backup. #85767 (Ilya Golshtein).
  • Slow down S3 client threads on retryable errors in S3 Object Storage. This extends the previous setting backup_slow_all_threads_after_retryable_s3_error to S3 disks and renames it to the more general s3_slow_all_threads_after_retryable_error. #85918 (Julia Kartseva).
  • Mark settings allow_experimental_variant/dynamic/json and enable_variant/dynamic/json as obsolete. Now all three types are enabled unconditionally. #85934 (Pavel Kruglov).
  • Improved S3(Azure)Queue table engine to allow it to survive zookeeper connection loss without potential duplicates. Requires enabling S3Queue setting use_persistent_processing_nodes (changeable by ALTER TABLE MODIFY SETTING). #85995 (Kseniia Sumarokova).
  • Added setting query_condition_cache_selectivity_threshold (default value: 1.0) which excludes scan results of predicates with low selectivity from insertion into the query condition cache. This allows to reduce the memory consumption of the query condition cache at the cost of a worse cache hit rate. #86076 (zhongyuankai).
  • Support filtering by complete URL string (full_url directive) in http_handlers (including schema and host:port). #86155 (Azat Khuzhin).
  • Add an experimental setting to delta lake writes feature allow_experimental_delta_lake_writes, disabled by default. #86180 (Kseniia Sumarokova).
  • Fix detection of systemd in init.d script (fixes "Install packages" check). #86187 (Azat Khuzhin).
  • Add a new startup_scripts_failure_reason dimensional metric. This metric is needed to distinguish between different error types that result in failing startup scripts. In particular, for alerting purposes, we need to distinguish between transient (e.g., MEMORY_LIMIT_EXCEEDED or KEEPER_EXCEPTION) and non-transient errors. #86202 (Miсhael Stetsyuk).
  • Multiple data files in iceberg writes. #86275 (scanhex12).
  • More types for partitions in iceberg writes. This closes #86206. #86298 (scanhex12).
  • Allow to omit identity() function for partition for Iceberg table. #86314 (scanhex12).
  • Add ability to enable JSON logging only for specific channel, for this set logger.formatting.channel to one of syslog/console/errorlog/log. #86331 (Azat Khuzhin).
  • Add rows/bytes limit for inserted data files in delta lake. Controlled by settings delta_lake_insert_max_rows_in_data_file and delta_lake_insert_max_bytes_in_data_file. #86357 (Kseniia Sumarokova).
  • Allow using native numbers in WHERE. They are already allowed to be arguments of logical functions. This simplifies filter-push-down and move-to-prewhere optimizations. #86390 (Nikolai Kochetov).
  • Fixed error in case of executing SYSTEM DROP REPLICA against a Catalog with corrupted metadata. #86391 (Nikita Mikhaylov).
  • Add extra retries for disk access check (skip_access_check=0) in Azure because it may be provisioning access for quite a long time. #86419 (Alexander Tokmakov).
  • Rename setting evaluation_time to promql_evaluation_time. #86459 (Vitaly Baranov).
  • Setting to delete files in iceberg drop. This closes #86211. #86501 (scanhex12).
  • Reduce memory usage in iceberg writes. #86544 (scanhex12).
  • Make today() function case insensitive to make it consistent with other date/time related functions like NOW(). #86561 (Kaviraj Kanagaraj).
  • Make the staleness window in timeSeries*() functions left-open and right-closed. #86588 (Vitaly Baranov).
  • Add FailedInternal*Query profile events. #86627 (Shane Andrade).
  • Fixes handling of users with a dot in the name when added via config file. #86633 (Mikhail Koviazin).
  • Add asynchronous metric for memory usage in queries (QueriesMemoryUsage and QueriesPeakMemoryUsage). #86669 (Azat Khuzhin).
  • You can use clickhouse-benchmark --precise flag for more precise reporting of QPS and other per-interval metrics. It helps to get consistent QPS in case if durations of queries are comparable to the reporting interval --delay D. #86684 (Sergei Trifonov).
  • Make nice values of Linux threads configurable to assign some threads (merge/mutate, query, materialized view, zookeeper client) higher or lower priorities. #86703 (Miсhael Stetsyuk).
  • Fix misleading “specified upload does not exist” error, which occurs when the original exception is lost in multipart upload because of a race condition. #86725 (Julia Kartseva).
  • Limit query plan description in the EXPLAIN query. Do not calculate the description for queries other than EXPLAIN. Added a steeing query_plan_max_step_description_length. #86741 (Nikolai Kochetov).
  • Add ability to tune pending signals in attemp to overcome CANNOT_CREATE_TIMER (for query profilers, query_profiler_real_time_period_ns/query_profiler_cpu_time_period_ns). And also collect SigQ from the /proc/self/status for introspection (if ProcessSignalQueueSize is near to ProcessSignalQueueLimit, then you will likely get CANNOT_CREATE_TIMER errors). #86760 (Azat Khuzhin).
  • Use tasktracker in src/io/s3/copys3file.cpp. #86764 (Sema Checherinda).
  • Distributed insert/select for data lakes. #86783 (scanhex12).
  • Improve performance of RemoveRecursive request in Keeper. #86789 (Antonio Andelic).
  • Remove extra whitespace in PrettyJSONEachRow during JSON type output. #86819 (Pavel Kruglov).
  • Increase replicated deduplication window up to 10000. #86820 (Sema Checherinda).
  • Now we write blobs sizes of for prefix.path when directory is removed for plain rewriteable disk. #86908 (alesapin).
  • Make yesterday() function case insensitive and consistent with today() function. #86914 (Kaviraj Kanagaraj).
  • Support .xml performance testing against remote ClickHouse instances, including ClickHouse Cloud. Usage example: tests/performance/scripts/perf.py tests/performance/math.xml --runs 10 --user <username> --password <password> --host <hostname> --port <port> --secure. #86995 (Raufs Dunamalijevs).
  • Respect memory limits in some places that are known to allocate significant (>16MiB) amount of memory (sorting, async inserts, file log). #87035 (Azat Khuzhin).
  • Prevent nonboolean settings from not setting value in queries. Improvement of #85800. #87084 (thraeka).
  • Throw an exception if setting network_compression_method is not a supported generic codec. #87097 (Robert Schulze).
  • System table system.query_cache now returns all query result cache entries, whereas it previously returned only shared entries or non-shared entries of the same user and role. That is okay as non-shared entries are supposed to not reveal query results, whereas system.query_cache returns query strings. This makes the behavior of the system table more similar to system.query_log. #87104 (Robert Schulze).
  • Added support for authentication and SSL in the arrowFlight() table function. #87120 (Vitaly Baranov).
  • Add new parameter to S3 table engine and s3 table function named storage_class_name which allows to specify intelligent tiring supported by AWS. Supported both in key-value format and in positional (deprecated) format). #87122 (alesapin).
  • Support azure for data lakes disks. #87173 (scanhex12).
  • Enable short circuit evaluation for parseDateTime function. #87184 (Pavel Kruglov).
  • Support alter table ... materialize statistics all will materialize all the statistics of a table. #87197 (Han Fei).
  • Backported in #87429: Disable s3_slow_all_threads_after_retryable_error by default. #87198 (Nikita Mikhaylov).
  • Adds a new system.aggregated_zookeeper_log table. The table contains statistics (e.g. number of operations, average latency, errors) of ZooKeeper operations grouped by session id, parent path and operation type, and periodically flushed to disk. #87208 (Miсhael Stetsyuk).
  • Add a new column statistics in system.parts_columns. #87259 (Han Fei).
  • Support other formats (ORC, Avro) in iceberg writes. This closes #86179. #87277 (scanhex12).

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

  • The results of alter queries are only validated on the initiator node for replicated databases and internally replicated tables. This will fix situations where an already committed alter query could get stuck on other nodes. #83849 (János Benjamin Antal).
  • Limit the number of tasks of each type in BackgroundSchedulePool. Avoid situations when all slots are occupied by task of one type, while other tasks are starving. Also avoids deadlocks when tasks wait for each other. This is controlled by background_schedule_pool_max_parallel_tasks_per_type_ratio server setting. #84008 (Alexander Tokmakov).
  • Shutdown tables properly when recovering database replica. Improper shutdown would lead to LOGICAL_ERROR for some table engines during database replica recovery. #84744 (Antonio Andelic).
  • Check access rights during typo correction hints generation for the database name. #85371 (Dmitry Novik).
    1. LowCardinality for hive columns 2. Fill hive columns before virtual columns (required for https://github.com/ClickHouse/ClickHouse/pull/81040) 3. LOGICAL_ERROR on empty format for hive #85528 4. Fix check for hive partition columns being the only columns 5. Assert all hive columns are specified in the schema 6. Partial fix for parallel_replicas_cluster with hive 7. Use ordered container in extractkeyValuePairs for hive utils (required for https://github.com/ClickHouse/ClickHouse/pull/81040). #85538 (Arthur Passos).
  • Prevent unnecessary optimization of the first argument of IN functions sometimes resulting in error when array mapping is used. #85546 (Yakov Olkhovskiy).
  • Mapping between iceberg source ids and parquet names was not adjusted to the schema when the parquet file was written. This PR processes schema relevant for each iceberg data file, not a current one. #85829 (Daniil Ivanik).
  • Fix reading file size separately from opening it. Relates to https://github.com/ClickHouse/ClickHouse/pull/33372, which was introduced in response to a bug in Linux kernels prior to 5.10 release. #85837 (Konstantin Bogdanov).
  • ClickHouse Keeper no longer fails to start on systems where IPv6 is disabled at the kernel level (e.g., RHEL with ipv6.disable=1). It now attempts to fall back to an IPv4 listener if the initial IPv6 listener fails. #85901 (jskong1124).
  • This PR closes #77990. Add TableFunctionRemote support for parallel replicas in globalJoin. #85929 (zoomxi).
  • Fix null pointer in orcschemareader::initializeifneeded(). this pr addresses the following issue: #85292 ### documentation entry for user-facing changes. #85951 (yanglongwei).
  • Add a check to allow correlated subqueries in the FROM clause only if they use columns from the outer query. Fixes #85469. Fixes #85402. #85966 (Dmitry Novik).
  • Fix alter update of a column with a subcolumn used in other column materialized expression. Previously materialized column with subcolumn in its expression was not updated properly. #85985 (Pavel Kruglov).
  • Forbid altering columns whose subcolumns are used in PK or partition expression. #86005 (Pavel Kruglov).
  • Fix reading subcolumns with non-default column mapping mode in storage DeltaLake. #86064 (Kseniia Sumarokova).
  • Fix using wrong default values for path with Enum hint inside JSON. #86065 (Pavel Kruglov).
  • DataLake hive catalog url parsing with input sanitisation. Closes #86018. #86092 (rajat mohan).
  • Fix logical error during filesystem cache dynamic resize. Closes #86122. Closes https://github.com/ClickHouse/clickhouse-core-incidents/issues/473. #86130 (Kseniia Sumarokova).
  • Use NonZeroUInt64 for logs_to_keep in DatabaseReplicatedSettings. #86142 (Tuan Pham Anh).
  • Exception was thrown by a FINAL query with skip index if the table (e.g ReplacingMergeTree) was created with settingindex_granularity_bytes = 0. That exception has been fixed now. #86147 (Shankar Iyer).
  • Removes UB and fixes problems with parsing of Iceberg partition expression. #86166 (Daniil Ivanik).
  • Fix crash in case of const and non-const blocks in one INSERT. #86230 (Azat Khuzhin).
  • Process includes from /etc/metrika.xml as a default when creating disks from SQL. #86232 (alekar).
  • Fix accurateCastOrNull/accurateCastOrDefault from String to JSON. #86240 (Pavel Kruglov).
  • Support directories without '/' in iceberg engine. #86249 (scanhex12).
  • Fix crash with replaceRegex, a FixedString haystack and an empty needle. #86270 (Raúl Marín).
  • Fix crash during ALTER UPDATE Nullable(JSON). #86281 (Pavel Kruglov).
  • Fix missing column definer in system.tables. #86295 (Raúl Marín).
  • Fix cast from LowCardinality(Nullable(T)) to Dynamic. #86365 (Pavel Kruglov).
  • Fix logical error during writes to DeltaLake. Closes #86175. #86367 (Kseniia Sumarokova).
  • Fix 416 The range specified is invalid for the current size of the resource. The range specified is invalid for the current size of the resource when reading empty blobs from Azure blob storage for plain_rewritable disk. #86400 (Julia Kartseva).
  • Fix GROUP BY Nullable(JSON). #86410 (Pavel Kruglov).
  • Fixed a bug in Materialized Views: an MV might not work if it was created, dropped, and then created again with the same name. #86413 (Alexander Tokmakov).
  • Fail if all replicas are unavailable when reading from *cluster functions. #86414 (Julian Maicher).
  • Fix leaking of MergesMutationsMemoryTracking due to Buffer tables and fix query_views_log for streaming from Kafka (and others). #86422 (Azat Khuzhin).
  • Fix show tables after dropping reference table of alias storage. #86433 (RinChanNOW).
  • Fix missing chunk header when send_chunk_header is enabled and UDF is invoked via HTTP protocol. #86469 (Vladimir Cherkasov).
  • Fix possible deadlock in case of jemalloc profile flushes enabled. #86473 (Azat Khuzhin).
  • Fix reading subcolumns in DeltaLake table engine. Closes #86204. #86477 (Kseniia Sumarokova).
  • Handling loopback host ID properly to avoid collision when processing DDL tasks:. #86479 (Tuan Pham Anh).
  • Fix detach/attach for postgres database engine tables with numeric/decimal columns. #86480 (Julian Maicher).
  • Fix use of uninitialized memory in getSubcolumnType. #86498 (Raúl Marín).
  • Functions searchAny and searchAll when called with empty needles now return true (aka. "matches everything"). Previously, they returned false. (issue #86300). #86500 (Elmi Ahmadov).
  • Fix function timeSeriesResampleToGridWithStaleness() when the first bucket has no value. #86507 (Vitaly Baranov).
  • Fix crash caused by merge_tree_min_read_task_size being set to 0. #86527 (yanglongwei).
  • While reading takes format for each data file from Iceberg metadata (earlier it was taken from table arguments). #86529 (Daniil Ivanik).
  • Ignore exceptions during flushing log on shutdown and make shutdown more safe (to avoid SIGSEGV). #86546 (Azat Khuzhin).
  • Fix Backup db engine raising exception on query with zero sized part files. #86563 (Max Justus Spransy).
  • Fix missing chunk header when send_chunk_header is enabled and UDF is invoked via HTTP protocol. #86606 (Vladimir Cherkasov).
  • Fix S3Queue logical error "Expected current processor {} to be equal to {}", which happened because of keeper session expiration. #86615 (Kseniia Sumarokova).
  • Nullablity bugs in insert and pruning. This closes #86407. #86630 (scanhex12).
  • Do not disable file system cache if Iceberg metadata cache is disabled. #86635 (Daniil Ivanik).
  • Fixed 'Deadlock in Parquet::ReadManager (single-threaded)' error in parquet reader v3. #86644 (Michael Kolupaev).
  • Fix support for IPv6 in listen_host for ArrowFlight. #86664 (Vitaly Baranov).
  • Fix shutdown in ArrowFlight handler. This PR fixes #86596. #86665 (Vitaly Baranov).
  • Fix distributed queries with describe_compact_output=1. #86676 (Azat Khuzhin).
  • Fix window definition parsing and applying query parameters. #86720 (Azat Khuzhin).
  • Fix exception Partition strategy wildcard can not be used without a '_partition_id' wildcard. when creating a table with PARTITION BY, but without partition wildcard, which used to work in versions before 25.8. Closes https://github.com/ClickHouse/clickhouse-private/issues/37567. #86748 (Kseniia Sumarokova).
  • Fix LogicalError if parallel queries are trying to acquire single lock. #86751 (Pervakov Grigorii).
  • Fix writing NULL into JSON shared data in RowBinary input format and add some additional validations in ColumnObject. #86812 (Pavel Kruglov).
  • Fix empty Tuple permutation with limit. #86828 (Pavel Kruglov).
  • Do not use separate keeper node for persistent processing nodes. Fix for https://github.com/ClickHouse/ClickHouse/pull/85995. Closes #86406. #86841 (Kseniia Sumarokova).
  • Fix TimeSeries engine table breaking creation of new replica in Replicated Database. #86845 (Nikolay Degterinsky).
  • Fix querying system.distributed_ddl_queue in cases where tasks are missing certain Keeper nodes. #86848 (Antonio Andelic).
  • Fix seeking at the end of the decompressed block. #86906 (Pavel Kruglov).
  • Process exception which is thrown during asyncronous execution of Iceberg Iterator. #86932 (Daniil Ivanik).
  • Fix saving of big preprocessed XML configs. #86934 (c-end).
  • Fix date field populating in system.iceberg_metadata_log table. #86961 (Daniil Ivanik).
  • Fixed infinite recalculation of TTL with WHERE. #86965 (Anton Popov).
  • Backported in #87599: Fix result of function calculated in CTE being non-deterministic in the query. #86967 (Yakov Olkhovskiy).
  • Fixed possible incorrect result of uniqExact function with ROLLUP and CUBE modifiers. #87014 (Nikita Taranov).
  • Fix resolving table schema with url() table function when parallel_replicas_for_cluster_functions setting is set to 1. #87029 (Konstantin Bogdanov).
  • Correctly cast output of PREWHERE after splitting it into multiple steps. #87040 (Antonio Andelic).
  • Fixed lightweight updates with ON CLUSTER clause. #87043 (Anton Popov).
  • Fix compatibility of some aggregate function states with String argument. #87049 (Pavel Kruglov).
  • Fixes an issue where model name from OpenAI wasn't passed through. #87100 (Kaushik Iska).
  • EmbeddedRocksDB: Path must be inside user_files. #87109 (Raúl Marín).
  • Fix KeeperMap tables created before 25.1, leaving data in ZooKeeper after the DROP query. #87112 (Nikolay Degterinsky).
  • Fix maps and arrays field ids reading parquet. #87136 (scanhex12).
  • Fix reading array with array sizes subcolumn in lazy materialization. #87139 (Pavel Kruglov).
  • Backported in #87386: Fixed incorrect accounting of temporary data deallocations in max_temporary_data_on_disk_size limit tracking, close #87118. #87140 (JIaQi).
  • Fix CASE function with Dynamic arguments. #87177 (Pavel Kruglov).
  • Backported in #87350: Fix logical error with parallel replicas for queries with multiple JOINs, with RIGHT JOIN after LEFT/INNER JOIN in particular. #87178 (Igor Nikonov).
  • Backported in #87481: Make pathStartsWith only match paths under the prefix. #87181 (Raúl Marín).
  • Fix reading empty array from empty string in CSV. #87182 (Pavel Kruglov).
  • Fix possible wrong result of non-correlated EXISTS. It was broken with execute_exists_as_scalar_subquery=1 which was introduced in https://github.com/ClickHouse/ClickHouse/pull/85481 and affects 25.8. Fixes #86415. #87207 (Nikolai Kochetov).
  • Backported in #87439: Fix "Too large size passed to allocator" LOGICAL_ERROR in JOIN due to mixed const and non-const blocks. #87231 (Azat Khuzhin).
  • Throws an error if iceberg_metadata_log is not configured, but user tries to get debug iceberg metadata info. Fixes nullptr access. #87250 (Daniil Ivanik).
  • Backported in #87539: Fixed applying patches to columns with default expression that are missing in data parts. #87347 (Anton Popov).
  • Backported in #87411: Fix EmbeddedRocksDB upgrade. #87392 (Raúl Marín).
  • Backported in #87458: Ignore only not found errors for s3_plain_rewritable (which may lead to all sort of troubles). #87426 (Azat Khuzhin).
  • Backported in #87642: Exclude userspace page cache bytes (if possible) when computing memory overload warning. #87610 (Bharat Nallan).

Build/Testing/Packaging Improvement

NO CL ENTRY

  • NO CL ENTRY: 'Revert "try fix 00365_statistics_in_formats flakyness"'. #86224 (Alexander Tokmakov).
  • NO CL ENTRY: 'Revert "CI: Support for non-blocking job failures via new pipeline_status flag in GH Actions"'. #86470 (Max Kainov).
  • NO CL ENTRY: 'Revert "Revert "CI: Support for non-blocking job failures via new pipeline_status flag in GH Actions""'. #86475 (Max Kainov).
  • NO CL ENTRY: 'Revert "Fix key condition matches continuous range"'. #86558 (Nikita Mikhaylov).
  • NO CL ENTRY: 'Forbid creating directories in non-user directories'. #86844 (scanhex12).
  • NO CL ENTRY: 'Revert "Iceberg + delta lake local and s3 disks"'. #87051 (Alexander Tokmakov).
  • NO CL ENTRY: 'Revert "Revert "Iceberg + delta lake local and s3 disks""'. #87077 (scanhex12).
  • NO CL ENTRY: 'Revert "aggregated zookeeper log"'. #87185 (Raúl Marín).
  • NO CL ENTRY: 'Revert "Use Analyzer to generate actions from default expression"'. #87229 (Nikolai Kochetov).
  • NO CL ENTRY: 'Revert "CI: Fix log export configuration"'. #87339 (Max Kainov).

NOT FOR CHANGELOG / INSIGNIFICANT