Cloud 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,使其可以在查询中构造带名称的元组(命名元组)。新增函数 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)。
-
新增一个设置,用于启用或禁用将页索引写入 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)。