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

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_insertdeduplicate_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_stringoutput_format_orc_string_as_stringoutput_format_arrow_string_as_string 控制。虽然 Binary 会更正确和兼容,但在大多数情况下,默认使用 String 将符合用户的期望。Parquet/ORC/Arrow 支持多种压缩方法,包括 lz4 和 zstd。ClickHouse 支持每种压缩方法。一些较差的工具缺乏对更快的 lz4 压缩方法的支持,这就是为什么我们默认设置 zstd。这由设置 output_format_parquet_compression_methodoutput_format_orc_compression_methodoutput_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,该函数返回 DateTimeDateTime64 类型值的毫秒分量。#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_keepmax_rows_to_keep - 添加测试以反映新更改 - 更新 memory.md 文档 - 向 MemorySink 添加表 context 属性以启用对表参数边界的访问。#60612 (Jake Bamrah)。
  • 添加了函数 toMillisecond,该函数返回 DateTimeDateTime64 类型值的毫秒分量。#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 代码。image 图 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)。
  • 现在在具有 DEFAULTMATERIALIZED 表达式的列上运行 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_thresholdcommit_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.backupssystem.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_columnsmysql_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-clientclickhouse-local 中通过文件扩展名检测输出格式。#61036 (豪肥肥)。
  • 定期检查内存限制更新。#61049 (Han Fei)。
  • 默认启用处理器性能分析(用于排序、聚合的时间/输入和输出字节数等)。#61096 (Azat Khuzhin)。
  • 添加了函数 toUInt128OrZero,这是一个错误遗漏的函数(该错误与 https://github.com/ClickHouse/ClickHouse/pull/945 有关)。兼容性别名 FROM_UNIXTIMEDATE_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_leveluse_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-clientclickhouse-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)