releases.shpreview

ClickHouse release 26.5

v26.5

Backward Incompatible Changes

  • Changed defaults of date_time_input_format and cast_string_to_date_time_mode from basic to best_effort. Set to basic or compatibility to restore old parsing behavior.
  • Tuple element name null is now forbidden due to conflicts with Nullable subcolumn names.
  • Added settings dynamic_disk_allow_from_env, dynamic_disk_allow_from_zk, dynamic_disk_allow_include that disallow these operations by default in dynamic disks.
  • Removed obsolete Arrow-based Parquet reader/writer; native implementation is used instead.
  • SHOW CREATE TABLE t now prefers temporary tables when both exist; DESCRIBE TEMPORARY TABLE syntax is now supported.
  • Reduced default http_max_fields from 1,000,000 to 1,000 and http_max_field_name_size from 128 KB to 4 KB to limit pre-authentication memory usage.
  • Added histograms nested column to system.metric_log; deprecates system.histogram_metric_log table.
  • CAST to DateTime or DateTime64 without explicit timezone now preserves source timezone.
  • Removed kql table function; use SET dialect = 'kusto' instead.
  • Window functions RANK and DENSE_RANK now reject arguments per SQL standard.

New Features

  • Added max_bytes_ratio_before_external_join setting (default 0.5) for hash join spill-to-disk threshold as fraction of available memory.
  • Added filesystem table function to represent directory structure as queryable table.
  • Allow passing bare function names to higher-order functions like arrayMap, arrayFilter.
  • Added send_table_structure_on_insert_with_inline_data setting and --inline-insert-data client option.
  • Added tokenizeQuery and highlightQuery functions for SQL query tokenization and syntax highlighting.
  • Added url_base setting to resolve relative URLs in url table function and URL table engine.
  • Support negative values in LIMIT BY clause to select rows from end of each group.
  • Support tuple and array output in json_value function.
  • Added kafka_autodetect_client_rack parameter to discover Availability Zone and propagate as client rack.
  • Added Read event type to system.blob_storage_log for tracking object storage reads.
  • Users can now see ZooKeeper watches via new system.zookeeper_watches table.
  • Added Shards profile event counting shards in distributed queries.
  • WASM UDFs can be declared DETERMINISTIC for constant folding.
  • Added parallel_replicas_prefer_local_replica setting to control replica selection.
  • Added socket buffer size settings: {disk,storage,http}_connections_{rcvbuf,sndbuf}.
  • Support CREATE OR REPLACE MATERIALIZED VIEW with atomic swap semantics.
  • Added S3 histogram metrics s3_read_request_duration_microseconds and s3_read_request_bytes.
  • Added Paimon, PaimonS3, PaimonAzure, PaimonHDFS, PaimonLocal table engines with incremental read support.
  • Added Kafka kafka_map_virtual_columns_on_write setting to map virtual columns on insert.
  • Added SYSTEM PAUSE VIEW and SYSTEM PAUSE VIEWS for refreshable materialized views.
  • Added regexpPosition function (PostgreSQL-compatible aliases regexpInstr, regexp_instr) for regex match position.
  • New functions isPrime and isProbablePrime for primality checks.
  • clear and /clear now clear the terminal in CLI tools.
  • Allow file table function to accept Array(String) of paths.
  • Added deterministic and higher_order columns to system.functions.
  • Added optional encoding variant parameter to bech32Encode and raw decode mode to bech32Decode.
  • Can now write data in AvroConfluent format with output_format_avro_confluent_subject setting.
  • Added prettyPrintJSON function to format JSON strings into human-readable form.
  • Added STRING_AGG as case-insensitive alias of groupConcat.
  • Individual subquery results can be cached independently with use_query_cache per subquery.
  • Added lexer-based syntax highlighting to web UI query editor.

Experimental Features

  • Added experimental web terminal interface at /webterminal with interactive clickhouse-client over WebSocket.
  • Kafka2 engine now supports direct SELECT queries and kafka_commit_on_select setting.
  • WASM UDFs support more numeric type coercions.
  • Support LIKE function in DELETE FROM system.webassembly_modules.
  • Support geo types for Iceberg.
  • Add prepared statements functionality to ArrowFlight SQL server.
  • Improved KQL parser robustness.

