跳到主要内容
跳到主要内容

v25.6 Cloud 版本更新日志

向后不兼容的变更

  • 函数 geoToH3() 现在按照 (lat, lon, res) 的顺序接收输入(这是几何函数的标准顺序)。如果用户希望保留旧版结果顺序 (lon, lat, res),可以将设置项 geotoh3_lon_lat_input_order 设为 true#78852Pratima Patel)。
  • 类型为 full_text 的索引已重命名为 gin。这与 PostgreSQL 和其他数据库中更常见的术语保持一致。现有的 full_text 类型索引仍然可以加载,但在尝试在查询中使用它们时会抛出异常(并建议改用 gin 索引)。#79024Robert Schulze)。
  • 新增文件系统缓存设置 allow_dynamic_cache_resize,默认值为 false,用于允许对文件系统缓存进行动态缩放。原因:在某些环境(例如 ClickHouse Cloud)中,所有扩缩容事件都是通过重启进程来完成的,我们希望显式禁用该特性,以便更好地控制行为,并作为一项安全措施。此 PR 被标记为向后不兼容,因为在旧版本中,动态缓存缩放在没有任何特殊设置的情况下默认启用。#79148Kseniia Sumarokova)。
  • 移除了对旧版索引类型 annoyusearch 的支持。二者长期以来实际上都只是占位符,即每次尝试使用这些旧索引都会返回错误。如果你仍然有 annoyusearch 索引,请将其删除。#79802Robert Schulze)。 #* 移除 format_alter_commands_with_parentheses 服务器设置。该设置在 24.2 版本中被引入且默认禁用,在 25.2 版本中默认启用。由于不存在不支持新格式的 LTS 版本,我们可以移除此设置。#79970János Benjamin Antal)。 #* 次要变更:强制 backup_threadsrestore_threads 服务器设置为非零值。#80224Raúl Marín)。
  • 修复 bitNot() 针对 String 类型的行为,使其返回以零字节结尾的字符串。#80791Azat Khuzhin)。

