v.24.10
Backward Incompatible Changes
3Bug Fix
60- Apply Configuration Updates to Fix Issues #62308 and #62944
- Fix ReadSettings to Use User Set Values Instead of Defaults
- Fix type mismatch in sumMapFiltered with signed arguments
- Fix Monotonicity in toHour-like Conversion Functions with Optional Time Zone Argument
- Relax supportsPrewhere check for Merge tables
- Fix concurrency control setting handling for thread limit enforcement
- Fix JOIN ON Optimization with IS NULL Check
- Prevent Invalid Table Creation from ALTER Queries
- Fix AST Formatting for Negate and NOT Functions with Tuples and Arrays
- Fix Deserialization Issue with Incomplete Type in Dynamic
- Zero-Copy Replication: Fix Infinite Loop in Replicated Merge Tree After Restore Replica
- Return Default Value of processing_threads_num to CPU Cores in S3Queue
- Bypass try/catch flow for de/serializing nested repeated protobuf to nested columns
- Fix crash during insertion into FixedString column in PostgreSQL engine
- Fix crash in recursive view creation with specific SQL query
- Fixed maxMapState 'Bad get' Error for DateTime64 Type
- Fix getSubcolumn for LowCardinality Columns in ClickHouse
- Fix permanent block on distributed sends after DROP failure
- Fix Non-Cancellable Queries with WITH FILL and NaN Keys
- Fix analyzer default to maintain old compatibility value
- Don't Check Dependencies During CREATE OR REPLACE VIEW When Dropping Old Table
- Something for Decimal: Fixes #69730 and PR #69978 by Arthur Passos
- Definer/Invoker Support for Parameterized Views
- Fix parsing for view's definers
- Fixed timezone bug affecting Date and Date32 query results
- Fix Block Structure Mismatch for Queries with Nested Views and WHERE Condition
- Avoid Reusing Columns in Named Tuples for Tuple Function Evaluation
- Fix LOGICAL_ERROR in Range Literal Replacement
- Check for Nullable Types in ALTER TABLE MODIFY COLUMN to Prevent Issues
- Proper error message for illegal JOIN ... ON * query
- Fix incorrect result due to index skipping
- Fix data race in ColumnObject/ColumnTuple decompress method
- Fix hung issue in ALTER COLUMN with Dynamic type
- ClickHouse Enhances Error Handling for Data Parts
- Use correct max_types parameter for Dynamic type creation in JSON subcolumn
- Fix password display issue in system.query_log for bcrypt authentication
- Fix Event Counter for Native Interface
- Fix JSON Column Crash Issue
- Fix arrayMin and arrayMax Issues
- Respect allow_simdjson Setting in JSON Type Parser
- Fix null pointer dereference in materialized view creation with INTERSECT
- Don't Change Global Settings with Startup Scripts
- Fix Dynamic Type ALTER Crash Risk by Reducing max_types Parameter
- Fix crash caused by incorrect usage of WITH FILL
- Fix use-after-free in SYSTEM DROP FORMAT SCHEMA CACHE FOR Protobuf
- Fix crash in GROUP BY JSON sub-object subcolumn
- Don't Prefetch Vertical Merge Parts with No Rows
- Fix crash in WHERE with lambda functions
- Fix table creation with CREATE ... AS table_function on secondary replica
- Ignore Output on Async Insert with wait_for_async_insert=1
- Ignore frozen_metadata.txt in shadow directory traversal from system.remote_data_paths
- Fix Stateful Window Functions on Misaligned Memory
- Fixed Rare Crashes in SELECTs and Merges with Array Type Column Default Expressions
- Insert into S3 function respects query settings
- Fix infinite recursion in protobuf schema inference with unsupported field skipping enabled
- Disable enable_named_columns_in_function_tuple by default
- Fix Ineffective `processing_threads_num` in S3Queue Table Engine
- Normalize Named Tuple Arguments in Aggregation States
- Fix logical error with negative zeros in two-level hash table
- Fix limit by and limit with ties for distributed and parallel replicas
Experimental Feature
7- Refreshable Materialized Views Now Supported in Production for Replicated Databases
- Parallel Replicas Transition from Experimental to Beta with New Settings in ClickHouse
- Support for Dynamic Type in Functions
- Allow JSON Type to be Read/Written as Binary String in RowBinary Format
- Allow JSON column to be serialized/deserialized as String in Native format
- Introduced experimental merge selector mode for MergeTree tables
- Implement Ser/De for Avro Union and ClickHouse Variant Types
New Feature
18- Allow Wildcard Prefix Access in GRANT SELECT Command
- Real-time Metrics Table in ClickHouse Client with Space Bar Toggle
- Allow Caching of Read Files for Object Storage Tables and Data Lakes
- Support for Creating Cloned Tables with MergeTree in ClickHouse
- Add system.query_metric_log for Query Memory and Metric History
- A Simple SELECT Query with Implicit SELECT for Calculator-Style Expressions
- Support --copy Mode for ClickHouse Local as Shortcut for Format Conversion
- Add Builtin HTML Page for Visualizing Merges at /merges Path
- Add Support for arrayUnion Function
- Allow Parameterized SQL Aliases
- New Aggregate Function quantileExactWeightedInterpolated for Enhanced Accuracy
- New Function arrayElementOrNull Returns NULL for Out of Range Indexes and Missing Map Keys
- Enhancement: Add Regular Expression Filtering for Logging in config.xml
- Added RIPEMD160 Function for Cryptographic Hashing in ClickHouse
- Support Iceberg Tables on HDFS
- Support for CTE in INSERT Statements
- MongoDB Integration Enhancement in ClickHouse
- New function getSettingOrDefault added to improve default value retrieval
Improvement
41- CREATE TABLE AS in ClickHouse Copies Key Clauses
- Support for 64-bit XID in Keeper with Configuration Option
- Command-line Args Default Bool to True When No Value Provided
- Added user-level settings to prevent insertions on nearly full disks
- Embedded Documentation for Settings: Enhanced Completeness and Auto-Generation from Source Code
- Allow empty needle in replace function for PostgreSQL compatibility
- Allow Empty Needle in replaceRegexp Functions
- Symbolic Links for Table Paths Based on Storage Policy
- Parsing JSON Enum Fields Now Interprets Integer Strings as Enum Elements
- Allow TRIM -ing LEADING or TRAILING empty string as no-op
- Improve cast(timestamp as String) Compatibility with Spark
- Always Use New Analyzer for Constant Expression Calculation
- Add enable_secure_identifiers setting to restrict special characters in identifiers
- Add show_create_query_identifier_quoting_rule for Identifier Quoting in SHOW CREATE TABLE
- Improve Access Entities Dependency Restoration
- Fix terminal echo behavior in ClickHouse client during slow startup
- Add readonly_duration column to system.replicas table for replica distinction
- Change join_output_by_rowlist_perkey_rows_threshold to unsigned integer
- Enhance OpenTelemetry Span Logging with Query Settings
- Add Diagnostic Info for Higher-Order Array Functions
- Keeper Improvement: Reduced Locking During Cluster Changes
- Add WITH IMPLICIT and FINAL to SHOW GRANTS Command and Fix Bug with Implicit Grants
- Respect Compatibility for MergeTree Settings on Server Startup
- Avoid Spamming Logs with Large HTTP Response Bodies During Inter-Server Communication Errors
- Added max_parts_to_move setting for part movement control
- Limit Frequency of Specific Log Messages
- CHECK TABLE with PART qualifier formatting issue in client fixed
- Support Column and Offset Index Writing with Parquet Native Writer
- Support DateTime64 Parsing with Microseconds and Timezone in Joda Syntax
- Changed Approach to Determine Cloud Storage Batch Delete Support
- Support for Parquet page v2 in native reader
- Check for Storage Policy and Disk Compatibility in ClickHouse
- Add system.s3_queue_settings and system.azure_queue_settings
- Functions base58Encode and base58Decode Now Support FixedString Arguments
- Add partition column to all entry types in part log
- Add MergeStart and MutateStart Events to system.part_log for Merges Analysis
- Add Profile Event for Merged Source Parts Monitoring
- Background Downloads to Filesystem Cache Re-enabled
- Add Trivial Merge Selector Algorithm for Professional Use
- Support for Atomic CREATE OR REPLACE VIEW
- Added strict_once mode to windowFunnel function to prevent duplicate event counts
Performance Improvement
15- Refactor IDisk and IObjectStorage for Enhanced Performance and Cost Efficiency
- Added Ability to Parse Data into Sparse Columns
- Improved Parsing Performance for Formats with High Missed Values
- Supports Parallel Reading and Prefetching of Parquet Row Groups
- Support minmax index for pointInPolygon
- Use Bloom Filters for Reading Parquet Files
- Lock-free Parts Rename Improves SELECT Performance with Parallel INSERT in ReplicatedMergeTree
- Respect ttl_only_drop_parts in materialize ttl process
- Optimized Thread Creation in ThreadPool for Enhanced Performance Under Load
- Enable LowCardinality string columns reading from ORC
- Use LowCardinality for ProfileEvents in system logs
- Improve performance of fromUnixTimestamp/toUnixTimestamp functions
- Don't Disable Nonblocking Read from Page Cache for Entire Server Under Blocking I/O
- ALTER TABLE REPLACE PARTITION No Longer Waits for Mutations/Merges in Other Partitions
- Don't Validate ACL Synchronization from Keeper to Improve Server Startup Time