v.25.1
Backward Incompatible Changes
9- JSONEachRowWithProgress: Improved Progress Display by Eliminating Zero Values
- Merge Tables Enhancements and Compatibility Considerations
- Parquet Output Format Enhancements for Date and DateTime Columns
- Don't Allow Non-Comparable Types in ORDER BY and Comparison Functions by Default
- Obsolete MaterializedMySQL Database Engine Removed
- MySQL Dictionary Source Update: Removal of SHOW TABLE STATUS Query for InnoDB Tables
- CHECK TABLE Queries Now Require Separate CHECK Grant to Prevent DoS Vulnerabilities
- h3ToGeo() Function Changes Result Order to (lat, lon)
- New MongoDB Driver Becomes Default, Legacy Option Available
Bug Fix
77- Set Parquet Compression Level Based on Codec Support
- Fixed collation locale regression error in SELECT queries
- Fix SEQUENTIAL node creation issue with keeper-client
- Fix Character Counting in Position Functions
- RESTORE Operations: Fix Permission Requirement Issue Due to Partial Revokes
- Avoid Pause After ALTER TABLE REPLACE/MOVE PARTITION and Retrieve Correct Background Task Scheduling Settings
- Fix empty tuple handling in Parquet and Arrow formats
- Column-level GRANT statements on wildcard databases now error
- Fix REVOKE ALL Issues Due to Implicit Grants
- Fix Timezone Formatting in formatDateTime Function
- Fix source port reflection for PROXYv1 with auth_use_forwarded_address set and add currentQueryID() function
- Propagate Format Settings to NativeWriter in TCPHandler
- Fix crash in StorageObjectStorageQueue
- Fix rare crash in refreshable materialized view during server shutdown
- %f Placeholder in formatDateTime Function Now Generates Six Digits Unconditionally
- Fixed Filtering by _etag Column in S3 Storage and Table Function
- Fix Not-ready Set Error in IN (subquery) Used in JOIN ON with Old Analyzer
- Fix Squashing for Dynamic and JSON Columns in ClickHouse
- Check for Corrupted Sizes in Binary Decoding to Prevent Large Allocations
- Fixed logical error in single-replica cluster with parallel replicas
- Fix ObjectStorageQueue Compatibility with ZooKeeper
- Fix to Enable Hive Partitioning by Default
- Fix Data Race in Vector Similarity Index Creation
- Fix segfault with incorrect function data in dictionary source
- Fix S3(Azure)Queue Insert Retries, Closes #70951
- Fixed tupleElement function error in LowCardinality tuples
- Fix Enum Glob Parsing Issue Followed by Range
- Fixed handling of parallel_replicas_for_non_replicated_merge_tree in subqueries
- Fix std::logical_error in task scheduling during stress tests
- Do not interpret queries in EXPLAIN SYNTAX to avoid logical errors in distributed queries
- Fix Data Inconsistency in Dynamic Column Due to Nested Column Size Mismatch
- Fixed NOT_FOUND_COLUMN_IN_BLOCK and Improved FINAL Optimizations in ClickHouse Queries
- Fix crash in LIMIT BY COLUMNS
- Fix bug with forced normal projection when query matches defined projection
- Fix deserialization issue in Dynamic/Object structure to prevent exceptions
- Skip metadata_version.txt while restoring parts from backup
- Fix segmentation fault in Enum casting with LIKE
- Fix S3 Express Bucket as Disk Issue
- Allow Merging Rows with Invalid Sign Column Values in CollapsingMergeTree Tables
- Fix error in querying DDL with offline replica
- Fix occasional failure in comparing map() types due to unnamed Map tuples
- Ignore Window Functions in GROUP BY ALL Clause Resolution
- Fix Implicit Privileges in ClickHouse
- Fix high memory usage in nested Maps creation
- Fix parsing nested JSON with empty keys
- Fix Alias Projection Issue in ClickHouse
- Ignore Azure Object Not Found Errors in Disk Initialization
- Fix any and anyLast behavior with enum types and empty table
- Fix keyword argument handling in Kafka table engine
- Fix S3Queue Settings Prefix Alteration
- Add allow_push_predicate_ast_for_distributed_subqueries Setting for AST-based Predicate Push-down
- Fix forwarded_for field issue preventing hostname resolution with port included
- Fixed Formatting for ALTER TABLE DROP STATISTICS Command
- Fix for issue #66112 by Anton Ivashkin
- Loop Engine Removed from CREATE TABLE Due to Segfaults
- Fix SQL Injection Vulnerability in PostgreSQL and SQLite Functions
- Fix Crash When Reading Subcolumn from Compressed Memory Engine Table
- Fixed Infinite Loop in System Detached Tables Queries
- Fix logical error in s3queue for failed file handling
- Fix native copy settings for RESTORE from base backup
- Fixed detached tables issue with max_block_size in database
- Fix ObjectStorage copy with differing source and destination credentials
- Fix GCS Native Copy Rewrite Method Detection in JSON API
- Fix BackgroundMergesAndMutationsPoolSize Calculation Error
- Fix bug in keeper watches leakage with Cluster Discovery enabled
- Fix UBSan Mem Alignment Issue
- Fix concurrent cleanup in KeeperMap during table creation
- Do not remove unused projection columns in subqueries with EXCEPT or INTERSECT to preserve query results
- Fixed INSERT SELECT Queries with Tuple Columns and Sparse Serialization
- Function right fails with const negative offset
- Fix gzip data insertion failure due to client-side decompression issues
- Partial Revokes with Wildcard Grants Potentially Remove Unexpected Privileges
- Keeper Fix: Resolve Log Entry Reading Issue from Disk
- Fixed Grant Requirements for SYSTEM REFRESH/START/STOP VIEW
- Fix hasColumnInTable Function to Support Alias Columns
- Fix FILE_DOESNT_EXIST Error During Data Parts Merge in Azure Blob Storage
- Fix Projection Column Name in Temporary Table Joins
Build/Testing/Packaging Improvement
1Experimental Feature
1New Feature
14- Added support for applying non-finished mutations during SELECT query execution
- Implement Iceberg Tables Partition Pruning for Time-Related Transform Operations
- Support Subcolumns in MergeTree Sorting Key and Skip Indexes
- Support Reading HALF_FLOAT Values from Apache Arrow/Parquet/ORC
- New Columns for Symbolized Stack Trace in system.trace_log Table
- Add generateSerialID function for auto-incremental numbers in tables
- Add PARALLEL syntax support for DDL queries in ClickHouse
- Added In-Memory Cache for Faster Skipping Index Queries
- Embedded Web UI Enhancements: Progress Bar, Improved Rendering, and User Experience Updates
- Add Default Min-Max Indices for MergeTree Columns
- Add script_query_number and script_line_number fields to system.query_log and ClientInfo
- Added sequenceMatchEvents aggregation function for event timestamp retrieval
- Added arrayNormalizedGini Function
- Add Minus Operator Support for DateTime64 Subtraction
Improvement
88- Support SETTINGS in CREATE TABLE with implicit ENGINE and mixed settings
- Enable use_hive_partitioning by default
- Support CAST and ALTER for JSON Types with Different Parameters
- Support Equal Comparison for JSON Column Values
- Improve Formatting of JSON Identifiers to Avoid Back Quotes
- Interactive Metrics Enhancements for Recent Updates and Display Order
- Make JSON Output Format Pretty by Default with New Setting
- Allow LowCardinality(UUID) by Default in ClickHouse
- Improved Installation Message
- Better Password Reset Message for ClickHouse Cloud
- Improve error message for non-appendable File table
- Ask for Clarification on Binary Format Requests in Terminal
- Highlight Trailing Spaces in Terminal Formats for Enhanced Clarity
- clickhouse-client and clickhouse-local Autodetect Stdin Compression from File
- Cut Long Column Names in Pretty Formats by Default
- Make Pretty Formats More Efficient by Squashing Consecutive Blocks
- Add Metric for Currently Merging Source Parts
- Highlight Columns in Vertical Format for Terminal Output
- Enhanced MySQL Compatibility for ClickHouse to Support mysqlsh Connection
- Pretty Formats Enhance Multi-Line Field Rendering in Table Cells
- Expose X-ClickHouse HTTP Headers to JavaScript
- JSONEachRowWithProgress Format Enhancements in ClickHouse
- Hourglass Smooth Rotation in Play UI
- Send Packets Immediately Even with Compressed HTTP Responses
- Improved Output Display for Large Record Sets
- Allow General Join Planning with Hash Join Enabled
- Allow bloom_filter index creation on DateTime64 columns
- When both min_age_to_force_merge_seconds and min_age_to_force_merge_on_partition_only are enabled, max bytes limit is ignored
- Added HTTP Headers for Enhanced Traceability in OpenTelemetry Span Logs
- Support Custom Time Zone for ORC File Writing
- Respect IO Scheduling Settings for Cloud Backups
- Add metric column alias name to system.asynchronous_metrics
- PR Updates ALTER TABLE MOVE PARTITION Permissions Handling
- Throw Exception for Materializing Sort Key Column
- Hide Secrets in EXPLAIN QUERY TREE
- Support Parquet Integer Logical Types in Native Reader
- Interactively Request Credentials via Browser for Password-Protected Default User
- Convert User and Role Access Types to Parameterized Grants
- Add latest_fail_error_code_name column to system.mutations for error metrics and alerts
- Reduce Allocation in ATTACH PARTITION Query
- Make max_bytes_before_external_sort Limit Based on Total Query Memory Consumption and Introduce min_external_sort_block_bytes Setting
- Ignore Memory Restrictions by Trace Collector
- Add server settings for lazy loading dictionaries in system.server_settings
- Adds max_backup_bandwidth setting to BACKUP/RESTORE queries
- Reducing Log Level in ReplicatedMergeTree Engine to Minimize Cluster Logs
- Improve Common Expression Extraction in Disjunctions
- In Storage S3Queue/AzureQueue: Add Settings for Table Creation Without Settings
- Introduce least_greatest_legacy_null_behavior Setting for NULL Handling in Functions
- Use Keeper Multi Requests in ObjectStorageQueueMetadata Cleanup Thread
- ClickHouse System-Wide Metrics Collection under cgroupζ‘δ»Ά
- Transfer of Old Ordered Tables to New S3 Structure with Buckets
- Add system.azure_queue similar to system.s3queue
- Function parseDateTime64 Correctly Handles Dates Before 1970 and After 2106
- Address Usability Issues in ClickHouse Disks
- Allow Customization of Commit Settings in S3 Queue
- Aggregate Progress in Azure S3 Queue for Commit Limit Comparison
- Support Core Settings in BACKUP/RESTORE Query
- Consider output_format_compression_level for Parquet output
- Implements Apache Arrow's fixed_size_list as an Array
- Add Memory and Null Backup Engines for Testing in ClickHouse
- Concurrent Threads Soft Limit Parameters Can Be Changed Without Server Restart
- Add Support for Extended Numeric Types in formatReadable Functions
- Support TLS for Postgres Wire Protocol Compatibility
- Function isIPv4String Incorrectly Returns True for IPv4 Address Followed by Zero Byte
- Make MySQL Wire Protocol Error Code Compatible with MySQL
- Add Setting to Validate Enum Literals in Operators
- In Storage S3(Azure)Queue, commit files in a single keeper transaction
- Disable Header Detection for Executable UDFs and Dictionaries
- Add distributed option for EXPLAIN PLAN in ClickHouse
- Use Correct Return Type for Dynamic Arguments in Not/Xor
- Allow Modifying add_implicit_sign_column_constraint_for_collapsing_engine Post Table Creation
- Support subcolumns in materialized view select query
- Three Ways to Set a Custom Prompt in ClickHouse Client
- Autodetect Secure Connection in ClickHouse Client on Port 9440
- Authenticate Users with Username Only for HTTP Handlers
- Support for Experimental PRQL and KQL Query Languages in ClickHouse
- Support Default Enum Type in Aggregate Functions
- New Keyword FOR in OPTIMIZE TABLE as Alternative to FINAL
- Add IsServerShuttingDown Metric for Shutdown Time Alerts
- Added Iceberg Table Names to EXPLAIN
- Provide Improved Error Message for RECURSIVE CTE with Old Analyzer
- Show Extended Error Messages in system.errors
- Allow Password for Client Communication with ClickHouse-Keeper
- Add error code for config reloader
- Added IPv6 Support in MySQL and PostgreSQL Functions and Engines
- Implement Short Circuit Optimization for divideDecimal
- Users Can Now Be Specified in Startup Scripts
- Add Support for Azure SAS Tokens
Performance Improvement
26- Optimized indexHint function to reduce unnecessary table reads
- More Accurate Accounting for max_joined_block_size_rows in parallel_hash JOIN Algorithm
- Support Predicate Push Down Optimization for MergingAggregated Step
- Removal of Left Table Block Splitting in Parallel Hash JOIN Algorithm Probe Phase
- Optimize RowBinary Input Format
- Write Parts with Level 1 for optimize_on_insert Enabled
- Speed up string deserialization with low-level optimization
- Prioritize Comparison of Unequal Columns in Record Merges
- Improve Grace Hash Join Performance by Re-Ranking Right Join Table Keys
- Allow parallel computation of partial area for arrayROCAUC and arrayAUCPR
- Avoid Excessive Idle Threads
- Don't list blob storage keys with curly brackets expansion in table function
- Short circuit optimization for Nullable arguments in functions
- Do not apply maskedExecute on non-function columns to enhance performance
- Disable Autodetection of Headers in Kafka, NATS, RabbitMQ, and FileLog for Performance Improvement
- Execute Pipeline with Enhanced Parallelism after Aggregation
- Reduce critical section in MergeTreeReadPool
- Parallel Replicas Performance Enhancement: Improved Packet Deserialization in Pipeline Thread
- Improve Performance of Larger Multi Requests in Keeper
- Use Log Wrappers by Value Instead of Heap Allocation
- Reestablish Background Connection to MySQL and Postgres Dictionaries
- Update Replica Error Count When Unavailable
- Added merge tree setting to control skip indexes creation during merge
- Optimize Keeper Requests in Storage (S3/Azure) Queue
- Use up to 1000 parallel replicas by default
- Improve HTTP Session Reuse for S3 Disk Reads