v24.2 更新日志
ClickHouse 发布标签:24.2.2.15987
向后不兼容的更改
- 验证嵌套类型中可疑/实验性类型。以前,我们没有验证嵌套类型(JSON 除外)中的此类类型,如 Array/Tuple/Map。#59385 (Kruglov Pavel)。
- 排序子句
ORDER BY ALL
(在 v23.12 中引入)已替换为ORDER BY *
。先前的语法对于具有列all
的表来说太容易出错。#59450 (Robert Schulze)。 - 为线程数和块大小添加健全性检查。#60138 (Raúl Marín)。
- 如果同时启用查询级设置
async_insert
和deduplicate_blocks_in_dependent_materialized_views
,则拒绝传入的 INSERT 查询。此行为由设置throw_if_deduplication_in_dependent_materialized_views_enabled_with_async_insert
控制,默认情况下启用。这是 https://github.com/ClickHouse/ClickHouse/pull/59699 的延续,需要解除阻止 https://github.com/ClickHouse/ClickHouse/pull/59915。#60888 (Nikita Mikhaylov)。 - 实用程序
clickhouse-copier
已移至 GitHub 上的单独存储库:https://github.com/ClickHouse/copier。它不再包含在捆绑包中,但仍可作为单独下载项使用。这关闭了:#60734 这关闭了:#60540 这关闭了:#60250 这关闭了:#52917 这关闭了:#51140 这关闭了:#47517 这关闭了:#47189 这关闭了:#46598 这关闭了:#40257 这关闭了:#36504 这关闭了:#35485 这关闭了:#33702 这关闭了:#26702 ### 用户界面更改的文档条目。#61058 (Nikita Mikhaylov)。 - 为了提高与 MySQL 的兼容性,函数
locate
现在默认接受参数(needle, haystack[, start_pos])
。可以通过设置function_locate_has_mysql_compatible_argument_order = 0
来恢复先前的行为(haystack, needle, [, start_pos])
。#61092 (Robert Schulze)。 - 自 23.5 版本以来,过时的内存中数据部分已被弃用,自 23.10 版本以来不再支持。现在,剩余的代码已被删除。#55186 和 #45409 的延续。您不太可能使用内存中数据部分,因为它们仅在 23.5 版本之前可用,并且仅当您通过为 MergeTree 表指定相应的 SETTINGS 手动启用它们时才可用。要检查您是否具有内存中数据部分,请运行以下查询:
SELECT part_type, count() FROM system.parts GROUP BY part_type ORDER BY part_type
。要禁用内存中数据部分的使用,请执行ALTER TABLE ... MODIFY SETTING min_bytes_for_compact_part = DEFAULT, min_rows_for_compact_part = DEFAULT
。在从旧的 ClickHouse 版本升级之前,首先检查您是否没有内存中数据部分。如果存在内存中数据部分,请先禁用它们,然后等待没有内存中数据部分并继续升级。#61127 (Alexey Milovidov)。 - 默认情况下,禁止在
MergeTree
表的ORDER BY
中使用SimpleAggregateFunction
(就像禁止AggregateFunction
一样,但禁止它们是因为它们不可比较)(使用allow_suspicious_primary_key
来允许它们)。#61399 (Azat Khuzhin)。 - ClickHouse 允许 String 数据类型中的任意二进制数据,这通常是 UTF-8。Parquet/ORC/Arrow String 仅支持 UTF-8。这就是为什么您可以选择将哪个 Arrow 的数据类型用于 ClickHouse String 数据类型 - String 或 Binary。这由设置
output_format_parquet_string_as_string
、output_format_orc_string_as_string
、output_format_arrow_string_as_string
控制。虽然 Binary 会更正确和兼容,但在大多数情况下,默认使用 String 将符合用户的期望。Parquet/ORC/Arrow 支持多种压缩方法,包括 lz4 和 zstd。ClickHouse 支持每种压缩方法。一些较差的工具缺乏对更快的lz4
压缩方法的支持,这就是为什么我们默认设置zstd
。这由设置output_format_parquet_compression_method
、output_format_orc_compression_method
和output_format_arrow_compression_method
控制。我们将 Parquet 和 ORC 的默认值更改为zstd
,但 Arrow 除外(它强调用于低级用法)。#61817 (Alexey Milovidov)。 - 修复了物化视图安全问题,该问题允许用户在没有所需权限的情况下插入表。修复验证用户不仅具有插入物化视图的权限,还具有插入所有底层表的权限。这意味着某些以前可以工作的查询现在可能会因权限不足而失败。为了解决这个问题,该版本为视图引入了 SQL 安全性的新功能 https://clickhouse.ac.cn/docs/en/sql-reference/statements/create/view#sql_security。#54901 (pufit)
新功能
- Topk/topkweighed 支持模式,它返回值的计数及其错误。#54508 (UnamedRus)。
- 添加了新语法,允许在 View/Materialized View 中指定定义者用户。这允许从视图执行 selects/inserts,而无需底层表的显式权限。#54901 (pufit)。
- 实现了将不同种类的 MergeTree 表自动转换为复制引擎。在表的数据目录(
/clickhouse/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/
)中创建空的convert_to_replicated
文件,该表将在下次服务器启动时自动转换。#57798 (Kirill)。 - 添加了表函数
mergeTreeIndex
。它表示MergeTree
表的索引和标记文件的内容。它可用于内省。语法:mergeTreeIndex(database, table, [with_marks = true])
,其中database.table
是具有MergeTree
引擎的现有表。#58140 (Anton Popov)。 - 如果在
file/s3/hdfs/url/azureBlobStorage
引擎中未知文件格式,则尝试在架构推断期间自动检测文件格式。关闭 #50576。#59092 (Kruglov Pavel)。 - 添加 generate_series 作为表函数。此函数生成具有自然数的算术级数的表。#59390 (divanik)。
- 添加了查询
ALTER TABLE table FORGET PARTITION partition
,该查询删除与空分区相关的 ZooKeeper 节点。#59507 (Sergei Trifonov)。 - 支持将备份作为 tar 存档读取和写入。#59535 (josh-hildred)。
- 提供新的聚合函数 ‘groupArrayIntersect’。后续:#49862。#59598 (Yarik Briukhovetskyi)。
- 实现了 system.dns_cache 表,这对于调试 DNS 问题非常有用。#59856 (Kirill Nikiforov)。
- 实现了对 S3Express 存储桶的支持。#59965 (Nikita Taranov)。
- 编解码器
LZ4HC
将接受新的级别 2,它比之前的最低级别 3 更快,但代价是压缩率较低。在以前的版本中,LZ4HC(2)
及更低版本与LZ4HC(3)
相同。作者:Cyan4973。#60090 (Alexey Milovidov)。 - 实现了 system.dns_cache 表,这对于调试 DNS 问题非常有用。新的服务器设置 dns_cache_max_size。#60257 (Kirill Nikiforov)。
- 添加了函数
toMillisecond
,该函数返回DateTime
或DateTime64
类型值的毫秒分量。#60281 (Shaun Struwig)。 - 支持合并表函数的单参数版本,如
merge(['db_name', ] 'tables_regexp')
。#60372 (豪肥肥)。 - 使所有格式名称不区分大小写,如 Tsv、或 TSV、或 tsv,甚至 rowbinary。#60420 (豪肥肥)。
- 添加了新语法,允许在 View/Materialized View 中指定定义者用户。这允许从视图执行 selects/inserts,而无需底层表的显式权限。#60439 (pufit)。
- 向
StorageMemory
(内存引擎)添加四个属性min_bytes_to_keep, max_bytes_to_keep, min_rows_to_keep
和max_rows_to_keep
- 添加测试以反映新更改 - 更新memory.md
文档 - 向MemorySink
添加表context
属性以启用对表参数边界的访问。#60612 (Jake Bamrah)。 - 添加了函数
toMillisecond
,该函数返回DateTime
或DateTime64
类型值的毫秒分量。#60649 (Robert Schulze)。 - 分离等待和执行查询数量的限制。添加了新的服务器设置
max_waiting_queries
,用于限制由于async_load_databases
而等待的查询数量。现有执行查询数量的限制不再计算等待查询。#61053 (Sergei Trifonov)。 - 添加了对
ATTACH PARTITION ALL
的支持。#61107 (Kirill Nikiforov)。
性能提升
- 消除 SELECT 部分中 GROUP BY 键的 min/max/any/anyLast 聚合器。#52230 (JackyWoo)。
- 提高了涉及多个 [nullable] 列时序列化聚合方法的性能。这是 #51399 的通用版本,不会损害抽象完整性。#55809 (Amos Bird)。
- 延迟构建连接输出以提高 ALL 连接的性能。#58278 (LiuNeng)。
- 改进了聚合函数 ArgMin / ArgMax / any / anyLast / anyHeavy,以及
ORDER BY {u8/u16/u32/u64/i8/i16/u32/i64) LIMIT 1
查询。#58640 (Raúl Marín)。 - 通过减少分支未命中来优化 bigint 和 big decimal 类型的 sum/avg 的性能。#59504 (李扬)。
- 提高 SELECT 与活动 mutations 的性能。#59531 (Azat Khuzhin)。
- 列过滤器上的微小优化。避免那些底层数据类型不是数字的过滤器列被
result_size_hint = -1
过滤。在某些情况下,峰值内存可以减少到原来的 44%。#59698 (李扬)。 - 主键将使用更少的内存。#60049 (Alexey Milovidov)。
- 改进主键和某些其他操作的内存使用。#60050 (Alexey Milovidov)。
- 表的主键将在首次访问时延迟加载到内存中。这由新的 MergeTree 设置
primary_key_lazy_load
控制,默认情况下启用。这提供了几个优点: - 对于未使用的表,不会加载它; - 如果内存不足,则会在首次使用时而不是在服务器启动时抛出异常。这提供了一些缺点: - 加载主键的延迟将在第一个查询而不是在接受连接之前支付;这理论上可能会引入惊群问题。这关闭了 #11188。#60093 (Alexey Milovidov)。 - 向量化函数
dotProduct
,它对于向量搜索很有用。#60202 (Robert Schulze)。 - 如果表的主键主要包含无用列,请不要将它们保留在内存中。这由新设置
primary_key_ratio_of_unique_prefix_values_to_skip_suffix_columns
控制,默认值为0.9
,这意味着:对于复合主键,如果列的值至少更改了 0.9 次,则其后的列将不会加载。#60255 (Alexey Milovidov)。 - 当 result_type 的底层类型为数字时,以列方式执行 multiIf 函数。#60384 (李扬)。
- 如图 1 所示,将 "&&" 替换为 "&" 可以生成 SIMD 代码。 图 1. 从 '&&'(左)和 '&'(右)编译的代码。#60498 (Zhiguo Zhou)。
- 更快的(几乎快 2 倍)互斥锁(由于 ThreadFuzzer 而变慢)。#60823 (Azat Khuzhin)。
- 将连接耗尽从 prepare 移动到 work,并并行耗尽多个连接。#60845 (lizhuoyu5)。
- 优化可空数字或可空字符串的 insertManyFrom。#60846 (李扬)。
- 优化了函数
dotProduct
,以省略不必要的和昂贵的内存副本。#60928 (Robert Schulze)。 - 文件系统缓存的操作将减少锁争用。#61066 (Alexey Milovidov)。
- 优化 ColumnString::replicate 并防止 memcpySmallAllowReadWriteOverflow15Impl 被优化为内置 memcpy。关闭 #61074。ColumnString::replicate 在 x86-64 上加速 2.46 倍。#61075 (李扬)。
- 256 位整数的打印速度快 30 倍。#61100 (Raúl Marín)。
- 如果带有语法错误的查询包含带有正则表达式的 COLUMNS 匹配器,则每次在解析器的回溯期间都会编译该正则表达式,而不是编译一次。这是一个根本性的错误。编译后的正则表达式被放入 AST。但 AST 中的字母 A 表示“抽象”,这意味着它不应包含重量级对象。AST 的部分可以在解析期间创建和丢弃,包括大量回溯。这导致解析端速度变慢,从而允许只读用户进行 DoS。但主要问题是它阻碍了模糊测试器的进展。#61543 (Alexey Milovidov)。
改进
- 在为物化视图运行 MODIFY COLUMN 查询时,检查内部表的结构以确保每个列都存在。#47427 (sunny)。
- 添加了表
system.keywords
,其中包含来自解析器的所有关键字。主要需要并且将用于更好的模糊测试和语法突出显示。#51808 (Nikita Mikhaylov)。 - 添加了对带有分析器的参数化视图的支持,以不分析创建参数化视图。重构现有的参数化视图逻辑,以不分析创建参数化视图。#54211 (SmitaRKulkarni)。
- Ordinary 数据库引擎已弃用。如果您的服务器正在使用它,您将在 clickhouse-client 中收到警告。这关闭了 #52229。#56942 (shabroo)。
- 当表被删除时,与表相关的所有零拷贝锁都必须被删除。包含这些锁的目录也必须删除。#57575 (Sema Checherinda)。
- 为
dictGetOrDefault
函数添加短路能力。关闭 #52098。#57767 (jsc0218)。 - 允许在外部表结构中声明枚举。#57857 (Duc Canh Le)。
- 现在在具有
DEFAULT
或MATERIALIZED
表达式的列上运行ALTER COLUMN MATERIALIZE
会写入正确的值:具有默认值的现有部分的默认值或具有非默认值的现有部分的非默认值。以前,默认值是为所有现有部分写入的。#58023 (Duc Canh Le)。 - 启用了退避逻辑(例如,指数退避)。将提供降低 CPU 使用率、内存使用率和日志文件大小的能力。#58036 (MikhailBurdukov)。
- 在选择要合并的 parts 时,考虑轻量级已删除行。#58223 (Zhuo Qiu)。
- 允许在
storage_configuration
中定义volume_priority
。#58533 (Andrey Zvonov)。 - 在 T64 编解码器中添加对 Date32 类型的支持。#58738 (Hongbin Ma)。
- 此 PR 使 http/https 连接可重用于所有用例。即使在响应为 3xx 或 4xx 时也是如此。#58845 (Sema Checherinda)。
- 为更多系统表的列添加了注释。延续 https://github.com/ClickHouse/ClickHouse/pull/58356。#59016 (Nikita Mikhaylov)。
- 现在我们可以在 PREWHERE 中使用虚拟列。对于像
_part_offset
这样的非常量虚拟列来说,这是有价值的。#59033 (Amos Bird)。 - 现在可以在服务器配置文件中指定 Distributed 表引擎的设置(类似于 MergeTree 设置),例如
<distributed> <flush_on_detach>false</flush_on_detach> </distributed>
。#59291 (Azat Khuzhin)。 - Keeper 改进:仅缓存由
latest_logs_cache_size_threshold
和commit_logs_cache_size_threshold
控制的特定数量的内存日志。#59460 (Antonio Andelic)。 - 对象存储不再使用常量键,而是生成用于确定删除对象能力的键。#59495 (Sema Checherinda)。
- 默认情况下,不要推断指数表示法中的浮点数。添加一个设置
input_format_try_infer_exponent_floats
,它将恢复以前的行为(默认禁用)。关闭 #59476。#59500 (Kruglov Pavel)。 - 允许用括号括起 alter 操作。括号的发出可以通过
format_alter_operations_with_parentheses
配置来控制。默认情况下,在格式化的查询中,括号会被发出,因为我们将格式化的 alter 操作作为元数据存储在某些地方(例如:mutations)。新语法澄清了一些 alter 操作以列表结尾的查询。例如:ALTER TABLE x MODIFY TTL date GROUP BY a, b, DROP COLUMN c
使用旧语法无法正确解析。在新语法中,查询ALTER TABLE x (MODIFY TTL date GROUP BY a, b), (DROP COLUMN c)
是显而易见的。旧版本无法读取新语法,因此如果在单个集群中混合使用新旧版本的 ClickHouse,则使用新语法可能会导致问题。#59532 (János Benjamin Antal)。 - 将 Intel QPL(由编解码器
DEFLATE_QPL
使用)从 v1.3.1 升级到 v1.4.0。还修复了轮询超时机制的错误,因为我们观察到在某些情况下超时无法正常工作,如果发生超时,IAA 和 CPU 可能会同时处理缓冲区。到目前为止,我们最好确保 IAA 编解码器状态不是 QPL_STS_BEING_PROCESSED,然后回退到 SW 编解码器。#59551 (jasperzhu)。 - 在 libhdfs3 中添加位置 pread。如果要在 libhdfs3 中调用位置读取,请使用 hdfs.h 中的 hdfsPread 函数,如下所示。
tSize hdfsPread(hdfsFS fs, hdfsFile file, void * buffer, tSize length, tOffset position);
。#59624 (M1eyu)。 - 即使当用户将
max_parser_depth
设置错误配置为非常高的值时,也要检查解析器中的堆栈溢出。这关闭了 #59622。#59697 (Alexey Milovidov)。 - 统一 kafka 存储中 xml 和 sql 创建的命名集合行为。#59710 (Pervakov Grigorii)。
- 如果 CREATE TABLE 显式包含 uuid,则允许在 replica_path 中使用 uuid。#59908 (Azat Khuzhin)。
- 在
system.tables
系统表中添加 ReplicatedMergeTree 表的metadata_version
列。#59942 (Maksim Kita)。 - Keeper 改进:为磁盘相关操作添加失败重试。#59980 (Antonio Andelic)。
- 添加新的配置设置
backups.remove_backup_files_after_failure
:<clickhouse> <backups> <remove_backup_files_after_failure>true</remove_backup_files_after_failure> </backups> </clickhouse>
。#60002 (Vitaly Baranov)。 - 在执行 RESTORE 命令时,使用多线程从备份中读取表的元数据。#60040 (Vitaly Baranov)。
- 现在,如果
StorageBuffer
有多个分片 (num_layers
> 1),则后台刷新将同时在多个线程中对所有分片进行。#60111 (alesapin)。 - 支持在配置中使用
user
键为特定的 S3 设置指定用户。#60144 (Antonio Andelic)。 - 如果 GCP 返回带有
GATEWAY_TIMEOUT
HTTP 错误代码的Internal Error
,则复制 S3 文件 GCP 回退到缓冲区复制。#60164 (Maksim Kita)。 - 允许使用 "local" 作为对象存储类型,而不是 "local_blob_storage"。#60165 (Kseniia Sumarokova)。
- 实现 Variant 值的比较运算符和将正确的 Field 插入到 Variant 列中。默认情况下不允许创建具有相似变体类型的
Variant
类型(允许通过设置allow_suspicious_variant_types
)。关闭 #59996。关闭 #59850。#60198 (Kruglov Pavel)。 - 改进了虚拟列的整体可用性。现在允许在
PREWHERE
中使用虚拟列(对于像_part_offset
这样的非常量虚拟列来说,这是有价值的)。现在,内置文档可用于虚拟列,作为DESCRIBE
查询中启用设置describe_include_virtual_columns
的列的注释。#60205 (Anton Popov)。 ULIDStringToDateTime
的短路执行。#60211 (Juan Madurga)。- 为表
system.backups
和system.backup_log
添加了query_id
列。将错误堆栈跟踪添加到error
列。#60220 (Maksim Kita)。 - 在
DETACH
/服务器关闭和SYSTEM FLUSH DISTRIBUTED
时并行刷新 Distributed 引擎的待处理 INSERT 块(并行性仅在您的表具有多磁盘策略时才有效(就像现在 Distributed 引擎中的所有内容一样))。#60225 (Azat Khuzhin)。 - 过滤器设置在
joinRightColumnsSwitchNullability
中不正确,解决 #59625。#60259 (lgbo)。 - 添加一个设置以强制合并的读穿透缓存。#60308 (Kseniia Sumarokova)。
- Issue #57598 提到了关于事务处理的变体行为。当没有活动事务时发出的 COMMIT/ROLLBACK 被报告为错误,这与 MySQL 的行为相反。#60338 (PapaToemmsn)。
- 为
distributed_ddl_output_mode
设置添加了none_only_active
模式。#60340 (Alexander Tokmakov)。 - 通过 MySQL 端口的连接现在自动使用设置
prefer_column_name_to_alias = 1
运行,以开箱即用地支持 QuickSight。此外,设置mysql_map_string_to_text_in_show_columns
和mysql_map_fixed_string_to_text_in_show_columns
现在默认启用,也仅影响 MySQL 连接。这提高了与更多 BI 工具的兼容性。#60365 (Robert Schulze)。 - 当输出格式为 Pretty 格式且一个 block 由一个超过一百万的数值组成时,一个可读的数字将打印在表格右侧。例如:
┌──────count()─┐ │ 233765663884 │ -- 233.77 billion └──────────────┘
。#60379 (rogeryk)。 - 允许为 clickhouse-server 配置 HTTP 重定向处理程序。例如,您可以使
/
重定向到 Play UI。#60390 (Alexey Milovidov)。 - 高级仪表板对于多行图表具有稍微更好的颜色。#60391 (Alexey Milovidov)。
- 修复 JavaScript 代码中的竞争条件,导致图表在彼此之上重复。#60392 (Alexey Milovidov)。
- 即使当用户将
max_parser_depth
设置错误配置为非常高的值时,也要检查解析器中的堆栈溢出。这关闭了 #59622。#60434 (Alexey Milovidov)。 - 函数
substring
现在有一个新的别名byteSlice
。#60494 (Robert Schulze)。 - 将服务器设置
dns_cache_max_size
重命名为dns_cache_max_entries
以减少歧义。#60500 (Kirill Nikiforov)。 SHOW INDEX | INDEXES | INDICES | KEYS
不再按主键列排序(这是违反直觉的)。#60514 (Robert Schulze)。- Keeper 改进:如果在启动期间检测到无效快照,则中止以避免数据丢失。#60537 (Antonio Andelic)。
- 使用
merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_fault_probability
设置,将 MergeTree 读取拆分范围添加到相交和非相交故障注入中。#60548 (Maksim Kita)。 - 高级仪表板现在在滚动时始终显示控件。这允许您在不向上滚动的情况下添加新图表。#60692 (Alexey Milovidov)。
- 字符串类型和枚举可以在同一上下文中使用,例如:数组、UNION 查询、条件表达式。这关闭了 #60726。#60727 (Alexey Milovidov)。
- 将 tzdata 更新到 2024a。#60768 (Raúl Marín)。
- 支持 Filesystem 数据库中没有格式扩展名的文件。#60795 (Kruglov Pavel)。
- Keeper 改进:在 Keeper 的设置中支持
leadership_expiry_ms
。#60806 (Brokenice0415)。 - 始终在 JSON 格式中推断指数数字,而与设置
input_format_try_infer_exponent_floats
无关。添加设置input_format_json_use_string_type_for_ambiguous_paths_in_named_tuples_inference_from_objects
,允许对 JSON 对象中的命名元组推断期间的模糊路径使用 String 类型,而不是异常。#60808 (Kruglov Pavel)。 - 为 SMJ 添加一个标志,将 null 视为最大/最小。因此,该行为可以与其他 SQL 系统(如 Apache Spark)兼容。#60896 (loudongfeng)。
- Clickhouse 版本已添加到 docker 标签中。关闭 #54224。#60949 (Nikolay Monkov)。
- 添加一个设置
parallel_replicas_allow_in_with_subquery = 1
,允许 IN 的子查询与并行副本一起工作。#60950 (Nikolai Kochetov)。 - DNSResolver 混洗已解析的 IP 集合。#60965 (Sema Checherinda)。
- 支持在
clickhouse-client
和clickhouse-local
中通过文件扩展名检测输出格式。#61036 (豪肥肥)。 - 定期检查内存限制更新。#61049 (Han Fei)。
- 默认启用处理器性能分析(用于排序、聚合的时间/输入和输出字节数等)。#61096 (Azat Khuzhin)。
- 添加了函数
toUInt128OrZero
,这是一个错误遗漏的函数(该错误与 https://github.com/ClickHouse/ClickHouse/pull/945 有关)。兼容性别名FROM_UNIXTIME
和DATE_FORMAT
(它们不是 ClickHouse 原生的,仅为了 MySQL 兼容性而存在)已被设置为不区分大小写,正如 SQL 兼容性别名所期望的那样。#61114 (Alexey Milovidov)。 - 改进了访问检查,允许撤销未拥有的权限,以防目标用户也没有撤销权限。示例:```sql GRANT SELECT ON . TO user1; REVOKE SELECT ON system.* FROM user1;。#61115 (pufit)。
- 修复了之前的优化中的错误:https://github.com/ClickHouse/ClickHouse/pull/59698:删除 break 以确保第一个过滤的列具有最小尺寸 cc @jsc0218。#61145 (李扬)。
- 修复了带有
Nullable
列的has()
函数(修复了 #60214)。#61249 (Mikhail Koviazin)。 - 现在可以在子树的配置替换中指定属性
merge="true"
<include from_zk="/path" merge="true">
。如果指定了此属性,clickhouse 将合并子树与现有配置,否则默认行为是将新内容附加到配置中。#61299 (alesapin)。 - 为虚拟内存映射添加异步指标:VMMaxMapCount 和 VMNumMaps。关闭 #60662。#61354 (Tuan Pham Anh)。
- 在我们创建临时数据的所有地方使用
temporary_files_codec
设置,例如外部内存排序和外部内存 GROUP BY。之前它仅在partial_merge
JOIN 算法中有效。#61456 (Maksim Kita)。 - 删除重复检查
containing_part.empty()
,它已经在此处检查过:https://github.com/ClickHouse/ClickHouse/blob/1296dac3c7e47670872c15e3f5e58f869e0bd2f2/src/Storages/MergeTree/MergeTreeData.cpp#L6141。#61467 (William Schoeffel)。 - 添加一个新的设置
max_parser_backtracks
,它允许限制查询解析的复杂性。#61502 (Alexey Milovidov)。 - 在文件系统缓存的动态调整大小期间减少争用。#61524 (Kseniia Sumarokova)。
- 不允许 StorageS3 队列的分片模式,因为它将被重写。#61537 (Kseniia Sumarokova)。
- 修复了拼写错误:从
use_leagcy_max_level
到use_legacy_max_level
。#61545 (William Schoeffel)。 - 删除 blob_storage_log 中的一些重复条目。#61622 (YenchangChan)。
- 添加了
current_user
函数作为 MySQL 的兼容性别名。#61770 (Yarik Briukhovetskyi)。 - 在使用 Azure Blob Storage 时,对备份 IO 使用托管标识。添加一个设置以防止 ClickHouse 尝试创建不存在的容器,这需要在存储帐户级别具有权限。#61785 (Daniel Pozo Escalona)。
- 在以前的版本中,Pretty 格式中的某些数字不够美观。#61794 (Alexey Milovidov)。
- 如果 Pretty 格式中的长值是结果集中的单个值,例如在
SHOW CREATE TABLE
查询的结果中,则不会被截断。#61795 (Alexey Milovidov)。 - 与
clickhouse-local
类似,clickhouse-client
将接受--output-format
选项作为--format
选项的同义词。这关闭了 #59848。#61797 (Alexey Milovidov)。 - 如果 stdout 是终端且未指定输出格式,则
clickhouse-client
和类似工具将默认使用PrettyCompact
,类似于交互模式。clickhouse-client
和clickhouse-local
将以统一的方式处理输入和输出格式的命令行参数。这关闭了 #61272。#61800 (Alexey Milovidov)。 - Pretty 格式中的下划线数字组,以提高可读性。这由一个新设置
output_format_pretty_highlight_digit_groups
控制。#61802 (Alexey Milovidov)。
Bug Fix (user-visible misbehavior in an official stable release)
- 修复了 decimal 参数的
intDiv
错误 #59243 (Yarik Briukhovetskyi)。 - Fix_kql_issue_found_by_wingfuzz #59626 (Yong Wang)。
- 修复了 AsynchronousBoundedReadBuffer 的错误 "Read beyond last offset" #59630 (Vitaly Baranov)。
- rabbitmq: 修复了既未 ack 也未 nack 消息的问题 #59775 (Kseniia Sumarokova)。
- 修复了分析器中 const 和带有 GROUP BY const 的 LowCardinality 的函数执行问题 #59986 (Azat Khuzhin)。
- 修复了 DateTime64 的比例转换问题 #60004 (Yarik Briukhovetskyi)。
- 修复了使用单引号 INSERT 到 SQLite 的问题(通过用引号而不是反斜杠转义单引号) #60015 (Azat Khuzhin)。
- 修复了 optimize_uniq_to_count 删除列别名的问题 #60026 (Raúl Marín)。
- 修复了 MergeTree 的 finished_mutations_to_keep=0 问题(正如文档所说,0 表示保留所有内容) #60031 (Azat Khuzhin)。
- 修复了 s3queue 表在 drop 时可能发生的异常 #60036 (Kseniia Sumarokova)。
- PartsSplitter 同一部分的无效范围 #60041 (Maksim Kita)。
- 在 DDLLogEntry 中使用上下文中的 max_query_size 而不是硬编码的 4096 #60083 (Kruglov Pavel)。
- 修复了查询格式不一致的问题 #60095 (Alexey Milovidov)。
- 修复了子查询中 explain 的格式不一致问题 #60102 (Alexey Milovidov)。
- 修复了带有 Nullable 的 cosineDistance 崩溃问题 #60150 (Raúl Marín)。
- 允许将字符串表示形式中的布尔值强制转换为 true 布尔值 #60160 (Robert Schulze)。
- 修复了 system.s3queue_log #60166 (Kseniia Sumarokova)。
- 修复了带有可为空聚合函数名称的 arrayReduce 问题 #60188 (Raúl Marín)。
- 修复了预过滤(PK,分区修剪)期间的操作执行问题 #60196 (Azat Khuzhin)。
- 隐藏了 s3queue 的敏感信息 #60233 (Kseniia Sumarokova)。
- 还原 "将
ORDER BY ALL
替换为ORDER BY *
" #60248 (Robert Schulze)。 - Azure Blob Storage : 修复了 endpoint 和 prefix 问题 #60251 (SmitaRKulkarni)。
- 修复了 http 异常代码。#60252 (Austin Kothig)。
- 修复了 LRUResource Cache 错误 (Hive cache) #60262 (shanfengp)。
- s3queue: 修复了错误(也修复了不稳定的 test_storage_s3_queue/test.py::test_shards_distributed 测试) #60282 (Kseniia Sumarokova)。
- 修复了 IPv6 的哈希函数中未初始化的值的使用和无效结果 #60359 (Kruglov Pavel)。
- 如果并行副本已更改,则强制重新分析 #60362 (Raúl Marín)。
- 修复了带有新磁盘配置选项的 plain 元数据类型的使用 #60396 (Kseniia Sumarokova)。
- 不允许将 max_parallel_replicas 设置为 0,因为它没有意义 #60430 (Kruglov Pavel)。
- 尝试修复 mapContainsKeyLike 中逻辑错误 'Cannot capture column because it has incompatible type' #60451 (Kruglov Pavel)。
- 修复了带有 null 参数的 OptimizeDateOrDateTimeConverterWithPreimageVisitor #60453 (Raúl Marín)。
- 尝试避免计算 CREATE TABLE 的标量子查询。#60464 (Nikolai Kochetov)。
- 合并 #59674。#60470 (Alexey Milovidov)。
- 正确检查 s3Cluster 中的密钥 #60477 (Antonio Andelic)。
- 修复了由于错误跳过大量行时并行解析中的死锁 #60516 (Kruglov Pavel)。
- Fix_max_query_size_for_kql_compound_operator: #60534 (Yong Wang)。
- Keeper 修复:在等待提交日志时添加超时 #60544 (Antonio Andelic)。
- 减少从
system.numbers
读取的行数 #60546 (JackyWoo)。 - 不要为日期类型输出数字提示 #60577 (Raúl Marín)。
- 修复了从 MergeTree 读取过滤器中非确定性函数的问题 #60586 (Kruglov Pavel)。
- 修复了错误兼容性设置值类型的逻辑错误 #60596 (Kruglov Pavel)。
- 修复混合 x86-64 / ARM 集群中聚合函数状态不一致的问题 #60610 (Harry Lee)。
- fix(prql): 健壮的 panic 处理器 #60615 (Maximilian Roos)。
- 修复 `intDiv` 函数在 decimal 和 date 参数下的问题 #60672 (Yarik Briukhovetskyi)。
- 修复:扩展 alter modify 查询中的 CTE #60682 (Yakov Olkhovskiy)。
- 修复非 Atomic/Ordinary 数据库引擎(例如 Memory)的 system.parts 表 #60689 (Azat Khuzhin)。
- 修复参数化视图的 “元数据文件中存储定义无效” 错误 #60708 (Azat Khuzhin)。
- 修复 CompressionCodecMultiple 中的缓冲区溢出 #60731 (Alexey Milovidov)。
- 移除 SQL/JSON 中的冗余内容 #60738 (Alexey Milovidov)。
- 移除聚合函数 quantileGK 中错误的 sanitize 检查 #60740 (李扬)。
- 通过将 streams 设置为 1 来修复 insert-select + insert_deduplication_token 的 bug #60745 (Jordi Villar)。
- 阻止在不支持的多部分上传操作上设置自定义元数据标头 #60748 (Francisco J. Jurado Moreno)。
- 修复 toStartOfInterval 函数 #60763 (Andrey Zvonov)。
- 修复 arrayEnumerateRanked 函数中的崩溃 #60764 (Raúl Marín)。
- 修复在 INSERT SELECT JOIN 中使用 input() 函数时发生的崩溃 #60765 (Kruglov Pavel)。
- 修复子查询中 allow_experimental_analyzer 值不同时发生的崩溃 #60770 (Dmitry Novik)。
- 移除从 S3 读取时的递归问题 #60849 (Antonio Andelic)。
- 修复 HashedDictionaryParallelLoader 中可能发生的错误卡顿 #60926 (vdimir)。
- 修复使用 Replicated 数据库的异步 RESTORE #60934 (Antonio Andelic)。
- 修复通过原生协议异步插入 `Log` 表时的死锁 #61055 (Anton Popov)。
- 修复 RangeHashedDictionary 的 dictGetOrDefault 函数中默认参数的延迟执行 #61196 (Kruglov Pavel)。
- 修复 groupArraySorted 函数中的多个 bug #61203 (Raúl Marín)。
- 修复独立二进制文件的 Keeper 重新配置 #61233 (Antonio Andelic)。
- 修复 S3 引擎中 session_token 的使用 #61234 (Kruglov Pavel)。
- 修复聚合函数 `uniqExact` 可能返回不正确的结果 #61257 (Anton Popov)。
- 修复 show database 命令中的 bug #61269 (Raúl Marín)。
- 修复 RabbitMQ 存储引擎中带有 MATERIALIZED 列的逻辑错误 #61320 (vdimir)。
- 修复 CREATE OR REPLACE DICTIONARY 语句 #61356 (Vitaly Baranov)。
- 修复带有 external ON CLUSTER 的 ATTACH 查询 #61365 (Nikolay Degterinsky)。
- 修复 actions dag 分割问题 #61458 (Raúl Marín)。
- 修复完成失败的 RESTORE 操作 #61466 (Vitaly Baranov)。
- 修复在兼容性设置下正确禁用 async_insert_use_adaptive_busy_timeout #61468 (Raúl Marín)。
- 允许恢复池中的排队 #61475 (Nikita Taranov)。
- 修复使用 UUID 读取 system.parts 表时的 bug (issue 61220)。 #61479 (Dan Wu)。
- 修复 window view 中的崩溃 #61526 (Alexey Milovidov)。
- 修复 repeat 函数在非原生整数下的问题 #61527 (Antonio Andelic)。
- 修复客户端 `-s` 参数 #61530 (Mikhail f. Shiryaev)。
- 修复 arrayPartialReverseSort 函数中的崩溃 #61539 (Raúl Marín)。
- 修复常量位置的字符串搜索 #61547 (Antonio Andelic)。
- 修复使用 datetime64 时 addDays 导致错误的问题 #61561 (Shuai li)。
- 修复带有去重的异步插入的 `system.part_log` 表 #61620 (Antonio Andelic)。
- 修复 system.parts 表的非就绪集合。 #61666 (Nikolai Kochetov)。