docs/changelogs/v26.2.1.1139-stable.md
azure_queue to azure_queue_metadata_cache and system.s3queue to s3queue_metadata_cache. #95809 (Kseniia Sumarokova).Variant type mismatch. #95811 (Bharat Nallan).deduplicate_insert='backward_compatible_choice' to keep the old behavior. The same with deduplicate_blocks_in_dependent_materialized_views. #95970 (Sema Checherinda).DATE columns from PostgreSQL are now inferred as Date32 in ClickHouse (in previous versions they were inferred as Date, which led to overflow of the values outside of a narrow range). Allow inserting Date32 values back to PostgreSQL. Closes #73084. #95999 (Alexey Milovidov).do_not_merge_across_partitions_select_final setting were made more obvious. Previously, the feature could be automatically enabled when the setting was not explicitly set in the configs. It caused confusion repeatedly and, unfortunately, led to some issues in production. Now, the rules are simpler: do_not_merge_across_partitions_select_final=1 enables the functionality unconditionally. If do_not_merge_across_partitions_select_final=0, then automatic is used only if the new setting enable_automatic_decision_for_merging_across_partitions_for_final=1 and not used otherwise. To preserve the old behaviour as much as possible, the defaults were set to do_not_merge_across_partitions_select_final=0 and enable_automatic_decision_for_merging_across_partitions_for_final=1. #96110 (Nikita Taranov).apply_row_policy_after_final by default. Initially, when optimize_move_to_prewhere_if_final=0, both ROW POLICY and PREWHERE respect FINAL and were applied after FINAL. This was broken by #87303, which ignored the optimize_move_to_prewhere_if_final for the ROW POLICY filter. To fix this, this PR enables the setting apply_row_policy_after_final introduced in #91065. With apply_row_policy_after_final enabled, ROW POLICY would continue to respect FINAL by default, as previously. This PR is an incompatible change because it changes the behaviour for optimize_move_to_prewhere_if_final=1. Now, to get the ROW POLICY applied before FINAL, apply_row_policy_after_final should be used instead of optimize_move_to_prewhere_if_final. #97279 (Nikolai Kochetov).SYSTEM DROP PARQUET METADATA CACHE. Resolves #89102. #89750 (Grant Holly).system.user_defined_functions to monitor UDF loading status and configuration. #90340 (Xu Jia).DatabaseReplicated. #91683 (RinChanNOW).primes and new system table system.primes that contains prime numbers in ascending order. Closes #90839. #92776 (Nihal Z. Miaji).colorOKLABToSRGB, colorSRGBToOKLAB to convert value from sRGB to OKLAB and vice versa. #93361 (Pranav Tiwari).insert_deduplication_version makes it possible to migrate on unified deduplication hash. #95409 (Sema Checherinda).OPTIMIZE <table> DRY RUN PARTS <part names> query to simulate merges without committing the result part. It may be useful for testing purposes: verifying merge correctness in the new version, deterministically reproducing merge-related bugs, and reliably benchmarking merge performance. #96122 (Anton Popov).check_named_collection_dependencies to avoid dropping named collections used by tables. #96181 (Pablo Marcos).lazy_load_tables database setting. When enabled, tables are not loaded during database startup — a lightweight StorageTableProxy is created instead and the real table engine is materialized on first access. #96283 (xiaohuanlin).system.fail_points to inspect existing failpoints in the server and whether they are enabled or not. This is going to help automate testing. #96762 (Pedro Ferreira).ast_fuzzer_runs and ast_fuzzer_any_query settings. When enabled, the server runs randomized mutations of each query after its normal execution, discarding the results. #97568 (Alexey Milovidov).parallel_non_joined_rows_processing setting. Enabled by default. #92068 (Yarik Briukhovetskyi).ORDER BY cityHash64(user_id)/ ORDER BY length(user_id)). For deterministic expressions, ClickHouse can apply the expression to query constants and use the result in the primary key index for predicates like =, IN, and has. If the expression is also injective (e.g. ORDER BY hex(p) or ORDER BY reverse(tuple(reverse(p), hex(p)))), we can effectively use the index for the negated forms: !=, NOT IN, and NOT has. Closes #10685. Closes #82161. #92952 (Nihal Z. Miaji).FINAL query used primary key condition for filtering followed by skip indexes for other conditions, the PrimaryKeyExpand processing step will now only check the initial shortlisted primary key ranges for intersection. #94903 (Shankar Iyer).for loop and allocate memory before it. This should avoid allocations on each iterations. #95178 (Alexey Bakharew).uniq over numeric types by batching inserts when possible (not null, not -If, no GROUP BY, no IPv6 or String). #95904 (Raúl Marín).ZooKeeper::observeOperations has been found to account for >20% of the ZooKeeper receive thread CPU consumption. This change addresses that by: 1. For AggregatedZooKeeperLog::stats, use CityHash64 instead of SipHash which is >10x faster. 2. For Coordination::ErrorCounter, use std::array<std::atomic<UInt32>, N> instead of std::unordered_map and std::mutex. #95962 (Miсhael Stetsyuk).RIGHT OUTER JOINs. #96183 (Hechem Selmi).wide_integer_impl.h on platforms with adequate long double, improving build time. TODO: CHANGE CATEGORY TO BUILD IF PERFORMANCE DOES NOT CHANGE. #96633 (Alexey Milovidov).minmax secondary indexes on time columns and bloom_filter indexes on query_id/initial_query_id columns to system log tables for faster filtering. #96712 (Alexey Milovidov).UNION ALL query, not just the first one. Queries that combine multiple sorted and limited reads from different MergeTree tables via UNION ALL will now benefit from deferred column reading on every branch, reducing I/O. #96832 (Federico Ginosa).PREWHERE. #89982 (János Benjamin Antal).aws_role_arn and, optionally, aws_role_session_name. #90825 (Antonio Andelic).add_minmax_index_for_time_columns that, when enabled, automatically creates minmax indexes for all Date, Date32, Time, Time64, DateTime, and DateTime64 columns. #93355 (Michael Jarrett).DataflowStatisticsCache. #93636 (Nikita Taranov).system.crash_log. #94112 (Miсhael Stetsyuk).QueryNonInternal metric to track the number of executing non-internal queries. This metric is exposed as ClickHouseMetrics_QueryNonInternal and helps operators monitor query concurrency against the max_concurrent_queries limit, which only applies to non-internal queries. #94284 (Ashwath Singh).RuntimeDataflowStatisticsCacheUpdater. #94626 (Nikita Taranov).assumeNotNull, coalesce, ifNull to enable primary key and skip index pruning for range predicates when key columns are wrapped in these functions. Closes #94689. #94754 (Nihal Z. Miaji).iif function to ClickHouse KQL. #94790 (happyso).stat and/or data in a single operation. #94826 (Nikolay Degterinsky).(total) memory limit exceeded if the total limit is more than allowed. #95003 (Nikolai Kochetov).memory_worker_decay_adjustment_period_ms milliseconds. Enable jemalloc's dirty page decay back if ClickHouse is working under normal conditions for same amount of time. #95145 (Antonio Andelic).keeper_path setting from s3Queue. #95203 (Diego Nieto).distributed_index_analysis_min_parts_to_activate) and indexes size (distributed_index_analysis_min_indexes_size_to_activate). #95216 (Azat Khuzhin).max_parts_to_merge_at_once in TTL drop part merges. #95315 (Kseniia Sumarokova).SELECT * FROM (SELECT 1) AS t(a) JOIN (SELECT 1) AS u(b) ON a = b). Closes #95131. #95331 (Yarik Briukhovetskyi).QBit is now GA. #95358 (Raufs Dunamalijevs).connection_address and connection_port to query_log to reflect physical connection (address and port are replaced when connected through proxy and auth_use_forwarded_address=1). #95471 (Yakov Olkhovskiy).access directory, as the regular configuration does. This improves testing. Also enabled all access_control_improvements in the embedded config and in clickhouse-local. #95481 (Alexey Milovidov).allow_experimental_nullable_tuple_type. When enabled, it allows inferred tuple types to be Nullable(Tuple(...)), so missing nested objects can become NULL instead of a tuple of NULL elements. #95525 (Nihal Z. Miaji).system.aggregated_zookeeper_log. #95882 (Antonio Andelic).DeltaLake tables from system.tables. #95899 (Antonio Andelic).enable_max_bytes_limit_for_min_age_to_force_merge by default if the compatibility setting is 26.2 or higher. #95917 (Christoph Wurm).distanceCosine alias for cosineDistance because all other distance functions already have alias of this form. #96065 (Raufs Dunamalijevs).numbers and primes. ClickHouse can now derive conservative value bounds from WHERE conditions when exact bounds cannot be derived, and restrict sequence generation accordingly (for example, for WHERE number % 5 < 2 AND number > 100 AND number < 300, ClickHouse will only generate numbers between 100 and 300, then apply the predicate), avoiding unbounded scans. Closes #84853. Closes #93913. #96115 (Nihal Z. Miaji).count() result from delta lake metadata and shows correct table stats in system.tables (total bytes/rows). #96190 (Kseniia Sumarokova).COMMENT clause was present to disambiguate parsing. Instead, output COMMENT before AS SELECT, which eliminates the ambiguity without parentheses. #96293 (Alexey Milovidov)./tmp/cores/. This is fixed by resolving the path configuration parameter relative to the working directory at the moment of server startup and resolving all other paths relative to the path. #96305 (Alexey Milovidov).enable_positional_arguments_for_projections is enabled, save the table schema with substituted expressions instead of positional arguments. This allows server restart with disabled enable_positional_arguments_for_projections. #96372 (Alexey Milovidov).allow_impersonate_user to the section with other access-control improvements. #96451 (Vitaly Baranov).this->exceptions(std::ios::badbit); for the std's streams inside poco. #96455 (Sema Checherinda).split_intersecting_parts_ranges_into_layers enabled. Helps to avoid excessive memory consumption. #96478 (Nikita Taranov).core_dump.size_limit configuration setting hot-reloadable, to avoid having to restart servers for configuration changes to take place. #96524 (Miсhael Stetsyuk).INNER JOIN operations now benefit from improved filter pushdown optimization. When tables are joined on equivalent columns (e.g., t1 JOIN t2 ON t1.id = t2.id JOIN t3 ON t2.id = t3.id WHERE t1.id > 10), filters applied to any table in the chain are automatically pushed down to all tables. Close #96550. #96596 (Vladimir Cherkasov).system.tokenizers which shows all available tokenizers. #96753 (Robert Schulze).SYSTEM RELOAD DELTA KERNEL TRACING <level> to be able to change delta-kernel logging, which can be useful for debugging. #96763 (Kseniia Sumarokova).dns_allow_resolve_names_to_ipv4/ipv6 settings, are applied even if DNS cache is disabled. #96810 (c-end).Date type is now serialized as Arrow's native date32 type in Arrow/ArrowStream formats, instead of uint16. Tools like PyArrow will now correctly see the column as a date type. The old behavior can be restored with the output_format_arrow_date_as_uint16 setting. Reading old Arrow files that used uint16 for Date columns is still supported. #96860 (Alexey Milovidov)./play Web UI throwing QUERY_CACHE_USED_WITH_SYSTEM_TABLE when querying system tables. #96869 (Alexey Milovidov).MaterializedPostgreSQL database if dropReplicationSlot throws during stack unwinding. #96871 (Alexey Milovidov)./play UI clickable to toggle the database list. #96884 (Alexey Milovidov).startsWithUTF8 if the prefix contains only ASCII characters. #97055 (vkcku).DROP DATABASE now drops tables in reverse dependency order, improving crash-safety when the database contains tables with loading dependencies (e.g. Distributed tables using joinGet). #97057 (Alexey Milovidov).system.jemalloc_stats table exposing jemalloc memory allocator statistics (via malloc_stats_print) for diagnosing memory usage on servers built with jemalloc. Also add a /jemalloc.html HTTP endpoint on the ClickHouse HTTP interface for interactive visualization of these statistics. #97077 (Antonio Andelic).system.jemalloc_profile_text table for reading and analyzing jemalloc heap profiles. The output format is controlled by the jemalloc_profile_text_output_format setting (raw, symbolized, or collapsed; default collapsed). Inline frame resolution is controlled by jemalloc_profile_text_symbolize_with_inline (when enabled, inline frames are included at the cost of slower symbolization; when disabled, they are skipped for faster output). For the collapsed format, jemalloc_profile_text_collapsed_use_count controls whether stacks are weighted by live allocation count (true) or live bytes (false, default). This enables easier memory profiling and flame graph visualization of jemalloc heap profiles. Fixes #93248. #97218 (Antonio Andelic).ALTER TABLE RENAME COLUMN for Iceberg tables. Previously only ADD COLUMN, DROP COLUMN, and MODIFY COLUMN were supported. #97455 (murphy-4o).play.html sidebar while tables are being fetched. #97531 (Alexey Milovidov).clickhouse-format --obfuscate) to produce parseable SQL in more cases. #97584 (Alexey Milovidov).prewarm_mark_cache setting is enabled (loaded into the index mark cache during data part fetches and table startup). #97772 (Anton Popov).has, mapContainsKey, and mapContainsValue functions. Previously, queries using these functions could return different results depending on whether the expression was evaluated with or without a text index. #93578 (Anton Popov).stringJaccardIndexUTF8 and improve performance. #94613 (Joanna Hulboj).WITH FILL STALENESS (that leads to UB or/and endless loops). Fix possible endless loop due to big jumps. Add old analyzer support (mostly for stress tests). #94663 (Azat Khuzhin).-Cluster table function. Resolves #89996. #94748 (Konstantin Bogdanov).toWeek, toYearWeek, toStartOfWeek, toLastDayOfWeek, and toDayOfWeek, and fix exceptions in some of these functions for valid queries with LowCardinality(String). #94816 (Nihal Z. Miaji).ATTACH queries for a view with SQL Security. This prevents potential privilege escalation when a user attaches a view with a definer without validating required access. #94865 (pufit).ReplicatedMergeTree startup caused by concurrent removal of delete_tmp_* directories. #94892 (myeongjun).SYSTEM DROP QUERY CACHE TAG 'TAGNAME' ON CLUSTER <CLUSTERNAME> would drop the full cache on the cluster. #94978 (Rory Crispin).USING clause. Previously, subsequent joins incorrectly updated types of underlying source columns to a common supertype even when the column was not involved in that join (e.g., in SELECT t2.a FROM t1 LEFT JOIN t2 USING (a) LEFT JOIN t3 USING (a), the t2.a column is only used by the first join, so its type should be the supertype of t1.a and t2.a, excluding t3.a). This could lead to logical errors or crashes when functions expected different column types than what actually appeared in the execution plan. #95157 (Vladimir Cherkasov).sum and timeseries when group_by_overflow_mode is set to any. #95301 (Mikhail Koviazin).redis table function now will be masked in the logs and system tables (e.g.: query_log). #95325 (János Benjamin Antal).LIMIT/OFFSET is used in distributed queries. #95357 (Nihal Z. Miaji).optimize_syntax_fuse_functions to not rewrite sum/count/avg into sumCount() when the aggregate argument is Nullable. Closes #95390. #95441 (Nihal Z. Miaji).It is not possible to register multiple plain-rewritable disks with the same object storage prefix). #95470 (Azat Khuzhin).mergeTreeProjection table function was missing an access check, allowing users without SELECT permission on a table (but with permissions for table functions) to read data from its projections. This fix adds the same access check that mergeTreeIndex and mergeTreeAnalyzeIndexes already have. #95480 (Alexey Milovidov).tupleElement applied to arrays of JSON. Closes #95581. #95647 (Pavel Kruglov).*) inside a lambda function within a VALUES clause in a JOIN with USING. Close #93675. #95661 (Vladimir Cherkasov).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).IN function returning incorrect results with NULL values when transform_null_in is enabled. Closes #65776. #95674 (Nihal Z. Miaji).CAST when the setting cast_keep_nullable is enabled. Closes #95670. #95747 (Alexey Milovidov).*, table.*) and analyzer_compatibility_join_using_top_level_identifier when USING column has different types in tables and select list. Close #90477. #95808 (Vladimir Cherkasov).NOT_SUPPORTED error that could occur when using the direct join algorithm with an empty MergeTree table. #95935 (Vladimir Cherkasov).JSON(SKIP path) all JSON keys with prefix path were skipped, even keys like "pathpath", so it could lead to data loss for these paths during insert. Now it's fixed and only key "path" is skipped. #95948 (Pavel Kruglov).NULL in Join table with Nullable(String) key. Closes #71414. #96002 (Alexey Milovidov).BOOLEAN[]. Closes #72754. #96006 (Alexey Milovidov).ProtobufList format for the case of reading from an empty file. Closes #70059. #96007 (Alexey Milovidov).ProtobufList format producing ghost record for empty tables. Closes #72596. #96010 (Alexey Milovidov).if function type mismatch between UInt64 and Int32 in an unusual case of distributed queries and PREWHERE, with type inference. Closes #70017. #96012 (Alexey Milovidov).JIT compiled queries involving Bool types. #96013 (Alexey Milovidov).DateTime, Date, UUID, and other types. Closes #73481. #96017 (Alexey Milovidov).FixedString values were escaped incorrectly in queries to external databases, SQLite and PostgreSQL. Closes #73519. Co-authored with @jh0x. #96019 (Alexey Milovidov).global_profiler_real_time_period_ns and global_profiler_cpu_time_period_ns). Instead of set value, a truncated value was used, causing profiler to wakeup more than intended. #96048 (Antonio Andelic).use_primary_key and a very large number of disjunctions of conditions that use the index. #96112 (Alexey Milovidov).Gorilla codec when an explicitly specified size does not correspond to the data type size, and the buffer size is too small. In previous versions, it threw an exception on decompression. Closes #78253. #96118 (Alexey Milovidov).formatDateTime with non-fixed-width formatters, such as MySQL and JODA-style. #96133 (Alexey Milovidov).use_const_adaptive_granularity and index_granularity_bytes (which means "non-adaptive granularity") led to a miscalculation of the number of rows to read and an exception. #96143 (Alexey Milovidov).AccessRights::contains returning incorrect results with partial revokes. #96170 (pufit).DeltaLake table engine fix logical race on snapshot version change, remove redundant heavy snapshot reloads. #96226 (Kseniia Sumarokova).optimize_syntax_fuse_functions to not rewrite sum/count/avg into sumCount() when the aggregate argument is LowCardinality(Nullable). Closes #95390. #96239 (Nihal Z. Miaji).not IN and not has function in some cases. #96241 (Nihal Z. Miaji).stack-use-after-scope in the vector similarity index. #96259 (Alexey Milovidov).coalesce function, which has its first argument constant. #96340 (Alexey Milovidov).GROUPING SETS, group_by_use_nulls, and the Tuple data type with LowCardinality inside it, could produce an unexpected block structure in the query pipeline, which led to a logical error. This appeared after the introduction of Nullable Tuples. #96358 (Alexey Milovidov).() as an index, which led to an invalid memory access. #96363 (Alexey Milovidov).Nested columns sizes are inconsistent with local_discriminators error due to a wrong in-place filtering optimization for Variant columns. #96410 (Alexey Milovidov).CREATE TABLE ... CLONE AS ... ignoring full qualifier of source table. #96415 (Hasyimi Bahrudin).max_execution_time values. #96450 (Sergei Trifonov).LIMIT/OFFSET is used in distributed queries. #96475 (Nihal Z. Miaji).LowCardinality columns are converted to Nullable. #96483 (Nihal Z. Miaji).LOGICAL_ERROR exception in Parquet V3 native reader when PREWHERE filter column contains non-boolean UInt8 values. #96594 (Alexey Milovidov).heap-use-after-free in CREATE TABLE with constraints. #96669 (Nikita Taranov).system.tables. we should catch this exception. #96680 (Han Fei).min(timestamp) returning epoch (1970-01-01) via _minmax_count_projection after TTL merge when all rows in a block are filtered out. #96703 (Raquel Barbadillo).ifNull with Variant argument used in GROUP BY. #96790 (Alexey Milovidov).table_disk=1 setting. #96818 (Raufs Dunamalijevs).ALTER TABLE DROP COLUMN queries failing after a lightweight update was previously performed on the same column. #96861 (Anton Popov)..zip, .tzst) to a plain_rewritable object storage disk. #96872 (Alexey Milovidov).EXCEPT ALL and INTERSECT ALL ignoring row multiplicities and behaving like their DISTINCT counterparts. #96876 (Alexey Milovidov).std::terminate exception in indexOfAssumeSorted when called with incompatible types (e.g., IPv4 array with integer search value). #96877 (Alexey Milovidov).Bad cast from type DB::ColumnNullable to DB::ColumnString when using window functions with group_by_use_nulls = 1 and CUBE/ROLLUP/GROUPING SETS. #96878 (Alexey Milovidov).DateTime to DateTime64 (e.g., in CASE/if/multiIf with mixed DateTime types). The value was reinterpreted instead of properly scaled, producing wrong timestamps after expression compilation kicked in. #96879 (Alexey Milovidov).CoalescingMergeTree when a skip index expression produces a constant column (e.g., bloom_filter on ifNotFinite(1, c0) for an integer column). #96880 (Alexey Milovidov).SETTINGS not being applied to table functions like file in CTEs and subqueries. #96882 (Alexey Milovidov).LOGICAL_ERROR exception in query analyzer when a lambda expression is passed where a concrete value is expected (e.g., as the accumulator argument of arrayFold). #96892 (Alexey Milovidov).ColumnNullable is not compatible with original exception when casting complex nested types (Array of Nullable Tuple containing Map with Nullable Enum values). #96924 (Alexey Milovidov).HASHED dictionary parallel loading that could occasionally cause some rows to not be loaded. #96953 (Alexey Milovidov).REPLACE PARTITION and background mutations that could result in both old and new data being visible after the replace. #96955 (Alexey Milovidov).arrayJoin function producing duplicate rows when used with INNER JOIN and WHERE clause, caused by the partial predicate push-down optimization incorrectly pushing filters containing arrayJoin below a JOIN. #96989 (Alexey Milovidov).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).IfTransformStringsToEnumPass when the if or transform function returns Nullable(String) (e.g. with GROUP BY ... WITH CUBE and group_by_use_nulls = true). #97002 (Alexey Milovidov).assert_cast exception (or silent data corruption in release builds) when building column statistics after ALTER TABLE MODIFY COLUMN changes the column type. #97027 (Alexey Milovidov).REPLACE PARTITION and background mutations in MergeTree tables that could cause old data to reappear. #97105 (Alexey Milovidov).FunctionVariantAdaptor with functions requiring const arguments like arrayROCAUC. #97116 (Bharat Nallan).PartCheckThread re-enqueues a GET_PART for an already-mutated part, leaving phantom entries in parts_to_do. #97162 (Alexey Milovidov).LOGICAL_ERROR exception in FunctionVariantAdaptor when a function operating on Variant columns returns Nothing type, which can happen with empty arrays in UNION ALL queries. #97213 (Alexey Milovidov).LOGICAL_ERROR exception when arrayJoin in WHERE clause references columns from both sides of a JOIN. #97239 (Alexey Milovidov).LOGICAL_ERROR exception when reading .size subcolumn of a sparse Nullable(String) in a Tuple with PREWHERE. #97264 (Alexey Milovidov).LazyMaterializingTransform when reading from tables with non-adaptive index granularity (index_granularity_bytes = 0) using ORDER BY ... LIMIT. #97270 (Alexey Milovidov).SYSTEM RESTART REPLICA losing table from database when table re-creation fails with a non-ZooKeeper exception (e.g. memory limit), causing metadata digest mismatches in DatabaseReplicated. #97276 (Alexey Milovidov).readonly in system.merge_tree_settings now properly reflects that certain merge tree settings (e.g. index_granularity) are unconditionally readonly. #97277 (Robert Schulze).LOGICAL_ERROR exception in applyOrder when using text-indexed columns with QUALIFY clause. #97313 (Alexey Milovidov).system.functions now shows for internal functions categories = 'Internal' instead of categories = ''. #97315 (Robert Schulze).StorageKeeperMap backup due to use-after-free of dangling storage pointer in lazy backup batch. #97336 (Alexey Milovidov).Unexpected return type from equals. Expected Nullable(UInt8). Got Const(LowCardinality(Nullable(UInt8))) when comparing NULL with a Variant column containing LowCardinality types. #97379 (Alexey Milovidov).LOGICAL_ERROR exception in Array-to-QBit conversion when nullable_source from an outer Tuple wrapper replaces the converted array column with a mismatched column type. Closes #97389. #97413 (Alexey Milovidov).(('a', 'b') AS x) was incorrectly reformatted as tuple(('a', 'b') AS x). #97418 (Alexey Milovidov).type_json_allow_duplicated_key_with_literal_and_nested_object to typed paths in JSON. Closes #97278. #97422 (Pavel Kruglov).LazyMaterializingTransform when reading from tables with non-adaptive index granularity (index_granularity_bytes = 0) using ORDER BY ... LIMIT. #97482 (Alexey Milovidov).allow_experimental_insert_into_iceberg setting. #97483 (Konstantin Vedernikov).ACCESS_DENIED for users without CREATE TEMPORARY TABLE permission when optimize_inverse_dictionary_lookup optimization rewrites dictGet(...) predicates. ClickHouse now skips the rewrite and executes the original expression. Closes #97269. #97484 (Nihal Z. Miaji).Set and MergeTreeIndexSet when processing columns with inner sparse subcolumns (e.g., Tuple columns from MergeTree parts with different sparse serialization profiles). #97493 (Alexey Milovidov).ORDER BY (key1, key2) and a row policy USING key1 = 5 can now serve ORDER BY key2 queries without an explicit sort. #97538 (János Benjamin Antal).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).INTO OUTFILE with TRUNCATE and into_outfile_create_parent_directories setting when the output path contains directories. #97549 (Alexey Milovidov).BAD_ARGUMENTS error when querying tables with lambda expressions inside ALIAS columns through the merge() table function with the analyzer enabled. #97551 (Alexey Milovidov).system.zookeeper_info exception when Keeper zxid is 0. #97553 (Alexey Milovidov).shutdown_called in DatabaseMaterializedPostgreSQL. #97554 (Alexey Milovidov).ip_trie dictionary when key type is not String. #97555 (Bharat Nallan).perimeterSpherical, areaSpherical, etc.) now accept individual geometry subtypes (Polygon, Ring, Point, etc.) in addition to the Geometry variant type. #97571 (Alexey Milovidov).LOGICAL_ERROR exception when using isNull/isNotNull on subcolumns of Nullable(Tuple(... Nullable(T) ...)) types. Closes #97224. #97582 (Alexey Milovidov).BaseSettings::readBinary passes the index from accessor.find to field_infos[] without checking for the not-found sentinel value (i.e., -1), which may cause a std::vector out-of-bounds access. The issue was caught thanks to libcxx hardening. This probably happened during query plan deserialization when a newer server sends a setting unknown to an older server. The string-based read method already handles this correctly; readBinary was missing the same check. #97585 (Miсhael Stetsyuk).filterPartsByVirtualColumns for constant-false predicates. #97620 (Bharat Nallan).removeUnusedColumns optimization when using indexHint with star expansion on tables with FINAL. #97622 (Alexey Milovidov).IN (col) with a single column reference failing with UNSUPPORTED_METHOD error. #97646 (Alexey Milovidov).GROUP BY ... WITH ROLLUP/CUBE when keys include LowCardinality(Nullable(...)) inside Nullable(Tuple(...)). #97647 (Alexey Milovidov).NOT (1, 1, 1) that could cause LOGICAL_ERROR in debug builds. #97653 (Alexey Milovidov).concat when an argument contains a Variant type with LowCardinality inside. #97654 (Alexey Milovidov).keeper-converter exception when encountering empty ZooKeeper transaction log files. #97673 (Alexey Milovidov).WHERE clause had more than 32 expressions with AND/ORs. #97698 (Shankar Iyer).mapContainsKey/mapContainsKeyLike with tokenbf_v1 skip index. #97826 (Shankar Iyer).LowCardinality inside compound types (Variant, Dynamic, Tuple) in concatWithSeparator, format, IN subqueries, GLOBAL IN, and joins with runtime filters. #97831 (Raúl Marín).std::terminate) caused by an uncaught exception in the HTTP connection pool destructor when the connection group hard limit is reached under high concurrency. The exception HTTP_CONNECTION_LIMIT_REACHED could escape ~PooledConnection when recycling a connection back to the pool, leading to SIGABRT. #97850 (Antonio Andelic).grace_hash algorithm is used with non-equi joins and left block cannot be processed completely because of the size constraints on the join result. #97866 (János Benjamin Antal).CachedOnDiskReadBufferFromFile::readBigAt. Closes #97325. #97890 (Kseniia Sumarokova).s3_plain metadata for log storage. #97987 (Antonio Andelic).arrayJoin in filter expression. #98147 (Alexey Milovidov).is_local to false when bind_host is configured and replace with integration test. Follow-up for https://github.com/ClickHouse/ClickHouse/pull/74741. #93109 (Zhigao Hong).postgres to REL_18_1. #95189 (Konstantin Bogdanov).libexpat 2.7.3. #95218 (Konstantin Bogdanov).math.xml performance test. #95442 (Konstantin Bogdanov).is_local to false when bind_host is configured and replace with integration test. Follow-up for #74741. #96018 (Zhigao Hong).parser_memory_profiler tool that produces .heap.sym files with resolved symbols in results. #96477 (Ilya Yatsishin).magic_enum range from [-100, 1000] to default [-128, 127] by using a per-type specialization for Coordination::OpNum, improving build time. #96632 (Alexey Milovidov).StorageSystemLicenses generation to configure time to improve build parallelism. #96697 (Alexey Milovidov).keeper_multiread_batch_size test configuration from private to public repository. #97022 (Alexey Milovidov).devector assertion failure in debug builds. #97037 (Alexey Milovidov).simdjson v4.2.4. #97129 (Konstantin Bogdanov).libarchive 3.8.5. #97131 (Konstantin Bogdanov).fast_float v8.2.3. #97133 (Konstantin Bogdanov).abseil-cpp 20260107.1, s2geometry to v0.13.1. #97134 (Konstantin Bogdanov).ENABLE_SSSE3, ENABLE_AVX2, NO_SSE3_OR_HIGHER, ARCH_NATIVE, etc.) with a single numeric X86_ARCH_LEVEL option (1/2/3/4), matching the standard x86-64 microarchitecture levels already used by the runtime dispatch system. #97354 (Raúl Marín).division_by_nullable=true template variants for non-division operations in FunctionBinaryArithmetic, reducing compilation time and binary size. #97496 (Raúl Marín).Exception.h by removing it from high-fan-out headers like typeid_cast.h, assert_cast.h, Context_fwd.h, IDataType.h, and various Column headers. #97497 (Raúl Marín).compiler-rt headers (sanitizer and XRay interfaces) instead of the host compiler's headers, and build compiler-rt libraries from source by default. #97499 (Raúl Marín).BACKUP ON CLUSTER where the backup could fail prematurely with "Lost connection" when the initiator node itself temporarily lost its ZooKeeper connection. #96961 (Alexey Milovidov).LOGICAL_ERROR exception during config reload. #96980 (Alexey Milovidov).REPLACE TABLE ... CLONE AS ... when alter_partition_verbose_result is enabled. #96982 (Alexey Milovidov).addTableExpressionOrJoinIntoTablesInSelectQuery when formatting error messages for invalid query trees containing unexpected node types in join tree positions. #96985 (Alexey Milovidov).FunctionVariantAdaptor when applying functions to Variant columns containing LowCardinality alternatives with constant non-Variant arguments. #97021 (Alexey Milovidov).LOGICAL_ERROR exception in ATTACH PARTITION ALL when the detached directory contains parts with intersecting block ranges. #97040 (Alexey Milovidov).TRUNCATE operations. #97211 (Alexey Milovidov).02932_refreshable_materialized_views_2 timeout on ASan by preventing race between auto-refresh table exchange and concurrent reads. #97667 (Alexey Milovidov).array/tuple functions with .N tuple element access that caused exceptions in debug builds. #96894 (Alexey Milovidov).test_build_sets_from_multiple_threads integration test under ASan. #96954 (Alexey Milovidov).test_database_delta integration tests to avoid timeout flakiness. #96962 (Alexey Milovidov).00563_shard_insert_into_remote by increasing handshake_timeout_ms. #96966 (Alexey Milovidov).FilteredListWithStatsAndData and other OpNum values to zookeeper_log system table enum, fixing sporadic UNKNOWN_ELEMENT_OF_ENUM exceptions. #97130 (Alexey Milovidov).03400_alter_update_with_rename by using proper mutation sync instead of sleep-based wait. #97268 (Raúl Marín).cherry_pick.py now skips creating cherry-pick/backport PRs for release branches marked rolling-out when the source PR uses the generic pr-must-backport or pr-critical-bugfix label; a direct version-specific label (e.g. v25.10-must-backport) overrides this and always proceeds. #97274 (Max Kainov).praktika CI infrastructure deployment tooling: idempotent IAM/Lambda deploys, Slack worker preference persistence, home view block limit, Lambda timeout, and EC2 instance quantity handling. #97310 (Max Kainov).Job.Config.needs_jobs_from_requires flag to treat job-name entries in requires as hard dependencies in the CI praktika framework. #97391 (Max Kainov).test_kafka_sasl_settings_precedence integration test under TSan by explicitly closing the Kafka producer. #97415 (Alexey Milovidov).LibArchiveWriter::WriteBufferFromLibArchive::closeFile by initializing class members at declaration. #97431 (Alexey Milovidov).ext.change_url / ext.run_url fields for navigation links in the Praktika HTML report, and show per-job GitHub Actions URLs when viewing individual job results. #97534 (Max Kainov).waitForPause that caused flaky test failures. #96890 (Alexey Milovidov).DatabaseReplicated."'. #95513 (Alexander Tokmakov).signal-unsafe warning in TSan)'. #95733 (Azat Khuzhin).is_local to false when bind_host is configured"'. #95974 (Raúl Marín).adjustLastGranule with constant PREWHERE and patch parts"'. #96574 (Nikolai Kochetov).CREATE TABLE ... AS SELECT ... COMMENT"'. #96595 (Alexander Tokmakov).CREATE TABLE ... AS SELECT ... COMMENT""'. #96598 (Alexey Milovidov).MALLOC_MIN_ALIGNMENT to the value from standard library"'. #96814 (Nikita Taranov).adjustLastGranule with constant PREWHERE and patches"'. #96862 (Alexey Milovidov).--provenance=true --sbom=true to server and keeper image build command. This improves overall Docker Scout score and generate Software Bill of Materials (SBOM) and SLSA Provenance attestations as metadata for the image. #94630 (San Tran).Logical error: Trying to extract chunk from ChunkBuffer before all inputs are finished in correlated subqueries. #95080 (Alexey Milovidov).test_keeper_force_recovery/test.py::test_cluster_recovery. #95112 (Alexey Milovidov).test_missing_mv_transitive_target. #95204 (János Benjamin Antal).PrometheusQueryTree, use DateTime64 instead of DecimalField<DateTime64>. #95223 (Vitaly Baranov).NamesHash reusable across the codebase. #95227 (Nikita Taranov).Inconsistent AST formatting errors. #95298 (Elmi Ahmadov).no-azure-blob-storage tag to tests that consistently time out. #95313 (Alexey Milovidov).no-msan tag to tests that consistently time out on MSan. #95314 (Alexey Milovidov).ColumnNullable::getSerializedValueSize (unreleased). #95342 (Alexey Milovidov).README.src + README.sh to have the same description as https://hub.docker.com/_/clickhouse. #95370 (Mikhail f. Shiryaev)..devcontainer to .gitignore. #95375 (Christoph Viebig).intrusive_ptr<IAST>. #95444 (Nikolai Kochetov).01007_r1r2_w_r2r1_deadlock under MSan. #95445 (Alexey Milovidov).std::length_error when max_query_size is UINT64_MAX. #95561 (Alexey Milovidov).clickhouse-test runner. #95562 (Max Kainov).03783_autopr_dataflow_cache_reuse* tests. #95665 (Nikita Taranov).applyUncommittedState for deltas without paths. #95846 (Alexey Milovidov).execute_query_fuzzer due to a nullptr TemporaryDataOnDiskScope. #95920 (Alexey Milovidov).v6 due to outdated versions. #95928 (Pádraic Slattery).test_keeper_auth with genuine ZooKeeper. #95976 (Alexey Milovidov).03640_load_marks_synchronously. #95996 (Alexey Milovidov).largestTriangleThreeBuckets with Date32. #95997 (Alexey Milovidov).test_send_table_status_sleep in test_hedged_requests. #96000 (Alexey Milovidov).bitXor with if mixing Int32 and UInt64. #96014 (Alexey Milovidov).file. #96021 (Alexey Milovidov).system.users table. #96072 (Nikolay Degterinsky).test_server_overload integration test. #96106 (Alexey Milovidov).PreconditionFailed in CREATE TABLE IF NOT EXISTS for Iceberg. #96121 (Alexey Milovidov).MergeTreePrefetchedReadPool::startPrefetches. #96123 (Alexey Milovidov).max_execution_time for stateful data loading in TSan builds. #96124 (Alexey Milovidov).__getScalar with non-constant argument. #96140 (Alexey Milovidov).arrayWithConstant with FixedString argument. #96141 (Alexey Milovidov).loop table function inside remote causing logical error. #96148 (Alexey Milovidov).calculateActionNodeName for constant-folded EXISTS. #96168 (Alexey Milovidov).--external argument in client help message. #96197 (Aleksandr Musorin).03783_autopr_dataflow_cache_reuse_qcc again. #96231 (Nikita Taranov).FORMAT Null for explain queries. #96253 (Nikita Taranov).readlockparts to avoid datarace. #96257 (Han Fei).parts_postpone_reasons tests. #96258 (Alexey Milovidov).02992_all_columns_should_have_comment: Move dictionary source tables from system to default database in the CI. #96260 (Alexey Milovidov).00177_memory_bound_merging. #96261 (Alexey Milovidov).03144_parallel_alter_add_drop_column_zookeeper_on_steroids.sh. #96263 (Alexey Milovidov).mutations_sync = 2 to 00062_replicated_merge_tree_alter_zookeeper_long. #96264 (Alexey Milovidov).merge_max_block_size in 03785_rebuild_projection_with_part_offset. #96265 (Alexey Milovidov).01396_inactive_replica_cleanup_nodes_zookeeper. #96266 (Alexey Milovidov).03562_parallel_replicas_remote_with_cluster. #96267 (Alexey Milovidov).LOGICAL_ERROR exception when SYSTEM DROP REPLICA receives empty ZKPATH. #96268 (Alexey Milovidov).test_send_data2 in test_hedged_requests. #96269 (Alexey Milovidov).test_ttl_compatibility in test_ttl_replicated. #96271 (Alexey Milovidov).test_table_metadata_corruption leaving dummy_node in bad state. #96296 (Alexey Milovidov).test_backup_restore_s3. #96298 (Alexey Milovidov).test_drop_database_replica by handling async temp table drops. #96299 (Alexey Milovidov).test_jemalloc_percpu_arena when CPU online override is ineffective. #96300 (Alexey Milovidov).test_keeper_session_refuse_stale_server. #96301 (Alexey Milovidov).test_restore_db_replica: Wait for async recovery after SYSTEM RESTORE DATABASE REPLICA. #96302 (Alexey Milovidov).test_storage_s3_queue. #96303 (Alexey Milovidov).test_filesystem_split_cache integration. #96304 (Alexey Milovidov).03634_autopr_*_bytes_estimation tests. #96306 (Alexey Milovidov).KEEPER_EXCEPTION in stress test smoke check. #96308 (Alexey Milovidov).buildQueryTreeForShard with ARRAY JOIN and GLOBAL JOIN. #96310 (Alexey Milovidov).03211_nested_json_merges timeout with randomized index_granularity. #96319 (Alexey Milovidov).03629_create_or_replace_as_select_with_progress_tcp. #96320 (Alexey Milovidov)..front() on empty vector in tryRerangeRightTableData. #96321 (Alexey Milovidov).subprocess.TimeoutExpired. #96342 (Alexey Milovidov).Mergeable Check falsely failing for no_aws jobs like macOS smoke test. #96346 (Alexey Milovidov).SELECT * REPLACE with WHERE on same column. #96350 (Alexey Milovidov).set with NULL values. #96355 (Alexey Milovidov).01414_freeze_does_not_prevent_alters. #96357 (Alexey Milovidov).setDeduplicationWindowSize and shutdown in MergeTreeDeduplicationLog. #96359 (Alexey Milovidov).01111_create_drop_replicated_db_stress. #96360 (Alexey Milovidov).test_distributed_respect_user_timeouts. #96361 (Alexey Milovidov).03032_dynamically_resize_filesystem_cache_2. #96362 (Alexey Milovidov).00992. #96364 (Alexey Milovidov).03514_grace_hash_join_logical_error timeout on TSan + S3. #96365 (Alexey Milovidov).test_ordered_mode_with_hive integration test. #96366 (Alexey Milovidov).03144_parallel_alter_add_drop_column_zookeeper_on_steroids. #96367 (Alexey Milovidov).NO_SUCH_INTERSERVER_IO_ENDPOINT in upgrade check. #96368 (Alexey Milovidov).PeriodicLog between background thread and SYSTEM FLUSH LOGS. #96371 (Alexey Milovidov).LimitTransform with always_read_till_end continues reading after pipeline shutdown. #96373 (Alexey Milovidov).TemporaryParts::add during mutation checksum mismatch fallback. #96376 (Alexey Milovidov).Context::getAccess on need_recalculate_access. #96378 (Alexey Milovidov).test_validate_only_initial_alter_query with Replicated database. #96379 (Alexey Milovidov).03096_text_log_format_string_args_not_empty under TSan. #96380 (Alexey Milovidov).no-async-insert tag to 01079_parallel_alter_modify_zookeeper_long. #96382 (Alexey Milovidov).03047_on_fly_mutations_prewhere timeout under TSan. #96383 (Alexey Milovidov).CompressedReadBufferFromFile::readBig. #96384 (Alexey Milovidov)._table with old analyzer. #96397 (Alexey Milovidov).02943_variant_read_subcolumns to fix MSan timeout. #96406 (Alexey Milovidov).03532_crash_in_aggregation_because_of_lost_exception test. #96408 (Alexey Milovidov).CancellationChecker crashing server in BackgroundSchedulePool. #96412 (Alexey Milovidov).StorageLog. #96413 (Alexey Milovidov).03100_lwu_42_bytes_limits test. #96414 (Alexey Milovidov).set index over Dynamic type. #96416 (Alexey Milovidov).test_ttl_compatibility by avoiding midnight partition split. #96418 (Alexey Milovidov).ReadBufferFromEncryptedFile seek state and add postcondition chasserts. #96422 (Alexey Milovidov).chassert assertions to encrypted file reading path (2). #96423 (Alexey Milovidov).group_by_use_nulls and ROLLUP/CUBE. #96426 (Alexey Milovidov).DROP * CACHE --> CLEAR * CACHE. #96430 (Robert Schulze).DistanceTransposedPartialReadsPass with NULL arguments. #96431 (Alexey Milovidov).03002_filter_skip_virtual_columns_with_non_deterministic_functions under TSan. #96457 (Alexey Milovidov).Config Workflow failures as infrastructure; add run links to log. #96485 (Alexey Milovidov).test_git_import timeout by adding per-attempt clone timeout and early return. #96488 (Alexey Milovidov).ReplicatedMergeTreeCleanupThread. #96492 (Alexey Milovidov).test_fix_metadata_version_on_attach_part_after_restore. #96499 (Alexey Milovidov).arrow from version 16.1.0 to version 23.0.0 Update submodule flatbuffer from version 23.5.26 to version 24.3.6. #96545 (Vitaly Baranov).MALLOC_MIN_ALIGNMENT to the value from standard library. #96547 (Nikita Taranov).test_interactive_totp_authentication. #96576 (Alexey Milovidov).02916_glogal_in_cancel under TSan. #96579 (Alexey Milovidov).adjustLastGranule with constant PREWHERE and patches. #96582 (Alexey Milovidov).test_database_delta by fixing Derby metastore lock cleanup. #96585 (Alexey Milovidov).prlimit memory limit for qemu-x86_64-static in tests. #96592 (Alexey Milovidov).03822_variant_distinct_filter in debug builds. #96610 (Alexey Milovidov).CollectSourceColumnsVisitor when JOIN USING resolves from projection alias. #96613 (Alexey Milovidov).doRestartReplica that kills the server. #96616 (Alexey Milovidov).HashJoin::getTotalRowCount for cross join with no right-side columns. #96621 (Alexey Milovidov).test_write_failover in test_merge_tree_s3_failover. #96634 (Alexey Milovidov).03593_backup_with_broken_projection. #96637 (Alexey Milovidov).02908_table_ttl_dependency in replicated databases. #96640 (Alexey Milovidov).00601_kill_running_query test. #96643 (Alexey Milovidov).01079_parallel_alter_detach_table_zookeeper test. #96644 (Alexey Milovidov).00992_system_parts_race_condition_zookeeper_long: Fix NO_SUCH_COLUMN_IN_TABLE exception during merge after column drop. #96675 (Alexey Milovidov).03144_parallel_alter_add_drop_column_zookeeper_on_steroids. #96683 (Alexey Milovidov).Attribute size for a couple of dictionary types. #96817 (Nikita Taranov).00180_no_seek_avoiding_when_reading_from_cache on ASan builds due to timeouts. #96839 (Alexey Milovidov).assertHasValidVersionMetadata exception during ATTACH TABLE AS REPLICATED. #96863 (Alexey Milovidov).01079_parallel_alter_detach_table_zookeeper. #96888 (Alexey Milovidov).03249_dynamic_alter_consistency timeout on MSan. #96930 (Alexey Milovidov).03702_alter_column_update_and_delete_with_secondary_index_drop. #96950 (Alexey Milovidov).02421_truncate_isolation_no_merges. #96951 (Alexey Milovidov).03100_lwu_27_update_after_on_fly_mutations. #96952 (Alexey Milovidov).01062_pm_all_join_with_block_continuation. #96967 (Alexey Milovidov).00365_statistics_in_formats with parallel replicas. #96970 (Alexey Milovidov).02883_zookeeper_finalize_stress. #96973 (Alexey Milovidov).gcp_oauth HTTP client. #96975 (Alexey Milovidov).00092_union_race_conditions_3 timeout. #96976 (Alexey Milovidov).test_interactive_totp_authentication integration test under ASan. #96983 (Alexey Milovidov).02448_clone_replica_lost_part. #96986 (Alexey Milovidov).01676_clickhouse_client_autocomplete. #96987 (Alexey Milovidov).03100_lwu_40_cleanup_race. #97012 (Alexey Milovidov).ALTER MODIFY COLUMN with statistics. #97041 (Anton Popov).ORDER BY key. #97059 (Alexey Milovidov).timeSeriesSelector(). #97063 (Vitaly Baranov).zookeeper_log.error. #97163 (Azat Khuzhin).../../../../../../../../../../../etc/hosts in tests. #97174 (Mikhail Artemenko).opentelemetry_start_keeper_trace_probability. #97177 (Miсhael Stetsyuk).03911_limit_max_streams_with_split_parts_ranges_into_intersecting_and_non_intersecting_final. #97298 (Nikita Taranov).-> token when parseLambda fails. #97317 (Alexey Milovidov).LOGICAL_ERROR exception when CHECK TABLE runs on a replicated table before the replica is fully initialized. #97424 (Alexey Milovidov).03644_cancel_huge_mutation_subquery test by adding KILL MUTATION to handle the race between SYSTEM STOP MERGES and background pool scheduling. #97543 (Alexey Milovidov).LOGICAL_ERROR exception "Committing blocks were not loaded for partition" in isMutationFinished when partition has been forgotten via FORGET PARTITION. #97593 (Alexey Milovidov).02481_async_insert_dedup tests with S3 storage. #97642 (Alexey Milovidov).01079_parallel_alter_detach_table_zookeeper. #97681 (Alexey Milovidov).task tracing requires Tokio to be built with RUSTFLAGS="--cfg tokio_unstable" at start, system.jemalloc_profile_text integration, faster interface and some fixes for leaving terminal in a slightly bad state after spawning client/editor. #97810 (Azat Khuzhin).jemalloc.html. #97825 (Antonio Andelic).txn->getState() != MergeTreeTransaction::COMMITTED for server fuzzer with implicit_transaction. #97835 (Azat Khuzhin).system.asynchronous_metrics. #97863 (Antonio Andelic).type from system.tokenizers. #98066 (Robert Schulze).concurrent_threads_scheduler is now max_min_fair instead of fair_round_robin. This improves fairness under high load by prioritizing queries with fewer allocated slots, so short-running queries aren't penalized by long-running ones. #95300 (Sergei Trifonov).