跳转到主内容
跳转到主内容

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-clientclickhouse-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)。

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