v.23.12
Backward Incompatible Changes
2Bug Fix
37- Fixed Sorting Order Breakage in TTL GROUP BY
- Fix lttb bucket strategy for single point in first and last buckets
- Fix Deadlock in Template Format During Sync After Error
- Fix Early Stop Issue During Error-Prone File Parsing
- Prevent ACL Bypass in Dictionary via Table Function
- Fix non-ready set error identified by Fuzzer
- Fix PostgreSQL array_ndims Usage Issues
- Fix RWLock Inconsistency After Write Lock Timeout
- Fix exclusion of ephemeral column in view chain building
- MaterializedPostgreSQL: Fix issue #41922 and add test for #41923
- Ignore ON CLUSTER in Grant/Revoke for Replicated Access Entities
- Fix crash in clickhouse-local
- Fix for Hash JOIN Issue #57564
- Fix PostgreSQL Source Error
- Fix Hash JOIN Type Correction for Nested LowCardinality
- Avoid Parallel Reading from system.stack_trace to Prevent Hangs
- Fix Error in Sparse Column Aggregation with any(...) RESPECT NULL
- Fix Unary Operators Parsing in ClickHouse
- Fix dependency loading for MaterializedPostgreSQL engine
- Fix retries for disconnected nodes in BACKUP/RESTORE ON CLUSTER
- Fix External Aggregation Result for Partially Materialized Projection
- Fix Merge in Aggregation Functions with *Map Combinator
- Disable system.kafka_consumers Due to Bug
- Fix LowCardinality Keys Support in Merge JOIN
- Fix for InterpreterCreateQuery Related to Sample Block
- Addresses_expr Ignored for Named Collections in PostgreSQL
- Fix Invalid Memory Access in BLAKE3 and Rewrite from Rust to C++ for Improved Memory Safety
- Normalize Function Names in CREATE INDEX
- Fix unavailable replica handling before first request
- Fix Misclassification of Literal Alias
- Fix Invalid Preprocessing on Keeper
- Fix Integer Overflow in Poco Library's UTF32Encoding
- Fix experimental parallel replicas for scalar subquery with large integer value
- Fix accurateCastOrNull for out-of-range DateTime
- Fix PARAMETER_OUT_OF_BOUND error in MergeTree subcolumns reading
- Fix slowdown in CREATE VIEW with numerous subqueries
- Fix Parallel Parsing for JSONCompactEachRow
Build/Testing/Packaging Improvement
7- Randomize Additional Settings
- Randomize Disabled Optimizations in CI
- Allow Azure-related table engines/functions on macOS
- ClickHouse Fast Test Switches to Musl from GLibc
- Run ClickBench for Every Commit, Closes #57708
- Remove harmful C/POSIX select function from external libraries
- Settings from ClickHouse Cloud to be included in open-source ClickHouse build
Improvement
41- Support for Soft Memory Limit in Keeper
- Make Inserts into Distributed Tables Adaptive to Cluster Configuration Changes
- Do not allow creating replicated tables with inconsistent merge parameters
- Show Uncompressed Size in system.tables
- Add skip_unavailable_shards setting for Distributed tables
- Function `substring` Now Supports `Enum` Types for Improved Compatibility with Third-Party Tools
- Function format now supports arbitrary argument types
- Supports case-insensitive first argument for date_trunc function
- Better error hints for non-existent tables
- Allow Overwriting max_partition_size_to_drop and max_table_size_to_drop at Query Time
- Slightly Improved Inference of Unnamed Tuples in JSON Formats
- Add Read-Only Flag Support for Keeper Connection
- Fix Issues with Distributed Sends and Track Async INSERT Failures in ClickHouse
- Support for PostgreSQL Generated Columns in MaterializedPostgreSQL
- Allow Non-Restart Settings Changes for Filesystem Cache Configuration
- Proper Handling of PostgreSQL Table Structure with Empty Array
- Expose Total Errors Since Last Server Restart as ClickHouseErrorMetric_ALL
- Allow nodes with from_env/from_zk references and replace=1 in configuration file
- FuzzJSON Table Function for Generating Malformed JSON
- Allow IPv6 to UInt128 Conversion and Binary Arithmetic
- Add Setting for Async Inserts Deduplication Cache Update Timing and Deprecate Old Interval Setting
- sleep() Function Can Now Be Cancelled with KILL QUERY
- Forbid CREATE TABLE AS SELECT for Replicated table engines in experimental Replicated database
- Fix and Enhance Query Transformation for External Databases
- Support Dynamic Reloading of Filesystem Cache Size
- Correct SIGRTMIN Signal Handling for Threads in ClickHouse
- Tolerate Keeper Failures in Quorum Inserts Check
- Add max/peak RSS to system.asynchronous_metrics
- PR for Enhanced S3-Link Handling Without Default Region Specification
- clickhouse-format --obfuscate retains settings and time zone names unchanged
- Added finalize() function to ZipArchiveWriter and simplified code, addressing issue #58074.
- Make Caches with Same Path Use Same Cache Objects Again
- Parallel Replicas Feature Enhancements by Igor Nikonov
- Parallel Replicas: Improved Announcement Response Handling
- Parallel replicas: Enhance min_number_of_marks in ParallelReplicasReadingCoordinator
- Parallel Replicas: Disabling with IN Subquery (Experimental Feature)
- Parallel replicas: Introduce 'ParallelReplicasUsedCount' profile event
- Non-POST Requests Like HEAD Are Now Readonly
- Add bytes_uncompressed Column to system.part_log
- Add Base Backup Name to system.backups and system.backup_log Tables
- Add Command Line Query Parameter Support in ClickHouse Local
New Feature
20- Implement Refreshable Materialized Views
- Introduce PASTE JOIN for Table Row Number Joining
- ORDER BY Clause Enhanced to Support ALL Option in ClickHouse
- Added ALTER TABLE command for applying deleted masks in ClickHouse
- Handler for Visual Symbol Viewer in ClickHouse Binary
- Added SQL Function to Generate Sqids
- Add seriesPeriodDetectFFT function for period detection using FFT
- Add HTTP Endpoint to Check Keeper Readiness
- Add Union Mode for Schema Inference in ClickHouse
- Add CSV Setting to Infer Numbers from Strings
- Warning Alert for Excessive Databases or Tables
- Dictionary with HASHED_ARRAY Layout Supports SHARDS Similar to HASHED
- Add Asynchronous Metrics for Primary Key Memory Usage
- Add SHA512_256 Function
- Add FORMAT_BYTES alias for formatReadableSize
- Allow Optional Session Token in S3 Table Function
- Introduce http_make_head_request Setting to Support Various HTTP Servers
- ALIAS Column Reference in Index Definitions Now Supported
- Added readonly setting for S3 disk access in ClickHouse
- Primary Key Analysis Enhancement for MergeTree Tables with _part_offset
Performance Improvement
18- Extract Non-Intersecting Parts Ranges for Improved MergeTree FINAL Performance
- Improved S3 Disk Copy Efficiency with Server-Side Operations
- Hash JOIN Optimizes Block Size with max_joined_block_size_rows Setting
- Release Memory for Early Aggregation to Optimize Performance
- Improve String Serialization Performance
- Support Trivial Count Optimization for Merge-Engine Tables
- Optimized Aggregation Enhancement by Anton Popov
- hasAny Function Enhanced with Full-Text Skipping Indices
- Function if(cond, then, else) Optimized for Branch-Free Evaluation
- MergeTree Auto-Derives do_not_merge_across_partitions_select_final Setting for Primary Key Columns
- Speedup MIN and MAX for Native Types
- Implement SLRU Cache Policy for Filesystem Cache
- Limit for Background Fetch Connections Increased and Settings Updated
- Make querying system.filesystem_cache less memory intensive
- Reduce Memory Usage in String Deserialization
- More Efficient Enum Constructor Implementation
- An Improvement for Filesystem Cache Reading Using PREAD Method
- Add Optimization for AND NotEquals Chain in Logical Expression Optimizer