Backward Incompatible Changes
- Removed
allow_experimental_query_deduplicationfeature after long experimental period with no tests or support. - XRay-based
SYSTEM INSTRUMENTfeature renamed fromparameterstoarguments:system.instrumentation.parameters→arguments, andSYSTEM INSTRUMENT ADD ... HANDLER PARAMETERS ...→SYSTEM INSTRUMENT ADD ... HANDLER ARGUMENTS ... - Setting
show_data_lake_catalogs_in_system_tablesrenamed toshow_remote_databases_in_system_tableswith expanded scope: when set to 0 (default),MySQLandPostgreSQLdatabases are also hidden from system tables (old name kept as alias). - Default x86 build now targets x86-64-v3 (AVX2) instead of x86-64-v2 (SSE4.2); requires CPU with AVX2 support. Use
amd64compatbuild for older CPUs. - Nested
Dynamic/Variantnow rejected inmin/maxaggregates andminmaxindexes. icebergHashandicebergBucketnow explicitly rejectInt128,UInt128,Int256,UInt256, andDecimal256arguments.--echoCLI option now accepts optional boolean value; positional queries after bare--echotreated as its value; use--echo --query "..."or--echo=falseinstead.- Removed experimental KQL functions
array_sort_asc,array_sort_desc, and their SQL backends. ALTER TABLE ... REPLACE PARTITION ... FROM ...now rejects requests when source table has no parts in requested partition (previously silently dropped destination data). Setallow_replace_partition_from_empty_source = 1to restore old behavior.- Default
insert_deduplication_versionchanged fromcompatible_double_hashestonew_unified_hash; deduplication now per-insert instead of per-part/partition.
New Features
- Continuous queries over
MergeTreetables via snapshot reads (first step toward streaming query support). - Hypothetical (what-if) skip indexes with
CREATE HYPOTHETICAL INDEXandEXPLAIN WHATIFfor cost estimation. - Embedded
/schemaweb UI visualizing dependency graph between tables, views, materialized views, dictionaries, and distributed tables. PNGoutput format support for rendering query results as images.- AI coding agent detection (Claude Code, Cursor, Codex, etc.) reported in
system.query_log,system.query_thread_log, andsystem.processes. - New
system.documentationtable with embedded reference documentation for functions, table engines, data types, settings, and formats. GeoJSONinput format for reading FeatureCollection documents with nativeGeometrytype support.- Mapbox Vector Tile functions:
MVTEncodeGeom,MVTEncode,MVTBoundingBox,MVTBoundingBoxMercator(with PostGIS aliases). clickhouse-localnow supportsSYSTEM START LISTENandSYSTEM STOP LISTENqueries.- Interactive
helpcommand inclickhouse-clientandclickhouse-localwith syntax-highlighted documentation. - Azure Data Lake Storage Gen2 write support.
RowBinaryWithNamesAndTypesAndDefaultsformat for better schema evolution support.ADD ENUM VALUESinALTER TABLEto append new enum values without respecifying all current values.- Refreshable materialized view
REFRESH DEPENDS ONfor dependency-triggered refreshes. - Column selection by name pattern:
* LIKE '<pattern>'and* ILIKE '<pattern>'. ESCAPEsyntax for custom escape characters inLIKEpatterns.materialize_projections_on_insertandmaterialize_projections_on_mergeMergeTree settings.allow_tuple_element_aggregationsetting for recursive tuple flattening in aggregating engines.quantizeBFloat16ToInt8anddequantizeInt8ToBFloat16scalar codec functions.arrayTopKandarrayBottomKarray functions.system.iceberg_filestable exposing per-file metadata for Iceberg tables.system.constraintstable for CHECK and ASSUME constraints.system.dictionary_layouts,system.dictionary_sources,system.data_skipping_index_types,system.disk_typestables with embedded documentation.SYSTEM RESTART DISKcommand for reloading disk metadata and re-scanning data parts.- PostgreSQL-style
expr OP SOME(array)/expr OP ALL(array)syntax. hostname_longest_common_prefixandhostname_longest_common_suffixload balancing strategies.- TLS client certificate information in
system.session_log. - Optional
external_idcredential for S3 role-based access. S3Queuesettingafter_processing_move_preserve_pathfor preserving source paths during moves.message_queue_disable_insertionsetting to disable insertion from message queue engines.LOCALTIMEandLOCALTIMESTAMPSQL-standard functions.date_part()function as syntactic sugar forEXTRACT().- PostgreSQL-compatible
EXTRACT(TIMEZONE_HOUR/MINUTE FROM dt)and interval extraction. min_byandmax_byaggregate aliases forargMinandargMax.REGEXP_SUBSTRcase-insensitive alias ofregexpExtract.SESSION_USERcase-insensitive alias ofcurrentUser().- Trailing
NULL/NOT NULLmodifier inALTER TABLE ... ADD/MODIFY COLUMN. h3PolygonToCellsWithContainmentfor H3 polygon-to-cells conversion with containment modes.IPV4_PREFIX_BITSandIPV6_PREFIX_BITSflags for IP-based keying.formatReadableTimeDeltanow acceptsINTERVALexpressions other than Month/Year.- Optional precision argument for
formatReadableSize,formatReadableDecimalSize,formatReadableQuantity. output_format_float_precisionsetting for controlling decimal digits in float output.output_format_always_write_decimal_point_in_float_and_decimalsetting.- New HTTP handler configuration elements:
<url_prefix>,<full_url_prefix>,<url_regexp>,<full_url_regexp>,<headers_regexp>. basicstatistics (compact per-column min/max, avg string length, NULL counts).- TTL nodes in ClickHouse Keeper (opt-in via
create_ttlfeature flag). - Memory reservation feature for workloads.
Experimental Features
- Multi-stage distributed query execution with scatter/broadcast/gather/shuffle exchanges via TCP or shared object storage.
dphypjoin reordering algorithm for inner joins withquery_plan_optimize_join_order_max_searched_planssetting.aiEmbedfunction for LLM-based embedding generation.- Linux OOM canary: sacrificial child process to shed memory pressure before main server.
- Web terminal interface (
/webterminal) promoted to production feature (enabled by default). - PromQL HTTP endpoints with database/table URL query parameters.
- PromQL
histogram_quantilefunction support inprometheusQueryandprometheusQueryRange. - Lazy posting list apply mode for text indexes with cursor-based decoding.
- AssemblyScript ABI support for WebAssembly UDFs.
- Prometheus handlers on main HTTP port with optional prefix.
packed_skip_index_max_bytesMergeTree setting for bundling skip-index substreams.Buffersserialization for WebAssembly UDFs usingABI BUFFERED_V1.use_reader_executorsetting routing reads through new pipeline-basedReaderExecutor.- Descending sort order in MergeTree sorting keys (no longer requires
allow_experimental_reverse_key). Nullable(Tuple(...))type (Beta, disabled by default).
Performance Improvements
- Keeper ~2x faster overall (better batching, message pipelining, log append pipelining).
- Simple
SELECTqueries ~50% faster (reduced per-query overhead for parsing, analysis, planning). - Primary key index analysis optimized for long and high-cardinality keys.
- New
ipnsortanddriftsortstable sorting implementations for fasterORDER BY. GROUP BYoptimization for high cardinality evenly distributed keys via row scattering (enable_sharding_aggregator).- Hash table prefetching for string key
GROUP BYqueries (~8% improvement). - Reduced peak memory for merging partial two-level aggregation results.
EnumDataType memory optimization (up to 10x footprint reduction).- Identifier resolution caching to prevent duplicate resolution.
- Query analysis ~50x faster for nested SELECT * over tables with ~1200 columns.
- Query analysis faster for queries with many/deeply nested function calls.
- Replicated access storage login/startup stalls fixed with per-entity cache batching.
- Hash join runtime filter from
FixedHashMapsharing viajoin_runtime_filter_from_fixed_hash_table. - Lazy selector/replication index application for JOIN + LIMIT scenarios.
- DP JOIN reordering now allowed with parallel replicas.
- JOIN runtime filter aware join-reorder cost model.
- RIGHT/FULL join non-joined row emission de-virtualized via batching.
- Packed
keys32/keys64methods inHashJoinandSet. - Optimal nullable column handling in aggregation.
LIMIT BYquery performance improvements via multiple optimizations.- Sharded aggregation, grace_hash join, parallel window partitioning ~2x faster (hardware CRC32C).
- Array distance functions auto-vectorized on x86-64-v4/v3.
{Norm}DistanceanddotProductfunctions improved.arrayNormfunction performance improved.- AVX-512 const-left path improvements for distance functions.
encrypt,decrypt,tryDecrypt,aes_encrypt_mysql,aes_decrypt_mysqlup to 10x faster.encrypt,decrypt,halfMD5faster via OpenSSL 3.x provider lookup avoidance.SHA1SIMD implementation using AVX-512 for parallel hashing.- AArch64 ASIMD/NEON backend for multi-buffer
MD5. MATERIALIZE PROJECTION~3.4x faster via pre-squashing.MergeTreeINSERT latency reduced via skip index column permutation optimization.- Parquet
BYTE_STREAM_SPLITdecoding faster via Arrow SIMD paths. LowCardinalityinsertion performance improved forbloom_filterindexes.- Blob copy parallelization in
DiskObjectStorageTransaction. Oneinput format avoids file content reading.- macOS startup ~3x faster (no dynamic symbol export).
- Filesystem cache loading faster via redundant directory open elimination.
- Filesystem cache loading faster via idle thread re-utilization.
- Startup overhead reduced via WasmEdge library update.
- MergeTree primary key and skip indexes prune granules for
ifNull/coalescewrapped conditions. - DateTime64 skip index evaluation consumes less CPU.
- Text index multi-token search analysis optimized for rare tokens.
- Text index posting-list segment caching.
- Generic exclusion search performance improved.
- S3 client endpoint/bucket region discovery caching.
has()with constant arrays transformed to fasterin()implementation.- ThreadPool LIFO wake strategy reduces memory fragmentation.
- Approximate runtime filter and bloom filter index performance improved.
ASOF JOINcan now useparallel_hashalgorithm.- Early termination for empty
INTERSECT/EXCEPTresults. bitmapContainsfor non-UInt64 groupBitmap optimized.- Faster discontinuous queries for single-dictionary
LowCardinalitycolumns. HashJoinprobe fast path for single-row blocks.- Predicate pushdown for remote table function queries.
enable_join_transitive_predicatesenabled by default.- Text index support for
multiSearchAny,multiSearchAnyUTF8,multiMatchAny, improvedmatchpattern analysis. - Filter merging into PREWHERE on second optimizer pass.
QueryConditionCacherecords individually filtered-out granules.- Keeper
nuraft_use_bg_thread_for_snapshot_ioenabled by default. - Keeper snapshot application peak memory usage reduced.
- LLVM/JIT allocations routed to dedicated jemalloc arena.
- Excessive memory reservation for sparse dictionary-encoded
Nullable(String)Parquet columns fixed. - Cardinality estimation improved for deterministic single-argument functions in join reordering.
- Asynchronous logging CPU overhead reduced via LIFO queue notifications.
- Duplicate calculation removal during query execution.
- Recursive CTE result processing parallelized.
- Case-insensitive substring search faster via NEON (ARM) and wider AVX2 (x86).
- FPC floating-point codec ARM regression fixed.
Improvements
- Dynamic server hard memory limit adjustment based on current memory usage and system MemAvailable.
- C# PostgreSQL client support in PostgreSQL protocol.
- Mutations now use the analyzer.
- Schema evolution with concurrent consistency checks for data lake catalogs.
- Cache disk support for datalake table engines.
- DataLakeCatalog
onelaketype now uses Blob endpoint by default. S3(Azure)Queuedefaultpersistent_processing_node_ttl_secondsincreased from 1 hour to 6 hours.- Iceberg metadata cache default size reduced from 1 GB to 128 MB.
- S3Queue streaming task
query_idpropagated to dependent table inserts. system.query_logused_storagespopulated with storage engine name for DataLakeCatalog queries.- Iceberg snapshot operation and summary information now accessible.
- S3 multipart upload finalization completed asynchronously via task tracker.
- MergeTree text index default parameter settings:
text_index_dictionary_block_size,text_index_dictionary_block_frontcoding_compression,text_index_posting_list_block_size,text_index_posting_list_codec. - Projections can override additional MergeTree settings (compression, part format, serialization).
system.mergesnew columns:current_projection,current_projection_progress,projections_completed,projections_remaining.- PREWHERE with IN subquery on primary key columns now uses primary key index for granule pruning.
h3PolygonToCellsenforces max array size, validates H3 return codes, rejects MultiLineString.system.keeper_snapshotstable with local Keeper snapshot information.system.keeper_changelogstable with Keeper changelog (Raft log) file information.system.keeper_clustertable with Raft cluster member information.- Keeper profile events expanded for watches.
- Keeper
coordination_settingsfor NuRaft uncommitted log entry admission limiting and append-entries throttling. enable_compressionsetting for mysql table function, MySQL table/database engines, and MySQL dictionary source.- Query cancellation latency reduced for PostgreSQL wire protocol.
- Query cancellation latency reduced for MySQL wire protocol.
- MySQL handshake
auth_responselength reading fixed for values >= 128. MaterializedPostgreSQLmaps PostgreSQLnumeric(p, 0)with precision > 76 toInt256.
Fetched June 27, 2026

