docs/changelogs/v25.5.1.2782-stable.md
geoToH3() now accepts the input in the order (lat, lon,res) (which is the standard order for geometric functions). Users who wish to retain the legacy result order (lon, lat,res) can set setting geotoh3_lon_lat_input_order = true. #78852 (Pratima Patel).full_text were renamed to gin. This follows the more familiar terminology of PostgreSQL and other databases. Existing indexes of type full_text remain loadable but they will throw an exception (suggesting gin indexes instead) when one tries to use them in searches. #79024 (Robert Schulze).allow_dynamic_cache_resize, by default false, to allow dynamic resize of filesystem cache. Why: in certain environments (ClickHouse Cloud) all the scaling events happen through the restart of the process and we would love this feature to be explicitly disabled to have more control over the behaviour + as a safety measure. This PR is marked as backward incompatible, because in older versions dynamic cache resize worked by default without special setting. #79148 (Kseniia Sumarokova).annoy and usearch. Both have been stubs for a long time, i.e. every attempt to use the legacy indexes returned an error anyways. If you still have annoy and usearch indexes, please drop them. #79802 (Robert Schulze).format_alter_commands_with_parentheses server setting. The setting was introduced and disabled by default in 24.2. It was enabled by default in 25.2. As there are no LTS versions that don't support the new format, we can remove the setting. #79970 (János Benjamin Antal).<fractional>) and some basic cast functions and functions to interact with other data types. Also, changed the existing function's name toTime to toTimeWithFixedDate because the function toTime is required for the cast function. #75735 (Yarik Briukhovetskyi).EXISTS expression in the WHERE clause. Closes #72459. #76078 (Dmitry Novik).iceberg_enable_version_hint setting to leverage version-hint.text file. #78594 (Arnaud Briche).LIKE keyword. #78597 (Yarik Briukhovetskyi).clickhouse-local (and its shorthand alias, ch) now use an implicit FROM table when there is input data for processing. This closes #65023. Also enabled format inference in clickhouse-local if --input-format is not specified and it processes a regular file. #79085 (Alexey Milovidov).icebergHash and icebergBucketTransform functions. Support data files pruning in Iceberg tables partitioned with bucket transfom. #79262 (Daniil Ivanik).stringBytesUniq and stringBytesEntropy functions to search for possibly random or encrypted data. #79350 (Sachin Kumar Singh)._part_starting_offset virtual column in MergeTree-family tables. This column represents the cumulative row count of all preceding parts, calculated at query time based on the current part list. The cumulative values are retained throughout query execution and remain effective even after part pruning. Related internal logic has been refactored to support this behavior. #79417 (Amos Bird).parallel_hash_join_threshold) to fall back to the hash algorithm when the size of the right table is below the threshold. #76185 (Nikita Taranov).parallel_inserts=true queue setting). Previously S3Queue/AzureQueue can only do first part of pipeline in parallel (downloading, parsing), INSERT was single-threaded. And INSERTs are almost always the bottleneck. Now it will scale almost linear with processing_threads_num. #77671 (Azat Khuzhin).write_marks_for_substreams_in_compact_parts. It's disabled by default for safer upgrades as it changes the compact parts storage. It will be enabled by default in one of the next releases. #77940 (Pavel Kruglov).use_skip_indexes_in_final_exact_mode. If a query on a ReplacingMergeTree table has FINAL clause, reading only table ranges based on skip indexes may produce incorrect result. This setting can ensure that correct results are returned by scanning newer parts that have overlap with primary key ranges returned by the skip index. Set to 0 to disable, 1 to enable. #78350 (Shankar Iyer).uniqExact states during the final stage of distributed aggregation. #78703 (Nikita Taranov).uniqExact states for aggregation with key. #78724 (Nikita Taranov).extractKeyValuePairs instead of regex. #79067 (Arthur Passos).LogSeriesLimiter from doing cleanup on every construction, avoiding lock contention and performance regressions in high-concurrency scenarios. #79864 (filimonov).compile_expressions (JIT compiler for fragments of ordinary expressions) by default. This closes #51264 and #56386 and #66486. #79907 (Alexey Milovidov).__attribute__((always_inline)) to convertDecimalsImpl. #79999 (Konstantin Bogdanov).input_format_parquet_bloom_filter_push_down to true by default. Also, fix a mistake in the settings changes history. #80058 (Alexey Milovidov).clickhouse-local will retain its databases after restart if you specify the --path command line argument. This closes #50647. This closes #49947. #71722 (Alexey Milovidov).s3Cluster) will now assign files to replicas for reading based on consistent hash to improve cache locality. #77326 (Andrej Hoos).divideOrNull,moduloOrNull, intDivOrNull,positiveModuloOrNull to return NULL when right argument is zero. #78276 (kevinyhzou)._part_offset in normal projection. This is the first step to build projection index. It can be used with #58224 and can help improve https://github.com/ClickHouse/ClickHouse/pull/63207. #78429 (Amos Bird).create_query and source) for system.named_collections. Closes #78179. #78582 (MikhailBurdukov).condition to system table system.query_condition_cache. It stores the plaintext condition whose hash is used as a key in the query condition cache. #78671 (Robert Schulze).Kafka table engine. This allows configuring SASL-based authentication to Kafka and Kafka-compatible systems directly in the CREATE TABLE statement rather than having to use configuration files or named collections. #78810 (Christoph Wurm).BFloat16 columns. #78850 (Robert Schulze).tokens function was extended to accept an additional "tokenizer" argument plus further tokenizer-specific arguments. #79001 (Elmi Ahmadov).recoverLostReplica same as it was done in: https://github.com/ClickHouse/ClickHouse/pull/78637. #79113 (Nikita Mikhaylov).lightweight_deletes_sync = 0, apply_mutations_on_fly = 1. #79281 (Anton Popov).ALTER ... DELETE mutations for parts in which all rows should be deleted. Now, in such cases an empty part is created instead of original without executing a mutation. #79307 (Anton Popov).allow_archive_path_syntax was marked as experimental by mistake. Add a test to prevent having experimental settings enabled by default. #79320 (Alexey Milovidov).output_format_pretty_glue_chunks. #79339 (Alexey Milovidov).FilesystemCacheCapacity - total capacity in the cache virtual filesystem. This is useful for global infrastructure monitoring. #79348 (Alexey Milovidov).'SHOW CLUSTER <name>' instead of all fields. #79368 (Tuan Pham Anh).DatabaseCatalog. #79407 (Kseniia Sumarokova).allow_experimental_delta_kernel_rs. #79418 (Kseniia Sumarokova).max_size_ratio_to_total_space. #79460 (Kseniia Sumarokova).clickhouse-benchmark reconfigure reconnect option to take 0, 1 or N as values for reconnecting accordingly. #79465 (Sachin Kumar Singh).DeltaLake storage delta-kernel implementation by default. #79541 (Kseniia Sumarokova).enable_url_encoding is correctly applied across all redirects in the chain. #79563 (Shankar Iyer).Array(BFloat16). #79745 (Shankar Iyer).system.functions now shows in which ClickHouse version functions were first introduced. #79839 (Robert Schulze).access_control_improvements.enable_user_name_access_type setting. This setting allows enabling/disabling of precise grants for users/roles, introduced in https://github.com/ClickHouse/ClickHouse/pull/72246. You may want to turn this setting off in case you have a cluster with the replicas older than 25.1. #79842 (pufit).ASTSelectWithUnionQuery::clone() method now takes into account is_normalized field as well. This might help with #77569. #79909 (Nikita Mikhaylov).*, the formatted query loses parentheses and is then parsed as a * with the EXCEPT modifier. These queries are found by the fuzzer and are unlikely to be found in practice. This closes #79950. #79952 (Alexey Milovidov).s3_slow_all_threads_after_network_error. #80035 (Vitaly Baranov).enble_url_encoding default value is now set to False. #80088 (Shankar Iyer).MergeTree table after multiple asynchronous (with alter_sync = 0) RENAME COLUMN and ADD COLUMN queries. #76346 (Anton Popov).SELECT query rewriting during VIEW creation with enabled analyzer. closes #75956. #76356 (Dmitry Novik).async_insert from server (via apply_settings_from_server) (previously leads to Unknown packet 11 from server errors on the client). #77578 (Azat Khuzhin).transform. #78247 (Yarik Briukhovetskyi).NetworkSendElapsedMicroseconds/NetworkSendBytes) for HTTP protocol with compression enabled (the error should not be more then the buffer size, usually around 1MiB). #78516 (Azat Khuzhin).Block structure mismatch error in case of INSERT SELECT into table a function with schema inference if SELECT has scalar subqueries. #78677 (Pervakov Grigorii).in function should be replaced by globalIn. #78749 (Yakov Olkhovskiy).SELECT queries that read from tables with MongoDB engine or mongodb table function: queries with implicit conversion of const value in WHERE clause (e.g. WHERE datetime = '2025-03-10 00:00:00') ; queries with LIMIT and GROUP BY. Previously, they could return the wrong result. #78777 (Anton Popov).complex_key_ssd_cache now reject zero or negative block_size and write_buffer_size parameters (issue #78314). #79028 (Elmi Ahmadov).arrayUnion() returned extra (incorrect) values on tables that had batch inserts. Fixes #75057. #79079 (Peter Nguyen).OpenSSLInitializer. Closes #79092. #79097 (Konstantin Bogdanov).argMax for types Dynamic/Variant/JSON. #79166 (Pavel Kruglov).IN it can lead to incorrect results. Proper support of this types in IN is complicated and can be done in future. #79282 (Pavel Kruglov).Block structure mismatch in several cases with tables with sparse columns. #79491 (Anton Popov).use_hedged_requests and allow_experimental_parallel_reading_from_replicas disabled. #79599 (Eduard Karacharov).formatDateTime if a variable-size formatter (e.g. %W aka. weekday Monday Tuesday, etc.) is followed by a compound formatter (a formatter that prints multiple components at once, e.g. %D aka. the American date 05/04/25). #79835 (Robert Schulze).CREATE DATABASE datalake ENGINE = DataLakeCatalog(\'http://catalog:8181\', \'admin\', \'password\'). #79941 (Han Fei).%e in SQL function parseDateTime now recognizes single-digit days (e.g. 3), whereas it previously required space padding (e.g. 3). This makes its behavior compatible with MySQL. To retain the previous behaviour, set setting parsedatetime_e_requires_space_padding = 1. (issue #78243). #80057 (Robert Schulze).Cannot find 'kernel' in '[...]/memory.stat' in ClickHouse's log (issue #77410). #80129 (Robert Schulze).clang20. #79588 (Konstantin Bogdanov).max_bytes_to_merge_at_min_space_in_pool to max_bytes_to_merge_at_max_space_in_pool. #78652 (Mikhail Artemenko).system.workloads. #78743 (Sergei Trifonov).create-pull-request GitHub action. #78748 (San Tran).CompressedReadBufferBase::addDiagnostics(). #78838 (Sergei Trifonov).Array(Bool) to Array(FixedString) conversion. #78863 (Nikita Taranov).ReservoirSampler self-merging. #79031 (Nikita Taranov).AggregatingSortedAlgorithm and SummingSortedAlgorithm. #79056 (Nikita Taranov).alwaysUnknownOrTrue is implemented by each child class and some of them were using the same implementation (the code was duplicated). #79124 (Elmi Ahmadov).FiberStack from mmap to aligned_alloc. Since this splits VMAs and under heavy load vm.max_map_count can be reached. #79147 (Sema Checherinda).MergeTree sinks. #79160 (Anton Popov).low_priority_query_wait_time_ms purpose. #79225 (Nikita Taranov).--path of clickhouse-server to read persistent log tables from the system database. In the unreleased version 25.4, it was loading only ephemeral system tables in the system database. #79235 (Alexey Milovidov).test_storage_rabbitmq::test_failed_connection for now. #79291 (Pablo Marcos).MergeTreePartInfo. #79331 (Anton Popov).ArrayCache. #79336 (Alexey Milovidov).clickhouse-benchmark will display percentage based on the max iterations if specified. #79346 (Alexey Milovidov).io_uring from tests randomization. #79349 (Alexey Milovidov).IcebegerVersionHintUsed -> IcebergVersionHintUsed IcebergPartitionPrunnedFiles -> IcebergPartitionPrunedFiles IcebergMinMaxIndexPrunnedFiles -> IcebergMinMaxIndexPrunedFiles. #79558 (Alsu Giliazova).CaseWithExpression. #79593 (Yarik Briukhovetskyi).table_disk=1 over explicit UUIDs for attaching datasets. #79632 (Azat Khuzhin).chcache with clang20. #79654 (Konstantin Bogdanov).02354_vector_search_reference_vector_types for parallel replicas. #79813 (Shankar Iyer).bind_host example to config. #79846 (Alexey Milovidov).fatal.log and stack traces in the raw logs. This PR fixes it. #79848 (Mikhail f. Shiryaev).02415_all_new_functions_must_have_version_information. #79935 (Robert Schulze).HashTablesStatistics. #79976 (Nikita Taranov).enable_user_name_access_type must not affect DEFINER access type. #80026 (pufit).02155_h3_to_center_child. #80064 (Alexey Milovidov).LOGICAL_ERROR if entry node was deleted. It can be deleted by concurrent cleanup thread running on another replica. #80214 (Mikhail Artemenko).