v.21.2
Backward Incompatible Changes
5Bug Fixes
38- Fix index analysis for binary functions with constant arguments
- Fix Server Startup with Default Expressions in dictGet()
- Fix server crash caused by Tuple type in if function branches
- MaterializeMySQL: Fix Replication for Multi-Table Updates
- Prevent "Connection refused" Error in Docker Initialization Script
- Fix Type Checking and Simplify Code for EmbeddedRocksDB Storage
- Fix segfault in fromModifiedJulianDay for Nullable(T) integral types
- Fix inaccurate results in greatCircleAngle function
- Fix rare bug in replicated operations post-data corruption
- Background thread hang issue with ON CLUSTER queries fixed
- Fix deserialization issue with column names in ClickHouse
- Mark Distributed Batch as Broken for Empty Data Block
- Fixed Rare Bug Causing Mutation to Hang After Partition Operations
- Fix Duplicate Extremes Transform Error in Pipeline
- Fix Default Value in Join Types for Non-Zero Defaults
- Do not mark file for distributed send as broken on EOF
- Fix Pipe FD Leak for async_socket_for_remote
- Fix Infinite Reading Issue in ORC Format
- Fix Merge Tree Data Writer to Prevent Oversized Marks
- Fix startup bug in ClickHouse related to LowCardinality compression codec error
- Simplify tupleHammingDistance implementation for equal-length tuples
- Ensure groupUniqArray Handles Enum Type Correctly
- Fix Error with LowCardinality Argument in Ignore Function
- Fix Inserting LowCardinality Column in TinyLog Engine
- Fix JOIN to handle const columns correctly
- Disable optimize_move_functions_out_of_any due to incorrect optimization
- Fix QueryPipeline Exception Caused by Merging Expression Steps
- Fixed Rare Shutdown Deadlock
- Fixed Rare Crashes Due to Server Memory Exhaustion
- Fix ALTER TABLE DROP PART Behavior in ClickHouse
- Fixed issue #18894: Added check for long column aliases matching long table names
- Fix "Task not found in task queue" Error for Remote Queries
- Fix bug in mutation serialization for escaped text in ClickHouse
- ATTACH PARTITION Resets Mutations
- Fix nullptr dereference issue in bitmapOrCardinality
- Fixed CAST error for converting Nullable(String) to Nullable(Decimal).
- Fix MySQL Data Type Conversion Issue
- Fix clickhouse-client abort exception on select execution
Build/Testing/Packaging Improvements
14- Run SQLancer in CI
- Query Fuzzer Enhancements for New Tests Completion
- Integrate Big List of Naughty Strings for Enhanced Fuzzing
- Add MSan integration tests
- Fixed MemorySanitizer Errors in cyrus-sasl and musl
- Insufficient Arguments Check in positionCaseInsensitiveUTF8 Function Triggered Address Sanitizer
- Remove project-directory for docker-compose in integration tests and fix log formatting
- Made macros.xml generation easier for integration tests, reducing logging from dicttoxml.
- Allow Explicit Control of Watchdog with Environment Variable CLICKHOUSE_WATCHDOG_ENABLE
- Allow ClickHouse to Build with Kafka Support on arm64
- Allow building librdkafka without SSL
- Restore Kafka Input in FreeBSD Builds
- Fix nullptr Dereference in VALUES Table Function
- Avoid UBSan Reports in arrayElement, substring, and arraySum Functions
Improvements
36- SELECT count() can now be executed with only one column from the table
- Set charset to utf8mb4 for remote MySQL interactions
- S3 Table Function Adds Support for Auto Compression Mode
- Correctly Output Infinite Arguments for formatReadableTimeDelta Function
- Table function S3 defaults to global region when region is indeterminate
- Fix stack overflow in distributed queries with deeply nested data types in ClickHouse
- Add separate pool for message brokers RabbitMQ and Kafka
- Fix max_number_of_merges_with_ttl_in_pool limit overrun for non-replicated MergeTree
- Dictionary: Improved Error Message for Attribute Parsing
- Add Option to Disable Checksum Validation for MergeTree Tables
- Support constant result in multiIf function
- Enable function length/empty/notEmpty for Map datatype
- Add --reconnect option to clickhouse-benchmark for testing purposes
- Support for New Location of .debug File
- toIPv6 Function Enhancements for Parsing IPv4 Addresses
- Add http_referer field to system.query_log and system.processes
- Improve MySQL Compatibility with Case Insensitivity and Aliases
- Add Metrics for MergeTree Part Types
- Allow Docker Execution with Arbitrary UID
- Fix Alignment Issue of IPv4 Data Type in Pretty Formats
- Allow max_server_memory_usage change without restart
- Fix misleading NaN exception in function bar
- Explicitly Set UID/GID of ClickHouse User/Group to Fixed Values in Server Images
- Fixed PeekableReadBuffer Memory Limit Exceed Error for Huge Strings
- Docker Image Improvements for ClickHouse Server Entrypoint
- Add normalizeQueryKeepNames and normalizedQueryHashKeepNames for Improved Query Log Analysis
- Check Checksums of Distributed Batch Before Sending to Avoid INSERT Stuck Issues
- Fix RIGHT and FULL JOIN Issues with Aggregate Functions in ClickHouse
- Added Prefix-Based S3 Endpoint Settings
- Add UInt8 to UInt64 arguments support for bitmap functions
- Allow Aliasing of CTEs and Improve CSE Propagation in ClickHouse
- Update librdkafka to v1.6.0-RC2 and fix issues #18668 and #18671
- In case of unexpected exceptions restart background thread for distributed DDL queries execution
- Updated AWS C++ SDK for Global Regions in S3
- Added SUPPORT for WITH ... REFRESH Clause in LIVE VIEW Tables
- Restrict MODIFY TTL Queries for Legacy MergeTree Tables
New Features
17- Added PostgreSQL Support with Table Engine, Dictionary Source, and Database Engine
- Nested Data Type Enhancements with Support for Arbitrary Levels of Nesting and Subcolumns
- Added Nullable Support for Multiple Dictionary Types
- Adds system.distributed_ddl_queue table for DDL worker queue monitoring
- Added LDAP Group Mapping to Local User Roles
- Support Data Distribution with Sharding Keys in Cluster and Remote Table Functions
- Add decodeXMLComponent Function for XML Character Decoding
- Added parseDateTimeBestEffortUSOrZero and parseDateTimeBestEffortUSOrNull Functions
- Add sign math function
- Add Feature Usage Information to system.query_log
- Function formatDateTime Enhances Date Formatting to Include Quarter Support
- Support MetaKey+Enter Hotkey Binding in Play UI
- Add Functions for Map Data Type: Check Key Existence, Retrieve Keys and Values
- Add log_comment setting for issue #18494
- Add Tuple Argument Support to argMin and argMax Functions
- Support EXISTS VIEW syntax
- Add SELECT ALL syntax, closes #18706
Performance Improvements
11- Faster parts removal by optimizing syscalls and enhancing IDisk interface
- Aliases in WITH Statement Now Supported in Index Analysis
- Add optimize_alias_column_prediction for Aliased Column Support in Queries
- Speed Up Sum Function Performance in Synthetic Benchmarks
- Update libc++ for Improved Performance with New ABI
- Rewrite sumIf and sum(if) functions as countIf when equivalent
- Use Connection Pool for S3 with s3_max_connections Settings
- Add zstd long option support for improved string column compression
- Slight Improvement in Server Latency by Streamlining Configuration Access
- Reduce Lock Contention in Buffer Engine
- Support Splitting Filter Step in Query Plan with Expression Optimization