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

v24.2 更新日志

ClickHouse release tag: 24.2.2.15987

Backward Incompatible Change

  • 验证嵌套类型中的可疑/实验类型。之前我们没有对像 Array/Tuple/Map 这样的嵌套类型进行验证(JSON 除外)。 #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 控制,默认启用。这是 #59699 的延续,解除对 #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])。之前的行为 (haystack, needle, [, start_pos]) 可以通过设置 function_locate_has_mysql_compatible_argument_order = 0 进行恢复。 #61092 (Robert Schulze).
  • 自版本 23.5 起,过时的内存数据部分已被弃用,自版本 23.10 起不再受支持。现在已删除剩余代码。这是 #55186#45409 的延续。您不太可能使用内存数据部分,因为它们仅在版本 23.5 之前可用,并且仅在您手动启用指定相应设置的 MergeTree 表时可用。要检查是否有内存数据部分,请运行以下查询: 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 允许在字符串数据类型中使用任意二进制数据,通常为 UTF-8。Parquet/ORC/Arrow 字符串仅支持 UTF-8。这就是为什么您可以选择用于 ClickHouse 字符串数据类型的 Arrow 数据类型 - 字符串或二进制。这由设置 output_format_parquet_string_as_stringoutput_format_orc_string_as_stringoutput_format_arrow_string_as_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.com/docs/sql-reference/statements/create/view#sql_security#54901 (pufit)

New Feature

  • 支持 topk/topkweighed 模式,返回值的计数及其误差。 #54508 (UnamedRus).
  • 添加了新的语法,允许在视图/物化视图中指定定义用户。这允许从视图中执行选择/插入,而无需明确授予底层表的权限。 #54901 (pufit).
  • 实现将不同类型的 merge tree 表自动转换为复制引擎。在表的数据目录中创建一个空的 convert_to_replicated 文件(/clickhouse/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/),下次服务器启动时,该表将自动转换。 #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 (豪肥肥).
  • 添加了新的语法,允许在视图/物化视图中指定定义用户。这允许从视图中执行选择/插入,而无需明确授予底层表的权限。 #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).

Performance Improvement

  • 消除 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).
  • 通过减少分支缺失条件来优化大整数和大十进制类型的 sum/avg 性能。 #59504 (李扬).
  • 改进活动变更下 SELECT 的性能。 #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).
  • 将连接排水从准备阶段移动到工作阶段,并并行排干多个连接。 #60845 (lizhuoyu5).
  • 优化 nullable 数字或 nullable 字符串的 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 匹配器,则在解析器回溯期间每次都会编译正则表达式,而不是一次编译。这是一个根本错误。编译的 regexp 被放入 AST 中。但 AST 中的字母 A 意味着“抽象”,这意味着它不应该包含重量级对象。AST 的部分可以在解析期间创建和丢弃,包括大量的回溯。这会导致解析侧的缓慢,因此允许只读用户进行 DoS。但是,主要问题是这会阻碍模糊测试的进展。 #61543 (Alexey Milovidov).

Improvement

  • 在针对物化视图运行 MODIFY COLUMN 查询时,检查内部表的结构以确保每一列都存在。 #47427 (sunny).
  • 添加了 system.keywords 表,包含解析器中的所有关键字。主要是需要的,将用于更好的模糊查询和语法高亮。 #51808 (Nikita Mikhaylov).
  • 添加了对带分析器的参数化视图的支持,以避免分析创建参数化视图。重构现有的参数化视图逻辑,以不分析创建参数化视图。 #54211 (SmitaRKulkarni).
  • 普通数据库引擎已弃用。如果您的服务器在使用它,您将在 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).
  • 在选择合并的部分时考虑轻量级删除的行。 #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).
  • 分布式表引擎的设置现在可以在服务器配置文件中指定(类似于 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).
  • 允许通过括号围绕变更操作。括号的发射可以通过配置 format_alter_operations_with_parentheses 控制。默认情况下,在格式化查询中,括号会被发射,因为我们将格式化的变更操作在某些地方存储为元数据(例如:变更)。新的语法澄清了某些变更操作以列表结束的查询。例如: 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 中添加位置预读。如果您想在 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 改进:对与 Disk 相关的操作的失败添加重试。 #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).
  • 复制 S3 文件的 GCP 回退到缓冲区复制,以防 GCP 返回 Internal Error 伴随 GATEWAY_TIMEOUT HTTP 错误代码。 #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 时,并行刷新分布式引擎的待处理 INSERT 块(并行将仅在您为表设置了多磁盘策略时工作(就像目前在分布式引擎中一样))。 #60225 (Azat Khuzhin).
  • joinRightColumnsSwitchNullability 中选择的设置不正确,解决了 #59625#60259 (lgbo).
  • 添加一个设置以强制对合并进行读取缓存。 #60308 (Kseniia Sumarokova).
  • 问题 #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 格式并且块由超过一百万的单一数值组成时,右边将打印出可读数字。 例如 ┌──────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).
  • 添加 MergeTree 读取拆分范围以进行交叉和非交叉故障注入,使用 merge_tree_read_split_ranges_into_intersecting_and_non_intersecting_fault_probability 设置。 #60548 (Maksim Kita).
  • 高级仪表板现在在滚动时始终显示控件。这使您无需向上滚动即可添加新图表。 #60692 (Alexey Milovidov).
  • 字符串类型和枚举可以在相同的上下文中使用,例如:数组、UNION 查询、条件表达式。这关闭了 #60726#60727 (Alexey Milovidov).
  • 更新 tzdata 到 2024a。 #60768 (Raúl Marín).
  • 支持在文件系统数据库中使用没有格式扩展名的文件。 #60795 (Kruglov Pavel).
  • Keeper 改进:在 Keeper 设置中支持 leadership_expiry_ms#60806 (Brokenice0415).
  • 无论设置 input_format_try_infer_exponent_floats 如何,都始终在 JSON 格式中推断指数数字。添加设置 input_format_json_use_string_type_for_ambiguous_paths_in_named_tuples_inference_from_objects,允许在从 JSON 对象推断命名元组时使用字符串类型用于模糊路径,而不是抛出异常。 #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 (李扬).
  • 修复 has() 函数与 Nullable 列的问题(修复 #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-clientclickhouse-local 将以统一的方式处理输入和输出格式的命令行参数。这关闭了 #61272#61800 (Alexey Milovidov).
  • 在 Pretty 格式中使用下划线数字组以提高可读性。这可通过新设置 output_format_pretty_highlight_digit_groups 控制。 #61802 (Alexey Milovidov).