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

v24.8 Cloud 版更新日志

基于 v24.8 版本的 ClickHouse Cloud 服务的相关更改。

向后不兼容的变更

  • 更改 Variant 数据类型的二进制序列化:添加紧凑模式,以避免为具有单个变体或仅具有 NULL 值的粒度多次写入相同的鉴别器。添加默认启用的 MergeTree 设置 use_compact_variant_discriminators_serialization。请注意,Variant 类型仍处于实验阶段,除非您一直在与支持团队合作以更早地启用此功能,否则序列化中的向后不兼容更改不应影响您。#62774 (Kruglov Pavel)。

  • 禁止使用复制数据库的 CREATE MATERIALIZED VIEW ... ENGINE Replicated*MergeTree POPULATE AS SELECT ...。此特定 PR 仅适用于仍在使用 ReplicatedMergeTree 的用户。#63963 (vdimir)。

  • 指标 KeeperOutstandingRequets 已重命名为 KeeperOutstandingRequests。这修复了在 #66179 中报告的拼写错误。#66206 (Robert Schulze)。

  • clickhouse-client 和 clickhouse-local 现在默认使用多查询模式(而不是单查询模式)。例如,clickhouse-client -q "SELECT 1; SELECT 2" 现在可以工作,而用户以前必须添加 --multiquery (或 -n)。--multiquery/-n 开关已过时。多查询语句中的 INSERT 查询根据其 FORMAT 子句进行特殊处理:如果 FORMAT 是 VALUES(最常见的情况),则 INSERT 语句的结尾由查询末尾的尾随分号 ; 表示。对于所有其他 FORMAT(例如 CSV 或 JSONEachRow),INSERT 语句的结尾由查询末尾的两个换行符 \n\n 表示。#63898 (wxybear)。

  • 在以前的版本中,可以通过将 WithDictionary 附加到数据类型名称来使用 LowCardinality 数据类型的替代语法。这是一个最初的工作实现,从未记录在案或向公众公开。现在,它已被弃用。如果您使用过此语法,则必须 ALTER 您的表并将数据类型重命名为 LowCardinality。#66842(Alexey Milovidov)。

  • 修复了与分布式目标表一起使用的存储 Buffer 的逻辑错误。这是一个向后不兼容的更改:如果表在查询中出现多次(例如,在自连接中),则使用带有分布式目标表的 Buffer 的查询可能会停止工作。#67015 (vdimir)。

  • 在以前的版本中,使用接近零的负参数调用基于 Gamma 函数(例如卡方、学生、费舍尔)的随机分布函数会导致长时间计算或无限循环。在新版本中,使用零或负参数调用这些函数将产生异常。这关闭了 #67297#67326 (Alexey Milovidov)。

  • 在以前的版本中,如果要求生成非常大的数组,arrayWithConstant 可能会很慢。在新版本中,每个数组限制为 1 GB。这关闭了 #32754#67741 (Alexey Milovidov)。

  • 修复 REPLACE 修饰符格式(禁止省略括号)。#67774 (Azat Khuzhin)。

新功能

  • 扩展函数 tuple 以在查询中构造命名元组。引入函数 tupleNames 以从元组中提取名称。#54881 (Amos Bird)。

  • ASOF JOIN 支持 full_sorting_join 算法 关闭 #54493#55051 (vdimir)。

  • 添加了一个新的表函数 fuzzQuery。此函数允许您使用随机变化修改给定的查询字符串。示例:SELECT query FROM fuzzQuery('SELECT 1');。#62103 (pufit)。

  • 添加新的窗口函数 percent_rank。#62747 (lgbo)。

  • 在 clickhouse-client 中支持 JWT 身份验证。#62829 (Konstantin Bogdanov)。

  • 添加 SQL 函数 changeYear、changeMonth、changeDay、changeHour、changeMinute、changeSecond。例如,SELECT changeMonth(toDate('2024-06-14'), 7) 返回日期 2024-07-14。#63186 (cucumber95)。

  • 添加 system.error_log,其中包含表 system.errors 中的错误值的历史记录,定期刷新到磁盘。#65381 (Pablo Marcos)。

  • 添加聚合函数 groupConcat。与 arrayStringConcat( groupArray(column), ',') 大致相同 可以接收 2 个参数:字符串分隔符和要处理的元素数。#65451 (Yarik Briukhovetskyi)。

  • 添加 AzureQueue 存储。#65458 (Kseniia Sumarokova)。

  • 添加一个新设置以禁用/启用将页面索引写入 parquet 文件。#65475 (lgbo)。

  • 自动将通配符 * 附加到带有表函数 file 的目录路径末尾。#66019 (Zhidong (David) Guo)。

  • 在非交互模式下向客户端添加 --memory-usage 选项。#66393 (vdimir)。

  • 为 S3 表引擎添加 _etag 虚拟列。修复了 #65312#65386 (skyoct)

  • 此拉取请求为不同的引擎(File、URL、S3、AzureBlobStorage、HDFS)引入了 Hive 风格的分区。Hive 风格的分区将数据组织到分区子目录中,从而可以有效地查询和管理大型数据集。目前,它仅创建具有适当名称和数据的虚拟列。后续 PR 将引入适当的数据过滤(性能加速)。#65997 (Yarik Briukhovetskyi)。

  • 添加与 Spark 兼容的函数 printf。#66257 (李扬)。

  • 添加了对使用函数 readWKTLineString 读取 WKT 格式的 MULTILINESTRING 几何图形的支持。#67647 (Jacob Reckhard)。

  • 为查询缓存添加了标记(命名空间)机制。具有不同标记的相同查询被查询缓存视为不同。示例:SELECT 1 SETTINGS use_query_cache = 1, query_cache_tag = 'abc' 和 SELECT 1 SETTINGS use_query_cache = 1, query_cache_tag = 'def' 现在创建不同的查询缓存条目。#68235(sakulali)。