docs/changelogs/v25.11.1.558-stable.md
Geometry type. Support reading WKB and WKT formats for it. In previous versions, the Geometry type was aliased to String, but now it is a full-featured type. #83344 (scanhex12).\). Escaping can be disabled by changing MergeTree setting escape_variant_subcolumn_filenames (to keep compatibility disable this setting in the config for MergeTree or set compatibility setting to the previous version before upgrade). Resolves #69590. #87300 (Pavel Kruglov).LIVE VIEW feature. If you use LIVE VIEW, upgrading to the new version will not be possible. #88706 (Alexey Milovidov).http_write_exception_in_output_format is disabled by default for consistency across formats. #88818 (Kaviraj Kanagaraj).plain-rewritable disks on top of the shared object storage path, as this can lead to undefined behavior during collisions of different metadata storage transactions. #89038 (Mikhail Artemenko).Fatal when compressing data with size not aligned to element size (in T64 codec). Resolves #89282. #89432 (yanglongwei).flipCoordinates function that unwraps the required number of dimensions in an array and swaps pointers inside the Tuple column. Resolves #79469. #79634 (Sachin Kumar Singh).system.unicode table, containing a list of Unicode characters and their properties. Closes #80055. #80857 (wxybear).query_api in the <prometheus> section in the configuration file. Supported handlers are /api/v1/query_range and /api/v1/query. #86132 (Nikita Mikhaylov).IS NOT DISTINCT FROM (<=>) operator: added support for inverse IS DISTINCT FROM, support compatible numeric operands of different types (e.g., Nullable(UInt32) and Nullable(Int64)). #87581 (yanglongwei).merge_max_dynamic_subcolumns_in_wide_part to be able to limit the number of dynamic subcolumns in the Wide part after merge regardless of the parameters specified in the data type. #87646 (Pavel Kruglov).cume_dist window function. Fixes #86920. #88102 (Manuel).preprocessor in text index construction. The argument is an arbitrary expression that transforms each document before tokenization. #88272 (Jimmy Aguilar Mena).memory_usage field to X-ClickHouse-Progress and X-ClickHouse-Summary. This can be used to collect memory usage of queries in real time on the client side. #88393 (Christoph Wurm).LIMIT and OFFSET for selecting a fraction of a table. Closes #81892. #88755 (Ahmed Gouda).CREATE OR REPLACE syntax for temporary tables. Closes #35888. #89450 (Aleksandr Musorin).arrayRemove(arr, elem) to remove all elements equal to elem from the array arr. Resolves #52099. #89585 (tiwarysaurav).send_profile_events setting which allows clients to reduce network traffic when profile events are unused. #89588 (Kaviraj Kanagaraj).kafka_schema_registry_skip_bytes setting to Kafka table engine to skip envelope header bytes (e.g., AWS Glue Schema Registry's 19-byte prefix) before parsing message payload. This enables ClickHouse to consume messages from schema registries that add metadata headers. #89621 (Taras Polishchuk).midpoint scalar function that calculates average. Resolves #89029. #89679 (simonmichal).arrow_flight_request_descriptor_type setting to support Dremio and other Arrow Flight servers that require command-style descriptors. Fixes #89523. #89826 (Shreyas Ganesh).argAndMin and argAndMax functions. #89884 (AbdAlRahman Gad).send_profile_events setting which allows clients to reduce network traffic when profile events are unused. #89972 (Kaviraj Kanagaraj).Alias to experimental, can be enabled with allow_experimental_alias_table_engine=1. #89712 (Kai Zhu).SELECT queries with heavy partition pruning on tables with 10K+ parts. #85535 (James Morrison).abcd1234ef567890abcd1234ef567890 and data_file_name_prefix_length = 3, the resulting path will be: abc/d1234ef567890abcd1234ef567890. The resulting key distribution enhances load balancing across S3 partitions and reduces the risk of throttling. #88418 (Julia Kartseva).DISTINCT. Closes #86925. #88894 (Nihal Z. Miaji).ON CLUSTER queries now execute with the original query user context for better access validation. #71334 (pufit)._tags (Map(String, String)) with all the tags associated with the blob in S3 (Note, if blob does not have any tags no extra request will be done). Resolves #72945. #77773 (Zicong Qu).enable_shared_storage_snapshot_in_query by default for better consistency guarantees. There should be no downsides. #82634 (Alexey Milovidov).is_internal column to system.query_log. #83277 (Miсhael Stetsyuk).CREATE OR REPLACE TABLE queries with SELECT in clickhouse-client. This query will no longer lead to timeout even if the SELECT is quite time consuming. Resolves #38416. #87247 (Diskein).users.xml. #88139 (c-end).input_headers option to EXPLAIN query to add input headers to steps. #88311 (János Benjamin Antal).disable_insertion_and_mutation is enabled. #88549 (Alexander Tokmakov).refresh_statistics_interval means the interval of refreshing statistics cache, 0 means no cache will be created. Session setting use_statistics_cache means whether to use table-level statistics in a query. Sometimes we want better statistics so we choose to ignore it. #88670 (Han Fei).Array and Map to use the max_binary_array_size setting instead of max_binary_string_size when validating size limits. This ensures that the proper limits are applied when reading in RowBinary format. #88744 (Raufs Dunamalijevs).LockGuardWithStopWatch class and used it in the background pool for executing merges. In case a mutex was held for a second or some thread was struggling to get it within a second a warning message will be printed. Moved the heavy code from the destructor of MergeMutateSelectedEntry to finalize() method to avoid holding the lock in MergeTreeBackground executor for too long. #88898 (Nikita Mikhaylov).kafka_compression_codec and kafka_compression_level settings can now be used to specify the compression for Kafka producers in both Kafka engines. #89073 (János Benjamin Antal).hasAnyTokens or hasAllTokens functions. #89124 (Elmi Ahmadov).create_table_empty_primary_key_by_default by default. This is better for usability. #89333 (Alexey Milovidov).create_table_empty_primary_key_by_default was ineffective when you didn't specify the table engine in the CREATE TABLE query. #89342 (Alexey Milovidov).ColumnsDescription for parts, reducing memory usage when tables contain many parts and many columns. #89352 (Azat Khuzhin).allow_special_serialization_kinds_in_output_formats by default. It will lead to less memory usage and improve query speed of output of Sparse/Replicated columns in some row output formats. #89402 (Pavel Kruglov).text_index_header_cache_policy - text_index_header_cache_size - text_index_header_cache_max_entries - text_index_header_cache_size_ratio. #89513 (Elmi Ahmadov).FilesystemCacheBytes (and others) in system.asynchronous_metrics. Run SYSTEM queries on filesystem caches only once. Atomic view for caches that points to the same path in system.filesystem_caches. #89640 (Azat Khuzhin).clickhouse-client and clickhouse-local in the interactive mode will highlight identifiers in the command line that have the same name as the current one under the cursor. #89689 (Alexey Milovidov).system.view_refreshes. #89701 (Tuan Pham Anh).s3_credentials_provider_max_cache_size. #89734 (Antonio Andelic).http_response_headers setting. This is needed to allow implementation of features such as downloading the result from the cache in the Web UI. #89756 (Alexey Milovidov).Age and Expires headers when the query result cache is used. The presence of the Age header tells whether the result is from the cache, while Expires is also set at the first write. Introduce new profile events: QueryCacheAgeSeconds, QueryCacheReadRows, QueryCacheReadBytes, QueryCacheWrittenRows, QueryCacheWrittenBytes. #89759 (Alexey Milovidov).system.tables. Clicking on the table engine will bring up SHOW TABLES. #89771 (Alexey Milovidov).non_replicated_deduplication_window for tables with a disk that does not implement writing with append. Resolves #87281. #89796 (Tuan Pham Anh).system flush async insert queue. #89915 (Sema Checherinda).keep_free_space_remove_batch from 10 to 100, because it is more optimal. #90030 (Kseniia Sumarokova).rows_before_limit_at_least when there are multiple remote shards involved in a distributed merging aggregation, or there are subqueries INs. This fixes #63280. #63511 (Amos Bird).0 rows in set appearance after INSERT INTO ... SELECT query. Closes #47800. #79462 (Engel Danila).multiIf with constant arguments and short-circuit evaluation. Closes #72714. #84546 (Yakov Olkhovskiy).created_by string in correct format, e.g. ClickHouse version 25.10.1 (build 5b1dfb14925db8901a4e9202cd5d63c11ecfbb9f) instead of ClickHouse v25.9.1.1-testing. Fix parquet reader compatibility with bad files written by old parquet-mr. #87735 (Michael Kolupaev).cramersV, cramersVBiasCorrected, theilsU, and contingency. #87831 (Nihal Z. Miaji).Failed to marked query-0004647339 as finished (finished=No node, synced=No node), it's fixed. #88671 (Alexander Tokmakov).top_k to respect the threshold parameter when called with a single argument. Closes #88757. #88867 (Manuel).reverseUTF8. In previous versions, it mistakenly reversed the bytes of UTF-8 code points of length 4. This closes #88913. #88914 (Alexey Milovidov).SET DEFINER <current_user>:definer when creating a view with SQL SECURITY DEFINER. #88968 (pufit).LOGICAL_ERROR in L2DistanceTransposed(vec1, vec2, p) where the optimisation for partial QBit reading incorrectly removed Nullable from the return type when p was Nullable. #88974 (Raufs Dunamalijevs).countIf(*). Closes #89372. #89373 (Manuel).deduplicate_merge_projection_mode='ignore'. Resolves #89430. #89458 (Amos Bird).ARRAY JOIN on the right side of a JOIN with enable_lazy_columns_replication setting enabled. #89551 (Pavel Kruglov).hasAnyTokens, hasAllTokens and tokens functions concurrent executions with the sparseGrams tokenizer. Resolves #89605. #89665 (Elmi Ahmadov).enable_lazy_columns_replication. Closes #89705. #89717 (Pavel Kruglov).IN function. Closes #88343. #89850 (Nihal Z. Miaji).GROUP BY regardless optimize_injective_functions_in_group_by in old analyzer for compatibility. Resolves #89854. #89870 (Raufs Dunamalijevs).cancel on the merge task without a lock, but, in this case, the partially created resulting part will not be removed (since it was not finished and at this stage was not visible). After that, the merge task will be destroyed, which will trigger the destruction of the resulting part. This will revert the disk transaction and cause the data to be removed from S3. At the end, this garbage cleanup was executed under the merge mutate background executor lock. #89875 (Mikhail Artemenko).reverse and CAST function. Closes #89137. #89908 (Nihal Z. Miaji).SHOW DATABASES query by default. #89914 (alesapin).SHOW COLUMNS and SHOW FUNCTIONS queries. #89942 (alesapin).ARRAY JOIN inside IN and enabled enable_lazy_columns_replication setting. Resolves #90361. #89997 (Pavel Kruglov).BSONEachRow and MsgPack. Closes #89814. Closes #71536. #90018 (Nihal Z. Miaji).Column with Array type is not represented by ColumnArray column: Replicated during insertion with usage of ARRAY JOIN and enabled enable_lazy_columns_replication setting. #90066 (Pavel Kruglov).numbers system table when big step size is used. Closes #83398. #90123 (Nihal Z. Miaji).All hive partitioning columns must be present in the schema during upgrade). #90202 (Kseniia Sumarokova).SELECT queries with the enabled query condition cache. Fixes #90176. Fixes #90054. #90204 (Anton Popov).LogicalExpressionOptimizerPass. Resolves #89803. #90245 (Elmi Ahmadov).METADATA_MISMATCH and breaking creation of new replicas in the Replicated Database. #90251 (Nikolay Degterinsky).CANNOT_READ_ALL_DATA error. Resolves #90264. #90302 (Pavel Kruglov).trim, ltrim, rtrim functions not working with two arguments. Closes #90170. #90305 (Nihal Z. Miaji).L2DistanceTransposed that caused crashes when the precision argument exceeded valid range. Closes #90401. #90405 (Raufs Dunamalijevs).KeyValuePairExtractor caused data corruption or crashes during concurrent file reads. #90474 (Paresh Joshi).L2DistanceTransposed when using array reference vectors (which default to Array(Float64)) with QBit columns of non-Float64 element types (Float32, BFloat16). The function now automatically casts the reference vector to match the QBit's element type. Resolves #89976. #90485 (Raufs Dunamalijevs).equals function. Closes #88142. #90557 (Nihal Z. Miaji).concatWithSeparator function when using const non-string column. Closes #90596. #90655 (Nihal Z. Miaji).allow_statistics_optimize=1. Resolves #90626. #90664 (Azat Khuzhin).display_secrets_in_show_and_select and format_display_secrets_in_show_and_select. #90765 (Pablo Marcos).enable_shared_storage_snapshot_in_query (leads to memory leaks). #90770 (Azat Khuzhin).FindPackage from CMake. Builds should not depend on the system packages. #89380 (Alexey Milovidov).llvm-project 21.1.5. #89533 (Konstantin Bogdanov).fmtlib 12.1.0. #89534 (Konstantin Bogdanov).protoc). #89613 (Konstantin Bogdanov).prlimit check instead of shell command with arguments. #89704 (Konstantin Bogdanov).icu from release-75.1 to release-78.1. #90060 (Konstantin Bogdanov).libarchive from 3.8.1 to 3.8.2. #90062 (Konstantin Bogdanov).ConcurrentHashJoin algorithm for RIGHT and FULL JOINs"'. #89719 (Alexander Tokmakov).send_profile_events settings to reduce network flow"'. #89792 (Alexey Milovidov).ClickHouse_X_P@s$w0rd and ClickHouse will crash with a logical error if a substring like this was printed in logs utilizing the feature called "Query Masking Rules". #85893 (Nikita Mikhaylov).contrib/update_submodules.sh in CI. #88575 (János Benjamin Antal).enable_shared_storage_snapshot_in_query. #88810 (Amos Bird).03457_query_cache_log_comment. #88915 (Alexey Milovidov).s3queue_keeper_fault_injection_probability. #88965 (Nikita Fomichev).f02989_replicated_merge_tree_invalid_metadata_version.sql-test_kq50vskn, should be just the name of the test + database. This can break CI history analysis. #88994 (Mikhail Artemenko).long tag from a test. #89065 (pufit).~PooledConnection. #89090 (Miсhael Stetsyuk).Tokens. #89103 (Jimmy Aguilar Mena).~ expansion in client's history file override. #89188 (Azat Khuzhin).03232_resource_create_and_drop. #89250 (Sergei Trifonov).alter_sync=2 in 00988 instead of SYNC REPLICA. #89276 (Mikhail Artemenko).explain description for prelimit step. #89302 (Ahmed Gouda).SYSTEM FLUSH LOGS query wait for table creation even when the logs are empty. #89408 (János Benjamin Antal).thread_name column to system.trace_log table. #89475 (Sema Checherinda).cherry_pick.py by adding update:>last_90_days. #89498 (Mikhail f. Shiryaev).clang-21-tidy: fix readability-container-contains. #89531 (Konstantin Bogdanov).clang-21-tidy warnings. #89532 (Konstantin Bogdanov).store/ folder is not supported and will not be. #89546 (Mikhail Artemenko).test_scheduler_cpu_preemptive/test.py::test_downscaling[cpu-slot-preemption-timeout-1ms]. #89559 (Sergei Trifonov).03606_nullable_json_group_by. #89561 (János Benjamin Antal).00076_system_columns_bytes. #89659 (János Benjamin Antal).03652_threads_count_insert. #89726 (János Benjamin Antal).plain-rewritable disks store their in-memory files information - the byte size and last modified will be stored in the filesystem tree, which allows disabling the object cache from regular plain disks. #89754 (Mikhail Artemenko).read-only and write-once disks during duplicate search. #89839 (Mikhail Artemenko).bugprone-sizeof-expression. #89846 (Konstantin Bogdanov).optimize_const_name_size has no effect. #89910 (Alexey Bakharew).03175_sparse_and_skip_index. #90039 (János Benjamin Antal).ntile usage without PARTITION BY. #90067 (Nihal Z. Miaji).02346_text_index_hits. #90124 (Robert Schulze).ntile usage with double ORDER BY. #90140 (Nihal Z. Miaji).EXPLAIN actions = 1. #90247 (Jimmy Aguilar Mena).SYSTEM DROP TEXT INDEX CACHES. #90287 (Anton Popov).String to Nullable(String), we will not do mutation to the data. but for uniq aggregate function, it use different data strucuture: for nullable column, it will use AggregateFunctionNull with a nested uniq aggregator. the AggregateFunctionNull will serialize an extra bool flag. This will make the statistics file incompatible. The fix is add a flag to record if it is a nullable column during serialization. #90311 (Han Fei).