Backward Incompatible Changes
- Data type serialization: Propagate data types serialization versions to nested data types. String serialization version
with_size_streamnow applies to String types inside Array/Map/Variant/JSON/etc. Controlled bypropagate_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. - Skip index type: Removed the
hypothesisskip index type. Creating tables withINDEX ... TYPE hypothesisnow produces an error. - Function removal: Removed experimental
detectProgrammingLanguagefunction. - NOT operator precedence: Fixed to match SQL standard.
NOTnow binds looser thanIS NULL,BETWEEN,LIKE, and arithmetic operators. Queries relying on previous non-standard behavior may change results. - Skip index filenames: Fixed skip index files not respecting
replace_long_file_name_to_hashsetting. Long-named indices are now hashed like column files. Backward compatible for upgrades, but downgrading may cause long-named indices to be ignored. - Async insert default: Async insert is now enabled by default. Batching all small inserts by default. Can be disabled at config, session, query, or table level. Set
compatibility=<version less than 26.2>for previous behavior. - MySQL datatype mapping: Changed default
mysql_datatypes_support_leveltodecimal,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). - UDF stderr handling: Changed default
stderr_reactionfromthrowtolog_lastfor executable UDFs. UDFs writing warnings to stderr no longer fail when exit code is 0. - Metadata changes: Fixed normal projections metadata so multi-column sorting keys are properly recognized.
- Index function API:
mergeTreeAnalyzeIndexes{,UUID}now accepts array of part names instead of regexp for improved performance (experimental).
New Features
- Bucketed Map serialization: Added bucketed serialization for Map columns in MergeTree with
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. - Materialized CTE: Support evaluating CTEs only once and storing results in temporary tables.
- SQL-standard functions: Allow certain functions like
NOWwithout parentheses for compatibility. - naturalSortKey function: Added
naturalSortKey(s)function. - JSON input for JSONExtract: Support native JSON/Object input for JSONExtract functions.
- Nullable query parameters: If a query parameter has Nullable type and is not specified, assume value is NULL.
- ZooKeeper auxiliary support: Support auxiliary ZooKeeper for Replicated database.
- JSON has function: Support
hasfunction for JSON type to check path existence. - mergeTreeTextIndex function: New table function to read data directly from a text index for introspection.
- table_readonly setting: Add MergeTree setting to mark tables as read-only.
- Partition pruning settings: New
use_partition_pruningsetting anduse_partition_keyalias to disable partition pruning. - Iceberg EXECUTE expire_snapshots: Support
ALTER TABLE ... EXECUTE expire_snapshots('<timestamp>')for Iceberg tables. - HTTP handlers per port: Allow each
type=httpentry in<protocols>to specify custom<handlers>key for different routing rules per port. - EXPLAIN improvements: Add
pretty=1option for tree-style indented output andcompact=1to collapse Expression steps. - Access control: New
restore_access_entities_with_current_grantssetting for restored users/roles in backups. - Unicode functions: Added
caseFoldUTF8,removeDiacriticsUTF8, andnormalizeUTF8NFKCCasefoldfunctions. - asciiCJK tokenizer: New tokenizer for full-text indexes and
tokensfunction using Unicode word boundary rules. - Unavailable shards limits: New
max_skip_unavailable_shards_numandmax_skip_unavailable_shards_ratiosettings to limit silent shard skipping. - SOME keyword: Added
SOMEkeyword for subquery expressions (identical toANY). - FixedString output formatting: New
output_format_trim_fixed_stringsetting to strip trailing null bytes. - Parenthesized table joins: Support parenthesized table join expressions in FROM clause.
- toDaysInMonth function: Returns number of days in the month of specified date.
Experimental Features
- WebAssembly UDFs: Experimental support for WebAssembly-based user-defined functions with Wasmtime backend.
- External SQL dialects: Support for external SQL dialects using
polyglotlibrary. - ALP codec: Floating-point compression codec (without ALP_rd fallback).
- Lazy JSON type hints: Experimental lazy type hints for JSON columns.
ALTER TABLE ... MODIFY COLUMN json JSON(path TypeName)completes as metadata-only operation without rewriting data. - YTsaurus parallel reads: Enable parallel reads from YTsaurus table engine.
Performance Improvements
- Object storage reads: Improved data lake reading performance by resizing pipeline to number of processing threads, providing ~40x improvements on multi-core machines.
- Parallel replicas logic: Clarified relationship between
enable_parallel_replicasandautomatic_parallel_replicas_mode. Queries use parallel replicas ifenable_parallel_replicas > 0.automatic_parallel_replicas_mode=1uses statistics-based decision; mode=0 uses parallel replicas for all supported queries. - Enhanced partition pruning: Allow partition pruning when predicate contains comparison operators and partition key is wrapped in deterministic function chain (e.g.,
cityHash64(x) % 5 > 2,toYYYYMM(x) < 2026).
Fetched April 11, 2026

