v24.8 云端更新日志
ClickHouse Cloud 服务在 v24.8 版本中的相关变更。
向后不兼容的变更
-
更改
Variant数据类型的二进制序列化:添加紧凑模式,以避免在仅包含单一 variant 或仅包含NULL值的粒度上多次写入相同的判别符。新增 MergeTree 设置use_compact_variant_discriminators_serialization,默认启用。请注意,Variant类型仍为实验性功能,此序列化的向后不兼容变更一般不会对你造成影响,除非你此前已与支持团队合作提前启用该功能。#62774 (Kruglov Pavel)。 -
禁止在 Replicated 数据库中使用
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 函数的随机分布函数(例如 Chi-Squared、Student、Fisher)使用接近零的负参数会导致长时间计算或无限循环。在新版本中,对这些函数传入零或负参数将抛出异常。此改动关闭了 #67297。#67326 (Alexey Milovidov)。
-
在之前的版本中,当被要求生成非常大的数组时,
arrayWithConstant可能会很慢。在新版本中,每个数组的大小被限制为 1 GB。此改动关闭了 #32754。#67741 (Alexey Milovidov)。 -
修复
REPLACE修饰符的格式化(禁止省略括号)。#67774 (Azat Khuzhin)。
新功能
-
扩展函数 tuple 以在查询中构造具名元组(named tuple)。引入函数 tupleNames 以从元组中提取名称。#54881 (Amos Bird)。
-
在 full_sorting_join 算法中为 ASOF 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)。
-
新增用于启用/禁用将页索引(page index)写入 Parquet 文件的设置。#65475 (lgbo)。
-
在使用表函数 file 时,自动在目录路径末尾追加通配符 *。#66019 (Zhidong (David) Guo)。
-
在非交互模式下,为客户端新增 --memory-usage 选项。#66393 (vdimir)。
-
此 pull request 为不同引擎(File、URL、S3、AzureBlobStorage、HDFS)引入了 Hive 风格的分区。Hive 风格分区将数据组织到分区子目录中,从而可以高效查询和管理大型数据集。目前,它仅创建具有相应名称和数据的虚拟列。后续的 PR 将引入相应的数据过滤(以提升性能)。#65997 (Yarik Briukhovetskyi)。
-
新增函数 printf,以提升与 Spark 的兼容性。#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)。