新功能

  • 在 MergeTree 的 SETTINGS 中新增一个选项,用于在 CREATE 查询未为给定列显式指定压缩编解码器时设置默认压缩编解码器。此变更关闭了 #42005#66394gvoelfin)。
  • 作为对 https://github.com/ClickHouse/ClickHouse/pull/71943 的跟进。此 PR 实现了 Time/Time64 数据类型。新增的数据类型包括:Time(HHH:MM:SS)和 Time64(HHH:MM:SS.<fractional>),以及一些基础的类型转换函数和与其他数据类型交互的函数。同时,将现有函数名 toTime 更名为 toTimeWithFixedDate,因为 toTime 这个函数名需要保留给类型转换函数使用。#75735Yarik Briukhovetskyi)。
  • WHERE 子句中的 EXISTS 表达式现在支持将关联子查询作为参数。修复 #72459#76078Dmitry Novik)。
  • 允许对 Merge 表引擎进行写入操作。 #77484 (Anton Ivashkin).
  • 现在,针对复制 MergeTree 表的分布式 INSERT SELECT 能够更高效地利用并行副本,通过在不同节点上选择不同的数据并独立执行 INSERT 操作来实现并行化。#78041 (Igor Nikonov)。
  • 新增 mapContainsValuesLike/mapContainsValues/mapExtractValuesLike 函数,用于按 map 值进行过滤,并支持在基于 Bloom 过滤器的索引中使用。#78171 (UnamedRus)。
  • 新增 system.iceberg_history 表。#78244Smita Kulkarni)。
  • 为工作负载新增了查询槽位调度功能,详情参见 https://clickhouse.com/docs/operations/workload-scheduling#query_scheduling#78415Sergei Trifonov)。
  • 添加 getServerSettinggetMergeTreeSetting 函数。解决 https://github.com/clickhouse/clickhouse/issues/78318#78439 (NamNguyenHoai)。
  • 在设置约束中支持不允许的值。#78499 (Bharat Nallan).
  • 新增 iceberg_enable_version_hint 设置项,以使用 version-hint.text 文件。#78594 (Arnaud Briche).
  • 支持基于 LIKE 关键字的过滤,从数据库中截断特定表。#78597 (Yarik Briukhovetskyi)。
  • clickhouse-local(及其简写别名 ch)现在在存在待处理输入数据时,会隐式使用 FROM table,从而解决了 #65023。同时,在处理普通文件且未指定 --input-format 时,也在 clickhouse-local 中启用了格式推断。#79085Alexey Milovidov)。
  • 添加 icebergHashicebergBucketTransform 函数。支持对使用 bucket transfom 分区的 Iceberg 表进行数据文件裁剪。#79262Daniil Ivanik)。
  • 添加对 Coalescing Merge Tree 的支持。此更改解决了 #78869#79344Konstantin Vedernikov)。
  • 添加 stringBytesUniqstringBytesEntropy 函数,用于搜索可能为随机或已加密的数据。#79350Sachin Kumar Singh)。
  • 在 MergeTree 系列表中支持 _part_starting_offset 虚拟列。该列表示在当前 part 列表中位于其之前的所有 part 的累积行数,并在查询时计算。累积值在整个查询执行过程中都会被保留,即使在 part 裁剪之后仍然有效。为支持此行为,相关内部逻辑已重构。#79417Amos Bird)。
  • 添加了设置 enable_shared_storage_snapshot_in_query,用于在单个查询中让所有子查询共享同一存储快照。这样可以确保即使在查询中多次引用同一张表时,对该表的读取结果也始终保持一致。 #79471 (Amos Bird)。
  • 支持将 CH JSON 列写入 Parquet 文件,并将 Parquet 中的 JSON 列直接读取为 CH JSON 列。#79649 (Nihal Z. Miaji).
  • chdig 打包到 ClickHouse 中,作为 ClickHouse 的一部分提供类似 top 的 TUI 界面。 #79666 (Azat Khuzhin).
  • pointInPolygon 添加 MultiPolygon 支持。 #79773 (Nihal Z. Miaji).
  • 支持 Geo Parquet。此更改关闭了 #75317#79777Konstantin Vedernikov)。
  • 通过 deltaLakeLocal 表函数,新增对查询挂载在本地文件系统上的 Delta 表的支持。#79781 (roykim98).
  • 添加了 Base32 编码/解码功能。#79809 (Joanna Hulboj)。
  • ClickHouse 向量搜索现在支持预过滤和后过滤,并提供相关设置,以便实现更精细的控制。(issue #78161). #79854 (Shankar Iyer).
  • 支持读取 WKB 格式的函数。此更改部分解决了 #43941#80139Konstantin Vedernikov)。
  • 新增设置 cast_string_to_date_time_mode,用于在从 String 类型进行转换时选择 DateTime 的解析模式。 #80210 (Pavel Kruglov).
  • 新增了 Bech32Bech32m 编码与解码函数(对应 issue #40381)。#80239George Larionov)。
  • 在 Atomic 和 Ordinary 数据库引擎中支持 disk 设置,可指定用于存储表元数据文件的磁盘。#80546 (Tuan Pham Anh)。
  • 新增用于解包和比较 MergeTree 部件的函数。 #80573 (Mikhail Artemenko).
  • timeSeries* 辅助函数,用于在处理时序数据时加速某些使用场景: - 将数据重新采样为具有指定起始时间戳、结束时间戳和步长的时间网格 - 计算类似 PromQL 的 deltarateideltairate#80590 (Alexander Gololobov).
  • 允许按所在磁盘过滤选定用于查询的 part。#80650 (tanner-bruce)。
  • 添加一个包含嵌入式 Web 工具列表的着陆页。当被类似浏览器的用户代理访问时会打开。#81129 (Alexey Milovidov)。
  • 支持在 arrayFirstarrayFirstIndexarrayLastarrayLastIndex 中过滤 NULL 值。修复了 #81113#81197Lennard Eijsackers)。

实验特性

  • 用于 Iceberg 数据湖的 Hive metastore 目录。 #77677 (Konstantin Vedernikov)。
  • 通过键值对形式支持显式参数。目前支持的参数包括一个必需的 tokenizer,以及两个可选的 max_rows_per_postings_listngram_size#80262 (Elmi Ahmadov)。
  • 实验性索引类型 gin 已重命名为 text。现有的 gin 类型索引仍然可以加载,但在尝试在搜索中使用它们时会抛出异常(并建议改用 text 索引)。 #80855 (Robert Schulze)。

性能优化

  • 通过一次性在多个数据粒度上计算表达式来加速二级索引。#64109Alexey Milovidov)。
  • 引入了一个阈值(通过设置 parallel_hash_join_threshold 进行控制),当右表大小低于该阈值时,会回退到使用 hash 算法。#76185Nikita Taranov)。
  • 现有的 Pipe::resize 实现会创建单个 ResizeStrictResize 节点,并将其插入到 pipeline 拓扑中。该节点随后充当中心枢纽,将所有输入流(上游节点)连接到一组统一的输出流(下游节点)。这种设计在 pipeline 图执行期间会对 ExecutingGraph::Node::status_mutex 造成竞争,尤其是在高核心数环境中。当 pipeline 扩展到数十甚至数百个流时,这种竞争会导致:&#77562 (Zhiguo Zhou)。
  • 通过允许并行执行 INSERT 数据操作(可通过队列设置 parallel_inserts=true 启用),提升 S3Queue/AzureQueue 的性能。之前 S3Queue/AzureQueue 只能并行执行流水线的第一部分(下载、解析),而 INSERT 是单线程的,并且 INSERT 几乎总是瓶颈。现在性能将几乎随 processing_threads_num 线性扩展。#77671Azat Khuzhin)。
  • 将紧凑部件格式更改为为每个子流保存 marks,以便能够读取各个子列。旧的紧凑格式在读取时仍受支持,并且可以通过 MergeTree 设置 write_marks_for_substreams_in_compact_parts 在写入时启用。由于这会改变紧凑部件的存储方式,为了更安全地进行升级,该设置默认是禁用的。它将在接下来的某个版本中默认启用。#77940Pavel Kruglov)。
  • 引入了新的设置 use_skip_indexes_in_final_exact_mode。如果对 ReplacingMergeTree 表的查询包含 FINAL 子句,仅根据跳过索引选择要读取的表数据范围可能会产生不正确的结果。该设置可以通过扫描与跳过索引返回的主键范围有重叠的较新数据分片,确保返回正确结果。设置为 0 表示禁用,1 表示启用。#78350Shankar Iyer)。
  • 现在,我们根据副本数量来确定在启用并行副本读取时的任务规模。当需要读取的数据量不大时,这可以在副本之间实现更合理的任务分配。#78695Nikita Taranov)。
  • 允许在分布式聚合的最终阶段对 uniqExact 状态进行并行合并。#78703Nikita Taranov)。
  • 修复在带键的聚合中并行合并 uniqExact 状态时可能出现的性能下降问题。#78724 (Nikita Taranov). #* 将 DELETE FROM ... WHERE 1 查询替换为 TRUNCATE。(后又回退)。#78739 (Konstantin Vedernikov).
  • 减少对 Azure 存储的 List Blobs API 调用次数。#78860 (Julia Kartseva)。
  • 如果可能,将过滤步骤中的等值条件合并到 JOIN 条件中,以便可以将其用作哈希表键。#78877 (Dmitry Novik)。
  • 通过使用 extractKeyValuePairs 替代正则表达式来提升 Hive 路径解析性能。#79067 (Arthur Passos)。
  • 优化带并行副本的分布式 INSERT SELECT 的性能。#79441Azat Khuzhin)。
  • 允许将包含子列的条件移动到 PREWHERE#79489 (Pavel Kruglov)。
  • 对所有布隆过滤器类型进行了性能优化。 #79800 (Delyan Kratunov).
  • 防止 LogSeriesLimiter 在每次创建时都执行清理操作,从而避免在高并发场景下出现锁竞争和性能退化。#79864 (filimonov)。
  • 默认启用 compile_expressions(用于普通表达式片段的 JIT 编译器)。由此关闭了 #51264#56386#66486#79907Alexey Milovidov)。
  • 通过简单计数优化加速查询。 #79945 (Raúl Marín).
  • UniqExactSet::merge 中引入了一个用于其中一个集合为空时的优化路径。此外,现在如果左侧集合(LHS)是双层结构而右侧集合(RHS)是单层结构,我们将不再将 RHS 转换为双层结构。#79971 (Nikita Taranov)。
  • convertDecimalsImpl 添加 __attribute__((always_inline))#79999 (Konstantin Bogdanov).
  • 默认将 input_format_parquet_bloom_filter_push_down 设置为 true。同时修正设置变更记录中的一个错误。#80058 (Alexey Milovidov)。 #* 默认将日志记录改为异步方式。你可以通过在 <logger> 下将 <async> 设置为 false 来禁用该行为。#80125 (Raúl Marín)。
  • 在使用两级哈希表时,提高内存复用效率并减少缺页中断。 #80245 (Jiebin Sun).
  • QueryConditionCache 中避免不必要的更新并减少锁争用。#80247 (Jiebin Sun)。
  • concatenateBlocks 做了小幅优化,有利于提升并行 Hash join 的性能。#80328 (李扬)。
  • 在从主键范围中选择标记范围时,如果主键被函数包裹,则无法使用二分查找。此 PR 改进了这一限制:当主键被一串始终单调的函数调用链包裹时,仍然可以应用二分查找;或者当 RPN 中包含一个始终为真的元素时,也可以应用二分查找。此 PR 关闭了 #45536#80597zoomxi)。
  • 提高 Kafka 引擎的关闭速度(当存在多个 Kafka 表时去除额外的 3 秒延迟)。#80796 (Azat Khuzhin).
  • 降低异步插入的内存占用,并提升插入查询的性能。#80972Raúl Marín)。
  • 在日志表被禁用时,不要对处理器进行性能分析(profiling)。#81256 (Raúl Marín)。
  • 当源数据已完全满足请求要求时,加速执行 toFixedString#81257 (Raúl Marín).
  • 如果用户不受限,则不要处理配额值。 #81549 (Raúl Marín).
  • 将 ProcfsMetricsProvider 设为 thread_local,以在任务之间保持文件保持打开状态。#81576 (Raúl Marín)。
  • 修复了内存跟踪的性能回归问题。 #81694 (Michael Kolupaev).

改进

#* 如果指定 --path 命令行参数,clickhouse-local 将在重启后保留其数据库。这解决了 #50647。这解决了 #49947#71722 (Alexey Milovidov)。

  • EXPLAIN SYNTAX 现在使用新的分析器。它返回一个基于查询树构建的抽象语法树(AST)。新增选项 query_tree_passes,用于控制在将查询树转换为 AST 之前要执行的遍数。#74536 (Vladimir Cherkasov)。 #* 在文件系统缓存中默认使用 SLRU 缓存策略。#75072 (Kseniia Sumarokova)。
  • 重构了向视图推送数据的逻辑。#77309 (Sema Checherinda).
  • 对象存储集群表函数(例如 s3Cluster)现在会基于一致性哈希为各副本分配待读取的文件,以提升缓存局部性。#77326Andrej Hoos)。
  • 在出现 AuthenticationRequired 错误后刷新 S3 凭证。 #77353 (Vitaly Baranov).
  • 借助构建器将代理配置嵌入到部分 HTTP 缓冲区中。#77693Arthur Passos)。
  • system.asynchronous_metrics 添加了字典相关指标 - DictionaryMaxUpdateDelay - 字典更新的最大延迟(以秒为单位)。 - DictionaryTotalFailedUpdates - 自上次成功加载以来在所有字典中发生的错误总数。 #78175 (Vlad).
  • 添加函数 divideOrNullmoduloOrNullintDivOrNullpositiveModuloOrNull,在右侧参数为零时返回 NULL。 #78276 (kevinyhzou).
  • isIPAddressInRange 函数扩展以支持 String、IPv4、IPv6、Nullable(String)、Nullable(IPv4) 和 Nullable(IPv6) 数据类型。#78364YjyJeff)。
  • 动态调整 PostgreSQL 引擎的连接池设置。 #78414 (Samay Sharma).
  • 允许在常规 projection 中指定 _part_offset。这是构建 projection 索引的第一步。它可以与 #58224 一起使用,并有助于改进 https://github.com/ClickHouse/ClickHouse/pull/63207#78429Amos Bird)。
  • 改进了分布式查询中的分片键优化。#78452 (fhw12345)。
  • system.named_collections 添加新列(create_querysource),修复了 #78179 中的问题。 #78582MikhailBurdukov)。
  • 在系统表 system.query_condition_cache 中新增字段 condition。该字段存储明文条件,其哈希值被用作查询条件缓存中的键。#78671 (Robert Schulze)。
  • 使用 ClickHouse Keeper 为 StorageKafka2 实现类似于 Kafka rebalance 的逻辑。对于每个副本,我们支持两种类型的分区锁:永久锁和临时锁。副本会尽可能长时间地保持永久锁,在任意时刻,副本上的永久锁数量不超过 all_topic_partitions / active_replicas_count(其中 all_topic_partitions 是所有分区的数量,active_replicas_count 是活动副本的数量),如果超过该数量,副本会释放部分分区。一些分区会被副本临时持有。副本上临时锁的最大数量会动态变化,以便让其他副本有机会将某些分区获取为永久锁。在更新临时锁时,副本会释放其持有的所有临时锁,并再次尝试获取其他分区。#78726Daria Fomina)。
  • Kafka 表引擎新增用于 SASL 认证配置和凭证的表设置。这样就可以在 CREATE TABLE 语句中直接为 Kafka 及兼容 Kafka 的系统配置基于 SASL 的认证,而无需使用配置文件或命名集合。#78810 (Christoph Wurm)。
  • 添加警告,提示数据库可能是为保存损坏表而创建的。#78841János Benjamin Antal)。
  • 现在可以在 BFloat16 列上创建向量相似度索引。#78850 (Robert Schulze)。
  • 在 DateTime64 的尽力解析模式下,支持带有小数部分的 Unix 时间戳。#78908 (Pavel Kruglov)。
  • 在存储 DeltaLake 的 delta-kernel 实现中修复 columnMappingMode.name 问题,并为架构演进添加测试。#78921 (Kseniia Sumarokova)。
  • 改进 Values 格式向 Variant 列插入时的值转换逻辑。 #78923 (Pavel Kruglov).
  • S3Queue 引擎中新增 _time 虚拟列。 #78926 (Anton Ivashkin).
  • tokens 函数已扩展为接受一个额外的“tokenizer”参数,以及更多 tokenizer 特定的参数。#79001 (Elmi Ahmadov)。
  • SHOW CLUSTER 语句现在会展开其参数中的宏(如果有)。#79006arf42)。
  • 哈希函数现在支持在数组、元组和映射中处理 NULL 值。(问题 #48365#48623)。#79008Michael Kolupaev)。
  • 支持在只读 MergeTree 表中执行刷新操作。 #79033 (Alexey Milovidov). #* 将 cctz 更新到 2025a。 #79043 (Raúl Marín).
  • 使用于控制 CPU 过载时是否断开连接的设置支持热重载。 #79052 (Alexey Katsman)。
  • 这提高了可用性。#79066Alexey Milovidov)。
  • 默认启用查询条件缓存功能。#79080Alexey Milovidov)。
  • recoverLostReplica 过程中移除设置,方式与 https://github.com/ClickHouse/ClickHouse/pull/78637 中的做法相同。#79113Nikita Mikhaylov)。
  • 为 Parquet 索引裁剪添加 ProfileEvents ParquetReadRowGroups 和 ParquetPrunedRowGroups。 #79180 (flynn).
  • 为 Azure Blob Storage 上的普通磁盘在 system.tables 中报告的数据路径添加容器前缀,使其与 S3 和 GCP 的报告方式保持一致。#79241Julia Kartseva)。
  • 支持在集群中修改数据库。#79242 (Tuan Pham Anh).
  • 显式跳过 QueryMetricLog 中遗漏的统计采集任务,否则日志需要很长时间才能追上当前时间。#79257 (Mikhail Artemenko)。
  • 新增了即时应用轻量级删除的能力(通过设置 lightweight_deletes_sync = 0apply_mutations_on_fly = 1)。#79281Anton Popov)。
  • 针对需要删除所有行的数据部件,优化了 ALTER ... DELETE mutation。现在,在这种情况下会直接创建一个空部件来替代原始部件,而无需执行 mutation。#79307 (Anton Popov).
  • CHColumnToArrowColumn 进行了一些小优化。#79308Bharat Nallan)。
  • 将设置 allow_archive_path_syntax 误标为实验性。添加了一个测试,以防止实验性设置默认启用。#79320 (Alexey Milovidov).
  • 使页面缓存设置可以按单个查询进行调整。这有助于加快实验速度,并支持对高吞吐量和低延迟查询进行精细调优。 #79337 (Alexey Milovidov)。
  • 不要对看起来像绝大多数 64 位哈希值的数字使用美化格式打印数值提示。此更改关闭了 #79334#79338Alexey Milovidov)。
  • 如果在终端中以 pretty 格式显示数据,并且后续数据块的列宽相同,则可以在前一个数据块的基础上继续输出,通过上移光标将其与前一个数据块拼接在一起。从而解决了 #79333。该功能由新的设置 output_format_pretty_glue_chunks 控制。#79339Alexey Milovidov)。
  • 高级仪表板中图表的颜色将根据相应查询的哈希值计算得出。这样,在滚动仪表板时就更容易记住并找到某个图表。#79341Alexey Milovidov)。
  • 添加了异步指标 FilesystemCacheCapacity——cache 虚拟文件系统的总容量。此指标对于全局基础设施监控非常有用。#79348 (Alexey Milovidov)。
  • 优化对 system.parts 的访问(仅在需要时读取列/索引大小)。 #79352 (Azat Khuzhin).
  • 在执行查询 'SHOW CLUSTER <name>' 时,仅选择重要字段,而不是所有字段。#79368 (Tuan Pham Anh)。
  • 支持为 DatabaseCatalog 指定存储设置。 #79407 (Kseniia Sumarokova).
  • 在 delta 内核中支持本地存储。#79416 (Kseniia Sumarokova)。
  • 添加一个查询级别的设置项以启用 delta-kernel-rs:allow_experimental_delta_kernel_rs#79418Kseniia Sumarokova)。
  • 修复从 Azure/S3 Blob 存储列出 Blob 时可能出现的无限循环问题。#79425 (Alexander Gololobov).
  • 现在,ClickHouse 也支持将查询参数写为 param-<name>(短横线),同时仍然支持 param_<name>(下划线)。这解决了 #63093#79429Engel Danila)。 #* 添加文件系统缓存设置 max_size_ratio_to_total_space#79460Kseniia Sumarokova)。
  • 在启用校验和的情况下,从本地复制数据到远程 S3 时,针对带宽折扣提供了更详细的警告消息。 #79464 (VicoWu).
  • 对于 clickhouse-benchmark,将 reconnect 选项重新配置为可接受 0、1 或 N 作为重连次数的取值。#79465Sachin Kumar Singh)。
  • 新增设置项 input_format_max_block_size_bytes,用于限制在输入格式中创建的数据块大小(以字节为单位)。这有助于在导入包含大值的行时避免高内存使用。#79495Pavel Kruglov)。
  • 优化 sparseGrams 的速度和内存占用。#79517 (Konstantin Vedernikov)。
  • 在将数据块插入 Compact 部分时,尽可能避免额外复制。 #79536 (Pavel Kruglov).
  • 默认启用 DeltaLake 存储的 delta-kernel 实现。#79541Kseniia Sumarokova)。
  • 如果从 URL 读取数据时涉及多次重定向,则 enable_url_encoding 的设置会在整个重定向链中的所有重定向中被正确应用。#79563 (Shankar Iyer)。
  • 允许对位于不同 plain_rewritable 磁盘上的表执行 ALTER TABLE ... MOVE|REPLACE PARTITION 操作。#79566 (Julia Kartseva)。
  • WHERE 子句中支持标量关联子查询。关闭了 #6697#79600Dmitry Novik)。
  • 此前当 input_format_parquet_max_block_size = 0 时,ClickHouse 会卡死。现在该问题已修复,关闭了 #79394#79601abashkeev)。
  • 为 startup_scripts 新增 throw_on_error 设置:当 throw_on_error 为 true 时,除非所有查询均成功完成,否则服务器不会启动。默认情况下,throw_on_error 为 false,从而保留现有行为。#79732 (Aleksandr Musorin)。
  • 现在,当参考向量的类型为 Array(BFloat16) 时,也会使用向量相似度索引。 #79745 (Shankar Iyer).
  • last_error_messagelast_error_tracequery_id 添加到 system.error_log 表中。相关 issue #75816#79836Andrei Tinikov)。
  • 系统表 system.functions 现在会显示各个函数首次在 ClickHouse 中引入的版本。#79839 (Robert Schulze)。
  • 新增 access_control_improvements.enable_user_name_access_type 设置。该设置可用于启用或禁用在 https://github.com/ClickHouse/ClickHouse/pull/72246 中引入的、面向用户/角色的精确授权。如果你的集群中存在版本早于 25.1 的副本,可能需要关闭此设置。#79842 (pufit)。
  • ASTSelectWithUnionQuery::clone() 方法的实现现已修正为同时考虑 is_normalized 字段。这可能有助于解决 #77569#79909Nikita Mikhaylov)。
  • 在简单场景下支持在投影列表中使用关联子查询。#79925 (Dmitry Novik)。
  • 修复了某些使用 EXCEPT 运算符的查询格式不一致的问题。如果 EXCEPT 运算符左侧以 * 结尾,则格式化后的查询会丢失括号,随后会被解析为一个带有 EXCEPT 修饰符的 *。这些查询是由 fuzzer 发现的,在实际环境中不太可能遇到。本次修改关闭了 #79950#79952Alexey Milovidov)。
  • 允许在任何类型的 http_handlers 中添加 http_response_headers#79975 (Andrey Zvonov).
  • 通过使用变体反序列化顺序的缓存,对 JSON 类型的解析进行了小幅改进。 #79984 (Pavel Kruglov).
  • 如果适用,允许将 GLOBAL [NOT] IN 谓词移动到 PREWHERE 子句。 #79996 (Eduard Karacharov).
  • 新增设置 s3_slow_all_threads_after_network_error#80035 (Vitaly Baranov).
  • 用于记录所选要合并部分的日志级别设置错误(Info)。关闭 #80061#80062Alexey Milovidov)。
  • reverse 函数现在支持 Tuple 数据类型。已关闭 #80053#80083 (flynn)。
  • enble_url_encoding 的默认值现已设为 False#80088 (Shankar Iyer)。
  • 这个小补丁修复了 #75817:现在可以从 system.zookeeper 表中获取 auxiliary_zookeepers 数据。#80146Nikolay Govorov)。
  • 使用向量相似度索引的向量搜索现已进入 beta 阶段(此前为实验性功能)。#80164 (Robert Schulze)。
  • 添加关于服务器 TCP 套接字的异步指标。这改进了可观测性。关闭了 #80187#80188Alexey Milovidov)。
  • 函数 tokens 现在支持将 string 用作分词器。#80195 (Robert Schulze)。
  • 并行副本:如果所有读取任务都已分配给其他副本,则避免再等待那些未使用且较慢的副本。#80199Igor Nikonov)。
  • simpleAggregateFunction 中支持 anylast_respect_nullsany_respect_nulls#80219 (Diskein).
  • 移除在复制数据库中不必要的 adjustCreateQueryForBackup() 调用。#80282Vitaly Baranov)。
  • SHOW ... LIKE 查询中高亮显示元字符。已关闭 #80275#80297Alexey Milovidov)。
  • 支持在 TimeTime64 之间进行比较。#80327Yarik Briukhovetskyi)。
  • 修正 EXPLAIN PLAN 中对 preliminary distinct 步骤的描述。#80330 (UnamedRus)。
  • 允许在 ODBC/JDBC 中使用命名集合。 #80334 (Andrey Zvonov).
  • 启用多投影过滤支持,允许在部件级过滤中使用多个投影。此更改解决了 #55525。这是实现投影索引的第二步,继 #78429 之后。#80343Amos Bird)。
  • 用于统计只读和损坏磁盘数量的指标。在 DiskLocalCheckThread 启动时记录指示性日志。#80391 (VicoWu)。
  • 实现对带有投影的 s3_plain_rewritable 存储的支持。先前版本中,当这些对象被移动时,S3 中引用投影的元数据对象不会被更新。修复了 #70258#80393 (Sav)。
  • 并行副本现在使用单独的连接超时设置,请参见 parallel_replicas_connect_timeout_ms。在此之前,connect_timeout_with_failover_ms / connect_timeout_with_failover_secure_ms 被用作并行副本查询的连接超时值(默认 1 秒)。#80421Igor Nikonov)。
  • SYSTEM UNFREEZE 命令将不会尝试在只读和一次写入(write-once)磁盘上查找数据分片。解决了 #80430#80432Alexey Milovidov)。
  • 将合并后 parts 消息的日志级别从 INFO 降低为 TRACE。 #80476 (Hans Krutzer).
  • 在 Native 格式中为 Dynamic 和 JSON 实现扁平化序列化,使在序列化/反序列化 Dynamic 和 JSON 数据时无需使用诸如用于 Dynamic 的共享 variant 和用于 JSON 的共享数据等特殊结构。可以通过设置 output_format_native_use_flattened_dynamic_and_json_serialization 来启用此序列化方式。该序列化可用于在使用 TCP 协议的不同语言客户端中更方便地支持 Dynamic 和 JSON。#80499Pavel Kruglov)。
  • 修改了 Iceberg 表分区裁剪的默认行为。#80583 (Melvyn Peignon)。
  • 为索引搜索算法的可观测性新增两个 ProfileEvents 事件:IndexBinarySearchAlgorithmIndexGenericExclusionSearchAlgorithm#80679 (Pablo Marcos).
  • 在日志中不再记录针对旧内核不支持 MADV_POPULATE_WRITE 的抱怨信息(以避免日志污染)。 #80704 (Robert Schulze).
  • 在 TTL 中新增了对 Date32、DateTime64 的支持。#80710Andrey Zvonov)。
  • 调整 max_merge_delayed_streams_for_parallel_write 的兼容性相关取值。 #80760 (Azat Khuzhin).
  • 修复导致崩溃的问题:如果在析构函数中尝试删除临时文件(用于将临时数据溢写到磁盘)时抛出异常,程序可能会终止。#80776Alexey Milovidov)。
  • SYSTEM SYNC REPLICA 添加 IF EXISTS 修饰符。 #80810 (Raúl Marín).
  • 完善异常消息“Having zero bytes, but read range is not finished...”,并在 system.filesystem_cache 中添加 finished_download_time 列。 #80849 (Kseniia Sumarokova).
  • 之前,packed 存储不支持全文索引,因为需要通过在磁盘上读写 .gin_sid 文件实时更新 segment id。使用 packed 存储时,不支持从未提交的文件中读取值,这就会导致问题。#80852Elmi Ahmadov)。
  • 在将 EXPLAINindexes = 1 一起使用时,为其输出新增搜索算法部分。该部分会显示“binary search”或“generic exclusion search”。#80881 (Pablo Marcos).
  • 在 2024 年初,由于新分析器默认未启用,prefer_column_name_to_alias 在 MySQL 处理器中被硬编码为 True。现在,此参数已取消硬编码。#80916Yarik Briukhovetskyi)。
  • 现在,system.iceberg_history 也会显示 Glue 或 Iceberg REST 等 catalog 数据库的历史记录。此外,为了保持一致性,将 system.iceberg_history 中的 table_namedatabase_name 列重命名为 tabledatabase#80975 (alesapin).
  • merge 表函数启用只读模式,使在使用该函数时不再需要授予 CREATE TEMPORARY TABLE 权限。#80981 (Miсhael Stetsyuk).
  • 改进对内存缓存的自省能力(在 system.metrics 中暴露缓存相关信息,以补充不完整的 system.asynchronouse_metrics)。在 dashboard.html 中新增显示内存缓存大小(以字节为单位)。VectorSimilarityIndexCacheSize / IcebergMetadataFilesCacheSize 已重命名为 VectorSimilarityIndexCacheBytes / IcebergMetadataFilesCacheBytes#81023 (Azat Khuzhin).
  • 在从 system.rocksdb 读取时,忽略那些其引擎无法包含 RocksDB 表的数据库。#81083 (Pervakov Grigorii)。
  • clickhouse-local 的配置文件中允许使用 filesystem_cachesnamed_collections#81105Alexey Milovidov)。
  • 修复 INSERT 查询中 PARTITION BY 的高亮显示。在之前的版本中,PARTITION BY 未被高亮为关键字。#81106 (Alexey Milovidov). #* 对 Web UI 进行两项小改进:正确处理没有输出的查询,例如 CREATEINSERT(此前,这类查询会导致加载指示器无限旋转);当双击某个表时,自动滚动到顶部。#81131 (Alexey Milovidov). #* 将 c-ares 更新到 v1.34.5#81159 (Konstantin Bogdanov). #* 将 curl 升级到 8.14,以修复 CVE-2025-5025 和 CVE-2025-4947。#81171 (larryluogit). #* 将 libarchive 升级到 3.7.9,以修复以下漏洞:CVE-2024-20696 CVE-2025-25724 CVE-2024-48958 CVE-2024-57970 CVE-2025-1632 CVE-2024-48957 CVE-2024-48615。#81174 (larryluogit). #* 将 libxml2 升级到 2.14.3。#81187 (larryluogit).
  • MemoryResidentWithoutPageCache 提供服务器进程使用的物理内存量(以字节为单位),不包括用户态页缓存(userspace page cache)。在启用用户态页缓存时,它能更准确地反映实际内存使用情况。当禁用用户态页缓存时,该值等于 MemoryResident#81233 (Jayme Bird)。
  • 将客户端、本地服务器、keeper 客户端和磁盘应用中手动记录的异常标记为“已记录”,以避免重复记录。 #81271 (Miсhael Stetsyuk).
  • use_skip_indexes_if_finaluse_skip_indexes_if_final_exact_mode 的默认值改为 True。带有 FINAL 子句的查询现在将使用跳过索引(如适用)来筛选 granule,并且还会读取与匹配主键范围相对应的任何额外 granule。需要恢复先前近似/不精确结果行为的用户,可以在经过慎重评估后将 use_skip_indexes_if_final_exact_mode 设置为 FALSE。#81331Shankar Iyer)。
  • 此 PR 解决了在转换函数单调性检查中 is_strict 实现相关的问题。目前,一些转换函数(例如 toFloat64(UInt32) 和 toDate(UInt8))在本应返回 true 时错误地将 is_strict 返回为 false。#81359 (zoomxi)。 #* 在带日志的文件系统中,mkdir 会写入文件系统的日志,并最终持久化到磁盘上。如果磁盘较慢,此操作可能需要较长时间。因此,将其移出 reserve lock 的作用域是很有必要的。#81371 (Kseniia Sumarokova)。
  • 在检查某个 KeyCondition 是否匹配连续范围时,如果键被一条非严格函数链包裹,则可能需要将 Constraint::POINT 转换为 Constraint::RANGE。例如:toDate(event_time) = '2025-06-03' 隐含了 event_time 的范围:['2025-06-03 00:00:00', '2025-06-04 00:00:00')。该 PR 修复了这一行为。#81400 (zoomxi). #* 使用 postgres 16.9。#81437 (Konstantin Bogdanov). #* 使用 openssl 3.2.4。#81438 (Konstantin Bogdanov). #* 使用 abseil-cpp 2025-01-27。#81440 (Konstantin Bogdanov). #* 使用 mongo-c-driver 1.30.4。#81449 (Konstantin Bogdanov). #* 使用 krb5 1.21.3-final。#81453 (Konstantin Bogdanov). #* 使用 orc 2.1.2。#81455 (Konstantin Bogdanov). #* 在 clickhouse-local 中新增对 --database 参数的支持。你可以切换到之前创建的数据库。此更改关闭了 #44115#81465 (Alexey Milovidov). #* 当指定 --host--port 时,clickhouse/ch 别名将调用 clickhouse-client 而不是 clickhouse-local。这是对 #79422 的延续,并关闭了 #65252#81509 (Alexey Milovidov).
  • 现在我们已经获得了 keeper 响应时间分布的数据,就可以调整直方图的分桶了。#81516Miсhael Stetsyuk)。
  • 将 Iceberg manifest 文件的读取延后到首次执行查询时再进行。#81619 (Daniil Ivanik). #* 使用 grpc 1.73.0。#81629 (Konstantin Bogdanov). #* 使用 delta-kernel-rs v0.12.1。#81707 (Konstantin Bogdanov).
  • 新增 profile 事件 PageCacheReadBytes#81742Kseniia Sumarokova)。

Bug 修复(官方稳定版本中用户可见的异常行为)

  • 修复参数化视图在使用 SELECT EXCEPT 查询时的问题。关闭 #49447#57380Nikolay Degterinsky)。
  • Analyzer:修复在 join 中列类型提升后产生的列投影名称问题。修复 #63345#63519Dmitry Novik)。
  • 修复了一个问题:物化视图可能启动得过晚,例如在向其写入数据的 Kafka 表启动之后才开始运行。#72123 (Ilya Golshtein)。
  • 修复了在启用 analyzer_compatibility_join_using_top_level_identifier 时出现的列名冲突处理逻辑错误。#75676Vladimir Cherkasov)。
  • 修复了在执行多次异步(alter_sync = 0RENAME COLUMNADD COLUMN 查询后,从 MergeTree 表读取数据时出现的罕见崩溃问题。 #76346 (Anton Popov).
  • 修复在启用 analyzer 的情况下创建 VIEW 时对 SELECT 查询的重写问题。相关 issue: #75956#76356Dmitry Novik)。
  • 在启用 allow_push_predicate_ast_for_distributed_subqueries 时,修复下推谓词中对 CTE 的使用问题。修复 #75647。修复 #79672#77316Dmitry Novik)。
  • 修复通过 apply_settings_from_server 从服务器应用 async_insert 的问题(之前会导致客户端出现 Unknown packet 11 from server 错误)。#77578 (Azat Khuzhin)。
  • 修复了在复制数据库中新添加的副本上,可刷新的物化视图无法生效的问题。#77774 (Michael Kolupaev).
  • 修复了可刷新物化视图导致备份失败的问题。#77893 (Michael Kolupaev)。
  • 修复 transform 旧版触发逻辑中的错误。#78247 (Yarik Briukhovetskyi).
  • 修复了一个问题:即使指定的副本不存在,SYSTEM SYNC REPLICA LIGHTWEIGHT 'foo' 也会报告成功。该命令现在会在尝试同步之前,先在 Keeper 中正确验证该副本是否存在。#78405 (Jayme Bird)。
  • 修复了在某些场景下使用 analyzer 时二级索引未生效的问题。修复了 #65607#69373#78485Nikolai Kochetov)。
  • 修复在启用压缩的 HTTP 协议下导出性能分析事件(NetworkSendElapsedMicroseconds/NetworkSendBytes)的问题(误差不应超过缓冲区大小,通常约为 1MiB)。 #78516 (Azat Khuzhin). #* ```sql CREATE TABLE t0 ( key Int32, value Int32 ) ENGINE=MergeTree() PRIMARY KEY key PARTITION BY key % 2;. #78593 (Vlad).
  • 修复在 JOIN ... USING 涉及 ALIAS 列时分析器产生 LOGICAL_ERROR 的问题——应当抛出一个更合适的错误。#78618Yakov Olkhovskiy)。
  • 修复分析器:当 SELECT 中包含位置参数时,CREATE VIEW ... ON CLUSTER 会失败。 #78663 (Yakov Olkhovskiy).
  • 修复了在使用 INSERT SELECT 向具有模式推断功能的表函数插入数据且 SELECT 中包含标量子查询时出现的 Block structure mismatch 错误。#78677 (Pervakov Grigorii)。
  • 修复分析器:当 prefer_global_in_and_join=1 时,在针对 Distributed 表的 SELECT 查询中,应将 in 函数替换为 globalIn#78749 (Yakov Olkhovskiy).
  • 修复了多种从使用 MongoDB 引擎或 mongodb 表函数的表中读取的 SELECT 查询类型:在 WHERE 子句中对常量值进行隐式转换的查询(例如 WHERE datetime = '2025-03-10 00:00:00');以及包含 LIMITGROUP BY 的查询。此前,这些查询可能会返回错误的结果。 #78777 (Anton Popov).
  • 修复不同 JSON 类型之间的转换。现在通过先转换为 String 再从 String 转换回来的简单 CAST 来执行。虽然效率较低,但可以保证 100% 的准确性。 #78807 (Pavel Kruglov)。
  • 修复了将 Dynamic 类型转换为 Interval 时的逻辑错误。 #78813 (Pavel Kruglov).
  • 修复在 JSON 解析出错时的列回滚问题。#78836 (Pavel Kruglov)。
  • 修复在使用常量别名列进行 join 时出现的 “bad cast” 错误。#78848 (Vladimir Cherkasov).
  • 禁止在视图与目标表中列类型不同的物化视图里使用 PREWHERE#78889 (Pavel Kruglov).
  • 修复在解析 Variant 列异常二进制数据时的逻辑错误。 #78982 (Pavel Kruglov).
  • 当将 Parquet 批处理大小设置为 0 时抛出异常。之前当 output_format_parquet_batch_size = 0 时,ClickHouse 会出现挂起。现在该行为已被修复。#78991 (daryawessely)。
  • 修复在紧凑部分中使用 basic 格式时 variant 判别符的反序列化问题。该问题是在 https://github.com/ClickHouse/ClickHouse/pull/55518 中引入的。#79000Pavel Kruglov)。
  • 现在,类型为 complex_key_ssd_cache 的字典不再接受 block_sizewrite_buffer_size 参数值为零或负数的配置(issue #78314)。#79028Elmi Ahmadov)。
  • 避免在 SummingMergeTree 中对非聚合的列使用 Field。这样可能会在 SummingMergeTree 中使用 Dynamic/Variant 类型时导致意外错误。#79051 (Pavel Kruglov).
  • 修复 analyzer 中从以分布式目标表为目的且表头结构不同的物化视图读取数据时的问题。 #79059 (Pavel Kruglov).
  • 修复了在一个非常特定场景下发生的崩溃:当在 ON CLUSTER 查询的 CONSTRAINT 子句中使用 currentDatabase 函数时会触发该问题。关闭 #78100#79070pufit)。
  • 修复了在执行批量插入的表上,arrayUnion() 返回额外(不正确)值的错误。修复了 #75057#79079Peter Nguyen)。
  • 修复跨服务器查询时外部角色传递的问题。 #79099 (Andrey Zvonov).
  • 始终为 S3 的 ListObject 操作设置前缀。 #79114 (Azat Khuzhin).
  • 修复了在对表执行批量插入时,arrayUnion() 会返回多余(错误)值的 bug。修复 #79157#79158Peter Nguyen)。
  • 修复过滤下推后的逻辑错误。#79164 (Pervakov Grigorii).
  • 尝试在 SingleValueDataGeneric 中使用 IColumn 替代 Field。此更改修复了某些聚合函数(例如 argMax)在 Dynamic/Variant/JSON 类型上的返回值不正确的问题。#79166Pavel Kruglov)。
  • 修复了在基于 HTTP 的端点上使用 delta-kernel 实现时的 DeltaLake 表引擎问题,并修复了 NOSIGN。修复了 #78124#79203Kseniia Sumarokova)。
  • Keeper 修复:避免因失败的 multi 请求触发 watch 监听。#79247 (Antonio Andelic)。
  • IN 中禁止使用 Dynamic 和 JSON 类型。由于当前 IN 的实现方式,这可能会导致结果不正确。为 IN 正确支持这些类型较为复杂,可能会在未来实现。 #79282 (Pavel Kruglov)。
  • 修复 JSON 类型解析中重复路径检查的问题。#79317 (Pavel Kruglov).
  • 修复 SecureStreamSocket 的连接问题。 #79383 (Konstantin Bogdanov)。
  • 修复包含数据的 plain_rewritable 磁盘的加载问题。 #79439 (Julia Kartseva).
  • 修复在 MergeTree 的 Wide 数据片段中动态发现子列时发生的崩溃问题。 #79466 (Pavel Kruglov)。
  • 仅在初始的 CREATE 查询中验证表名长度。不要在后续的 CREATE 中执行此验证,以避免破坏向后兼容性。#79488 (Miсhael Stetsyuk)。
  • 在多种场景下修复了含有稀疏列的表中出现的 Block structure mismatch 错误。 #79491 (Anton Popov).
  • 修复了两种导致 Logical Error: Can't set alias of * of Asterisk on alias 的情况。#79505 (Raúl Marín).
  • 修复了在 Azure Blob 存储中应用 use_native_copyallow_azure_native_copy 设置的方式,并更新为仅在凭据匹配时才使用原生复制,从而解决了 #78964#79561Smita Kulkarni)。
  • 修复在重命名 Atomic 数据库时使用错误的路径的问题。#79569 (Tuan Pham Anh)。
  • 修复在 JSON 列与其他列一起进行 ORDER BY 时的问题。#79591 (Pavel Kruglov).
  • 修复在同时禁用 use_hedged_requestsallow_experimental_parallel_reading_from_replicas 时,从远程读取数据出现结果重复的问题。#79599 (Eduard Karacharov).
  • 修复在使用 Unity Catalog 时 delta-kernel 实现中的崩溃问题。 #79677 (Kseniia Sumarokova).
  • 解析自动发现集群的宏。#79696 (Anton Ivashkin).
  • 修复在检查该列是否已被关联时,由于该列来源作用域未知而产生的逻辑错误。修复 #78183。修复 #79451#79727Dmitry Novik)。
  • 修复在使用 ColumnConst 和 Analyzer 的 grouping sets 中产生错误结果的问题。#79743 (Andrey Zvonov).
  • 修复在从分布式表读取且本地副本滞后时出现的本地分片结果重复问题。 #79761 (Eduard Karacharov).
  • 妥善处理配置不当的 page_cache_limits#79805 (Bharat Nallan)。
  • 修复了当可变长度格式符(例如 %W,即星期几 MondayTuesday 等)后面紧跟复合格式符(一次输出多个组成部分的格式符,例如 %D,即美国日期格式 05/04/25)时,SQL 函数 formatDateTime 结果不正确的问题。 #79835 (Robert Schulze)。
  • IcebergS3 支持 count() 优化,但 IcebergS3Cluster 不支持。因此,在集群模式下返回的 count() 结果可能是副本数量的倍数。#79844 (wxybear)。
  • 修复带负号位的 NaN 值的排序顺序。#79847Pervakov Grigorii)。
  • 现在 GROUP BY ALL 不再考虑 GROUPING 子句。#79915Yarik Briukhovetskyi)。
  • 修复了在延迟物化(lazy materialization)情况下,当查询在投影之前未使用任何列进行执行时出现的 AMBIGUOUS_COLUMN_NAME 错误。例如:SELECT * FROM t ORDER BY rand() LIMIT 5。 #79926 (Igor Nikonov)。
  • 修复了 TopK / TopKWeighted 函数错误的状态合并问题,该问题会导致即使在容量尚未耗尽时也出现过大的误差值。 #79939 (Joel Höner).
  • 在查询 CREATE DATABASE datalake ENGINE = DataLakeCatalog(\'http://catalog:8181\', \'admin\', \'password\') 中隐藏密码。#79941 (Han Fei)。
  • 允许在 JOIN USING 中指定别名。若列已被重命名(例如由于 ARRAY JOIN),请使用该别名。修复 #73707#79942Nikolai Kochetov)。
  • azure_blob_storage 对象存储中遵循 readonly 设置。#79954Julia Kartseva)。
  • 修复了在使用带有反斜杠转义字符的 match(column, '^…') 时导致查询结果错误和内存不足崩溃的问题。#79969 (filimonov).
  • 为数据湖禁用 Hive 分区。部分解决了 https://github.com/issues/assigned?issue=ClickHouse%7CClickHouse%7C79937#80005Daniil Ivanik)。
  • 修复当索引定义中的高阶函数与查询中的函数完全匹配时,带有 lambda 表达式的 skip 索引无法应用的问题。 #80025 (Nikolai Kochetov).
  • 使包含 UNION 的物化视图在新副本上能够正常工作。#80037 (Samay Sharma)。
  • 在副本根据复制日志执行 ATTACH_PART 命令时,修正附加数据部件时的元数据版本。 #80038 (Aleksei Filatov)。
  • SQL 函数 parseDateTime 中的格式说明符 %e 现在能够识别一位数的日期(例如 3),而之前则需要使用空格填充(例如 3)。这使其行为与 MySQL 保持兼容。若要保留之前的行为,请将设置 parsedatetime_e_requires_space_padding 设为 1。(issue #78243). #80057 (Robert Schulze).
  • 可执行用户自定义函数(eUDF)的名称不会像其他函数那样被添加到 system.query_log 表的 used_functions 列中。此 PR 实现在请求中使用 eUDF 时,将其名称添加进去。#80073 (Kyamran)。 #* 修复 ClickHouse 日志中的警告 Cannot find 'kernel' in '[...]/memory.stat'(问题 #77410)。#80129 (Robert Schulze)。
  • 修复 Arrow 格式在处理 LowCardinality(FixedString) 时的逻辑错误。 #80156 (Pavel Kruglov).
  • 修复从 Merge 引擎读取子列的问题。#80158 (Pavel Kruglov)。
  • 修复了 KeyCondition 中数值类型之间比较的一个 bug。 #80207 (Yarik Briukhovetskyi).
  • 在对带有投影的表应用 lazy materialization 时,修复 AMBIGUOUS_COLUMN_NAME 错误。#80251 (Igor Nikonov).
  • 修复在使用隐式投影时,对 LIKE 'ab_c%' 这类字符串前缀过滤条件的计数优化错误。此修复对应 #80250#80261Amos Bird)。
  • 修复在 MongoDB 文档中将嵌套数值字段错误序列化为字符串的问题。移除对来自 MongoDB 的文档的最大深度限制。#80289 (Kirill Nikiforov)。
  • 在 Replicated 数据库中对 RMT 执行较为宽松的元数据检查。修复 #80296#80298Nikolay Degterinsky)。
  • 修复用于 PostgreSQL 存储的 DateTime 和 DateTime64 的文本表示。#80301Yakov Olkhovskiy)。
  • 允许在 StripeLog 表中使用带时区的 DateTime。修复了 #44120#80304Alexey Milovidov)。
  • 在查询计划中的某个步骤会改变行数的情况下,如果谓词包含非确定性函数,则禁用该谓词的 filter-push-down。修复了 #40273#80329Nikolai Kochetov)。
  • 修复了在包含子列的投影中可能导致的逻辑错误和崩溃。 #80333 (Pavel Kruglov).
  • 修复在 ON 表达式不是简单等值条件时,由逻辑 JOIN 步骤中的过滤下推(filter-push-down)优化导致的 NOT_FOUND_COLUMN_IN_BLOCK 错误。修复了 #79647#77848#80360Nikolai Kochetov)。
  • 修复了在分区表中读取逆序排列键时产生不正确结果的问题。此修复对应 #79987#80448Amos Bird)。
  • 修复了在包含可空键且启用 optimize_read_in_order 的表中出现的错误排序问题。#80515Pervakov Grigorii)。
  • 修复了在使用 SYSTEM STOP REPLICATED VIEW 暂停可刷新物化视图后,执行 DROP 时会卡住的问题。 #80543 (Michael Kolupaev).
  • 修复在分布式查询中使用常量 tuple 时出现的 'Cannot find column' 错误。#80596 (Yakov Olkhovskiy).
  • 修复在启用 join_use_nulls 时分布式表中 shardNum 函数的问题。#80612 (János Benjamin Antal).
  • 修复在 Merge 存储引擎中读取仅存在于部分表中的列时出现的错误结果。#80643Pavel Kruglov)。
  • iceberg_history 表中的时间戳现在应该已经正确无误。#80711Melvyn Peignon)。
  • 修复对象存储表函数中仅包含单个元素的 enum 通配模式的处理。 #80716 (Konstantin Bogdanov).
  • 修复了在 Tuple(Dynamic)String 之间进行比较时,比较函数返回结果类型错误的问题,该问题可能导致逻辑错误。#80728Pavel Kruglov)。
  • 为 Unity Catalog 补充对数据类型 timestamp_ntz 的支持。修复 #79535#79875#80740alesapin)。
  • 修复了在使用 IN cte 的分布式查询中出现的 THERE_IS_NO_COLUMN 错误。修复了 #75032#80757Nikolai Kochetov)。
  • 修复外部 ORDER BY 产生过多文件(导致内存占用过高)的问题。 #80777 (Azat Khuzhin). #* 此 PR 可能会关闭 #80742#80783 (zoomxi). #* 修复 Kafka 中的崩溃问题,原因是 get_member_id() 会从 NULL 创建 std::string(这很可能只会在连接 broker 失败的情况下发生)。 #80793 (Azat Khuzhin).
  • 在关闭 Kafka 引擎之前应正确等待所有消费者结束(关闭后仍然处于活动状态的消费者可能会触发各种调试断言,并且在表已被删除/分离后,仍可能在后台从 broker 读取数据)。 #80795 (Azat Khuzhin).
  • 修复由 predicate-push-down 优化引起的 NOT_FOUND_COLUMN_IN_BLOCK 错误。修复 #80443#80834Nikolai Kochetov)。
  • 修复在带有 USINGJOIN 中解析表函数里的星号(*)通配符时的逻辑错误。#80894 (Vladimir Cherkasov).
  • 修复 Iceberg 元数据文件缓存的内存记账。 #80904 (Azat Khuzhin).
  • 修复使用可为空分区键时的错误分区问题。#80913 (Pervakov Grigorii)。
  • 修复在启用下推谓词的分布式查询(allow_push_predicate_ast_for_distributed_subqueries=1)且源表在发起查询的节点上不存在时出现的 Table does not exist 错误。修复 #77281#80915Nikolai Kochetov)。
  • 修复具名窗口中嵌套函数的逻辑错误。#80926Pervakov Grigorii)。
  • 修复 Nullable 和浮点列的边界值处理。#80970Pervakov Grigorii)。
  • 修复从 system.tables 查询时可能发生的崩溃(在内存紧张时更容易出现)。 #80976 (Azat Khuzhin).
  • 修复针对压缩方式由文件扩展名推断的文件,在配合截断操作进行原子重命名时的问题。#80979 (Pablo Marcos). #* 修复 ErrorCodes::getName。#81032 (RinChanNOW).
  • 修复了当用户没有所有表的权限时,无法在 Unity Catalog 中列出表的错误。现在所有表都可以被正确列出,尝试从受限表中读取时将抛出异常。#81044 (alesapin)。
  • 现在,ClickHouse 在执行 SHOW TABLES 查询时将忽略来自数据湖目录的错误和非预期响应。修复了 #79725#81046alesapin)。
  • 修复在 JSONExtractJSON 类型解析中,从整数解析为 DateTime64 时的处理。#81050 (Pavel Kruglov).
  • 在架构推断缓存中体现 date_time_input_format 设置。 #81052 (Pavel Kruglov).
  • 修复在执行 INSERT 时,如果在查询开始之后但在发送列之前表被 DROP 时导致的崩溃问题。#81053Azat Khuzhin)。
  • 修复 quantileDeterministic 中使用未初始化值的问题。 #81062 (Azat Khuzhin).
  • 修复 metadatastoragefromdisk 磁盘事务中的硬链接计数管理,并添加测试。#81066 (Sema Checherinda).
  • 与其他函数不同,用户自定义函数(UDF)的名称不会被添加到 system.query_log 表中。此 PR 实现了在请求中使用到 UDF 时,将 UDF 名称添加到 used_executable_user_defined_functionsused_sql_user_defined_functions 这两个列之一中。#81101Kyamran)。
  • 修复了通过 HTTP 协议以文本格式(JSONValues 等)执行插入操作且省略 Enum 字段时,可能出现 Too large size ... passed to allocator 错误或导致崩溃的问题。#81145 (Anton Popov)。
  • 修复在将包含稀疏列的 INSERT 数据块推送到非 MT 物化视图时出现的 LOGICAL_ERROR。 #81161 (Azat Khuzhin).
  • 修复在跨副本复制场景下设置 distributed_product_mode_local=local 时出现的 Unknown table expression identifier 错误。#81162 (Nikolai Kochetov).
  • 修复了过滤后错误缓存 Parquet 文件行数的问题。#81184Michael Kolupaev)。
  • 修复在使用相对缓存路径时 fs 缓存的 max_size_to_total_space 设置。#81237Kseniia Sumarokova)。
  • 修复了在以 Parquet 格式输出常量元组或映射时导致 clickhouse-local 崩溃的问题。#81249Michael Kolupaev)。
  • 对通过网络接收的数组偏移量进行校验。#81269 (Azat Khuzhin).
  • 修复在查询连接空表且使用窗口函数时的一些极端情况。该缺陷会导致并行流数量急剧膨胀,从而引发 OOM。 #81299 (Alexander Gololobov).
  • 针对数据湖 Cluster 函数(deltaLakeClustericebergCluster 等)的修复:(1) 修复在旧版 analyzer 下将 Cluster 函数用于 DataLakeConfiguration 时可能发生的段错误(segfault);(2) 移除重复的数据湖元数据更新(额外的对象存储请求);(3) 修复在未显式指定格式时对对象存储进行冗余列出操作的问题(此前已对非 Cluster 模式的数据湖引擎进行了修复)。 #81300 (Kseniia Sumarokova).
  • 使 force_restore_data 标志能够恢复丢失的 Keeper 元数据。 #81324 (Raúl Marín).
  • 修复 delta-kernel 中的 region 错误,解决了 #79914#81353Kseniia Sumarokova)。
  • 禁用 divideOrNull 的错误 JIT 实现。 #81370 (Raúl Marín).
  • 修复当 MergeTree 表的分区列名过长时的插入错误。#81390 (hy123q)。
  • 不要在内存中存储多份 manifest 文件的内容。#81470 (Daniil Ivanik)。
  • 修复在关闭后台线程池(background_.*pool_size)时可能发生的崩溃问题。 #81473 (Azat Khuzhin).
  • 修复了在向使用 URL 引擎的表写入数据时发生的 Npy 格式越界读问题。此更改解决了 #81356#81502Alexey Milovidov)。
  • 有可能出现 Web UI 显示 NaN% 的情况(典型的 JavaScript 问题)。#81507Alexey Milovidov)。
  • 修复在将 database_replicated_enforce_synchronous_settings 设为 1 时的 DatabaseReplicated#81564 (Azat Khuzhin).
  • 修复 LowCardinality(Nullable(...)) 类型的排序顺序。#81583Pervakov Grigorii)。
  • 在尚未从套接字中完整读取请求时,服务器不应保持 HTTP 连接。 #81595 (Sema Checherinda).
  • 使标量关联子查询返回投影表达式的可为空结果。修复关联子查询产生空结果集时的行为。#81632 (Dmitry Novik).
  • 修复在对 ReplicatedMergeTree 执行 ATTACH 时出现的 Unexpected relative path for a deduplicated part 错误。 #81647 (Azat Khuzhin).
  • 查询设置 use_iceberg_partition_pruning 对 Iceberg 存储不会生效,因为它使用的是全局上下文而不是查询上下文。影响不大,因为其默认值为 true。此 PR 已修复该问题。#81673 (Han Fei).
  • 为 MergeTree 设置 merge_max_block_size 添加校验,以确保其值不为零。#81693 (Bharat Nallan)。
  • 修复 clickhouse-localDROP VIEW 查询可能卡住的问题。 #81705 (Bharat Nallan).
  • 修复在某些情况下的 StorageRedis join 操作。#81736 (Pervakov Grigorii).
  • 修复在启用旧版分析器且使用空的 USING ()ConcurrentHashJoin 崩溃的问题。 #81754 (Nikita Taranov)。
  • Keeper 修复:当日志中存在无效条目时,阻止提交新日志。之前,如果 leader 错误地应用了某些日志,即使 follower 会检测到摘要不匹配并中止,它仍会继续提交后续日志。#81780Antonio Andelic)。