Performance Improvements

  • Reuse Parquet footer metadata cache for local files.
  • Push ORDER BY ... LIMIT n through LEFT/RIGHT joins when applicable.
  • Enable use_top_k_dynamic_filtering and use_skip_indexes_for_top_k by default.
  • Use jemalloc oversize-arena feature to reduce page faults.
  • Limit simultaneously active streams in UNION ALL to reduce peak memory.
  • Optimize userspace page cache; cold reads through object storage page cache now coalesce consecutive misses into single HTTP request.
  • Speed up index analysis with type casting and function application.
  • Speed up queries on Merge tables with many underlying tables.
  • Remove vtable from settings, reducing Settings copy size by ~28x.
  • Added max_threads_min_free_memory_per_thread and max_insert_threads_min_free_memory_per_thread settings for automatic parallelism reduction.
  • Reduce memory usage on low-memory systems (<4 GiB).
  • Added OptimizeTrivialGroupByLimitPass for trivial GROUP BY queries.
  • Granule-level implicit min-max index for _part_offset and _block_number virtual columns.
  • Precompute per-row hashes for prealloc_serialized aggregation methods.
  • Query condition cache for Iceberg tables.
  • Optimize cramersV and related functions with window functions.
  • Rewrite tupleElement(dictGet(...), N) optimization.
  • Enable buffering for sorting steps in distributed queries.
  • Performance improvements for partial_merge JOIN.
  • Reduced memory over-allocation in partial_merge JOIN.
  • Optimize memory tracker sampling.
  • Reduce memory allocation during S3 multipart uploads.
  • Add software prefetch in hash join probe phase.
  • Optimize MemoryTracker layout improving performance by ~25%.
  • Rewrite coalesce(a, b, ...) <op> const predicates for better index pruning.
  • Significantly improved Iceberg catalog query performance with large JSON metadata.
  • Avoid index uncompressed cache overhead when disabled.
  • Fix excessive granule reading in ORDER BY ... LIMIT with non-selective filters.
  • Fixed missing hash table sizes cache reuse after JOIN reordering.
  • Fsync of part files now performed in parallel, speeding up insert finalization by ~22%.
  • Vectorize string search helpers on AArch64 using NEON.
  • Restore I/O savings for aliased complex columns.
  • Reduced lock contention on asynchronous remote-FS read path.
  • Slightly better query plan for projections in-order scan.
  • Extend projection optimization to handle cases where projection's sorting key removes sorting step.
  • Allow json.path[] syntax sugar on typed JSON paths.
  • Optimize json.path[N].nested.path expansion.
  • Optimize SHOW TABLES access checks.
  • Remove redundant per-table access check in system.tables fast path.
  • Enable JIT compilation on macOS.
  • Skip row policy deferral after FINAL when deterministic and depends only on sorting-key columns.
  • Support hasAny and hasAll as text index filter predicates.
  • Route long-lived MergeTree heap state to dedicated jemalloc arena.
  • Improve ZooKeeper client timeout handling under heavy load with progress-based timeout.
  • Move per-event trace flags into separate array with lazy allocation.
  • Add compareTrackAt for ColumnDecimal.
  • Added SIMD implementation of MD5 (AVX2/AVX512) for parallel hashing.

