v.20.7
Backward Incompatible Changes
6- Function `modulo` for Floating Point Remainder Calculation in ClickHouse
- Deprecate special printing for zero Date/DateTime values
- Fix groupArrayMoving and groupArrayMovingAvg for Distributed Queries
- Add Sanity Check for MergeTree Settings
- Protect Against Low Background Pool Size in ClickHouse Configuration Changes
- Rolling Update Precautions for ClickHouse Versions Older than 20.5
Bug Fix
74- Fix Premature ON CLUSTER Timeouts for Single Replica Queries
- Fix Crash in Mark Inclusion Search
- Fix race condition in external dictionaries causing server crash
- Fix Data Clobbering by Progress Bar in Interactive Client Mode
- Fixed Sorting Order for LowCardinality Columns in Multi-Column ORDER BY
- Removed Hardcoded Timeout Overruling Query Wait Timeout Setting
- Fixed Mount Point Issue for Poco::Exception: No Space Left on Device
- Fix Query Optimization for DISTINCT in Subqueries
- Fixed Deadlock Issue in Renaming Distributed Table
- Fix Sorting Issue for FixedString Columns in Multiple Column ORDER BY
- Fix precision issues in topK and topKWeighted aggregations
- Fix MergeTree Table Reading Issue with SET INDEX and NULL Comparisons
- Fix step overflow in range() function
- Fixed "Directory not empty" error during concurrent DROP DATABASE and CREATE TABLE operations
- Add Range Check to h3KRing Function Fixing Issue #13633
- Fix Race Condition Between DETACH and Background Merges
- Fix logging settings for log_queries_min_type in ClickHouse
- Fix message in clickhouse-server.init for user and group check
- Do not optimize any(arrayJoin()) to arrayJoin() under optimize_move_functions_out_of_any.
- Fixed Deadlock in Concurrent ALTER REPLACE/MOVE PARTITION Queries
- Fixed Cache-Dictionary Behavior for Returning Values
- Fix Secondary Indices Corruption in Compact Parts
- Fix bug in netloc function related to issue #13335
- Fix parseDateTimeBestEffort function error for unix timestamps
- Fix Invalid Return Type for Tuple Comparison with NULL Elements
- Fix optimization error with aggregate function any() in queries
- Fix Race Condition in StorageMemory
- Fix empty output for Arrow and Parquet formats with zero rows
- Fix SELECT Queries with Constant Columns in ORDER BY Clause
- Fix PrettyCompactMonoBlock for clickhouse-local and address issue #7746
- Fixed Deadlock in System Text Log
- Fixed header issues in File(TSVWithNames) and CSVWithNames formats in clickhouse-local
- Fix segfault in groupArrayMovingSum for empty state deserialization
- Throw Error on arrayJoin() Function in JOIN ON Section
- Fix LEFT ASOF JOIN Crash with join_use_nulls=1
- Fix 'Totals having transform was already added to pipeline' Error on Delayed Replica Queries
- Server Crash Fix for h3ToChildren Function Vulnerability
- Fix Performance and Accuracy Issues in Float Aggregate Functions with NaN Values
- Fix KeyCondition Assertion for Monotonic Function with Type Mismatch
- Return Passed Number for MSB Set in roundUpToPowerOfTwoOrZero Function
- Fix nullable constexpr handling in if function, addressing issues #12463 and #13226
- Fix Nullable Handling in arrayElement Function
- Fix DateTime64 Conversion Functions with Constant Argument
- Fix Parsing Row Policies for Database/Table Names with Dots
- Fix access to redis dictionary after dropped connection
- Fix Index Analysis Issues with Functions in MergeTree Tables
- Fix error for remote queries using non-deterministic functions
- Fix crash for ORDER BY queries with small LIMIT
- Fix Block Structure Mismatch Error in UNION and JOIN Queries
- Corrected merge_with_ttl_timeout logic for multi-partition expiration handling
- Fix Columns Duplication in Range Hashed Dictionary from DDL Query
- Fix thread limit for local replica selects
- Fix rare bugs in simultaneous ALTER operations in ClickHouse
- Wrong Credentials Issue with ClickHouse Dictionary Source for Remote Tables
- Fix CAST with Nullable String and Enum in ClickHouse
- Fix Performance Issue with Large Tuples in IN Clause
- Fix memory tracking for input_format_parallel_parsing
- Fix optimization for any(lambda) function case
- Fixed Bloom Filter Index Issue with Const Expression in ClickHouse
- Fix SIGSEGV in StorageKafka When Broker Is Unavailable
- Add Support for `if` Function with `Array(UUID)` Arguments
- CREATE USER IF NOT EXISTS no longer throws exception if user exists
- Exception Handling Improvement for ALTER ... UPDATE in ClickHouse
- Fix Pipeline Stuck Error for External Sorting Queries
- Fix TreeExecutor Output Sorting for OPTIMIZE DEDUPLICATE
- Fix loss of alias for function result during query optimization in any()
- Remove Data for Distributed Tables on DROP TABLE
- ClickHouse Recalculates Checksums When checksums.txt is Absent
- Fix bug causing broken old parts after ALTER DELETE with mixed granularity parts enabled
- Fix race condition in live view tables to prevent data duplication
- Fix Binary Format Backwards Compatibility for AggregateFunction(avg)
- Fix JOIN Crash with Dictionary Key Expressions in ClickHouse
- Fix Large LIMIT and OFFSET Overflow Issues
- kafka: fix SIGSEGV on error message in batch
Build/Testing/Packaging Improvement
34- Use shellcheck for sh tests linting
- Add GitHub Hook Script for Pull Request Labels
- Remove Redundant Recursive Submodules
- Ensure Submodules Are from Correct URLs
- Added Support for User-Declared Settings in ClickHouse Queries
- Added RBAC Testing for INSERT Privilege and Expanded SELECT Tables in TestFlows
- Fix server restart timeout error in stress test
- Fast Test Enhanced with Server Wait and Retries
- Function materialize() in ClickHouse Now Handles NULLs Correctly
- Fix libunwind Build for AArch64
- Even More Retries in zkutil gtest to Prevent Test Flakiness
- Small Fixes to RBAC TestFlows
- Fix test for 00960_live_view_watch_events_live.py
- Improve Cache Purge in Documentation Deploy Script
- Rewritten Orphan Tests to GTest and Cleaned Up Includes
- Added tests for RBAC functionality of SELECT privilege in TestFlows
- Rerun Tests in Fast Test Check
- Fix MSan Error in rdkafka Library and Update to Version 1.5
- Fix UBSan Report in Base64 for AVX-512 Server Tests
- Fix UBSan Report in HDFS Library
- Check Backup Restoration Ability from Old to New Version
- Do not build helper_container image in integration tests; use pre-built containers instead
- Add test for ALTER TABLE CLEAR COLUMN query on primary key columns
- Increased Timeouts in Testflows Tests
- Fix Mac OS X Test Build Issue #12767
- Connector-ODBC Updated to mysql-connector-odbc-8.0.21
- Adding RBAC Syntax Tests in TestFlows
- Improve TestKeeper Performance for Replicated Tables
- Server Start Verification Post-Stress Tests Fixes Issue #12473
- Update fmtlib to version 7.0.1
- Add Docker Image for Fast Tests
- Rework Configuration Paths for Integration Tests
- Add compiler option for limiting stack frame size in fibers
- Update gitignore-files in Pull Request #13447
Improvement
32- Keep ZooKeeper Logs Minimal to Prevent Node Growth
- Exceptions Forwarded to Client on ALTER or Mutation Errors
- Add QueryTimeMicroseconds Metrics to system.events
- Added SelectedRows and SelectedBytes to system.events and other components
- Added current_database info to system.query_log
- Allow TabSeparatedRaw as Input Format
- joinGet now supports multi-key lookup
- Allow *Map Aggregate Functions to Handle Arrays with NULLs
- Fix DateTime Parsing to Avoid Negative Unix Timestamps in Timezones
- AvroConfluent: Support Skipping Broken Kafka Tombstone Records
- Fix Error Reporting for Long Queries in ClickHouse
- Fix data race in lgamma function detected by tsan
- Fix Week-Interval Formatting for Quota Statements
- Now Reports Broken Parts in Compact Part Processing
- Fix assert in geohashesInBox to resolve issue #12554
- Fix assert in parseDateTimeBestEffort to resolve issue #12649
- Minor Optimization in PipelineExecutor Loop Logic
- Support TRUNCATE table without TABLE keyword
- Fix Default Overwrite of Explain Query Format
- Allow Standardized JOIN Syntax: Use LEFT SEMI JOIN Instead of SEMI LEFT JOIN
- Changes Default Value of multiple_joins_rewriter_version to 2
- Add Metrics for S3 Request Monitoring
- Use Correct Default Secure Port for ClickHouse-Benchmark with --secure Argument
- Rollback Insertion Errors in Log, TinyLog, and StripeLog Engines
- Implement RENAME DATABASE and RENAME DICTIONARY for Atomic Database Engine with UUID Macro
- Separated AWSAuthV4Signer Logging and Streamlined AWSClient Messages
- Better Exception Message for Disk Access Storage
- Better exception handling for 'in' function with invalid argument count
- Fix adaptive granularity error message
- Fix SETTINGS Parse After FORMAT
- Fix for ALTER command hanging on MergeTree tables without ORDER BY or PARTITION BY
- Avoid History File Reloading to Prevent Session Overlaps
New Feature
13- Polygon Dictionary for Efficient Reverse Geocoding Lookups
- Added LDAP Authentication Support for Preconfigured Users
- Introduce alter_partition_verbose_result Setting for ALTER TABLE Partition Queries
- Add bayesAB function for Bayesian A/B testing
- Added system.crash_log table for collecting fatal error stack traces
- Added X-ClickHouse-Database and X-ClickHouse-Format HTTP Headers
- Add minMap and maxMap support to SimpleAggregateFunction
- Add allow_non_metadata_alters setting to restrict ALTER queries that modify disk data
- Function formatRow Added for String Formatting of SQL Outputs
- Add FROM_UNIXTIME function for MySQL compatibility
- Allow Nullable Types as Keys in MergeTree Tables with Setting Enabled
- Integration with COS in ClickHouse #12386
- Add mapAdd and mapSubtract functions for key-mapped values
Performance Improvement
12- Lower Memory Usage for Some Operations by Up to 2x
- Optimize PK Lookup for Exact PK Range Queries
- Slight Optimization for Short Queries Using LowCardinality
- Slight performance improvement for aggregation with UInt8/UInt16 keys
- Push Down LIMIT Step for Query Plan in Subqueries
- Parallel Primary Key Lookup and Index Stage Skipping on Parts
- Converting String Arguments to Enum in "if" and "transform" Functions with Optimization Setting
- Replaces Monotonic Functions in ORDER BY with Argument When Optimized
- Add Optimization to Rewrite ORDER BY in ClickHouse
- Allow Pushdown Predicate with Subquery Containing WITH Clause
- Improve Performance of Reading from Compact Parts Feature
- Implement Streaming Optimization in DiskS3 Experimental Feature