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

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-clientclickhouse-local 现在默认使用多查询模式(而不是单查询模式)。例如,clickhouse-client -q "SELECT 1; SELECT 2" 现在可以正常工作,而此前用户必须额外添加 --multiquery(或 -n)。--multiquery/-n 开关因此变得多余。在多查询语句中,INSERT 查询会根据其 FORMAT 子句被特殊处理:如果 FORMATVALUES(最常见的情况),则 INSERT 语句的结尾由查询末尾的分号 ; 表示。对于所有其他 FORMAT(例如 CSVJSONEachRow),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)。

  • 为 S3 表引擎新增 _etag 虚拟列。修复 #65312#65386 (skyoct)。

  • 此 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)。