跳至主要内容
跳至主要内容
编辑此页

Changelog 2026

ClickHouse 发布 26.1,2026-01-29。 演示, 视频

不兼容的变更

  • 修复由于格式化程序中别名替换不正确导致的格式不一致问题。 此操作关闭 #82833。 此操作关闭 #82832。 此操作关闭 #68296。 此变更可能不兼容:当分析器被禁用时,某些带有 IN 引用别名的 CREATE VIEW 查询无法处理。 为了防止不兼容,请启用分析器(自 24.3 起默认启用)。 #82838 (Alexey Milovidov)。
  • 删除了 Codec DEFLATE_QPLZSTD_QAT。 建议用户在升级之前将使用 DEFLATE_QPLZSTD_QAT 压缩的现有数据转换为另一种 Codec。 请注意,为了使用这些 Codec,必须启用设置 enable_deflate_qpl_codecenable_zstd_qat_codec#92150 (Robert Schulze)。
  • 通过在 system.query_log.exception 中启用 stderr 捕获来改进 UDF 调试。 以前,UDF stderr 仅记录到文件中,并且未在查询日志中公开,这使得调试不可能。 现在 stderr 默认触发异常,并在抛出之前完全累积(最多 1MB),因此完整的 Python 跟踪和错误消息出现在 system.query_log.exception 中,以便进行有效的故障排除。 #92209 (Xu Jia)。
  • JOIN USING () 子句中的空列列表现在被视为语法错误。 以前它应该在查询执行期间是 INVALID_JOIN_ON_EXPRESSION。 在某些情况下,例如与 Join 存储一起连接,会导致 LOGICAL_ERROR,关闭 #82502#92371 (Vladimir Cherkasov)。
  • 默认情况下,JSON 类型中的 SKIP REGEXP 使用部分匹配。 关闭 #79250#92847 (Pavel Kruglov)。
  • 撤销“允许插入到简单的 ALIAS 列” (撤销 ClickHouse/ClickHouse#84154)。 它不适用于自定义格式,并且没有通过设置进行保护。 #92849 (Azat Khuzhin)。
  • 设置如果数据湖目录没有访问对象存储的权限,则抛出错误。 #93606 (Konstantin Vedernikov)。
  • Lazy 数据库引擎已被删除,不再可用。 关闭 #91231#93627 (Alexey Milovidov)。
  • 删除 metric_logtransposed_with_wide_view 模式 - 由于错误而无法使用。 不可能再使用此模式定义 system.metric_log。 这部分撤销 #78412#93867 (Alexey Milovidov)。
  • 工作负载的 CPU 调度现在默认是抢占式的。 请参阅服务器设置 cpu_slot_preemption#94060 (Sergei Trifonov)。
  • 转义索引文件名以防止损坏的分区。 此次更改后,ClickHouse 将无法加载以前版本创建的索引名称中包含非 ASCII 字符的索引。 要处理此问题,可以使用 merge tree 设置 escape_index_filenames#94079 (Raúl Marín)。
  • 格式设置 exact_rows_before_limitrows_before_aggregationcross_to_inner_join_rewriteregexp_dict_allow_hyperscanregexp_dict_flag_case_insensitiveregexp_dict_flag_dotalldictionary_use_async_executor 已更改为常规(非格式)设置。 这只是一个内部更改,没有用户可见的副作用,除非您在 Iceberg 或 DeltaLake 或 Kafka 或 S3 或 S3Queue 或 Azure 或 Hive 或 RabbitMQ 或 Set 或 FileLog 或 NATS 表引擎定义中指定了任何这些设置。 在这些情况下,这些设置以前被忽略,现在此类定义会引发错误。 #94106 (Robert Schulze)。
  • joinGet/joinGetOrNull 函数现在强制对基础 Join 表执行 SELECT 权限。 更改后,执行 joinGet('db.table', 'column', key) 需要用户对 Join 表中定义的键列和检索的属性列都具有 SELECT 权限。 缺少这些权限的查询将以 ACCESS_DENIED 失败。 要迁移,请使用 GRANT SELECT ON db.join_table TO user 授予对整个表的访问权限,或使用 GRANT SELECT(key_col, attr_col) ON db.join_table TO user 授予列级访问权限。 此更改会影响所有依赖 joinGet/joinGetOrNull 且先前未配置显式 SELECT 授权的用户和应用程序。 #94307 (Vladimir Cherkasov)。
  • 检查 CREATE TABLE ... AS ... 查询的 SHOW COLUMNS。 以前,它检查 SHOW TABLES,这是对此类型权限检查的错误授权。 #94556 (pufit)。
  • 使 Hash 输出格式独立于块大小。 #94503 (Alexey Milovidov)。 请注意,这会更改与以前版本相比的输出哈希值。

新功能

  • ClickHouse Keeper 的 HTTP API 和嵌入式 Web UI。 #78181 (pufitspeeedmaster)。
  • 异步插入去重现在适用于依赖的物化视图。 当发生 block_id 冲突时,原始块被过滤以删除与 block_id 关联的行,并且剩余的行使用所有相关的物化视图 select 查询进行转换,这将重建原始块而没有冲突的行。 #89140 (Sema Checherinda)。 允许在涉及物化视图时使用带有异步插入的去重。 #93957 (Sema Checherinda)。
  • 引入新的语法和框架来简化和扩展投影索引功能。 这遵循 https://github.com/ClickHouse/ClickHouse/pull/81021#91844 (Amos Bird)。
  • Array 列添加文本索引支持。 #89895 (Jimmy Aguilar Mena)。
  • 默认启用 use_variant_as_common_type,允许您在 Array 中使用不兼容的类型,在 UNION 查询中以及在 if/multiIf/case 的分支中。 #90677 (Alexey Milovidov)。
  • 新的系统表 zookeeper_info。 实现 #88014#90809 (Smita Kulkarni)。
  • 支持所有函数中的 Variant 类型。 #90900 (Bharat Nallan)。
  • 向 Prometheus 的 /metrics 端点添加一个 ClickHouse_Info 指标,其中主要包含版本信息,以便能够构建图表来跟踪详细的版本信息随时间的变化。 #91125 (Christoph Wurm)。
  • 为 keeper 引入一个新的四字母 rcfg 命令,允许更改集群配置。此命令比标准的 reconfigure 请求提供更广泛的配置更改可能性。命令接受 json 字符串作为参数。发送到 TCP 接口的整个字节集应如下所示:rcfg{json_string_length_big_endian}{json_string}。命令的一些示例可能如下所示:{"preconditions": {"leaders": [1, 2], "members": [1, 2, 3, 4, 5]}, "actions": [{"transfer_leadership": [3]}, {"remove_members": [1, 2]}, {"set_priority": [{"id": 4, "priority": 100}, {"id": 5, "priority": 100}]}, {"transfer_leadership": [4, 5]}, {"set_priority": [{"id": 3, "priority": 0}]}]}#91354 (alesapin)。
  • 添加函数 reverseBySeparator,该函数通过指定的分隔符反转字符串中子字符串的顺序。关闭 #91463#91780 (Xuewei Wang)。
  • 添加新的设置 max_insert_block_size_bytes,它更精细地控制插入块的形成。 #92833 (Kirill Kopnev)。
  • 如果启用了 ignore_on_cluster_for_replicated_database 设置,则可以对 Replicated 数据库执行带有 ON CLUSTER 子句的 DDL 查询。在这种情况下,将忽略集群名称。 #92872 (Kirill)。
  • 实现 mergeTreeAnalyzeIndexes 函数。 #92954 (Azat Khuzhin)。
  • 添加新的设置 use_primary_key。将其设置为 false 以禁用基于主键的粒度修剪。 #93319 (Nihal Z. Miaji)。
  • 添加 icebergLocalCluster 表函数。 #93323 (Anton Ivashkin)。
  • 添加了 cosineDistanceTransposed 函数,该函数近似了两个点之间的 余弦距离#93621 (Raufs Dunamalijevs)。
  • files 列添加到 system.parts 表,显示每个数据部分中的文件数。 #94337 (Match)。
  • 添加了用于并发控制的最大最小公平调度器。在高度超额订阅的情况下,提供更好的公平性,其中许多查询竞争有限的 CPU 插槽。运行时间短的查询不会因已累积更多插槽的长时间运行的查询而受到惩罚。通过服务器设置 concurrent_threads_schedulermax_min_fair 值启用。 #94732 (Sergei Trifonov)。
  • 添加了 ClickHouse 客户端覆盖 TLS SNI 以连接到服务器的能力。 #89761 (Matt Klein)。
  • 支持在 joinGet 函数调用中临时表。 #92973 (Eduard Karacharov)。
  • 支持 DeltaLake 表引擎中的删除向量。 #93852 (Kseniia Sumarokova)。
  • 支持 deltaLakeCluster 的删除向量。 #94365 (Kseniia Sumarokova)。
  • 数据湖的 Google 云存储支持。 #93866 (Konstantin Vedernikov)。

实验特性

性能改进

  • 现在默认启用设置 use_skip_indexes_on_data_read。此设置允许在读取的同时以流式方式进行过滤,从而提高查询性能和启动时间。 #93407 (Shankar Iyer)。
  • 提高 LowCardinality 列上 DISTINCT 的性能。关闭 #5917#91639 (Nihal Z. Miaji)。
  • 优化 distinctJSONPaths 聚合函数,使其仅从数据部分读取 JSON 路径,而不读取整个 JSON 列。 #92196 (Pavel Kruglov)。
  • 更多过滤器推入 JOIN。 #85556 (Nikita Taranov)。
  • 支持更多将过滤器从 join ON 条件推入的情况,当过滤器仅使用来自一侧的输入时。支持 ANYSEMIANTI JOIN。 #92584 (Dmitry Novik)。
  • 允许使用等效集合来推入 SEMI JOIN 的过滤器。关闭 #85239#92837 (Dmitry Novik)。
  • 跳过读取哈希连接右侧,如果右侧为空。 之前,我们一直在读取左侧直到第一个非空块,这在存在大量过滤或聚合的情况下可能会做很多工作。 #94062 (Alexander Gololobov)。
  • 在查询管道内部使用“fastrange”(Daniel Lemire)方法对数据进行分区。 这可以提高并行排序和 JOIN。 #93080 (Alexey Milovidov)。
  • 改进当 PARTITION BY 与排序键匹配或排序键的前缀时窗口函数的性能。 #87299 (Nikita Taranov)。
  • 外部过滤器被推入视图,允许在本地和远程节点上应用 PREWHERE。解决 #88189#88316 (Igor Nikonov)。
  • 为更多函数实现 JIT 编译。关闭 #73509#88770 (Alexey MilovidovTaiyang Li)。
  • 如果用于 FINAL 查询的跳跃索引位于主键的一部分列上,则无需执行检查其他部分中主键交集的额外步骤,现在不再执行。解决 #85897#93899 (Shankar Iyer)。
  • 优化分数 LIMITOFFSET 的性能和内存使用。 #91167 (Ahmed Gouda)。
  • 修复 Parquet Reader V3 预取器的更快随机读取逻辑的使用。关闭 #90890#91435 (Arsen Muk)。
  • 提高 icebergCluster 的性能。关闭 #91462#91537 (Yang Jiang)。
  • 不要在常量过滤器上按虚拟列进行过滤。 #91588 (c-end)。
  • 通过启用自适应写入缓冲区,减少插入/合并在非常宽的表中使用宽部件的内存使用量。为加密磁盘添加对自适应写入缓冲区的支持。 #92250 (Azat Khuzhin)。
  • 通过减少索引中搜索的令牌数量,改进了使用文本索引和 sparseGrams 分词器的全文搜索性能。 #93078 (Anton Popov)。
  • 优化了函数 isValidASCII 的正向结果,即所有 ASCII 输入值。 #93347 (Robert Schulze)。
  • 读取顺序优化现在可以识别由于 WHERE 条件导致 ORDER BY 列为常量的情况,从而实现高效的反向读取。这对于像 WHERE tenant='42' ORDER BY tenant, event_time DESC 这样的多租户查询有利,现在可以使用 InReverseOrder 而无需进行完全排序。 #94103 (matanper)。
  • 引入 Enum AST 专用类来存储 (字符串、整数) 对中的值参数,而不是 ASTLiteral 子项,以优化内存消耗。 #94178 (Ilya Yatsishin)。
  • 在多个副本上进行分布式索引分析。对于共享存储和集群中的大量数据有利。这适用于 SharedMergeTree (ClickHouse Cloud),并且可能适用于共享存储上的其他类型的 MergeTree 表。 #86786 (Azat Khuzhin)。
  • 通过在以下情况下禁用它们来减少连接运行时过滤器的开销:- bloom 过滤器中设置的位数过多 - 运行时过滤掉的行数太少。 #91578 (Alexander Gololobov)。
  • 使用内存中缓冲区进行相关子查询输入,以避免多次评估它。这是 #79890 的一部分。 #91205 (Dmitry Novik)。
  • 允许所有副本并行读取副本中的孤立范围。这可以改善负载均衡并减少长尾延迟。 #91374 (zoomxi)。
  • 外部聚合/排序/连接现在在所有上下文中都尊重查询设置 temporary_files_codec。修复了 grace hash join 的缺失 profile 事件。 #92388 (Vladimir Cherkasov)。
  • 使在聚合/排序期间溢出到磁盘的查询内存使用量检测更加健壮。 #92500 (Azat Khuzhin)。
  • 估计聚合键列的总行数和 NDV(不同值的数量)统计信息。 #92812 (Alexander Gololobov)。
  • 使用 simdcomp 优化发布列表压缩。 #92871 (Peng Jian)。
  • 使用桶重构 S3Queue 有序模式处理。这也应该提高性能,减少 keeper 请求的数量。 #92889 (Kseniia Sumarokova)。
  • 函数 mapContainsKeyLikemapContainsValueLike 现在可以利用 mapKeys()mapValues() 上的文本索引,分别进行利用。 #93049 (Michael Jarrett)。
  • 降低非 Linux 系统上的内存使用量(启用 jemalloc 脏页的立即清除)。 #93360 (Eduard Karacharov)。
  • 强制清除 jemalloc arenas,以防脏页大小与 max_server_memory_usage 的比率超过 memory_worker_purge_dirty_pages_threshold_ratio#93500 (Eduard Karacharov)。
  • 减少 AST 的内存使用量。 #93601 (Nikolai Kochetov)。
  • 在某些情况下,我们发现 ClickHouse 没有尊重从表中读取时的内存限制。此行为已修复。 #93715 (Nikita Mikhaylov)。
  • 默认情况下启用 CHECK_STATTRY_REMOVE Keeper 扩展。 #93886 (Mikhail Artemenko)。
  • 解析 Iceberg manifest 文件条目中位置删除对应的文件名上下限,以更好地选择相应的数据文件。 #93980 (Daniil Ivanik)。
  • 添加两个设置来控制 JSON 列中的最大动态子列数。第一个是 MergeTree 设置 merge_max_dynamic_subcolumns_in_compact_part(类似于已经添加的 merge_max_dynamic_subcolumns_in_wide_part),它限制了在合并到 Compact 部件期间创建的动态子列数。第二个是查询级别设置 max_dynamic_subcolumns_in_json_type_parsing,它限制了在解析 JSON 数据期间创建的动态子列数,它允许在插入时指定限制。 #94184 (Pavel Kruglov)。
  • 在某些情况下略微优化 JSON 列的压缩。 #94247 (Pavel Kruglov)。
  • 根据生产经验降低线程池队列大小。在读取 MergeTree 之前添加显式的内存消耗检查。 #94692 (Nikita Mikhaylov)。
  • 确保调度器在 CPU 饥饿状态下优先选择 MemoryWorker 线程,因为它保护 ClickHouse 进程免受生存威胁。 #94864 (Nikita Mikhaylov)。
  • 在与主线程不同的线程中运行 jemalloc 脏页的清除。如果清除速度慢,可能会延迟更新 RSS 使用量,这可能导致进程被杀死。引入新的配置 memory_worker_purge_total_memory_threshold_ratio 以基于总内存使用量比率开始清除脏页。 #94902 (Antonio Andelic)。

改进

  • 现在可以为 Azure Blob Storage 提供 system.blob_storage_log#93105 (Alexey Milovidov)。
  • 为 Local 和 HDFS 实现 blob_storage_log。修复了 S3Queue 在记录 blob_storage_log 时使用磁盘名称以外的其他名称时发生的错误。将 error_code 列添加到 blob_storage_log。拆分测试配置文件以简化本地测试。 #93106 (Alexey Milovidov)。
  • clickhouse-clientclickhouse-local 在键入时将突出显示数字组(千、百万等)内部的数字文字。这关闭了 #93100#93108 (Alexey Milovidov)。
  • 添加了对 clickhouse-client 中带有等号前后空格的命令行参数的支持。关闭了 #93077#93174 (Cole Smith)。
  • 使用 <interactive_history_legacy_keymap>true</interactive_history_legacy_keymap>,CLI 客户端现在可以回退到 Ctrl-R 进行以前的常规搜索,而 Ctrl-T 执行模糊搜索。 #87785 (Larry Snizek)。
  • 清除缓存的语句 SYSTEM DROP [...] CACHE 给人留下了禁用缓存的错误印象。ClickHouse 现在支持语句 SYSTEM CLEAR [...] CACHE,这更明显。旧语法仍然可用。 #93727 (Pranav Tiwari)。
  • 支持 EmbeddedRocksDB 中的多个主键。关闭了 #32819#33917 (usurai)。
  • 现在可以使用非常量 IN 来进行标量运算(例如 val1 NOT IN if(cond, val2, val3))。 #93495 (Yarik Briukhovetskyi)。
  • 防止 x-amz-server-side-encryption 标头传播到 HeadObjectUploadPartCompleteMultipartUpload S3 请求,因为它们不受支持。 #64577 (Francisco J. Jurado Moreno)。
  • 跟踪 S3Queue 中有序模式的 hive 分区。解决 #71161#81040 (Anton Ivashkin)。
  • 优化文件系统缓存中的空间预留。FileCache::collectCandidatesForEviction 将在没有唯一锁的情况下执行。 #82764 (Kseniia Sumarokova)。
  • 支持服务器日志的复合轮换策略(大小 + 时间)。 #87620 (Jianmei Zhang)。
  • CLI 客户端现在可以指定 <warnings>false</warnings>,而不是命令行 --no-warnings#87783 (Larry Snizek)。
  • 添加对使用 Date、DateTime 和 Time 值作为参数的 avg 聚合函数的支持。 关闭 #82267#87845 (Yarik Briukhovetskyi)。
  • 默认启用优化 use_join_disjunctions_push_down#89313 (Alexey Milovidov)。
  • 支持相关子查询中更多的表引擎和数据源类型。 关闭 #80775#90175 (Dmitry Novik)。
  • 如果参数化视图的模式被显式指定,则会显示它。 关闭 #88875#81385#90220 (Grigorii Sokolik)。
  • 如果日志在最后提交的索引之前,则正确处理 Keeper 日志条目中的间隙。 #90403 (Antonio Andelic)。
  • 改进 min_free_disk_bytes_to_perform_insert 设置,使其能够正确地与 JBOD 卷一起工作。 #90878 (Aleksandr Musorin)。
  • 允许在命名集合中为 S3 表引擎和 s3 表函数指定 storage_class_name 设置。 #91926 (János Benjamin Antal)。
  • 支持通过 system.zookeeper 插入辅助 zookeeper。 #92092 (RinChanNOW)。
  • 为 keeper 添加新的指标:KeeperChangelogWrittenBytesKeeperChangelogFileSyncMicrosecondsKeeperSnapshotWrittenBytesKeeperSnapshotFileSyncMicroseconds profile 事件,以及 KeeperBatchSizeElementsKeeperBatchSizeBytes 直方图指标。 #92149 (Miсhael Stetsyuk)。
  • 添加一个新的设置,trace_profile_events_list,它限制了使用 trace_profile_event 进行跟踪到指定的事件名称列表。 这允许在大型工作负载上进行更精确的数据收集。 #92298 (Alexey Milovidov)。
  • 支持可暂停的 failpoint 的 SYSTEM NOTIFY FAILPOINT。 - 支持 SYSTEM WAIT FAILPOINT fp PAUSE/RESUME。 #92368 (Shaohua Wang)。
  • system.data_skipping_indices 中添加 creation(隐式/显式)列。 #92378 (Raúl Marín)。
  • 允许将 YTsaurus dyn 表的列描述传递给字典源。 #92391 (MikhailBurdukov)。
  • #63985 中,我们实现了基于端口指定 TLS 配置所需的所有参数(请参阅 composable protocols),因此我们不必依赖全局 TLS 配置。 但是,实现仍然隐式地要求存在全局 openSSL.server 配置部分,这与需要为不同端口使用不同 TLS 配置的设置冲突。 例如,在 keeper-in-server 部署中,我们需要为 inter-keeper 通信和 clickhouse 客户端连接使用单独的 TLS 配置。 #92457 (Miсhael Stetsyuk)。
  • 引入一个新的设置 input_format_binary_max_type_complexity,它限制了以二进制格式可以解码的类型节点总数,以防止恶意负载。 #92519 (Raufs Dunamalijevs)。
  • 反映 system.background_schedule_pool{,_log} 中的运行任务。 添加文档。 #92587 (Azat Khuzhin)。
  • 如果在客户端历史记录中未找到匹配项,则在 Ctrl+R 搜索中执行当前查询。 #92749 (Azat Khuzhin)。
  • 支持 EXPLAIN indices = 1 作为 EXPLAIN indexes = 1 的别名。 关闭 #92483#92774 (Pranav Tiwari)。
  • Parquet 读取器现在允许将 Tuple 或 Map 列作为 JSON 读取:select x from file(f.parquet, auto, 'x JSON') 即使 f.parquet 中列 x 的类型是 tuple 或 map 也能工作。 #92864 (Michael Kolupaev)。
  • 支持 parquet 读取器中的空元组。 #92868 (Michael Kolupaev)。
  • 当本机复制失败并出现 BadRequest(例如,无效的块列表)时,回退到 Azure Blob Storage 的读写复制。 之前,这仅对 Unauthorized 错误进行处理,该错误是在将 blob 复制到不同的存储帐户时看到的。 但是,我们有时也会看到“指定的块列表无效”错误。 因此,现在更新了条件,以便在所有本机复制失败时回退到读和写。 #92888 (Smita Kulkarni)。
  • 修复使用 EC2 实例配置文件凭据运行许多并发 S3 查询时 EC2 元数据端点节流。 之前,每个查询都会创建一个自己的 AWSInstanceProfileCredentialsProvider,导致并发请求到 EC2 元数据服务,这可能导致超时和 HTTP response code: 403 错误。 现在,凭据提供程序被缓存并在所有查询之间共享。 #92891 (Sav)。
  • 重构 insert_select_deduplicate 设置,以添加保持向后兼容性的能力。 #92951 (Sema Checherinda)。
  • 记录平均速度较慢的后台任务(background_schedule_pool_log.duration_threshold_milliseconds=30),以避免过度记录任务。 #92965 (Azat Khuzhin)。
  • 在以前的版本中,一些 C++ 函数名称在 system.trace_logsystem.symbols 中显示不正确(“混淆”),并且 demangle 函数无法很好地处理它们。 关闭 #93074#93075 (Alexey Milovidov)。
  • 引入了新的设置 backup_data_from_refreshable_materialized_view_targets,用于跳过可刷新物化视图的备份。 具有 APPEND 刷新策略的 RMV 始终会被备份。 #93076 (Julia Kartseva)。 #93658 (Julia Kartseva)
  • 为大型翻译单元(例如函数)使用最小的调试信息,而不是没有调试信息。 #93079 (Alexey Milovidov)。
  • 通过实现 MinIO 特定错误的错误代码映射,为 AWS S3 C++ SDK 添加了 MinIO 兼容性支持。 此更改允许 ClickHouse 在使用 MinIO 部署而不是 AWS S3 时正确处理和重试 MinIO 服务器错误,从而提高了在自托管 MinIO 集群上运行对象存储的用户可靠性。 #93082 (XiaoBinMu)。
  • 编写符号化的 jemalloc profile(无需在生成堆 profile 期间使用二进制文件)。 #93099 (Azat Khuzhin)。
  • 复活 clickhouse git-import 工具 - 它在大型和无效的提交上已损坏。 请参阅 https://presentations.clickhouse.com/2020-matemarketing/#93202 (Alexey Milovidov)。
  • 不在查询日志中显示来自 URL 存储的密码。 #93245 (Konstantin Vedernikov)。
  • 支持 Geometry 类型用于 flipCoordinates#93303 (Bharat Nallan)。
  • 改进 SYSTEM INSTRUMENT ADD/REMOVE 的用户体验:使用字符串字面量表示函数名称,修补所有匹配的函数,并允许在 REMOVE 中使用 function_name。 #93345 (Pablo Marcos)。
  • 添加一个新的设置 materialize_statistics_on_merge,它启用/禁用在合并期间物化统计信息。 默认值为 1#93379 (Han Fei)。
  • ClickHouse 现在可以解析没有括号括起来的 DESCRIBE SELECT 查询的 SELECT。 关闭 #58382#93429 (Yarik Briukhovetskyi)。
  • 添加概率下的缓存正确性检查的随机化。 #93439 (Kseniia Sumarokova)。
  • 添加设置 type_json_allow_duplicated_key_with_literal_and_nested_object,以允许在 JSON 中重复路径,其中一个是字面量,另一个是嵌套对象,例如 {"a" : 42, "a" : {"b" : 42}}。 某些数据可能是在 https://github.com/ClickHouse/ClickHouse/pull/79317 中添加了重复路径限制之后创建的,并且进一步操作这些数据现在可能会导致错误。 使用此设置,可以使用旧数据而不会出现错误。 #93604 (Pavel Kruglov)。
  • 在 Pretty JSON 中,不要将简单类型的数值单独打印在行上。 #93836 (Pavel Kruglov)。
  • 当存在许多 alter table ... modify setting ... 语句时,可能无法获取锁 5 秒。 最好返回 timeout 而不是 logical error#93856 (Han Fei)。
  • 防止语法错误时产生过多的输出。 在此更改之前,它会输出整个 SQL 脚本,其中可能包含许多查询。 #93876 (Alexey Milovidov)。
  • 正确计算 Keeper 中带有统计信息的 check 请求的字节大小。 #93907 (Mikhail Artemenko)。
  • 添加了 use_hash_table_stats_for_join_reordering 设置,用于控制是否使用运行时哈希表大小统计信息进行连接重排序。 默认情况下启用此设置,保留 collect_hash_table_stats_during_joins 的现有行为。 #93912 (Vladimir Cherkasov)。
  • 用户现在可以部分查看 system.server_settings 表中的嵌套全局服务器设置(例如 logger.level)。 这仅涵盖具有固定结构(无列表、枚举、重复等)的设置。 #94001 (Hechem Selmi)。
  • QBit 现在可以比较相等。 #94078 (Raufs Dunamalijevs)。
  • 当 Keeper 检测到损坏的快照或不一致的变更日志时,抛出异常,而不是自动中止或清理文件。 这应该会导致 Keeper 的行为更安全,依赖于手动干预。 #94168 (Antonio Andelic)。
  • 修复 CREATE TABLE 失败时可能留下残留物的问题。 #94174 (Azat Khuzhin)。
  • 修复在使用密码保护的 TLS 密钥时,OpenSSL 中的未初始化内存访问(一个错误)。 #94182 (Konstantin Bogdanov)。
  • 将 chdig 升级到 v26.1.1#94290 (Azat Khuzhin)。
  • 支持 S3Queue 有序模式的更通用的分区。 #94321 (Bharat Nallan)。
  • 为设置 allow_statistics_optimize 添加了别名 use_statistics。 这与现有的设置 use_primary_keyuse_skip_indexes 更加一致。 #94366 (Robert Schulze)。
  • 为从数字转换为枚举启用设置 input_format_numbers_enum_on_conversion_error,以检查元素是否存在。 #94384 (Elmi Ahmadov)。
  • 在 S3(Azure)Queue 有序模式中,通过跟踪限制来清理失败的节点(之前仅对无序模式的失败和已处理节点进行此操作,因此现在也将对有序模式的失败节点进行此操作)。 #94412 (Kseniia Sumarokova)。
  • 现在可以在 system.server_settings 表中部分查看嵌套的全局服务器设置(例如 logger.level)。 这仅涵盖具有固定结构(无列表、枚举、重复等)的设置。 #94501 (Alexey Milovidov)。
  • 为 YTsaurus 字典和表启用命名集合。 #94582 (MikhailBurdukov)。
  • 为 S3 和 Azure Blob Storage 的 BACKUP/RESTORE 添加对 SQL 定义的命名集合的支持。 关闭 #94604#94605 (Pablo Marcos)。
  • 支持 S3Queue 有序模式的分区键分桶。 #94698 (Bharat Nallan)。
  • 添加一个异步指标,用于最长运行的合并经过的时间。 #94825 (Raúl Marín)。
  • 在应用位置删除使用 IcebergBitmapPositionDeleteTransform 之前,添加属于文件的检查。 #94897 (Yang Jiang)。
  • 现在 view_duration_ms 显示组处于活动状态的时间,而不是其中线程的持续时间之和。 #94966 (Sema Checherinda)。
  • 删除 hasAnyTokenshasAllTokens 函数中最大搜索令牌数量的限制,该限制限制为 64。 例如:SELECT count() FROM table WHERE hasAllTokens(text, ['token_1', 'token_2', [...], 'token_65']]); 该查询将导致 BAD_ARGUMENTS 错误,因为有 65 个搜索令牌。 通过此 PR,完全删除了限制,并且相同的查询将无需错误地运行。 #95152 (Elmi Ahmadov)。
  • 为从数字转换为枚举添加一个设置 input_format_numbers_enum_on_conversion_error,以检查元素是否存在。 关闭:#56144#56240 (Nikolay Degterinsky)。
  • 在读取 Iceberg 表中的数据文件和位置删除文件之间共享格式解析器资源,以减少内存分配。 #94701 (Yang Jiang)。

