v.24.1
Backward Incompatible Changes
8- Setting print_pretty_type_names Enabled by Default in ClickHouse
- MergeTree Setting Deprecation and Restriction on OPTIMIZE Keyword
- Function reverseDNSQuery Deprecated
- Enable Access Control Improvements in Configuration File
- Improve sumMapFiltered operation with NaN and -0 handling
- Update to `visibleWidth` Function Behavior in ClickHouse
- Kusto Dialect Disabled Due to Bugs #59037 and #59036
- More Efficient FINAL Modifier Implementation Changes Behavior
Bug Fix
47- Add join keys conversion for nested LowCardinality
- Flatten Only True Nested Type with flatten_nested=1
- Fix bug with projections and aggregate_functions_null_for_empty during insertion
- Fixed Exception from Stale Profile UUID
- Fix Read Buffer Handling in StreamingFormatExecutor
- Ignore MVs with Dropped Target Table During View Pushing
- Eliminate race between ALTER_METADATA and MERGE_PARTS
- Fix expressions order bug in GROUP BY with ROLLUP
- Fix for Lost Blobs in Zero-Copy Replication After Dropping Broken Replica
- Allow symlink usage in user_files_path
- Fix crash when graphite table lacks agg function
- Delay Reading from StorageKafka for Multiple Reads in Materialized Views
- Fix intersecting parts issue in ClickHouse
- MergeTreePrefetchedReadPool Disabled for LIMIT Only Queries
- Enable Ordinary Databases During Restoration
- Fix Apache Hive Threadpool for ORC/Parquet Reading
- Hide Credentials in system.backup_log's base_backup_name Column
- toStartOfInterval Function Enhancement for Milliseconds and Microseconds Rounding
- Disable max_joined_block_rows in ConcurrentHashJoin
- Fix Nullable Join in Old Analyzer
- makeDateTime64: Support Non-Const Fraction Argument
- Fix NULL Dereference in Inline Frame Symbolization
- Improve Query Cache Isolation for Re-created Users and Role Switches
- Fix Partition Key Analysis in Projection Optimization
- Query cache: Fix per-user quota #58731
- Fix stream partitioning in parallel window functions
- Fix double destroy call on exception in addBatchLookupTable8
- Don't process requests in Keeper during shutdown
- Fix null pointer dereference in SlabsPolygonIndex::find
- Fix JSONExtract for LowCardinality(Nullable) Columns
- Fix memory accumulation issue during large CREATE and DROP table operations
- Multiple Read File Log Storage in MV
- Restriction on S3 Access Key ID
- Fix crash in clickhouse-local when loading suggestions
- Fix crash when indexHint is used
- Fix StorageURL Header Retention on Server Restart
- Analyzer: fix storage replacement with insertion block
- Fix seek in ReadBufferFromZipArchive
- Fix for Dropping Experimental Inverted Indices in ClickHouse
- Fix data race on query_factories_info in ClickHouse
- Disable "Too many redirects" Error Retry
- Fix Database Shutdown Deadlock Issue
- Fix LIMIT BY and LIMIT in Distributed Query
- Fix crash with nullable timezone in toString function
- Fix Iceberg Metadata Abort on Invalid File Paths
- Fix architecture name in Rust target selection
- Fix logical error in "not-ready set" for system.tables subquery IN clause
Build/Testing/Packaging Improvement
6- Improve ClickHouse Binary Aliases and Add Bash Completion
- Add CI Check for Settings Changes History
- Use S3 Tables in Stateful Tests
- Save Complete fuzzer.log Archive Instead of Last 100k Lines
- Enable Rust on macOS with Aarch64 for Fuzzy Search in Client
- Fix aggregation issue in mixed x86_64 and ARM clusters
New Feature
25- Implement Experimental Variant Data Type in ClickHouse
- Certain Settings Can Now Be Specified at Column Level in ClickHouse
- Add quantileDD Aggregate Function Using DDSketch
- Allow Configuration of Any Object Storage with Metadata Types
- Added null_status_on_timeout_only_active and throw_only_active modes for distributed_ddl_output_mode
- Add arrayShingles function for subarrays computation
- Added functions for encoding and decoding international domain names according to IDNA standard
- Added String Similarity Functions: Damerau-Levenshtein, Jaro, and Jaro-Winkler
- Add Settings for ZSTD Compression Level and Window Size in Output Methods
- Automatically Disable ANSI Escape Sequences in Non-Terminal Outputs
- Added sqidDecode Function for Sqids Decoding
- Allow Reading Bool Values as Strings in JSON Input Formats
- Added seriesDecomposeSTL function for time series decomposition
- Introduced MySQL Binlog Client for MaterializedMySQL with Multi-Database Support
- Intel QuickAssist Technology Enhances ClickHouse with ZSTD_QAT Compression Codec
- Implement New Object Storage Key Generation for S3 Disks with RE2 Regex Syntax
- Table system.dropped_tables_parts for Incompletely Removed Tables
- Add max_materialized_views_size_for_table Setting to Limit Materialized Views per Table
- clickhouse-format enhancements: INSERT query support, comment handling, and max line length option
- Attach All System Tables in ClickHouse-Local
- Support for Enum Data Types in Transform Function
- Add system.database_engines table and enable independent registration of database engines and interpreters
- Added FROM <Replicas> Modifier for SYSTEM SYNC REPLICA LIGHTWEIGHT Query
- Added setting to update insert deduplication token in dependent materialized views
- Added SYSTEM RELOAD ASYNCHRONOUS METRICS Statement for Testing and Development
Improvement
45- Added Comments to System Table Columns for Clarity and Documentation Improvement
- Allow Queries Without Aliases for Subqueries in PASTE JOIN
- Enable MySQL/MariaDB Integration on macOS
- Disable max_rows_in_set_to_optimize_join by Default
- Add host_name config parameter to avoid hostname resolution in ON CLUSTER DDL queries
- Increase load_metadata_threads to 16 for faster server startup
- Add Throttling for Merges and Mutations in ClickHouse
- Replaced and Documented Column is_hot_reloadable in system.server_settings with changeable_without_restart Enum8
- Cluster Discovery Now Supports Username and Password Settings
- Support Query Parameters in ALTER TABLE ... PART
- Create Dynamic Kafka Consumers with TTL to Improve Statistics and Prevent Memory Leaks
- sparkBar alias for sparkbar
- Avoid Sending ComposeObject Requests After GCS Upload
- Correct handling of keys with dots in XML configurations
- Make format function return constant on constant arguments
- Adding max_estimated_execution_time Setting to ClickHouse
- Provide Hint for Invalid Database Engine Name
- Add Settings for Index Type Control in Arrow Dictionary
- Implement CLICKHOUSE_PASSWORD_FILE support in Docker image
- Error Handling Improvement for Paste JOIN Queries in ClickHouse
- Better message for INVALID_IDENTIFIER error
- Improved Handling of Signed Numeric Literals in normalizeQuery
- Support Point Data Type for MySQL
- When Comparing Float32 Columns with Const Strings, Read as Float32
- Improve S3 Compatibility and Add ECloud EOS Storage Support
- Allow KILL QUERY to Cancel Backups/Restores and New Shutdown Setting in ClickHouse
- Avro format support for ZSTD codec
- MySQL Interface Enhancements in ClickHouse: Support for Timeout Settings and SQL Select Limit Fix
- Better exception message for name conflicts in dictionary and table creation
- Custom Disk Configuration for Filesystem Caches in ClickHouse
- MySQL Interface Now Compatible with SHOW WARNINGS Queries
- Skip Unavailable Replicas in Parallel Distributed INSERT SELECT
- Display Word-Descriptive Log Level with JSON Structured Formatting
- MySQL Interface Enhancements: Support for CAST to SIGNED and UNSIGNED Data Types
- Change Working Directory to Data Path in Docker Container
- Added Azure Blob Storage setting for max unexpected write error retries
- Allow server to start with broken data lake table
- Allow Ignoring Schema Evolution in Iceberg Table Engine with Caution
- Prohibit Mutable Operations on Read-Only/Write-Once Storage in ClickHouse
- Fix bug in _block_number column causing logical errors during ALTERs and merges
- Play UI Handles JSON Exceptions with Adjustments for Issues #52853 and #59303
- Binary HTTP Handler Enhancements for User and Host Specification
- Support Backups for Compressed In-Memory Tables
- Support FORMAT Clause in BACKUP and RESTORE Queries
- Function concatWithSeparator Now Supports Arbitrary Argument Types
Performance Improvement
22- Coordination for Parallel Replicas Enhanced for Scalability and Cache Locality
- Replace HTTP Buffering with ClickHouse Native Buffers and Add Metrics
- Large aggregation states of uniqExact merged in parallel for distributed queries
- Lower Memory Usage from MergeTree Tables
- Lower Memory Usage in Vertical Merges
- Avoid High Memory Usage at Keeper Startup
- Keeper Enhancement: Optimize Memory Usage for Stored Nodes
- More Cache-Friendly FINAL Implementation with Behavior Change on Sorting Output
- Bypass Extra Copying in ReadBufferFromIStream for S3 Reading
- Optimize Array Element Function for Improved Performance
- Read Column Once with Multiple Subcolumns in Compact Parts
- Rewrite AST for sum(column + constant) function in Analyzer optimization pass
- Evaluation of match function improves with skipping indices ngrambf_v1 and tokenbf_v1
- Evaluation of match function enhanced with inverted indices
- MergeTree FINAL Excludes Same Non-L0 Part Row Comparisons
- Speed up Iota Calls with Consecutive Numbers
- Speedup MIN/MAX for Non-Numeric Types
- Optimize Filter Combinations with BMI2/SSE Intrinsics
- Use one less thread in clickhouse-local
- Improve performance of multiIf function for Nullable types
- Add jemalloc Management Commands and Profiling Options
- Lower Memory Consumption in S3 Backups