with_size_stream now applies to String types inside Array/Map/Variant/JSON/etc. Controlled by propagate_types_serialization_versions_to_nested_types (enabled by default). Upgrade is safe, but downgrade is not — data written by 26.3 in columns with nested types will be unreadable in older versions.hypothesis skip index type. Creating tables with INDEX ... TYPE hypothesis now produces an error.detectProgrammingLanguage function.NOT now binds looser than IS NULL, BETWEEN, LIKE, and arithmetic operators. Queries relying on previous non-standard behavior may change results.replace_long_file_name_to_hash setting. Long-named indices are now hashed like column files. Backward compatible for upgrades, but downgrading may cause long-named indices to be ignored.compatibility=<version less than 26.2> for previous behavior.mysql_datatypes_support_level to decimal,datetime64,date2Date32, enabling proper mapping of MySQL DATE/DECIMAL/DATETIME to Date32/Decimal/DateTime64. Previously MySQL DATE mapped to Date (cannot represent dates before 1970-01-01).stderr_reaction from throw to log_last for executable UDFs. UDFs writing warnings to stderr no longer fail when exit code is 0.mergeTreeAnalyzeIndexes{,UUID} now accepts array of part names instead of regexp for improved performance (experimental).map_serialization_version = 'with_buckets'. Keys split into hash-based buckets, providing 2-49x speedup for single-key lookups. New settings: map_serialization_version, max_buckets_in_map, map_buckets_strategy, map_buckets_coefficient, map_buckets_min_avg_size.NOW without parentheses for compatibility.naturalSortKey(s) function.has function for JSON type to check path existence.use_partition_pruning setting and use_partition_key alias to disable partition pruning.ALTER TABLE ... EXECUTE expire_snapshots('<timestamp>') for Iceberg tables.type=http entry in <protocols> to specify custom <handlers> key for different routing rules per port.pretty=1 option for tree-style indented output and compact=1 to collapse Expression steps.restore_access_entities_with_current_grants setting for restored users/roles in backups.caseFoldUTF8, removeDiacriticsUTF8, and normalizeUTF8NFKCCasefold functions.tokens function using Unicode word boundary rules.max_skip_unavailable_shards_num and max_skip_unavailable_shards_ratio settings to limit silent shard skipping.SOME keyword for subquery expressions (identical to ANY).output_format_trim_fixed_string setting to strip trailing null bytes.polyglot library.ALTER TABLE ... MODIFY COLUMN json JSON(path TypeName) completes as metadata-only operation without rewriting data.enable_parallel_replicas and automatic_parallel_replicas_mode. Queries use parallel replicas if enable_parallel_replicas > 0. automatic_parallel_replicas_mode=1 uses statistics-based decision; mode=0 uses parallel replicas for all supported queries.cityHash64(x) % 5 > 2, toYYYYMM(x) < 2026).sumCount aggregate function unable to read older serialized states after introduction of Nullable(Tuple)Nothing type with GROUPING SETS and ORDER BYuncompressed_hash computation for Compact MergeTree parts with multiple compression codecsMEMORY_LIMIT_EXCEEDED being reported as CORRUPTED_DATA during SummingMergeTree and CoalescingMergeTree mergesurl()optimize_syntax_fuse_functions with aggregate projections and Date typesreplaceRegexpOne to extract query rewrite producing wrong results; fixed exception with GROUP BY ... WITH CUBE and group_by_use_nulls=1DROP DATABASE hanging indefinitely with database_atomic_wait_for_drop_and_detach_synchronouslyKILL QUERY unable to terminate queries stuck in WITH FILL, dictionary loading, or ALTER DELETEloop table function bypassed row policies and column-level grantstoDate() functionhasPartitionId returning incorrect results with multiple partitionsCannot schedule a file error on INSERT into Distributed due to race between DROP and INSERTmapContainsKey/mapContainsKeyLike with tokenbf_v1 skip indexLOGICAL_ERROR with LowCardinality inside compound types in various functionsLOGICAL_ERROR in MergingAggregatedTransform with ARRAY JOIN and merge() over Distributed tablesgrace_hash algorithm and non-equi joinsCachedOnDiskReadBufferFromFile::readBigAtLOGICAL_ERROR in Alias engine with materialized columnssign function for integer types wider than Int8DUPLICATE_COLUMN exception and silent NULLs reading Delta Lake tables with name mode column mappingfile() and DESCRIBE TABLE file()file() when directory contains dangling symlinksarrayJoinProtobufList format not working with Kafka engineanalyzer_compatibility_join_using_top_level_identifier and ARRAY JOINWatch component for watch responses in aggregated_zookeeper_logkql_array_sort_asc/kql_array_sort_desc with constant array argumentsColumnConst::getExtremes with extremes = 1MOVE PARTITION operationsLOGICAL_ERROR in MergeTreeSetIndex with toDate conversion on key columnsLOGICAL_ERROR with RIGHT JOIN wrapped in CROSS JOIN in legacy join code pathDDSketch deserialization in quantilesDDLOGICAL_ERROR with correlated columns in lambda functions like arrayMapcaseWithExpression with materialize(NULL) or Nullable(Nothing) arguments_table virtual column in merge table functionORDER BY ... WITH FILL used together with LIMIT BYDate into Enum columnArray column into table with Nested columnMATERIALIZE INDEX and MATERIALIZE PROJECTION mutations getting stuckNullable(Tuple(...)) with colliding element namesMerge table wrapping Distributed tableMultiple bug fixes including:
Parquet and Data Format Fixes:
Query Execution Fixes:
Type System and Comparison Fixes:
Index and Optimization Fixes:
ClickHouse Keeper Fixes:
Join and Filter Fixes:
Data Type and Function Fixes:
Configuration and System Fixes:
Security Fix:
Performance Fixes:
TTL and Transactions:
Performance Improvements:
Nullable CAST target types for monotonic conversionspointInPolygon and fixed index analysis issueslevenshteinDistance function performanceDateTime64 primary keys compared with integer constantsoptimize_syntax_fuse_functions enabled by defaultavgWeighted aggregate function with local accumulators (~27% improvement for Nullable inputs)arrayFold workloadsINTERSECT ALL and EXCEPT ALLread_in_order_use_virtual_row optimization support for reverse-order readsPrefetchingHelper::calcPrefetchLookAhead with integer arithmeticabsl::flat_hash_set with CompactChildrenSet (KeeperMemNode reduced from 144 to 128 bytes)Feature Improvements:
join_use_nullsprewarm_mark_cache setting enabledtokensForLikePattern SQL function for LIKE pattern tokenization{_schema_hash} placeholder for S3 table enginesystem.stack_trace table now works on macOS<follow_referrals> to control referral chasingskip_indices column in query_logoptimize_aggregators_of_group_by_keys to correctly optimize in GROUPING SETS queriesallow_nullable_tuple_in_extracted_subcolumns controls Tuple subcolumns behaviorAdd information about deferred filters as a separate item to EXPLAIN query output. Enable type_json_allow_duplicated_key_with_literal_and_nested_object by default to avoid errors about duplicated keys during JSON parsing. Keeper improvement: find_super_nodes command is more reliable when finding multiple super nodes by forbidding traversal of their children. Initial completion support for clickhouse-keeper-client. Flush async logging buffers in case of crash. Enable the impersonate feature by default (see EXECUTE AS target_user). Improve canceling queries with SQLite, MongoDB and MySQL table engines by KILL QUERY and cancel query (Ctrl+C). Add server setting jemalloc_profiler_sampling_rate to control jemalloc profiling. Support weights in concurrent bounded queue implementation. Add sslmode to allowed keys for PostgreSQL dictionary sources to support SSL connections. Show clear "no such file" error when passing non-existent file paths. Text indexes can now be built on Nullable and Array(Nullable) columns. Avoid dropping named collections that are dependencies of dictionary sources. Enable grace_hash join algorithm for queries with totals. Cancel background merges early in DROP DATABASE. Remove NetlinkMetricsProvider and use procfs exclusively for per-thread taskstats metric collection. Refactor Iceberg manifest file handling to fix caching issues. Optimize PREWHERE decisions for expressions like toDate(time). Add MaxAllocatedEphemeralLockSequentialNumber metric for ZooKeeper. Add new profile event KeeperRequestTotalWithSubrequests for better Keeper workload visibility. SYSTEM RELOAD DICTIONARIES now reloads dictionaries in topological order. Restart statistics cache after changing MergeTree settings. Only "alive" replicas participate in distributed index analysis. Add setting access_control_improvements.disallow_config_defined_profiles_for_sql_defined_users. Cap automatic parallel replicas heuristic to actual node count. Implement hedged requests and asynchronous reading for distributed index analysis. Deserialization of binary AggregateFunction states now requires consuming full input. Make TRUNCATE DATABASE respond to query cancellation. Improve keeper-bench with request pipelining and better stats. Support SAMPLE clause in distributed index analysis. Show chart title in dashboard even with empty results. Cap column lists in analyzer error messages to 10 entries. Return column stats from sub-queries with joins. Mark ZooKeeper session as expired immediately on finalization. Use more math functions from LLVM-libc. Reduce memory usage in system.jemalloc_profile_text. Add is_subrequest column to system.aggregated_zookeeper_log. Allow ALTER TABLE MODIFY COLUMN x TTL without specifying column type. Skip stale Keeper requests for disconnected sessions. Support text index on mapValues(map) with IN operator. Shell-like completion support in clickhouse keeper-client. Prevent Keeper mntr command from getting stuck. Reduce lock contention in Keeper dispatcher. Tolerate missing padding at the end of parquet file blocks. Fix how Alias table targets are saved as DDL dependencies. Fix wrong result or exception during reading subcolumns of ALIAS columns. Fix missing column in JOIN with non-standard identifier alias. Fix crashes in Kusto dialect functions with empty arguments. Forbid mounting local_object_storage outside user_files_path in clickhouse-client. Fix logical race in DeltaLake table engine on snapshot version change. Fix logical error on attaching a part in MergeTree with chained renames. Fix explicit settings being silently ignored when sent with compatibility. Fix client reporting NETWORK_ERROR instead of actual parsing error in INSERT with parallel parsing.