错误修复(官方稳定版本中用户可见的不良行为)

  • 修复预定义查询处理程序在插入期间会将尾随空格解释为数据的问题。 #83604 (Fabian Ponce)。
  • 修复 Join 存储和外到内连接优化应用时的 INCOMPATIBLE_TYPE_OF_JOIN 错误。 解决 #80794#84292 (Vladimir Cherkasov)。
  • 修复在使用 allow_experimental_join_right_table_sorting 启用的哈希连接时,出现“Chunk 中行数无效”异常的问题。 #86440 (yanglongwei)。
  • 始终在文件系统不区分大小写时,在 MergeTree 中将文件名替换为哈希值。 之前在具有不区分大小写的系统上(如 MacOS),当几个列/子列名称仅在大小写上不同时,可能会导致数据损坏。 #86559 (Pavel Kruglov)。
  • 为物化视图中底层查询的创建阶段添加完整的权限检查。 #89180 (pufit)。
  • 修复 icebergHash 函数在常量参数上的崩溃。 #90335 (Michael Kolupaev)。
  • 修复在没有事务的变异修改活动事务中的部件时出现的逻辑错误,该事务最终被回滚。 #90469 (Shaohua Wang)。
  • 更新 system.warnings 正确地将普通数据库转换为原子数据库后。 #90473 (sdk2)。
  • 修复在从 Parquet 文件读取时,prewhere 表达式的一部分在查询的其他地方使用时出现的断言。 #90635 (Max Kainov)。
  • 修复在单节点集群中以分桶方式从 Iceberg 读取时出现的崩溃。 这关闭了 #90913#91553 (Konstantin Vedernikov)。
  • 修复 Log 引擎在读取子列时出现的逻辑错误。 关闭 #91710#91711 (Pavel Kruglov)。
  • 修复 ATTACH AS REPLICATED 期间出现“Storage does not support transaction”逻辑错误。 #91772 (Shaohua Wang)。
  • 修复运行时过滤器在 LEFT ANTI JOIN 具有额外的后置条件时无法正常工作的问题。 #91824 (Alexander Gololobov)。
  • 修复了涉及 Nothing 类型的空安全比较错误。 关闭 #91834。 关闭 #84870。 关闭 #91821#91884 (Yarik Briukhovetskyi)。
  • 修复了原生 Parquet 读取器中 DELTA_BYTE_ARRAY 解码错误,影响高度重复的字符串数据。 #91929 (Daniel Muino)。
  • 仅缓存从 glob 推断的文件模式的模式,而不是在模式推断期间缓存所有文件。 关闭 #91745#92006 (Pavel Kruglov)。
  • 修复了 无法打包 tar 归档文件:无法写入所有字节 错误,该错误是由不正确的归档条目大小头引起的。 修复了 #89075#92122 (Julia Kartseva)。
  • 在 insert select 中释放请求流,以防止关闭 http 连接。 #92175 (Sema Checherinda)。
  • 修复了带有 USING 子句和 join_use_nulls 的多个 JOIN 的查询的逻辑错误。 #92251 (Vladimir Cherkasov)。
  • 修复了 join 重排序中 join_use_nulls 的逻辑错误,关闭 https://github.com/clickhouse/clickhouse/issues/90795#92289 (Vladimir Cherkasov)。
  • 修复了带有否定字面量的 arrayElement 的 AST 格式不一致的问题。 关闭 #92288 关闭 #92212 关闭 #91832 关闭 #91789 关闭 #91735 关闭 #88495 关闭 #92386#92293 (Pavel Kruglov)。
  • 修复了使用 join_on_disk_max_files_to_merge 设置时可能发生的崩溃。 #92335 (Bharat Nallan)。
  • 相关问题 #https://github.com/ClickHouse/support-escalation/issues/6365#92339 (Tuan Pham Anh)。
  • 修复了 SYSTEM SYNC FILE CACHE 中缺失的访问检查。 关闭 #92101#92372 (Kseniia Sumarokova)。
  • 修复了窗口函数和多个参数上的 count_distinct_optimization 传递错误。 #92376 (Raúl Marín)。
  • 修复了在使用某些聚合函数和窗口函数时出现的“无法写入已完成的缓冲区”错误。 关闭 #91415#92395 (Jimmy Aguilar Mena)。
  • 修复了 CREATE TABLE ... AS urlCluster() 和数据库引擎 Replicated 的逻辑错误。 关闭 #92216#92418 (Kseniia Sumarokova)。
  • 在 MergeTree 中变异期间继承源部件序列化信息设置。 这修复了数据类型序列化更改后,对变异部件执行查询时可能出现的不正确结果。 #92419 (Pavel Kruglov)。
  • 修复了列和子列具有相同名称时可能发生的冲突,导致使用错误的序列化和查询失败。 关闭 #90219。 关闭 #85161#92453 (Pavel Kruglov)。
  • 修复了将外部连接转换为内部连接时,由于不希望的查询计划修改而导致的 LOGICAL_ERROR。 此外,放宽了优化要求,以便在将注入函数应用于连接期间的聚合键时能够应用它。 #92503 (János Benjamin Antal)。
  • 修复了在对空元组列进行排序时出现的 SIZES_OF_COLUMNS_DOESNT_MATCH 错误。 关闭 #92422#92520 (Pavel Kruglov)。
  • 检查 JSON 类型中不兼容的类型路径。 关闭 #91577#92539 (Pavel Kruglov)。
  • 修复了在启动时尝试删除临时目录,而 MergeTree 表是在只读磁盘上创建时发生的死锁。 #92541 (Azat Khuzhin)。
  • 使用验证假设索引时使用正确的错误代码。 #92559 (Raúl Marín)。
  • 修复了分析器中列别名中动态子列解析的错误。 之前,列别名中的动态子列被包装在 getSubcolumn 中,在某些情况下可能无法解析。 关闭 #91434#92583 (Pavel Kruglov)。
  • 修复了 tokens() 在第二个参数为 null 时发生的崩溃。 #92586 (Raúl Marín)。
  • 修复了由于对底层 const PREWHERE 列进行就地变异而导致的潜在崩溃。 这可能发生在列收缩 (IColumn::shrinkToFit) 或过滤 (IColumn::filter) 时,并且可能由多个线程同时触发。 #92588 (Arsen Muk)。
  • 创建和实例化包含大型部件(超过 4,294,967,295 行)的表上的文本索引暂时被禁用。 此限制可防止不正确的查询结果,因为当前的索引实现尚不支持如此大的部件。 #92644 (Anton Popov)。
  • 修复了执行 JOIN 时出现的逻辑错误 Too large size (A) passed to allocator。 关闭 #92043#92667 (Yarik Briukhovetskyi)。
  • 删除了 ngram 长度(第一个参数)> 8 的 ngrambf_v1 索引会引发异常的错误。 #92672 (Robert Schulze)。
  • 修复了在使用了 zookeeper 存储时,在后台命名集合重新加载期间发生的未捕获异常。 关闭 https://github.com/ClickHouse/clickhouse-private/issues/44180#92717 (Kseniia Sumarokova)。
  • 重做了通配符授权的访问授权检查中的不正确逻辑。 先前的尝试 https://github.com/ClickHouse/ClickHouse/pull/90928 解决了关键漏洞,但最终过于严格,导致一些通配符 GRANT 语句由于无关的撤销而失败。 #92725 (pufit)。
  • 修复了在 WHERE 中使用 not match(...) 时数据跳过逻辑中的错误,导致不正确的结果。 关闭 #92492#92726 (Nihal Z. Miaji)。
  • 如果在只读磁盘上创建 MergeTree 表,则不要在启动时尝试删除临时目录。 #92748 (Alexey Milovidov)。
  • 修复了 ALTER TABLE REWRITE PARTS (v2) 中“无法将操作添加到空 ExpressionActionsChain”错误。 #92754 (Azat Khuzhin)。
  • 避免因从断开连接的 Connection 读取而导致的崩溃。 #92807 (Raufs Dunamalijevs)。
  • 修复了在 Ordered 模式下,存储 S3Queue 中出现的“无法在 100 次重试内设置文件处理”逻辑错误。 现在它被替换为警告。 此错误在 25.10 版本之前可能会发生,如果 keeper 会话过期,但它仍然会在 25.10+ 版本中显示为警告,因为在 Ordered 模式下高处理并发的情况下,理论上仍然可能发生此错误。 #92814 (Kseniia Sumarokova)。
  • 之前,一些使用 PK 分片和错误条件的查询失败了。 现在它们不会失败了。 需要用于 https://github.com/ClickHouse/ClickHouse/pull/89313#92815 (Yarik Briukhovetskyi)。
  • 修复了 `system.parts` 表中文本索引未压缩大小的计算。 #92832 (Anton Popov)。
  • 修复了在 `WHERE` 子句的谓词中包含 `IN` 子句和子查询的轻量级更新中主索引的使用。 #92838 (Anton Popov)。
  • 修复了 JSON 中路径 'skip' 的类型提示创建。 关闭 #92731#92842 (Pavel Kruglov)。
  • 在 S3 表引擎中,如果存在非确定性函数,我们应该避免缓存分区键。 #92844 (Miсhael Stetsyuk)。
  • 修复了稀疏列的变异后可能出现的 `FILE_DOESNT_EXIST` 错误,该稀疏列的 `ratio_of_defaults_for_sparse_serialization=0.0`。 关闭 #92633#92860 (Pavel Kruglov)。
  • 修复旧的 parquet 读取器(默认情况下未使用)在 JSON 列在 Tupe 列之后时进行 parquet schema 推理的问题。 修复旧的 parquet 读取器(默认情况下未使用)在空元组上失败的问题。 #92867 (Michael Kolupaev)。
  • 修复了在具有 `join_use_nulls` 的多个常量条件连接中存在的逻辑错误,关闭 #92640#92892 (Vladimir Cherkasov)。
  • 修复了在分区表达式中包含子列的表插入期间可能出现的 `NOT_FOUND_COLUMN_IN_BLOCK` 错误。 关闭 #93210。 关闭 #83406#92905 (Pavel Kruglov)。
  • 修复了在具有别名的表上的 Merge 引擎中的 `NO_SUCH_COLUMN_IN_TABLE` 错误。 关闭 #88665#92910 (Pavel Kruglov)。
  • 修复了在 LowCardinality(Nullable(T)) 列上进行 full_sorting_join 时 NULL != NULL 的情况。 #92924 (Vladimir Cherkasov)。
  • 修复了 `MergeTree` 表中构建文本索引期间的几个崩溃问题。 #92925 (Anton Popov)。
  • 恢复 TTL 聚合期间所需的 LowCardinality 包装器,以防止表优化期间出现异常。 #92971 (Seva Potapov)。
  • 修复了在 `has` 函数中使用空数组时索引分析中的逻辑错误。 关闭 #92906#92995 (Nihal Z. Miaji)。
  • 修复了终止后台调度池时可能发生的挂起问题(可能导致服务器在关闭时挂起)。 #93008 (Azat Khuzhin)。
  • 修复了稀疏列变异后可能出现的 FILE_DOESNT_EXIST 错误,当通过 alter 将 `ratio_of_defaults_for_sparse_serialization` 更改为 `1.0` 时。 #93016 (Pavel Kruglov)。
  • 修复了当 `not materialize(...)` 或 `not CAST(...)` 在 WHERE 中使用时导致不正确结果的数据跳过逻辑中的错误。 关闭 #88536#93017 (Nihal Z. Miaji)。
  • 修复了由于共享部分的 TOCTOU 竞争而导致可能使用过时的部分的问题。 #93022 (Azat Khuzhin)。
  • 修复了解析格式错误的 `groupConcat` 聚合状态时,偏移量超出范围导致崩溃的问题。 #93028 (Raufs Dunamalijevs)。
  • 修复了分布式查询初步取消后连接保持在损坏状态的问题。 #93029 (Azat Khuzhin)。
  • 修复了右侧连接键是稀疏列时的连接结果。 这关闭了 #92920。 我只能使用 `set compatibility='23.3'` 重现该错误。 不确定是否应该回溯。 #93038 (Amos Bird)。
  • 修复了在 `estimateCompressionRatio()` 中取消后可能出现的 `Cannot finalize buffer after cancellation` 错误。 修复了: #87380#93068 (Azat Khuzhin)。
  • 修复了基于复杂表达式(例如 `concat(col1, col2)`)构建的文本索引的合并。 #93073 (Anton Popov)。
  • 修复了在筛选器包含子列时应用投影的问题。 关闭 #92882#93141 (Pavel Kruglov)。
  • 修复了在将运行时筛选器添加到查询计划时触发的一些逻辑错误。 这是由于从连接的一侧不正确地返回重复的常量列造成的。 #93144 (Alexander Gololobov)。
  • 用于运行时筛选器的特殊函数 `__applyFilter` 在某些有效情况下返回 ILLEGAL_TYPE_OF_ARGUMENT。 #93187 (Alexander Gololobov)。
  • 防止不同的插值列在插值列实际上是同一列的别名时合并到同一列中。 #93197 (Yakov Olkhovskiy)。
  • 在与已经填充的右表连接时,不要添加运行时筛选器。 #93211 (Alexander Gololobov)。
  • 修复了死会话后的 keeper 持久性监视程序清理问题。 这关闭了 #92480#93213 (Konstantin Vedernikov)。
  • 修复了 iceberg 中的按元组排序问题。 这关闭了 #92977#93225 (Konstantin Vedernikov)。
  • 修复了 S3Queue 设置 `s3queue_migrate_old_metadata_to_buckets` 的错误。 关闭 #93392#93196#81739#93232 (Kseniia Sumarokova)。
  • 在合并期间重建投影时,删除未使用的列。 这减少了内存使用量并创建了更少的临时部分。 #93233 (Nikolai Kochetov)。
  • 修复了在存在标量相关子查询时,从子查询中删除未使用的列的问题。 在修复之前,如果列仅在相关子查询中使用,则该列可能会被删除,并且查询将因 `NOT_FOUND_COLUMN_IN_BLOCK` 错误而失败。 #93273 (Dmitry Novik)。
  • 修复了在源表更改期间 MV 中可能缺少子列的问题。 关闭 #93231#93276 (Pavel Kruglov)。
  • 修复了 Merge 表引擎查询计划中分析器可能为 `hostName()` 抛出 ILLEGAL_COLUMN 错误的问题,当合并本地表和远程/分布式表时。 关闭 #92059#93286 (Jinlin)。
  • 修复了一个 NOT IN 具有非常量数组参数时返回错误值的情况 + 支持非常量 Array 函数。 关闭 #14980#93314 (Yarik Briukhovetskyi)。
  • 修复了 `use_top_k_dynamic_filtering` 优化中 `Not found column` 的问题。 修复了 #93186#93316 (Nikolai Kochetov)。
  • 修复了基于子列构建的文本索引的重建。 #93326 (Anton Popov)。
  • 修复了在 hasAllTokenshasAnyTokens 函数中将空数组作为第二个参数处理的问题。 #93328 (Anton Popov)。
  • 修复了在带有右侧表总计的查询中使用运行时过滤器时的逻辑错误。 #93330 (Alexander Gololobov)。
  • 服务器不再在调用具有非常量分词器参数(第 2、3、4 个参数)的函数 tokens 时崩溃,例如 SELECT tokens(NULL, 1, materialize(1))#93383 (Robert Schulze)。
  • 修复了 groupConcat 状态反序列化中的整数溢出漏洞,该漏洞可能导致使用精心设计的聚合状态出现内存安全问题。 #93426 (Raufs Dunamalijevs)。
  • 修复了在索引不包含任何标记(所有数组为空或所有标记被分词器跳过)时,对数组列进行文本索引分析的问题。 #93457 (Anton Popov)。
  • 避免在连接字符串中包含用户名/密码时,在 ClickHouse Client 中进行 oauth 登录。 #93459 (Krishna Mannem)。
  • 修复了 DataLakeCatalog 中对 Azure ADLS Gen2 委托凭据的支持 - 从 Iceberg REST 目录解析 adls.sas-token.* 密钥并修复 ABFSS URL 解析。 #93477 (Karun Anantharaman)。
  • 修复了带有分析器的 GLOBAL IN 支持(之前该集合在远程节点上再次创建)。 #93507 (Azat Khuzhin)。
  • 修复了在直接反序列化到 Sparse 列期间提取子列的问题。 #93512 (Pavel Kruglov)。
  • 修复了在具有重复搜索查询时从文本索引直接读取的问题。 #93516 (Anton Popov)。
  • 修复了在启用运行时过滤器且连接表多次返回相同的列时出现的 NOT_FOUND_COLUMN_IN_BLOCK 错误(例如 SELECT a, a, a FROM t)。 #93526 (Alexander Gololobov)。
  • 修复了一个 bug,在使用 ssh 连接时 clickhouse-client 会两次要求输入密码。 #93547 (Isak Ellmer)。
  • 确保在关闭时完成 zookeeper(修复了极少数情况下关闭时可能发生的挂起)。 #93602 (Azat Khuzhin)。
  • 修复了在具有去重竞争的情况下恢复 ReplicatedMergeTree 时出现的 LOGICAL_ERROR。 #93612 (Pablo Marcos)。
  • 修复了在某些输入格式中,在直接反序列化到 Sparse 列期间使用 Sparse 列进行 TTL 更新的问题。 这修复了可能的逻辑错误 Unexpected type of result TTL column#93619 (Pavel Kruglov)。
  • 修复了 h3 索引函数在无效输入上调用时有时崩溃或卡住的问题。 #93657 (Michael Kolupaev)。
  • 在非 UTF-8 数据上使用 ngram_bf 索引会导致未初始化的内存读取,这些值可能存在于生成的索引结构中。 关闭了 #92576#93663 (Alexey Milovidov)。
  • 验证解压缩缓冲区的大小是否如预期。 #93690 (Raúl Marín)。
  • 防止用户使用 merge 表引擎在没有检查 SHOW COLUMNS 权限的情况下获取表的列列表。 #93695 (János Benjamin Antal)。
  • 修复了在子列之上创建的跳索引的物化。 #93708 (Anton Popov)。
  • 我们将存储的共享指针存储在 QueryPipeline::resources::storage_holders 中,以确保在 PipelineExecutor 生存期间不会销毁 IStorage 对象。 #93746 (Miсhael Stetsyuk)。
  • 修复了在服务器间主机在重启后更改时,附加 Replicated DBs 的问题。 #93779 (Tuan Pham Anh)。
  • 修复了 ReadBufferFromS3!read_until_position 的断言,该断言在启用缓存时发生。 #93809 (Kseniia Sumarokova)。
  • 修复了在与 Map 列一起使用空元组时出现的错误。 关闭了 #93784#93814 (Nihal Z. Miaji)。
  • 修复了在合并期间重建投影时 _part_offset 损坏的问题,并通过避免不必要地读取 _part_offset 列以及跳过投影计算中不需要的列来优化投影处理。 这延续了在 #93233 中引入的优化。 #93827 (Amos Bird)。
  • 删除“Bad version”处理。 #93843 (Anton Ivashkin)。
  • 修复了 optimize_inverse_dictionary_lookup 在使用分布式查询时,当键是带符号整数类型时不起作用的问题。 关闭了 #93259#93848 (Nihal Z. Miaji)。
  • 修复了 lag/lead 在分布式 remote() 查询中不起作用的问题。 关闭了 #90014#93858 (Nihal Z. Miaji)。
  • 修复了系统仪表板分发错误。 #93937 (Pablo Marcos)。
  • https://github.com/ClickHouse/ClickHouse/pull/89173 中,我们向 TraceSender 发送到内部管道中的结构中添加了一个额外的字段。 但是,缓冲区大小没有更新(此处),因此我们正在向缓冲区写入比 buffer_size 更多的数据,这导致多次刷新。 由于 TraceSender::send 是从不同的线程调用的,因此不同线程的刷新可能会交错,从而破坏接收端(TraceCollector)依赖的不变量。 #93966 (Miсhael Stetsyuk)。
  • 修复了在带有 USING 子句的 Join 存储的连接操作期间的类型转换为超类型的问题。 修复了 #91672。 修复了 #78572#94000 (Dmitry Novik)。
  • 修复了在应用连接运行时过滤器到 Merge 表时,FilterStep 未正确添加的问题。 #94021 (Alexander Gololobov)。
  • 包含多个列谓词和 bloom 过滤器跳索引的 SELECT 查询,并且同时存在 ORNOT 条件,可能会返回不一致的结果。 现在已修复。 #94026 (Shankar Iyer)。
  • 修复了带有依赖索引的 CLEAR 列。 #94057 (Raúl Marín)。
  • 修复了 ReadWriteBufferFromHTTP 中的 use-of-uninitialized-value。 #94058 (Alexey Milovidov)。
  • 修复了 JSON 中对类型路径的错误检查。 该检查是在 https://github.com/ClickHouse/ClickHouse/pull/92842 中引入的,可能导致现有表启动时出错。 #94070 (Pavel Kruglov)。
  • 修复了在存在 OUTER JOIN 时,过滤器分析期间发生的崩溃。 修复了 #90979#94080 (Dmitry Novik)。
  • 修复了在使用 UInt8 聚合键在并行(max_threads > 1 - 默认值)时 uniqTheta 的准确性。 #94095 (Azat Khuzhin)。
  • 修复了在 SCOPE_EXIT 内部从 socket.setBlocking(true) 调用中抛出异常引起的崩溃。 #94100 (Miсhael Stetsyuk)。
  • 修复了 DROP PARTITION 删除由后续日志条目创建的部分时,ReplicatedMergeTree 中丢失数据的问题。 #94123 (Tuan Pham Anh)。
  • 修复了 parquet reader v3 错误地处理跨页边界的数组。 这发生在例如由没有启用页面统计信息或页面索引的 Arrow 写入的文件中。 仅影响 Array 数据类型的列。 可能的症状是每 ~1 MB 的数据,一个数组会被截断。 在此修复之前,请使用此设置作为解决方法:input_format_parquet_use_native_reader_v3 = 0#94125 (Michael Kolupaev)。
  • 修复了 ReplicatedMergeTree 在等待日志条目时,监视过多。 #94133 (Azat Khuzhin)。
  • 函数 arrayShufflearrayPartialShufflearrayRandomSample 用于实现 const 列,以便不同的行获得不同的结果。 #94134 (Joanna Hulboj)。
  • 修复物化视图中评估表函数时的数据竞争。 #94171 (Alexey Milovidov)。
  • 修复 PostgreSQL 数据库引擎中的空指针引用(当查询不正确时)。 关闭 #92887#94180 (Alexey Milovidov)。
  • 修复使用 SELECT 查询和多个子查询的可刷新物化视图中的内存泄漏。 #94200 (Antonio Andelic)。
  • 修复 DataPartStorageOnDiskBase::removesystem.parts 之间的数据竞争。 关闭 #49076#94262 (Alexey Milovidov)。
  • 移除 HashTable 复制赋值中错误的 noexcept 说明符,这可能导致在内存异常时崩溃(std::terminate)。 #94275 (Nikita Taranov)。
  • 之前,在 GROUP BY 中创建具有重复列的投影(例如,GROUP BY c0, c0)并插入数据,如果启用了 optimize_row_order,则会导致 std::length_error。 关闭 #94065#94277 (Alexey Milovidov)。
  • 修复 ZooKeeper 客户端在连接时的模糊错误,导致挂起和崩溃。 #94320 (Azat Khuzhin)。
  • 修复函数到子列优化未应用于子列。 #94323 (Pavel Kruglov)。
  • 修复在启用 enable_lazy_columns_replication 时嵌套 RIGHT JOIN 中可能不正确的结果。 该错误导致复制列中的所有行错误地返回相同的值,而不是它们不同的值。 关闭 #93891#94339 (Vladimir Cherkasov)。
  • 修复使用等价集进行 SEMI JOIN 过滤的推送。 如果参数类型已更改,则不要将过滤器向下推送。 修复 #93264#94340 (Dmitry Novik)。
  • 修复使用 DataLake 数据库引擎(delta lake catalogs 集成)的 DeltaLake CDF 的使用。 关闭 #94122#94342 (Kseniia Sumarokova)。
  • 修复在使用了 SLRU 缓存策略的情况下,当前指标 FilesystemCacheSizeLimit 的不正确值。 #94363 (Kseniia Sumarokova)。
  • 现在,使用少于两个参数创建 Backup 数据库引擎会返回更具描述性的错误消息(参数数量错误 而不是 std::out_of_range: InlinedVector::at(size_type) const failed bounds check.)。 #94374 (Robert Schulze)。
  • 忽略数据库级别全局授权的不可能撤销,对于具有授权选项的授权。 #94386 (pufit)。
  • 修复从紧凑部件读取稀疏偏移量。 关闭 #94385#94399 (Pavel Kruglov)。
  • 不要阻止使用隐式索引的列的 ALTER 操作,即使使用了 alter_column_secondary_index_modethrow 模式。 #94425 (Raúl Marín)。
  • 修复 TCPHandler 在读取 Protocol::Client::IgnoredPartUUIDs 时,多个 receivePacketsExpectQuery 调用导致崩溃。 #94434 (Miсhael Stetsyuk)。
  • 修复 system.functions 中敏感数据的屏蔽。 #94436 (Vitaly Baranov)。
  • 修复在禁用 send_profile_events 时的空指针引用。 此功能最近为 ClickHouse Python 驱动程序引入。 关闭 #92488#94466 (Alexey Milovidov)。
  • 修复文本索引 .mrk 不兼容性在合并期间。 #94494 (Peng Jian)。
  • read_in_order_use_virtual_row 启用时,代码基于完整的 первичный ключ 大小访问索引列,而没有检查索引是否被截断,导致 use-after-free / 未初始化内存。 关闭 #85596#94500 (Alexey Milovidov)。
  • 修复当外部表用于带有 GLOBAL IN 的子查询时,如果类型为 Nullable,则由于类型不匹配而导致的错误。 关闭 #94097#94511 (Alexey Milovidov)。
  • 在以前的版本中,对同一表达式进行多次索引条件查询可能会错误地抛出 未找到列 异常。 关闭 #60660#94515 (Alexey Milovidov)。
  • 修复运行时过滤器中 Nullable 连接列的处理不正确。 #94555 (Alexander Gololobov)。
  • 创建正在使用的工作负载中的工作负载不再导致崩溃。 #94599 (Sergei Trifonov)。
  • 修复在启用 isNotNull 评估缺失列时,ANY LEFT JOIN 优化期间的崩溃。 #94600 (Molly)。
  • 修复引用具有计算默认值的其他列时的默认表达式评估。 #94615 (Alexey Milovidov)。
  • 修复 BACKUP/RESTORE 操作中的权限问题。 #94617 (Pablo Marcos)。
  • 修复当数据类型为 Nullable(DateTime64) 时,由于不正确的类型转换而导致的崩溃。 #94627 (Miсhael Stetsyuk)。
  • 修复某些带有 ORDER BY 的分布式查询返回 ALIAS 列值交换(即,列 a 显示列 b 的数据,反之亦然)的错误。 #94644 (filimonov)。
  • 修复将 keeper-bench 的结果存储到文件。 #94654 (Antonio Andelic)。
  • 修复当列包含负浮点值时,使用 MinMax 类型统计信息的不正确估计。 #94665 (zoomxi)。
  • 修复读取 map 的键为 struct 时的 Parquet 文件。 #94670 (Konstantin Vedernikov)。
  • 修复使用复杂 ON 条件时,RIGHT join 结果可能不正确。 关闭 #92913#94680 (Vladimir Cherkasov)。
  • 保留垂直合并后的常量索引粒度(use_const_adaptive_granularity)。 #94725 (Azat Khuzhin)。
  • 修复带有标量子查询和表依赖项的 mutation 错误。 如果表对列具有依赖项(索引或投影),则标量子查询可能会被评估和缓存而没有数据,从而导致不正确的更改。 #94731 (Raúl Marín)。
  • 修复 AsynchronousMetrics cpu_pressure 在出错时的回退。 #94827 (Raúl Marín)。
  • getURLHostRFC 函数在引用指针之前缺少边界检查。当将空字符串传递给 domainRFC 时,它会读取未初始化的内存,从而触发 MSan 错误。 #94851 (Alexey Milovidov)。
  • 修复加密磁盘的只读性。 #94852 (Azat Khuzhin)。
  • 修复在使用旧分析器和分布式表时,分数的 LIMIT/OFFSET 中的逻辑错误。 关闭 #94712#94999 (Ahmed Gouda)。
  • 修复在启用默认的 join runtime 过滤器时,某些条件下发生的崩溃。 #95000 (Alexander Gololobov)。
  • 改进用于 table engine URL() 和 table function url() 中 url 中使用的密码的掩码。 #95006 (Vitaly Baranov)。
  • 函数 toStartOfInterval 现在与 toStartOfX 具有相同的工作方式,其中 XDay, Week, Month, Quarter, Year,当 enable_extended_results_for_datetime_functions 开启时。 #95011 (Kirill Kopnev)。
  • 修复常量字符串比较不尊重 cast_string_to_date_time_modebool_true_representationbool_false_representationinput_format_null_as_default 设置的问题。 关闭 #91681#95040 (Nihal Z. Miaji)。
  • 修复文件系统缓存中的数据竞争。 #95064 (Alexey Milovidov)。
  • 修复 Parquet reader 中的一个罕见的竞争条件。 #95068 (Alexey Milovidov)。
  • 修复当 LIMIT 为零时,top K 优化中的崩溃。 关闭 #93893#95072 (Alexey Milovidov)。
  • 从 DateTime/整数转换为 Time64 会使用非单调的 toTime 提取一天中的时间组件。 ToDateTimeMonotonicity 模板错误地声称此转换是单调的,导致在调试构建中出现“MergeTreeSetIndex 中无效的二分查找结果”异常。 #95125 (Alexey Milovidov)。
  • 仅在必要时重新创建 manifest 文件条目的列表(之前是在每次迭代中完成的)。 #95162 (Daniil Ivanik)。

