v.23.4
Backward Incompatible Changes
3Bug Fix
36- Fix system.query_views_log for MVs from background threads
- Fix RENAME COLUMN Bugs
- Fix minor highlighting issues in clickhouse-format
- Fix LLVM libc++ bug causing S3 upload crash for sizes > INT_MAX
- Fix Overflow Issue in sparkbar Function
- Fix Race Condition in S3
- Disable JIT for Aggregate Functions Due to Inconsistent Behavior
- Fix Minor Formatting Issues in Alter Command
- Fix RabbitMQ CPU Usage Issues in Version 23.2
- Fix EXPLAIN PIPELINE Crash for Distributed Merge
- Fix LowCardinality Serialization as Arrow Dictionary
- Reset downloader for cache file segment in TemporaryFileStream
- Fix SYSTEM SYNC REPLICA Stuck Issue on DROP/REPLACE PARTITION
- Fix startup error loading distributed table with dictionary dependency
- Don't Check Dependencies for Automatic System Table Renaming
- Update Affected Rows in KeeperMap Storage
- Fix VFS Cache Segfault Issue
- toTimeZone Function Error Without Constant String
- Fix IPv4 Logic in Protobuf and Add Date32 Support
- Changed flag in system.settings calculated incorrectly for multi-value settings
- Fix Memory Storage with Enabled Compression
- Fix bracketed-paste mode affecting password input on client reconnection
- Fix nested map for IP and UUID keys
- Fix uncaught exception in parallel loader for hashed dictionaries
- groupArray Function Works for Empty Results with Nullable Types
- Fix Keeper Bug with Non-Auth Nodes in ACL
- Allow IPv4 Comparison Operators with UInt
- Fix Cache Error #48636
- Async Inserts with Empty Data No Longer Throw Exception
- Fix table dependencies for failed RENAME TABLE
- Issue with Duplicate Columns in Primary Key Leading to Bug
- Fix Race Condition in ZooKeeper Threads
- Fix detached part name error in zero copy replication
- Fix Date32 Column Reading in Parquet/Arrow
- Fix UNKNOWN_IDENTIFIER Error in Row Policy Selection
- Fix Aggregation Issue with Empty Nullable Strings
Build/Testing/Packaging Improvement
8- Update of Multiple Time Zones
- Reduce Header File Dependencies to Speed Up Build
- Randomize Compression of Marks and Indices in Tests
- Bump internal ZSTD from 1.5.4 to 1.5.5
- Randomize vertical merges in tests
- Support CRC32 Checksum in HDFS and Improve Performance
- Remove GCC Support Remainders
- Add CI Run with New Analyzer Infrastructure
Experimental Feature
4New Feature
14- Support for quantileGK and quantilesGK Aggregate Functions with Greenwald-Khanna Algorithm
- Add SHOW COLUMNS Statement to Display Distilled Information from system.columns
- Added LIGHTWEIGHT and PULL Modifiers for SYSTEM SYNC REPLICA Query
- Add kafkaMurmurHash Function for Kafka DefaultPartitioner Compatibility
- Allow Creating Users with Current User's Grants Using GRANT CURRENT GRANTS
- Add kolmogorovSmirnovTest Statistical Aggregate Function
- Added lost_part_count column to system.replicas table for monitoring lost parts
- Add soundex function for compatibility
- Support Map Type in JSONExtract
- Add PrettyJSONEachRow Format for Pretty JSON Output
- Add ParquetMetadata Input Format for Reading Parquet File Metadata
- Add extractKeyValuePairs function for noisy string parsing
- Functions allow non-const patterns and replacements in replaceOne(), replaceAll(), replaceRegexpOne(), and replaceRegexpAll()
- Added Map Functions: mapConcat, mapSort, mapExists
Improvement
55- Increase connect_timeout_with_failover_ms to 1000 ms
- Improvements in Data Lakes: Iceberg, DeltaLake, and Hudi Enhancements
- Add Async Socket Connection and Writing with Fiber Refactor
- Support for keeper/keeper_server Config Sections as Zookeeper Alternative
- Setting Secure Flag in Named Collections for ClickHouse Dictionary
- bitCount function support for FixedString and String data types
- Added Configurable Retries for Backup Queries in ZooKeeper
- Enable use_environment_credentials for S3 by Default
- Differences Between JSON_VALUE and Spark's get_json_object Functions
- Improved Flexibility in Insert Table Structure Propagation for Table Functions
- Do not retry connecting to Keeper if query is killed or over limits
- Support Enum in BSONEachRow and Optimize Map Key Types
- Support Additional ClickHouse Types in ORC, Arrow, and Parquet Formats
- Add Columns and Modify Column Type in system.storage_policies Table
- Added Support for BACKUP ALL Command in ClickHouse
- Function mapFromArrays Supports Map Type Input
- Output of SHOW PROCESSLIST Is Now Sorted
- Per-Query and Per-Server Throttling for IO and Backups Settings
- Support Additional Types in CapnProto Format
- Don't trigger CURRENT_WRITE_BUFFER_IS_EXHAUSTED for normal behavior
- Add keeper_map_strict_mode Setting for Enhanced KeeperMap Operations
- Check Primary Key Type for Simple Dictionary and Add Compatibility Setting
- Don't Replicate Mutations for KeeperMap
- Allow unnamed tuples as nested Messages in Protobuf format
- Support for additional_table_filters and additional_result_filter in new planner with documentation update
- parseDateTime now supports '%f' format for fractional seconds
- Format string "%f" in formatDateTime() now prints "000000" for no fractional seconds, with option to restore previous behavior.
- Don't Replicate DELETE and TRUNCATE for KeeperMap
- Generate Valid Decimals and Bools in generateRandom Function
- Allow Trailing Commas in SELECT Query Expression Lists
- Override CLICKHOUSE_USER and CLICKHOUSE_PASSWORD with client parameters
- Added Retries for Data Loading in MergeTree Tables
- Add Date, Date32, DateTime, and DateTime64 Support to Array Functions
- Add Support for {server_uuid} Macro to Identify Replicas in Autoscaled Clusters
- Installation Script Enhancements: Hard Link Creation
- Support SHOW TABLE Syntax Equivalent to SHOW CREATE TABLE
- HTTP Temporary Buffers Support Virtual Filesystem Cache Data Eviction
- Make Schema Inference Work for CREATE AS SELECT
- Added replicated_max_mutations_in_one_entry setting for ReplicatedMergeTree to limit mutations per MUTATE_PART entry
- In AggregateFunction types, exclude unused arena bytes from read_bytes
- Fix MySQL-related Settings in Dictionary Source and Named Collection
- Fix crash in AWS S3 SDK caused by large max_single_part_upload_size setting
- Fix data race in RabbitMQ and refactor code
- Add aliases name and part_name for system.parts and system.part_log
- Functions Enhanced for Wide Integer Support in ClickHouse
- Multi-line History in ClickHouse-Client Improved for Natural Pasting
- Implement File Reopening Workaround for ClickHouse in LXCFS Environment
- Improve Memory Accounting for Prefetches and Randomize Settings in CI
- Correctly Set Headers for Native Copy Operations on GCS
- Add Command Line Support for Dashes and Unicode Dashes in Setting Names
- Add Fallback to Password Authentication After SSL User Certificate Failure
- Enhance Embedded Dashboard and Resolve Issues #46671 and #49036
- Add Profile Events for Log Messages by Severity
- Improved LineAsString Format Handling for DOS and macOS Classic Line Breaks
- Exception Message Enhancement for Unparsed Query Parameters
Performance Improvement
10- Improved Speed for Reading Parquet Files through Parallelized IO and Decoding
- Improving Memory Efficiency in Mutations with Short-Lived Cache for Concurrent Queries
- Only Check Dependencies When Applying ALTER TABLE Queries
- Optimize mapUpdate function
- Enhancements to Local Replica Queries and Coordinator Initialization in ClickHouse
- Do not build set for right side of IN clause with disabled skip indexes
- Query Processing Parallelization After Reading Data Sources in ClickHouse
- Lowered ThreadPool Mutex Contention to Improve Performance for Small Jobs
- Reduce memory usage for multiple ALTER DELETE mutations
- Remove Excessive Connection Attempts with skip_unavailable_shards Enabled