v.21.3
Backward Incompatible Changes
3Bug Fix
56- Fix redundant ZooKeeper reconnects and prevent multiple active sessions in ClickHouse server
- Fix Bad Cast Error for LowCardinality Column Insertion
- Fix Deadlock in ALTER DELETE Mutations for Non-Replicated MergeTree Tables
- Fix SIGSEGV in Distributed Queries on Failures
- ALTER MODIFY COLUMN queries now correctly handle partition keys, skip indices, and TTLs
- Fix join_use_nulls bug with TOTALS from subqueries
- Fix EXPLAIN Crash for Queries with UNION
- Mutations Limited to Compatible Table Engines in ClickHouse
- Fix duplicate issue in insert query (Issue #21112)
- Fix input_format_null_as_default for Nullable Types
- fix bug in casting Tuple to Map, closes #21029
- Fix metadata leak in Replicated*MergeTree with custom ZooKeeper cluster
- Fix LowCardinality Key Type Mismatch in joinGet
- Fix Default Replica Path and Name Values for Replicated MergeTree Engine
- Out of Bound Memory Access Vulnerability Fix for DateTime64 Type
- Block Parallel Insertions into Storage Join
- Fixed ALTER MODIFY COLUMN Mutation Failure Behavior
- Fix Brotli HTTP Compression Error and Update to Latest Version
- Fix empty task issue on query cancellation
- USE database query issue fixed for MySQL 5.7 client connecting to ClickHouse
- Fix -Distinct and -State Combinators in Aggregate Functions
- Fix subquery with union distinct and limit clause
- Fixed Dictionary Behavior for Absent Key Queries
- Fix thread usage for scalar subqueries and index subqueries
- Fix crash from unknown packet in remote query handling
- Add checks to directory name parsing for async INSERT to prevent SIGSEGV
- Fix transform function for floating point keys
- Fix Infinite Loop with WITH Aliases in Subqueries
- Fix abnormal server termination on HTTP client disconnect
- Fix LOGICAL_ERROR for join_use_nulls=1 in JOIN with const from SELECT
- Check for Usage of Table Function "view" in Expression List
- Avoid Invalid Dereference in RANGE_HASHED() Dictionary
- Fix Null Dereference with join_use_nulls=1
- Fix Binary Operations Between Constant Decimals of Different Scale
- Fix Excessive Retries in ReplicatedMergeTree Background Tasks
- Restrict DROP and RENAME for CollapsingMergeTree and ReplacingMergeTree Engines
- Fixed JSON handling to prevent memory allocation exceptions
- Fix exception during vertical merge for unsupported MergeTree table engines
- Fix rare server crash on config reload during shutdown
- Fix CTE in INSERT SELECT, addressing issues #20187 and #20195
- Fix for issue #19314 and PR #20156 by Ivan
- Fix toMinute Function for Accurate Timezone Handling
- Fix server crash with tuple type in if function
- MongoDB Table Engine Connection Improvements
- Bugfix in StorageJoin #20079 by vdimir
- Fix overflow issue in modulo division of negative numbers
- MaterializeMySQL: Fix Replication for Multi-Table Update Statements
- Prevent Connection Refused Error in Docker Initialization Script
- Fix Type Checking in EmbeddedRocksDB Storage System
- Fix segfault in fromModifiedJulianDay for Nullable integral types
- BloomFilter Index Crash Fix for Issue #19757
- Deadlock Fix When System Text Log is Enabled
- Fix server start issue with dictGet() default expressions
- Fix ClickHouse client abort exception on select command
- Fix bug in moving pieces to destination table with multiple clickhouse-copiers
- Background thread hang issue with ON CLUSTER queries resolved
Build/Testing/Packaging Improvement
6- Allow Global AVX-2 Enabled Builds for ClickHouse (Not Recommended for Production)
- Fix Issues Identified by Coverity
- Allow Startup with Modified Binary Under GDB
- Add Test for Kafka Compression Methods
- Fixed port clash in test_storage_kerberized_hdfs
- Print stdout and stderr to log on Docker startup failure in integration tests
Experimental Feature
3Improvement
35- Case-Insensitive Compression Methods for Table Functions
- Add Settings for Insertion Handling of Inactive Parts
- Improve MySQL Client Compatibility
- Forbid Dropping Columns Referenced by Materialized Views
- MySQL Dictionary Source Enhances Retry Mechanism for Connection Failures
- Usability Improvement: Enhanced DateTime64 Parsing for Subsecond Resolution
- Do Merging of Sorted Blocks on Initiator with Distributed Group By No Merge
- MySQL Source Configuration: Randomized Replica List for Round-Robin Endpoint Selection
- Function 'reinterpretAs' renamed to 'reinterpret'
- Support for Virtual Host in RabbitMQ Engine
- Improved Serialization for Arrays, Tuples, and Map Data Types in ClickHouse
- Fixed Race Condition in Distributed DDL Task Execution and Cleanup
- Fix DNS Functions for Alpine Images
- Do not allow early constant folding of explicitly forbidden functions
- Implicit Conversion from Integer to Decimal Type Throws ARGUMENT_OUT_OF_BOUND Error
- Lockless SYSTEM FLUSH DISTRIBUTED Implementation
- Normalize count(constant) and sum(1) to count() for Projection Query Routing
- Support Native Integer Types in Bitmap Functions
- Updated Cache Dictionaries to Use LRUHashMap as Index
- Access Management Setting Configurable at Startup in ClickHouse
- Fix DateTime64 Clamping to Match DateTime Behavior
- Quota Enhancements in SHOW TABLES and SYSTEM Queries
- Supports path IN expressions for system.zookeeper table
- Show Full Details of MaterializeMySQL Tables in system.tables
- Fix Data Race in Executable Dictionary Due to Misuse
- MYSQL_OPT_RECONNECT Option Control via Config Parameter in MySQL Replica
- Allow Inaccurate Conversion for JSONExtract to Float32 Type
- Add Conversion of Block Structure for INSERT into Distributed Tables
- Improvement to MaxDDLEntryID Initialization in system.distributed_ddl_queue Table
- Show MaterializeMySQL Tables in System Parts
- Add separate config directive for Buffer profile
- Move Non-JOIN Conditions to WHERE Clause
- Add Throttle for INSERT in Distributed Engine Based on Pending Bytes
- Fix rare write errors in destructors
- Print Inline Frames in Stack Traces for Fatal Errors
New Feature
12- Add file engine settings: engine_file_empty_if_not_exists and engine_file_truncate_on_insert
- Add deltaSum Aggregate Function for Summing Row Differences
- New event_time_microseconds Column in system.part_log Table
- Added timezoneOffset function to return UTC offset in seconds
- Add insert_shard_id setting for targeted inserts in distributed tables
- Function reinterpretAs Updated to Support Big Integers
- Added Support for Server Side Encryption Customer Keys in S3 Client
- Added implicit_key option for executable dictionary source to optimize key printing
- Add `query_selects` and `query_inserts` Quota Types
- Add extractTextFromHTML Function
- New Query Concurrency Control Settings for MergeTree Engine in Tables
- Added file function for reading files from user_files directory
Performance Improvement
15- Hedged Requests for Remote Queries to Reduce Tail Latencies
- Added PREWHERE Support with Row-Level Security in ClickHouse
- Default Enabling of Memory-Efficient Distributed Aggregation Setting
- Improve GROUP BY Performance for Multiple Fixed Size Keys
- Improve Aggregate Functions Performance with Strict Aliasing
- Speed Up Reading from Memory Tables to 50 GB/sec by Simplifying Pipeline
- Partially Reimplement HTTP Server for Improved Data Handling and Performance
- Add compress setting for Memory tables to reduce RAM usage
- Slightly Improved Code in Aggregation
- Add intDiv/modulo Specializations for Performance Improvement
- Do not squash blocks on INSERT SELECT for Memory tables
- Fix Exponential Complexity in DataType Parser (Issue #20096)
- Parallelize SELECT with FINAL for single part when setting is 1
- Fill Requested Columns in system.parts and system.parts_columns
- Perform Algebraic Optimizations in avg Aggregate Function