Improvements

  • Improved --help output for all ClickHouse applications with better formatting and subcommand listing.
  • Changed default input_format_column_name_matching_mode from match_case to auto for case-insensitive fallback.
  • Added STDDEV alias of stddevSamp.
  • Added array_to_string alias of arrayStringConcat.
  • Added unnest alias of arrayJoin.
  • Progress bar in clickhouse-client now shows temporary disk data usage.
  • Added system.predicate_statistics_log for predicate filter selectivity sampling.
  • Allow skipping local shard with missing table when skip_unavailable_shards enabled.
  • Added startup warnings for Linux mdraid array issues.
  • WASM UDFs now appear in system.functions with correct metadata.
  • generate_series table function supports negative step values.
  • Fixed context expiration in functions used in deferred execution paths.
  • Fixed spurious cache limit violations.
  • Auto-detect region for S3 Express endpoints.
  • Support field IDs for Iceberg data files.
  • Left panel in web UI scrolls independently and stays visible.
  • Allow opening Play UI in new tab via Ctrl/Cmd/Shift+click.
  • New metrics for projection primary key and index granularity memory usage.
  • Apply network bandwidth limits to remote filesystem operations.
  • Improved backup resilience for Refreshable Materialized Views.
  • Consistent database listing in system.databases regardless of catalog settings.
  • Aligned concurrent_threads_soft_limit_ratio_to_cores default in code with config.
  • Improved sanitizer robustness in parser and string functions.
  • Improved monotonicity inference for divide(0, x) and intDiv(0, x).
  • Replaced HTTPConnectionPool async metrics with bucket-based histogram.
  • Socket buffer settings now reported as changeable without restart.
  • Added symbol resolution support in flameGraph.
  • CLI client supports <rainbow_parentheses>false</rainbow_parentheses> config.
  • Fixed MultiVolnitsky UTF-8 case-insensitive search.
  • Implemented sched_getcpu via rseq TLS in glibc-compatibility musl.
  • Replicated refreshable materialized views no longer refresh twice on ZK reconnection.
  • Allow Distributed tables without explicit column list to validate sharding keys.
  • Fixed REST catalog with Azure abfss paths.
  • Honor role_arn and role_session_name in Keeper S3 snapshot client.
  • Fixed memory leak in MATERIALIZED CTEs.
  • Fixed exception in lowerUTF8/upperUTF8 with large non-ASCII datasets.
  • Hardened MergeTree column-statistics loading against transient I/O failures.
  • INSERT INTO ... SELECT FROM input(...) no longer requires CREATE TEMPORARY TABLE grant.
  • Added concurrent_part_removal_threshold_for_remote_disk setting (default 16).
  • New setting defer_partition_pruning_after_final for opt-out of 26.3 behavior.
  • Fixed intExp2 returning wrong results for out-of-range inputs.
  • Fixed shell argument quoting in clickhouse install and clickhouse git-import.
  • Alias table engine is now non-experimental.
  • Added --queries-format option to clickhouse-benchmark.
  • Tuple element-wise operators are now variadic.
  • Added /processors-profile web UI for pipeline visualization.
  • Setting query_plan_use_logical_join_step is now obsolete.
  • Pre-filled user input removed from web UI pages.
  • Decoupled ORC reader offset-based read from use_prefetch.
  • Downloaded CSV files now use .csv extension.
  • More input validation for BigLake catalog.

Bug Fixes

  • Fixed inconsistent expression formatting with parenthesis tracking.
  • Fixed accurate comparison between Decimal and Float types.
  • Allow positional arguments in distributed queries.
  • Fixed assertion failure when dropping/recreating materialized views and view dependencies.
  • Fixed server abort when creating table with duplicate UUID.
  • Fixed skip index usage on data read with patch parts from lightweight updates.
  • Fixed "Not-ready Set" exception with IN subqueries moved to PREWHERE.
  • Fixed "Cannot find column" error combining ADD and RENAME COLUMN.
  • Fixed views with mixed set operations returning wrong results after detach/attach.
  • Fixed PLACEHOLDER action exception in stress testing.
  • Fixed logical error with Iceberg Date partitions.
  • Fixed skip index incompatibility after column type modification.
  • Fixed credential leak in query logs.
  • Fixed DROP TABLE on Kafka tables potentially hanging indefinitely.
  • Fixed runtime lookup for source table engines and database source grants.
  • Fixed server crash with ALIAS column containing correlated subqueries.
  • Fixed server crash with correlated subqueries and CONSTRAINT ASSUME.
  • Fixed exception with JSON dynamic fields as GROUP BY key.
  • Fixed workload IO scheduling bypass for S3/object-storage writes.
  • Fixed Protobuf/ProtobufList schema cache collision.
  • Fixed heap-buffer-overflow in Rust CXX bridge.
  • Fixed FunctionVariantAdaptor exception handling.
  • Fixed TRUNCATE ALL TABLES with views.
  • Fixed optimize_rewrite_array_exists_to_has type compatibility and re-enabled.
  • Fixed S3 settings priority for storage configuration.
  • Fixed sparse serialization losing negative zero sign.
  • Fixed WKT geometry parser MULTILINESTRING corruption and malformed string handling.
  • Fixed GROUPING SETS on distributed single-shard tables.
  • Fixed LOGICAL_ERROR column identifier already registered.
  • Fixed LOGICAL_ERROR with additional_result_filter on UNION/EXCEPT.
  • Fixed server crash with * APPLY on aggregate functions with grouping.
  • Fixed infinite loop with CSV/TSV skip first lines exceeding file lines.

Fetched June 1, 2026