构建/测试/打包改进

  • 添加一套工具,用于使用 jemalloc 的堆分析功能,分析 ClickHouse SQL 解析器中的内存分配情况。 #94072 (Ilya Yatsishin)。
  • 添加了一个工具,可以简化解析器中内存分配的调试。它使用 jemalloc stats.allocated 指标在解析查询到 AST 表示形式之前和之后,以显示分配了什么。它还支持内存分析模式,该模式在构建报告之前和之后转储配置文件,以显示分配发生的位置。 #93523 (Ilya Yatsishin)。
  • 删除传递性 libc++ 包含项。 #92523 (Raúl Marín)。
  • 使一些顺序测试并行: https://github.com/ClickHouse/ClickHouse/pull/93030/changes#diff-c3a73510dae653c9bbfa24300b32f5d6ec663fd4e72cc4a3d5daa6e4342915df#93030 (Nikita Fomichev)。
  • 清理一些构建标志。 #93679 (Raúl Marín)。
  • 将 c-ares 从 v1.34.5 升级到 v1.34.6。这解决了 c-ares 的 CVE-2025-62408,这与 ClickHouse 无关。 #94129 (Govind R Nair)。
  • 使用 curl 8.18.0。 #94742 (Konstantin Bogdanov)。
    © . This site is unofficial and not affiliated with ClickHouse, Inc.