v.24.6
Backward Incompatible Changes
5- Enable Default Asynchronous Loading of Databases and Tables
- Setting replace_long_file_name_to_hash Enabled by Default for MergeTree Tables
- Invalid KQL Expression Handling in Table Functions
- Rework Parallel Processing in Ordered Mode of S3Queue
- New Snowflake ID Conversion Functions Added and Old Functions Deprecated
Bug Fix
58- Fix for ORC Statistics Calculation Bug in Apache ORC Library
- Returned ClickHouse Tuple Behavior in CSV Format
- Fix privilege escalation error in default database
- Fix crash in UniqInjectiveFunctionsEliminationPass with uniqCombined
- Fix ClickHouse Keeper Bug Causing Digest Mismatch During Session Closure
- Use Correct Memory Alignment for Distinct Combinator to Prevent Crashes
- Fix crash with DISTINCT and window functions
- Fixed 'set' skip index issue with IN and indexHint()
- Support Function Execution During Parameterized View Assignment
- Fixed Parquet Memory Tracking
- Fixed Reading of Tuple Columns in ClickHouse
- Fix Cyclic Aliases Error for Different Types
- Fix Context and Definer for Views in Query Pipeline
- Fix "Not found column" error in analyzer with INTERPOLATE
- Fix S3 Backups with Different Credentials
- Query Cache Treats Identical Queries on Different Databases as Distinct
- Fix uncaught exception abort in WriteBufferFromFileDescriptor
- Fix duplicate alias error in distributed ARRAY JOIN queries
- Fix unexpected accurateCast from string to integer
- Fixed CNF Simplification for Mutually Exclusive Atoms
- Fix Query Tree Size Validation
- Fix Logical Error in Buffer Table with PREWHERE
- Prevent Recursive Logging in blob_storage_log for Object Storage
- Fixed CREATE TABLE AS Queries for Default Expressions
- Fixed optimize_read_in_order for ORDER BY NULLS FIRST/LAST with nullable keys
- Fix Expression Nodes List and Unknown Identifier Errors for GLOBAL IN Queries
- Fix "Cannot find column" Error in Distributed Queries with Constant CTE in GROUP BY
- Fix crash loop during backup restoration due to uninitialized definer in MV
- Fix output of formatDateTimeInJodaSyntax for uneven character counts
- Do not rewrite aggregation if -If combinator is used
- Fix Float Type Inference for Small Buffers
- Fix Bug Causing Non-Working TTLs with Expressions
- Fix Issue with Always True WHERE and PREWHERE Expressions in New Analyzer
- Fixed Excessive Part Elimination in Token-Based Text Indexes
- Fix ANSI CSI Escaping in UTF8::computeWidth Function
- Fix incorrect removal of ORDER BY / LIMIT BY in subqueries
- Fix experimental unequal join with subqueries in mixed join conditions
- Fix Local Cache Crash on Plain Rewritable Disk
- Keeper fix for zk_latest_snapshot_size in mntr command
- Fix Distributed Query Error with ARRAY JOIN Using Nested Column
- Fix memory leak in slru cache policy
- Fixed Memory Tracking Issues in S3 Queries and Asynchronous Inserts
- Fix Block Structure Mismatch Error for Queries Using PREWHERE from Materialized Views
- Fix rare crash with TTL and subquery in replicated databases
- Fix duplication of Delete events in blob_storage_log during large delete batches
- Fixed Session Moved to Another Server Error in ZooKeeper
- Fix ALTER MODIFY COMMENT Query for Parameterized VIEWs
- Fix host_id in DatabaseReplicated for secure cluster connections
- Fix Not-ready Set error after PREWHERE optimization for StorageMerge
- Avoid Writing to Finalized Buffer in File-like Storages
- Fix Infinite Query Duration Due to Cyclic Aliases
- Fix Unknown Expression Identifier Error for Remote Queries with INTERPOLATE Alias
- Fix Optimization of Arithmetic Operations in Aggregation
- Fix Aggregate Function Name Rewriting in New Analyzer
- Respond with 5xx on Client Socket Read Timeout
- Fix crash in hedged requests
- Fix Bug in Hashed and Hashed_Array Dictionary Short Circuit Evaluation
- Type Visibility Enhancement for IN Operator's Constant Parameter
Build/Testing/Packaging Improvement
8- Add support for LLVM XRay
- Unify Object Storage Implementations into a Single Class
- Refactor data part writer to eliminate MergeTreeData and DataPart dependencies
- Refactor KeyCondition and key analysis for PartitionPruner and count optimization
- Introduce Assertions for Column Size Verification in Functions
- Make network service required for ClickHouse server daemon with rc init script
- Reduce Size of Slow Tests
- Replay ZooKeeper Logs with Keeper-Bench
Experimental Feature
4New Feature
19- Allow Named Collections in ClickHouse Keeper
- Support for Empty Tuples in ClickHouse
- Add Hilbert Curve Encode and Decode Functions
- Add index analysis support for hilbertEncode
- Added support for LINESTRING geometry in WKT format with readWKTLineString function
- Allow Attachment of Parts from Different Disk
- Added generateSnowflakeID SQL function for Twitter-style ID generation
- Added merge_workload and mutation_workload settings for resource regulation
- Add Support for Comparing IPv4 and IPv6 Using = Operator
- Support Decimal Arguments in Binary Math Functions
- Added SQL functions parseReadableSize with OrNull and OrZero variants
- Add server settings to limit databases and tables on CREATE queries
- Add _time Virtual Column to File-like Storages
- Introduced base64 URL encoding and decoding functions
- Add editDistanceUTF8 function for calculating edit distance between UTF8 strings
- Add http_response_headers configuration for custom HTTP handlers
- Added loop function for infinite query results in ClickHouse
- Introduced used_privileges and missing_privileges columns in system.query_log
- Added Setting for Displaying Column Names in Long Tables
Improvement
29- SHOW CREATE TABLE Enhancements with Unique Comments for System Tables
- Second Argument of Round Functions Now Non-Const
- Hot Reload Storage Policy for Distributed Tables with New Disk
- Avoid Deadlock in MergeTree Index Analysis During Thread Scheduling
- Minor Fixes for S3 Proxy Support and Tunneling
- Improve io_uring Resubmit Visibility with New Profile Events
- Added metadata_keep_free_space_bytes setting for metadata storage disk
- Add Metrics for Directory Management and In-Memory Map Entries in Plain Rewritable Metadata Storage
- Query Cache Now Differentiates Identical Queries with Varying Settings
- Support QpsLimitExceeded as a retryable error in object storage
- Forbid converting MergeTree table to replicated if zookeeper path exists
- Added new setting for Parquet input format and updated default block size
- Allow Proxy Bypass for Specified Hosts in no_proxy Variable
- Always Start Keeper with Sufficient Global Thread Pool Threads
- User Config Settings Do Not Impact MergeTree Operations on Object Storage
- Support TotalQpsLimitExceeded as a retryable error in object storage
- Updated Advanced Dashboard to Include Maximum Concurrent Network Connections Chart
- Improve Progress Report for zeros_mt and generateRandom
- Add async metric jemalloc.profile.active for sampling activation
- Remove Importance of allow_experimental_join_condition Mark to Enable Distributed Queries
- Added Asynchronous Disk Metrics for Request Rate Limits
- Initialize global trace collector for Poco::ThreadPool
- Add validation for user creation with bcrypt_hash
- Add Profile Events for Rows Read in PREWHERE
- Print Query in EXPLAIN PLAN with Parallel Replicas
- Rename allow_deprecated_functions to allow_deprecated_error_prone_window_functions
- Respect max_read_buffer_size in file table function
- Disable Transactions for Unsupported Storages in Materialized Views
- Forbid QUALIFY Clause in Old Analyzer to Prevent Data Loss
Performance Improvement
24- Add Row Reshuffling During Insert for Size Optimization in ClickHouse
- Add Native Parquet Reader for Direct Reading to ClickHouse Columns
- Support Partial Trivial Count Optimization for Exact Ranges in Merge Tree Tables
- Reduce Memory Usage in Multi-Threaded INSERTs with Chunked Transform Collection
- Reduce Memory Usage in Azure Object Storage with Fixed Allocation
- Reduce Virtual Function Calls in ColumnNullable::size
- Speedup splitByRegexp for Single-Character Regex Argument
- Speed Up Aggregation for 8-bit and 16-bit Keys by Tracking Min and Max Keys
- Optimize IN operator with LowCardinality on the left and constants on the right
- Use Thread Pool for Hash Table Management in ConcurrentHashJoin
- Optimized vertical merges for sparse column tables
- Enabled Data Prefetching for Improved Vertical Merge Latency on Remote Filesystems
- Reduce Redundant Calls to isDefault in ColumnSparse::filter for Performance Improvement
- Speed up find_super_nodes and find_big_family commands with asynchronous requests
- Improve least/greatest functions for nullable numeric types
- Allow Merging Consequent Filtering Steps to Enhance Filter-Push-Down Optimization
- Remove Bad Optimization and Re-enable Vertical Final Algorithm by Default
- Remove ALIAS Nodes for Improved Query Performance with PREWHERE
- Re-enable OpenSSL Session Caching
- Added Settings to Control Materialization of Skip Indexes and Statistics on Inserts
- Optimize Parquet Writer Memory Usage in Single-Threaded Mode
- Improve Sparse Column Iterator to Minimize Size Calls
- Update Backup Condition for Azure Blob Storage
- Optimized Memory Usage for Vertical Merges with High Skip Indexes