不向后兼容的变更
Parquet 输出格式会将 Date 和 DateTime 列转换为 Parquet 支持的日期/时间类型,而不是将它们写为原始数值。DateTime 现在改为 DateTime64(3)(之前为:UInt32);设置 output_format_parquet_datetime_as_uint32 可以恢复旧行为。Date 现在改为 Date32(之前为:UInt16)。#70950 (Michael Kolupaev )。
默认情况下,不允许在 ORDER BY 和 less/greater/equal/etc 等比较函数中使用类似 JSON/Object/AggregateFunction 的可比较类型。#73276 (Pavel Kruglov )。
JSONEachRowWithProgress 会在每当有进度时写出进度。在之前的版本中,只在结果的每个数据块之后才显示进度,这使得它几乎毫无用处。对进度的显示方式进行了修改:不再显示为零的数值。请注意,即使进度变化很频繁,也会发送进度信息,这可能会产生大量网络流量。还要注意,当输出被压缩时,进度不会被刷新。修复了 #70800 。#73834 (Alexey Milovidov )。
mysql 字典源不再执行 SHOW TABLE STATUS 查询,因为对于 InnoDB 表以及任何较新的 MySQL 版本,这个查询都不再提供任何有效信息。此更改解决了 #72636 。该更改是向后兼容的,但仍被归类在本节中,以便您有机会注意到它。#73914 (Alexey Milovidov )。
Merge 表将通过取其列的并集并推导出公共类型来统一底层表的结构。这修复了 #64864 。这修复了 #35307 。在某些情况下,此更改可能会引入向后不兼容。一个例子是,当各个表之间不存在公共类型,但仍然可以转换为第一个表的类型时,例如 UInt64 和 Int64 的情况,或者任意数值类型与 String 的情况。如果你想恢复旧的行为,请将 merge_table_max_tables_to_look_for_schema_inference 设置为 1,或将 compatibility 设置为 24.12 或更早版本。#73956 (Alexey Milovidov )。
CHECK TABLE 查询现在需要单独的 CHECK 权限。在之前的版本中,仅具有 SHOW TABLES 权限就足以运行这些查询。但是,CHECK TABLE 查询可能会非常耗费资源,而且针对 SELECT 查询的常规查询复杂度限制并不适用于它。这带来了潜在的 DoS 攻击风险。#74471 (Alexey Milovidov )。
当 allow_materialized_view_with_bad_select 为 false 时,校验物化视图中的所有列是否与目标表一致。 #74481 (Christoph Wurm ).
函数 h3ToGeo() 现在按 (lat, lon) 顺序返回结果(这是几何函数中的标准顺序)。希望保留旧版结果顺序 (lon, lat) 的用户可以将设置 h3togeo_lon_lat_result_order 设为 true。 #74719 (Manish Gill )。
添加 JSONCompactEachRowWithProgress 和 JSONCompactStringsEachRowWithProgress 格式,作为对 #69989 的后续工作。JSONCompactWithNames 和 JSONCompactWithNamesAndTypes 不再输出“totals”——显然这是之前实现中的一个错误。#75037 (Alexey Milovidov )。
将 format_alter_operations_with_parentheses 的默认值改为 true,以使 ALTER 命令列表的输出不产生歧义(参见 https://github.com/ClickHouse/ClickHouse/pull/59532 )。这会导致与 24.3 之前版本的集群之间的复制失败。如果正在升级使用旧版本的集群,请在服务器配置中关闭该设置,或者先升级到 24.3。 #75302 (Raúl Marín )。
禁止对复制数据库执行 TRUNCATE DATABASE 操作。 #76651 (Bharat Nallan ).
当禁用 analyzer 时,将默认禁用并行副本,与 compatibility 设置无关。仍然可以通过将 parallel_replicas_only_with_analyzer 显式设置为 false 来更改此行为。#77115 (Igor Nikonov )。
现在不再允许在设置中将 NaN 或 inf 作为浮点数值使用。#77546 (Yarik Briukhovetskyi )。
修复了在将 dateTrunc 与负数日期/日期时间参数一起使用时的情况。#77622 (Yarik Briukhovetskyi )。
旧版 MongoDB 集成已被移除。服务器端设置 use_legacy_mongodb_integration 已废弃,现已不再产生任何作用。#77895 (Robert Schulze )。
增强 SummingMergeTree 的验证逻辑,使其对作为分区键或排序键的列跳过聚合。 #78022 (Pervakov Grigorii ).
新特性
实验性特性
在可使用 multiRead 的地方避免使用单个 get 请求,以减少 Keeper 请求的数量,因为随着副本数量的增加,单个 get 请求可能会给 Keeper 带来显著负载。#56862 (Nikolay Degterinsky )。
为 MySQL 具名集合添加对 SSL 身份验证的支持。关闭了 #59111 。#59452 (Nikolay Degterinsky )。
通过在 ConstantNode 中存储 ColumnPtr 而不是 Field 来提升新的 analyzer 基础架构的性能。相关:#62245 。#63198 (Dmitry Novik )。
当服务器过载时拒绝查询。是否拒绝的决策基于等待时间(OSCPUWaitMicroseconds)与忙碌时间(OSCPUVirtualTimeMicroseconds)的比值。当该比值位于 min_os_cpu_wait_time_ratio_to_throw 和 max_os_cpu_wait_time_ratio_to_throw 之间时(这些是查询级别的设置),将以一定概率丢弃查询。#63206 (Alexey Katsman )。
尽可能早地丢弃数据块以降低内存占用。 #65647 (lgbo ).
processors_profile_log 表现已具有默认配置,TTL 为 30 天。#66139 (Ilya Yatsishin )。
允许在 DateTime64 类型的列上创建 bloom_filter 索引。 #66416 (Yutong Xiao ).
引入时延桶,用于跟踪针对 S3 请求的首字节读写时间和连接时间。这样我们之后就可以利用收集到的数据来计算近似分位数,并动态调整超时时间。#69783 (Alexey Katsman )。
传递给 Executable 存储的查询不再局限于只能使用单线程执行。#70084 (yawnt )。
向 OpenTelemetry span 日志表中添加了 HTTP 头,以增强可追踪性。 #70516 (jonymohajanGmail ).
支持使用自定义时区写入 ORC 文件,而不再固定为 GMT 时区。#70615 (kevinyhzou ).
当启用了并行副本时,请将表函数替换为对应的 -Cluster 版本。修复了 #65024 。#70659 (Konstantin Bogdanov )。
在跨云备份写入过程中遵循 IO 调度设置。#71093 (János Benjamin Antal )。
在后台重新建立到 MySQL 和 Postgres 字典副本的连接,而不会延迟对相应字典的请求。 #71101 (Yakov Olkhovskiy ).
为 system.asynchronous_metrics 添加指标别名。#71164 (megao ).
可刷新物化视图的刷新操作现在会记录在 system.query_log 中。#71333 (Michael Kolupaev )。
同时评估 Parquet 布隆过滤器和 min/max 索引。这样才能正确支持:x = 3 or x > 5,其中 data = [1, 2, 4, 5]。#71383 (Arthur Passos )。
交互式指标改进。修复来自并行副本的指标未完全显示的问题。按最近更新的时间排序显示指标,然后按名称的字典顺序排序。不再显示陈旧的指标。#71631 (Julia Kartseva )。
过去由于某些原因,查询 ALTER TABLE MOVE PARTITION TO TABLE 会检查 SELECT 和 ALTER DELETE 权限,而不是专门的 ALTER_MOVE_PARTITION。此 PR 改为使用该访问类型。为保持兼容性,如果已授予 SELECT 和 ALTER DELETE,仍会隐式授予此权限,但这一行为将在未来版本中被移除。关闭 #16403 。#71632 (pufit )。
使 use_hive_partitioning 默认启用。#71636 (Yarik Briukhovetskyi )。
在尝试物化排序键中的列时抛出异常,而不是任其破坏排序顺序。不过,这并不能解决 #71777 。#71891 (Peter Nguyen )。
在启用 hash join 算法时,允许使用更通用的 join 计划算法。#71926 (János Benjamin Antal )。
在 EXPLAIN QUERY TREE 中隐藏敏感信息。 #72025 (Yakov Olkhovskiy ).
允许使用可配置的磁盘来存储数据库和表的元数据文件。磁盘名称可以通过 database_disk.disk 配置参数进行设置。 #72027 (Tuan Pham Anh ).
在原生读取器中添加对 Parquet 整数逻辑类型的支持。 #72105 (Arthur Passos ).
默认采用美化的 JSON 输出格式。新增设置 output_format_json_pretty_print 用于控制该行为,并默认启用。 #72148 (Pavel Kruglov )。
如果默认用户设置了密码,则会在浏览器中以交互方式请求凭证。在之前的版本中,服务器会返回 HTTP 403;现在会返回 HTTP 401。#72198 (Alexey Milovidov )。
此 PR 将 CREATE_USER、ALTER_USER、DROP_USER、CREATE_ROLE、ALTER_ROLE、DROP_ROLE 这些访问类型从全局改为可参数化。这意味着用户现在可以更精细地授予访问管理相关权限:#72246 (pufit )。
允许在集群配置中对名称进行分片处理。 #72276 (MikhailBurdukov ).
支持在参数不同的 JSON 类型之间执行 CAST 和 ALTER。#72303 (Pavel Kruglov )。
将 latest_fail_error_code_name 列添加到 system.mutations。我们需要这一列来引入一个用于卡住的 mutation 的新指标,并据此构建云环境中发生错误的图表,同时(可选)添加一个噪声更低的新告警。#72398 (Miсhael Stetsyuk )。
减少在附加分区时的内存分配开销。 #72583 (Konstantin Morozov ).
将 max_bytes_before_external_sort 的限制改为依赖整个查询的总内存消耗(之前它表示单个排序线程中排序块的字节数,现在它与 max_bytes_before_external_group_by 具有相同的含义——即整个查询(所有线程)的总内存上限)。另外新增了一个用于控制磁盘上块大小的设置——min_external_sort_block_bytes。 #72598 (Azat Khuzhin ).
忽略由 trace collector 施加的内存限制。#72606 (Azat Khuzhin ).
在 MergeTree 的排序键和跳过索引中增加对子列的支持。 #72644 (Pavel Kruglov ).
在 system.server_settings 中添加服务器设置项 dictionaries_lazy_load 和 wait_dictionaries_load_at_startup。 #72664 (Christoph Wurm )。
将 max_backup_bandwidth 设置添加到可在 BACKUP/RESTORE 查询中指定的设置列表中。#72665 (Christoph Wurm )。
并行副本会利用副本可用性的历史信息来优化副本选择,但在连接不可用时不会更新该副本的错误计数。本 PR 在副本不可用时也会更新该副本的错误计数。 #72666 (zoomxi )。
将 ReplicatedMergeTree 引擎中新出现的副本数据片段的日志级别降低,从而减少在复制集群中生成的日志量。#72876 (mor-akamai )。
许多新特性将需要对与 Iceberg 元数据相关的代码进行更好的封装和更合理的抽象。#72941 (Daniil Ivanik )。
支持对 JSON 列的值进行相等比较。 #72991 (Pavel Kruglov )。
改进带有 JSON 子列的标识符的格式,避免使用不必要的反引号。 #73085 (Pavel Kruglov ).
以 Test 级别记录 PREWHERE 条件。 #73116 (Vladimir Cherkasov ).
支持在隐式 ENGINE 情况下使用 SETTINGS,并支持在同一语句中混用引擎设置和查询设置。 #73120 (Raúl Marín ).
在启用 optimize_on_insert 时,将数据分片写为 level 1。这样可以在针对新写入分片、且带有 FINAL 的查询中使用多种优化。#73132 (Anton Popov )。
对于类似 WHERE a<b AND b<c AND c<5 的查询,可以推导出新的比较条件(a<5 AND b<5),从而提升过滤效果。#73164 (Shichao Jin ).
改进对析取表达式中公共子表达式的提取。即使所有析取项中不存在共同子表达式,也允许简化最终的过滤表达式。延续自 #71537 。#73271 (Dmitry Novik )。
在 Storage S3(Azure)Queue 中,现在允许为最初在未配置任何设置的情况下创建的表补充添加设置。#73283 (Kseniia Sumarokova ).
clickhouse-client 现在支持使用 Ctrl+D 来结束查询,允许使用 Ctrl+D 来代替输入分号并按 Enter。此外,在单行模式下,让 Ctrl+D 的作用等同于按下 Enter。#73293 (Xiaozhe Yu )。
引入一个设置 least_greatest_legacy_null_behavior(默认值:false),用于控制函数 least 和 greatest 在处理 NULL 参数时,是无条件返回 NULL(当为 true 时),还是忽略这些参数(当为 false 时)。#73344 (Robert Schulze )。
在清理线程 ObjectStorageQueueMetadata 中使用 Keeper 的多请求功能。 #73357 (Antonio Andelic ).
现已默认使用新的 MongoDB 驱动程序。希望继续使用旧版驱动程序的用户可以将服务器设置项 use_legacy_mongodb_integration 配置为 true。#73359 (Robert Schulze )。
当 ClickHouse 在 cgroup 环境下运行时,我们仍会收集与系统负载、进程调度、内存等相关的系统范围异步指标。当宿主机上只有 ClickHouse 这一高资源消耗进程时,这些指标可能会提供有用的信号。 #73369 (Nikita Taranov )。
在 S3Queue 存储中,现在可以将 24.6 版本之前创建的旧 Ordered 表迁移到带有 bucket 的新结构中。#73467 (Kseniia Sumarokova )。
添加 system.azure_queue,与现有的 system.s3queue 类似。 #73477 (Kseniia Sumarokova ).
修复了一个回归问题:使用带修饰符的排序规则区域设置时会抛出错误。例如,SELECT arrayJoin(['kk 50', 'KK 01', ' KK 2', ' KK 3', 'kk 1', 'x9y99', 'x9y100']) item ORDER BY item ASC COLLATE 'tr-u-kn-true-ka-shifted 现在可以正常工作。#73544 (Robert Schulze )。
支持 Nullable(JSON) 类型。 #73556 (Pavel Kruglov ).
函数 parseDateTime64(及其变体)现在对 1970 年之前或 2106 年之后的输入日期也会返回正确结果。示例:SELECT parseDateTime64InJodaSyntax('2200-01-01 00:00:00.000', 'yyyy-MM-dd HH:mm:ss.SSS')。 #73594 (zhanglistar )。
修复了一些用户报告的 clickhouse-disks 可用性问题。关闭 #67136 。#73616 (Daniil Ivanik )。
允许更改 storage S3(Azure)Queue 的提交参数。(提交参数包括:max_processed_files_before_commit、max_processed_rows_before_commit、max_processed_bytes_before_commit、max_processing_time_sec_before_commit)。 #73635 (Kseniia Sumarokova ).
在 S3(Azure)Queue 存储中汇总各个来源的进度,以便与提交限制设置进行比较。 #73641 (Kseniia Sumarokova ).
在 BACKUP/RESTORE 查询中支持核心配置。#73650 (Vitaly Baranov ).
在 Parquet 输出中读取 output_format_compression_level 设置。 #73651 (Arthur Passos )。
在读取 arrow fixed_size_list 时,将其作为 Array 类型处理,而不再视为不受支持的类型。#73654 (Julian Meyers ).
该 PR 新增了两个备份引擎:Memory(将备份保存在当前用户会话中)和 Null(不会在任何地方保存备份):#73690 (Vitaly Baranov )。
concurrent_threads_soft_limit_num 和 concurrent_threads_soft_limit_num_ratio_to_cores 可以在无需重启服务器的情况下更改。 #73713 (Sergei Trifonov )。
为 formatReadable 系列函数添加对扩展数值类型(Decimal、大整数)的支持。#73765 (Raúl Marín )。
对 tuple 列中的字段也应用列名大小写不敏感匹配规则。关闭 https://github.com/apache/incubator-gluten/issues/8324 。#73780 (李扬 )。
为 Postgres wire 协议提供 TLS 支持。 #73812 (scanhex12 ).
默认允许使用 LowCardinality(UUID)。实践证明,这在 ClickHouse Cloud 的客户中非常实用。#73826 (Alexey Milovidov )。
改进安装过程中的提示信息。#73827 (Alexey Milovidov ).
改进了 ClickHouse Cloud 的密码重置提示信息。#73831 (Alexey Milovidov ).
改进当 File 表无法向文件追加数据时的错误信息。#73832 (Alexey Milovidov ).
当用户在终端中意外请求输出二进制格式(例如 Native、Parquet、Avro)时,增加确认提示。此更改解决了 #59524 。#73833 (Alexey Milovidov )。
BFloat16 数据类型已可在生产环境中使用。 #73840 (Alexey Milovidov ).
在终端中对 Pretty 和 Vertical 格式的输出高亮显示行末空格,以提升可读性。该行为由设置 output_format_pretty_highlight_trailing_spaces 控制。初始实现由 Braden Burns 在 #72996 中完成。关闭了 #71590 。#73847 (Alexey Milovidov )。
clickhouse-client 和 clickhouse-local 在从文件重定向标准输入时会自动检测压缩格式。此更改已关闭 #70865 。#73848 (Alexey Milovidov )。
在 pretty 输出格式中默认截断过长的列名。该行为由 output_format_pretty_max_column_name_width_cut_to 和 output_format_pretty_max_column_name_width_min_chars_to_cut 这两个设置控制。这是对 tanmaydatta 在 #66502 中工作的延续。本项改动关闭了 #65968 。#73851 (Alexey Milovidov )。
让 Pretty 格式更美观:如果距上一个块输出的时间间隔较短,则将多个块压缩合并。可通过新设置 output_format_pretty_squash_consecutive_ms(默认 50 ms)和 output_format_pretty_squash_max_wait_ms(默认 1000 ms)进行控制。是对 #49537 的延续。本次更改关闭了 #49153 。#73852 (Alexey Milovidov )。
修复 SQLite 的类型映射问题(将整数类型映射为 int64,将浮点类型映射为 float64)。#73853 (Joanna Hulboj )。
新增一个统计当前正在合并的源数据分片数量的指标。此更改解决了 #70809 。#73868 (Alexey Milovidov )。
当输出到终端时,在 Vertical 格式下高亮显示列。可以通过 output_format_pretty_color 设置来禁用此行为。#73898 (Alexey Milovidov )。
已将 MySQL 兼容性提升到这样的水平:现在 mysqlsh(Oracle 提供的功能丰富的 MySQL CLI)可以连接到 ClickHouse。这是为了方便测试。#73912 (Alexey Milovidov )。
如果输出记录数大于 N = output_format_pretty_max_rows,则不会仅显示前 N 行,而是将在中间截断输出表,显示前 N/2 行和后 N/2 行。作为对 #64200 的延续。此变更关闭了 #59502 。#73929 (Alexey Milovidov )。
函数 isIPv4String 在正确的 IPv4 地址后紧跟一个零字节时会返回 true,而在这种情况下本应返回 false。这是对 #65387 的延续。#73946 (Alexey Milovidov )。
使 MySQL 线协议中的错误码与 MySQL 保持兼容。延续自 #56831 。关闭 #50957 。#73948 (Alexey Milovidov )。
添加设置项 validate_enum_literals_in_opearators,用于在 IN、NOT IN 等运算符中验证枚举字面量是否与枚举类型匹配,如果字面量不是有效的枚举值则抛出异常。 #73985 (Vladimir Cherkasov )。
在存储引擎 S3(Azure)Queue 中,将由提交设置定义的单个批次中的所有文件在一次 Keeper 事务中提交。#73991 (Kseniia Sumarokova )。
为可执行 UDF 和字典禁用头部检测(可能导致 Function 'X': wrong result, expected Y row(s), actual Y-1)。 #73992 (Azat Khuzhin ).
为 EXPLAIN PLAN 新增了 distributed 选项。现在,EXPLAIN distributed=1 ... 会在 ReadFromParallelRemote* 步骤中附加远程执行计划。#73994 (Nikolai Kochetov )。
为带有 Dynamic 参数的 not/xor 运算使用正确的返回类型。#74013 (Pavel Kruglov )。
允许在创建表之后修改 add_implicit_sign_column_constraint_for_collapsing_engine。#74014 (Christoph Wurm )。
在物化视图的 SELECT 查询中支持子列。#74030 (Pavel Kruglov )。
Pretty 输出格式可以在表格单元格内渲染多行字段,从而提高可读性。该功能默认启用,可通过设置 output_format_pretty_multiline_fields 进行控制。该改动是对 Volodyachan 在 #64094 中工作的延续,并关闭了 #56912 。#74032 (Alexey Milovidov )。
在查询计划层面为 MergingAggregated 步骤新增对 predicate-push-down 优化的支持,这在使用新分析器时可提升部分查询的性能。 #74073 (Nikolai Kochetov ).
现在可以通过三种简单的方法在 clickhouse-client 中设置自定义提示符:1. 通过命令行参数 --prompt;2. 在配置文件中通过设置 <prompt>[...]</prompt>;3. 同样在配置文件中,通过为每个连接单独设置 <connections_credentials><prompt>[...]</prompt></connection_credentials>。 #74168 (Christoph Wurm )。
将 Prometheus remote write 响应的成功状态码从 200/OK 更改为 204/NoContent。#74170 (Michael Dempsey )。
将 X-ClickHouse HTTP 头暴露给浏览器中的 JavaScript,这使得编写应用程序更加方便。#74180 (Alexey Milovidov )。
JSONEachRowWithProgress 格式将包含带元数据的事件,以及 totals 和 extremes。它还包含 rows_before_limit_at_least 和 rows_before_aggregation。如果在部分结果之后出现异常,该格式会正确输出该异常。进度信息现在包含已消耗的纳秒数。结束时会发出最后一个进度事件。在查询执行期间,进度信息的输出频率不会高于 interactive_delay 设置的值。#74181 (Alexey Milovidov )。
在 Play UI 中的沙漏将平滑旋转。 #74182 (Alexey Milovidov ).
即使 HTTP 响应经过压缩,也要在数据包一到达就立即发送。这样浏览器就能同时接收进度包和压缩数据。#74201 (Alexey Milovidov )。
新增支持在无需重启服务器的情况下,动态重新加载 max_remote_read_network_bandwidth_for_serve 和 max_remote_write_network_bandwidth_for_server。 #74206 (Kai Zhu ).
在 ClickHouse Client 中通过连接到 9440 端口自动检测是否使用安全连接。#74212 (Christoph Wurm ).
为 http_handlers 支持仅使用用户名进行用户认证(此前还要求用户提供密码)。#74221 (Azat Khuzhin )。
对替代查询语言 PRQL 和 KQL 的支持被标记为实验性功能。要使用它们,请将设置 allow_experimental_prql_dialect = 1 和 allow_experimental_kusto_dialect = 1。#74224 (Robert Schulze )。
在更多聚合函数中支持返回默认 Enum 类型。#74272 (Raúl Marín )。
在 OPTIMIZE TABLE 中,现在可以将关键字 FORCE 指定为现有关键字 FINAL 的替代。#74342 (Robert Schulze )。
添加了一个 MergeTree 设置 materialize_skip_indexes_on_merge,用于在合并期间禁止创建跳过索引。这样用户就可以通过 ALTER TABLE [..] MATERIALIZE INDEX [...] 显式控制跳过索引的创建时机。如果跳过索引的构建代价较高(例如向量相似度索引),这将非常有用。#74401 (Robert Schulze )。
在 default 和 materialized 表达式中支持使用子列。 #74403 (Pavel Kruglov ).
在 Storage(S3/Azure)Queue 中优化 Keeper 请求。 #74410 (Kseniia Sumarokova ).
添加 IsServerShuttingDown 指标,用于在服务器关闭过程耗时过长时触发告警。#74429 (Miсhael Stetsyuk )。
在 EXPLAIN 输出中添加了 Iceberg 表的名称。 #74485 (alekseev-maksim ).
默认最多可使用 1000 个并行副本。#74504 (Konstantin Bogdanov )。
在使用旧版分析器配合 RECURSIVE CTE 时提供更好的错误信息。#74523 (Raúl Marín](https://github.com/Algunenano))。
优化 Storage(S3/Azure)Queue 中的 Keeper 请求。#74538 (Kseniia Sumarokova )。
提升从 S3 磁盘读取时的 HTTP 会话复用(#72401 )。#74548 (Julian Maicher )。
在 system.errors 中显示详细错误信息。#74574 (Vitaly Baranov ).
为所有类型的复制任务启用了退避逻辑,从而降低 CPU 使用率、内存占用以及日志文件大小。新增了与 max_postpone_time_for_failed_mutations_ms 类似的设置项 max_postpone_time_for_failed_replicated_fetches_ms、max_postpone_time_for_failed_replicated_merges_ms 和 max_postpone_time_for_failed_replicated_tasks_ms。#74576 (MikhailBurdukov )。
更精确地考虑 parallel_hash JOIN 算法中的 max_joined_block_size_rows 设置,有助于避免相比 hash 算法的额外内存消耗。#74630 (Nikita Taranov )。
在 libhdfs3 中添加了对 dfs.client.use.datanode.hostname 配置选项的支持。#74635 (Mikhail Tiukavkin ).
修复错误:Codec 'snappy' 不支持设置压缩级别。#74659 (Arthur Passos )。
允许在客户端与 clickhouse-keeper 之间的通信中使用密码。如果你已经为服务器和客户端配置了合适的 SSL,这个功能就不是特别有用,但在某些场景下仍然有用。密码长度不能超过 16 个字符。它与 Keeper Auth 模型无关。#74673 (alesapin )。
允许在创建备份时使用 blob 路径计算校验和。#74729 (Vitaly Baranov ).
当 JOIN 键在两侧都是主键(PK)的前缀时,使用动态分片来执行 JOIN。此优化可通过 query_plan_join_shard_by_pk_ranges 设置启用(默认禁用)。#74733 (Nikolai Kochetov )。
为配置重载器添加错误码。#74746 (Garrett Thomas )。
在 MySQL 和 PostgreSQL 的表函数和引擎中增加了对 IPv6 地址的支持。 #74796 (Mikhail Koviazin ).
现在,Gorilla 编解码器(codec Gorilla)的参数将始终保存在 .sql 文件中的表元数据中。此更改关闭了问题 #70072 。#74814 (Nikita Mikhaylov )。
实现 divideDecimal 的短路优化。修复 #74280 。#74843 (Kevin Mingtarja )。
提升 Keeper 中大规模多请求操作的性能。 #74849 (Antonio Andelic ).
现在可以在启动脚本中指定用户。#74894 (pufit )。
在 ALTER TABLE FETCH PARTITION 中并行拉取分片(线程池大小由 max_fetch_partition_thread_pool_size 控制)。 #74978 (Azat Khuzhin ).
向 system.query_cache 添加了查询 ID 列(问题 #68205 )。#74982 (NamNguyenHoai )。
重新启用 SSH 协议支持。修复了一些严重漏洞,现已无法再使用自定义 pager 或指定 server-logs-file。默认禁用通过环境变量传递客户端选项(仍可通过 config.xml 中的 ssh-server.enable_client_options_passing 开启)。现在支持 progress 表、查询取消、自动补全、profile events 进度、stdin 以及 send_logs_level 选项。修复了问题:#74340 。#74989 (Nikita Mikhaylov )。
在查询解析期间如果出现异常,使用自定义格式对异常进行格式化。此前版本中,异常始终使用默认格式,而不是查询中指定的格式。此更改关闭了 #55422 。#74994 (Alexey Milovidov )。
实现了解析功能增强(Sequence ID 解析:新增在 manifest 文件中解析序列标识符的能力;Avro 元数据解析:重新设计 Avro 元数据解析器,使其在未来易于扩展)。 #75010 (Daniil Ivanik ).
现在支持通过 KILL QUERY 或执行超时(max_execution_time)来取消 ALTER TABLE ... FREEZE ... 查询。 #75016 (Kirill ).
新增对 groupUniqArrayArrayMap 作为 SimpleAggregateFunction 的支持。 #75034 (Miel Donkers ).
在 Postgres 线路协议中增加对预处理语句的支持。 #75035 (scanhex12 ).
在 Iceberg 数据库引擎中隐藏目录凭据配置。修复 #74559 。#75080 (Kseniia Sumarokova )。
在 BuzzHouse 中添加了几个之前缺失的功能:ILIKE 和 REGEXP 运算符、<=> 和 IS NOT DISTINCT FROM。 #75168 (Pedro Ferreira )。
设置项 min_chunk_bytes_for_parallel_parsing 现在不能再被设为零。修复了: #71110 。#75239 (Nikita Mikhaylov )。
intExp2 / intExp10:明确未定义行为:对过小的参数返回 0,对过大的参数返回 18446744073709551615,如果为 nan 则抛出异常。#75312 (Vitaly Baranov )。
在 DatabaseIceberg 中通过 catalog 配置原生支持 s3.endpoint。关闭 #74558 。#75375 (Kseniia Sumarokova )。
当执行 SYSTEM DROP REPLICA 的用户没有足够权限时,将不再静默失败。#75377 (Bharat Nallan )。
添加一个 ProfileEvent,用于统计任何系统日志刷写失败的次数。#75466 (Alexey Milovidov )。
为解密和解压缩添加检查和日志。 #75471 (Vitaly Baranov ).
在 parseTimeDelta 函数中新增了对微符号(U+00B5)的支持。现在微符号(U+00B5)和希腊字母 mu(U+03BC)都被识别为微秒的有效表示形式,使 ClickHouse 的行为与 Go 的实现保持一致(参见 time.go 和 time/format.go )。#75472 (Vitaly Orlov )。
将服务器端设置(send_settings_to_client)替换为客户端设置(apply_settings_from_server),该设置控制客户端侧代码(例如解析 INSERT 数据和格式化查询输出)是否应使用服务器端 users.xml 和用户配置文件中的设置。否则,将只使用来自客户端命令行、会话以及查询本身的设置。注意,这仅适用于原生客户端(不适用于例如 HTTP),并且不适用于大部分查询处理过程(这些处理发生在服务器端)。#75478 (Michael Kolupaev )。
Keeper 改进:在提交到内存存储时禁用摘要计算以提升性能。可以通过 keeper_server.digest_enabled_on_commit 配置项启用该功能。在对请求进行预处理时仍会计算摘要。#75490 (Antonio Andelic )。
在可能的情况下,从 JOIN 的 ON 子句中下推过滤表达式。#75536 (Vladimir Cherkasov )。
改进了语法错误时的错误信息。此前,如果查询过大,且长度超限的记号是一个非常长的字符串字面量,用于说明错误原因的消息会淹没在该超长记号的两个示例之间。修复了在错误信息中包含 UTF-8 字符的查询被错误截断的问题。修复了查询片段被过度加引号的问题。此更改关闭了 #75473 。#75561 (Alexey Milovidov )。
在存储 S3(Azure)Queue 中添加 ProfileEvents 事件。 #75618 (Kseniia Sumarokova ).
为兼容性起见,禁用从服务器向客户端发送设置(send_settings_to_client=false)(该功能稍后将以客户端设置的形式重新实现,以提升易用性)。 #75648 (Michael Kolupaev ).
添加配置项 memory_worker_correct_memory_tracker,以启用利用后台线程定期读取的其他来源信息来修正内部内存跟踪器。 #75714 (Antonio Andelic )。
在 PrometheusRemoteReadProtocol 中使用 Analyzer。 #75729 (Dmitry Novik )。
我们已经支持 gauge/counter 类型的指标。然而,对于某些指标(例如对 ClickHouse Keeper 的请求响应时间)来说,这还不够用,因此需要增加对 histogram 类型指标的支持。该接口与 Prometheus 客户端非常相似,只需调用 observe(value),即可增加对应 value 所在 bucket 中的计数。histogram 指标通过 system.histogram_metrics 对外暴露。 #75736 (Miсhael Stetsyuk )。
在 system.processes 中添加列 normalized_query_hash。注意:虽然可以通过 normalizedQueryHash 函数在运行时轻松计算得到,但这是为后续变更做准备所必需的。#75756 (Alexey Milovidov )。
即使存在一个基于已不存在数据库创建的 Merge 表,查询 system.tables 也不会抛出异常。移除 Hive 表中的 getTotalRows 方法,因为我们不允许它执行复杂操作。#75772 (Alexey Milovidov )。
Web UI 现已支持交互式数据库导航。#75777 (Alexey Milovidov )。
允许在存储策略中组合只读磁盘和读写磁盘(作为多个卷或多个磁盘)。这样可以从整个卷读取数据,而写入操作将优先落到可写磁盘上(即 Copy-on-Write 存储策略)。 #75862 (Azat Khuzhin ).
从 system.opentelemetry_span_log 表的默认 ORDER BY 中移除 trace_id。 #75907 (Azat Khuzhin ).
现在可以将加密(XML 属性 encrypted_by)应用于任意配置文件(config.xml、users.xml、嵌套的配置文件)。此前,它只适用于顶层 config.xml 配置文件。#75911 (Mikhail Gorshkov )。
以微秒精度存储备份的 start_time 和 end_time。#75929 (Aleksandr Musorin ).
新增名为 MemoryTrackingUncorrected 的指标,用于显示未经过 RSS 校正的内部全局内存跟踪器的值。 #75935 (Antonio Andelic ).
对 MergeTree 中的列和索引大小进行惰性计算。 #75938 (Pavel Kruglov ).
当输出列仅依赖于左表时,可将 JOIN 转换为 IN 子查询;但该转换首先需要增加一个唯一性处理步骤,因此在该步骤补充之前默认不启用此优化。#75942 (Shichao Jin )。
新增了一个服务器设置 throw_on_unknown_workload,用于在查询设置了 workload 且其值为未知时选择行为:要么允许不受限制地访问(默认),要么抛出 RESOURCE_ACCESS_DENIED 错误。该设置可用于强制所有查询都使用 workload 调度。#75999 (Sergei Trifonov )。
使新的实验性的 Kafka 表引擎完全遵循 Keeper 功能开关。 #76004 (János Benjamin Antal ).
在 ARRAY JOIN 中,如非必要,不要将子列重写为 getSubcolumn。 #76018 (Pavel Kruglov ).
在加载表时重试协调相关错误。 #76020 (Alexander Tokmakov ).
改进 system.warnings 表,并添加一些可动态添加、更新或删除的警告信息。#76029 (Bharat Nallan )。
支持在 SYSTEM FLUSH LOGS 中单独刷新日志。#76132 (Raúl Marín ).
改进了 /binary 服务器的页面。使用 Hilbert 曲线替代 Morton 曲线。在方形中显示 512 MB 的地址,使方形填充得更充分(在之前的版本中,地址只填充了方形的一半)。根据更接近库名而非函数名为地址着色。允许在区域外多滚动一点。#76192 (Alexey Milovidov )。
该 PR 禁止再运行查询 ALTER USER user1 ADD PROFILES a, DROP ALL PROFILES,因为所有 DROP 操作必须排在最前面。#76242 (pufit ).
针对 SYNC REPLICA 的多项改进(更清晰的错误信息、更完善的测试、合理性检查)。 #76307 (Azat Khuzhin ).
当出现 TOO_MANY_SIMULTANEOUS_QUERIES 时,对 ON CLUSTER 查询进行重试。 #76352 (Patrick Galbraith ).
将 output_format_pretty_max_rows 的默认值从 10000 更改为 1000。我认为这在易用性方面更好。#76407 (Alexey Milovidov )。
为只读 MergeTree 表增加刷新支持。#76467 (Alexey Milovidov )。
在备份到 S3 时,如果分段复制因 Access Denied 失败,则使用正确的回退机制。当在使用不同凭据的 bucket 之间执行备份时,分段复制可能会触发 Access Denied 错误。#76515 (Antonio Andelic )。
加快 ClickHouse 服务器关闭速度(消除 2.5 秒延迟)。#76550 (Azat Khuzhin ).
在 system.errors 中添加 query_id。相关 Issue #75815 。#76581 (Vladimir Baikov )。
将 librdkafka 升级到 2.8.0 版本,并改进了 Kafka 表的关闭流程,从而减少在删除表和重启服务器时的延迟。engine=Kafka 在表被删除时不再显式退出其消费者组。取而代之的是,该消费者会继续留在组中,直到在 session_timeout_ms(默认:45 秒)内保持空闲后被自动移除。#76621 (filimonov )。
修复对 S3 请求配置的验证。#76658 (Vitaly Baranov ).
在 readbufferfroms3 和其他远程读取缓冲区中避免过多的内存分配,将其内存占用减半。 #76692 (Sema Checherinda ).
支持从 View 中读取 JSON 类型及其子列。 #76903 (Pavel Kruglov ).
添加对将 UInt128 转换为 IPv6 的支持。这使得可以对 IPv6 执行 bitAnd 运算和算术运算,并将其转换回 IPv6。关闭了 #76752 。这也允许将对 IPv6 执行 bitAnd 运算的结果转换回 IPv6。参见:https://github.com/ClickHouse/ClickHouse/pull/57707 。#76928 (Muzammil Abdul Rehman )。
像 server_settings 或 settings 这样的系统表都带有一个 default 值列,这很方便。此前只有 merge_tree_settings 和 replicated_merge_tree_settings 未启用该列。#76942 (Diego Nieto )。
默认情况下,不再在 Variant 类型的文本格式中解析特殊的 Bool 值。可以通过启用设置 allow_special_bool_values_inside_variant 来恢复该行为。#76974 (Pavel Kruglov ).
在会话级和服务器级支持按任务配置低优先级查询的等待时间。#77013 (VicoWu )。
新增 ProfileEvents::QueryPreempted,其逻辑与 CurrentMetrics::QueryPreempted 一致。#77015 (VicoWu )。
此前,database replicated 可能会在日志中输出查询中指定的凭据。此行为已修复。相关问题已关闭:#77123 。#77133 (Nikita Mikhaylov )。
将 zstd 从 1.5.5 升级到 1.5.7,带来了相当不错的性能提升 。#77137 (Pradeep Chhetri )。
允许在 plain_rewritable 磁盘上使用 ALTER TABLE DROP PARTITION。 #77138 (Julia Kartseva ).
在零拷贝复制的情况下,新增在合并/变更执行前随机休眠最长 500ms 的功能,且与数据片段大小无关。#77165 (Alexey Katsman )。
在将 TRUNCATE 与 INTO OUTFILE 一起使用时,支持原子重命名。修复 #70323 。#77181 (Onkar Deshpande )。
对 PostgreSQL 的 CHARACTER、CHAR 和 BPCHAR 类型使用 FixedString。 #77304 (Pablo Marcos ).
允许通过存储/表函数设置 iceberg_metadata_file_path 来显式指定要读取的 Iceberg 元数据文件。修复 #47412 。#77318 (alesapin )。
支持数据库使用远程磁盘存储元数据文件。#77365 (Tuan Pham Anh )。
实现 JSON 数据类型值的比较功能。现在可以像 Map 一样比较 JSON 对象。#77397 (Pavel Kruglov )。
已回滚更改。#77399 (Yarik Briukhovetskyi )。
备份/恢复设置 allow_s3_native_copy 现在支持三个可能的取值:False - 不使用 S3 原生复制;True(旧默认值)- ClickHouse 将首先尝试使用 S3 原生复制,如果失败则回退到读取+写入方式;'auto'(新默认值)- ClickHouse 会先比较源和目标的凭证。如果相同,ClickHouse 将尝试使用 S3 原生复制,然后可能回退到读取+写入方式。如果不同,ClickHouse 将直接采用读取+写入方式。#77401 (Vitaly Baranov )。
plain_rewritable 磁盘现已支持 ALTER TABLE ... ATTACH|DETACH|MOVE|REPLACE PARTITION。 #77406 (Julia Kartseva ).
关于跳过索引缓存的更改已被回滚。#77447 (Nikita Mikhaylov ).
在预取 Wide 格式数据部分中的 JSON 列时降低内存使用量。 #77640 (Pavel Kruglov ).
在 DeltaLake 表引擎的 Delta 内核中增加对 AWS 会话令牌和环境变量凭证的支持。 #77661 (Kseniia Sumarokova ).
支持在 additional_table_filters 设置中使用查询参数。更改之后,以下查询将会成功执行:#77680 (wxybear )。
现在可以在 UDF(用户定义函数)的 XML 定义中通过一个新的标签将其标记为确定性函数。此外,查询缓存现在会检查查询中调用的 UDF 是否为确定性函数;如果是,则会缓存该查询结果。(Issue #59988 )。#77769 (Jimmy Aguilar Mena )。
新增 Buffer 表引擎参数校验功能。#77840 (Pervakov Grigorii ).
添加配置项 enable_hdfs_pread 用于启用或禁用 HDFS 预读(pread)。#77885 (kevinyhzou )。
新增用于统计 ZooKeeper “multi” 读写请求次数的 profile events。 #77888 (JackyWoo ).
在启用 disable_insertion_and_mutation 设置时,允许创建临时表并向其中插入数据。 #77901 (Xu Jia ).
将 max_insert_delayed_streams_for_parallel_write 的值降低至 100。 #77919 (Azat Khuzhin ).
添加了通过 max_merge_delayed_streams_for_parallel_write 配置合并操作中可并行刷新的列数的支持(这应当能将写入 S3 的垂直合并的内存占用减少约 25 倍)。 #77922 (Azat Khuzhin )。
修复 Joda 语法中类似 'yyy' 的年份解析问题。#77973 (李扬 ).
将 MergeTree 表的各个 part 按块顺序进行附加,这对于诸如 ReplacingMergeTree 之类的特殊合并算法非常重要。修复了 #71009 。#77976 (Alexey Milovidov )。
查询脱敏规则现在可以在发生匹配时抛出 LOGICAL_ERROR。这有助于检查预定义密码是否在日志中的任何位置泄露。#78094 (Nikita Mikhaylov ).
向 information_schema.tables 添加了列 index_length_column,以便更好地兼容 MySQL。#78119 (Paweł Zakrzewski )。
引入两个新指标:TotalMergeFailures 和 NonAbortedMergeFailures。这些指标用于检测在短时间内发生过多合并失败的情况。#78150 (Miсhael Stetsyuk )。
修复在使用路径风格且未指定 key 时,对 S3 URI 的错误解析。#78185 (Arthur Passos )。
修复异步指标 BlockActiveTime、BlockDiscardTime、BlockWriteTime、BlockQueueTime 和 BlockReadTime 的取值错误问题(修改前会将 1 秒错误地报告为 0.001)。#78211 (filimonov )。
在从 StorageS3(Azure)Queue 推送到物化视图时,现在会对出现的错误遵守 loading_retries 的重试次数限制。在此之前,此类错误会被无限次重试。#78313 (Kseniia Sumarokova )。
在采用 delta-kernel-rs 实现的 StorageDeltaLake 中,修复性能和进度条相关问题。#78368 (Kseniia Sumarokova ).
向量相似度索引可能会导致内存最多被多分配 2 倍。此修复重构了内存分配策略,降低了内存消耗,并提升了向量相似度索引缓存的有效性。(问题 #78056 )。#78394 (Shankar Iyer )。
为 system.metric_log 表引入了一个用于指定 schema 类型的设置项 schema_type。支持的 schema 有三种:wide —— 当前的 schema,每个 metric/event 单独占用一列(对单列读取最为高效);transposed —— 类似于 system.asynchronous_metric_log,metrics/events 以行的形式存储;以及更有意思的 transposed_with_wide_view —— 使用 transposed schema 创建底层表,同时额外提供一个 wide schema 的视图,将对视图的查询转换到底层表。在 transposed_with_wide_view 中,视图不支持亚秒级分辨率,event_time_microseconds 仅作为向后兼容的别名存在。 #78412 (alesapin )。
为运行时磁盘增加对 include、from_env、from_zk 的支持。关闭 #78177 。#78470 (Kseniia Sumarokova )。
为 iceberg 表函数和引擎新增多种便捷方式,用于解析根 metadata.json 文件。修复 #78455 。#78475 (Daniil Ivanik )。
支持 Delta Lake 的分区裁剪。 #78486 (Kseniia Sumarokova ).
为 ClickHouse 中的 SSH 协议增加对基于密码认证的支持。 #78586 (Nikita Mikhaylov )。
为长时间运行的 mutation 向 system.warnings 表添加动态警告。#78658 (Bharat Nallan )。
当 CPU 严重过载时,丢弃连接。该决策基于等待时间(OSCPUWaitMicroseconds)与占用时间(OSCPUVirtualTimeMicroseconds)的比值做出。当该比值处于 min_os_cpu_wait_time_ratio_to_drop_connection 和 max_os_cpu_wait_time_ratio_to_drop_connection 之间时,将以一定概率丢弃查询。#78778 (Alexey Katsman )。
允许 Hive 分区使用空值。#78816 (Arthur Passos ).
修复 BFloat16 在 IN 子句中的类型转换问题(即 SELECT toBFloat16(1) IN [1, 2, 3]; 现在会返回 1)。关闭 #78754 。#78839 (Raufs Dunamalijevs )。
如果设置了 disk=,则不要在其他磁盘上检查 MergeTree 的数据部分。 #78855 (Azat Khuzhin ).
将 system.query_log 中 used_data_type_families 的数据类型统一为规范形式。#78972 (Kseniia Sumarokova )。
Bug 修复(官方稳定版中用户可见的错误行为)
修复了使用 keeper-client 时无法创建 SEQUENTIAL 节点的问题。 #64177 (Duc Canh Le ).
修正父作用域中的标识符解析。允许在 WITH 子句中为表达式使用别名。修复 #58994 。修复 #62946 。修复 #63239 。修复 #65233 。修复 #71659 。修复 #71828 。修复 #68749 。#66143 (Dmitry Novik )。
修复 PositionImpl::vectorVector 中错误的字符计数。#71003 (思维 ).
修复 negate 函数的单调性问题。在之前的版本中,查询 select * from a where -x = -42;(其中 x 为主键)可能会返回错误结果。#71440 (Michael Kolupaev )。
由于未正确处理部分权限撤销,针对访问实体执行 RESTORE 操作时所需权限超出了实际必要范围。此 PR 修复了该问题。关闭 #71853 。#71958 (pufit )。
避免在执行 ALTER TABLE REPLACE/MOVE PARTITION FROM/TO TABLE 后发生暂停。获取正确的后台任务调度设置。#72024 (Aleksei Filatov )。
修复 arrayIntersect 对空元组的处理问题。修复了 #72578 。#72581 (Amos Bird )。
修复某些输入和输出格式(例如 Parquet、Arrow)中空元组的处理。#72616 (Michael Kolupaev )。
现在,对通配符数据库/表执行列级 GRANT SELECT/INSERT 语句会报错。#72646 (Johann Gan )。
修复了由于目标访问实体中存在隐式权限授予而导致用户无法执行 REVOKE ALL ON *.* 的问题。#72872 (pufit ).
修复异步分布式 INSERT 在处理待处理批次时卡住的问题(例如遇到 No such file or directory 错误)。 #72939 (Azat Khuzhin ).
添加对 Azure SAS 令牌的支持。 #72959 (Azat Khuzhin ).
修复 formatDateTime 标量函数在正时区偏移下的格式化问题。#73091 (ollidraese )。
修复在通过 PROXYv1 建立连接且设置了 auth_use_forwarded_address 时,未能正确反映源端口的问题——此前错误地使用了代理端口。新增 currentQueryID() 函数。 #73095 (Yakov Olkhovskiy ).
将格式设置传递到 TCPHandler 中的 NativeWriter,以确保诸如 output_format_native_write_json_as_string 之类的设置能够被正确应用。#73179 (Pavel Kruglov )。
修复读取 JSON 子对象的子列时使用错误前缀的问题。#73182 (Pavel Kruglov )。
修复 StorageObjectStorageQueue 中的崩溃问题。 #73274 (Kseniia Sumarokova ).
修复服务器关闭期间在可刷新物化视图中出现的罕见崩溃。#73323 (Michael Kolupaev )。
函数 formatDateTime 的 %f 占位符现在无条件地生成 6 位(秒以下)数字。这使其行为与 MySQL 的 DATE_FORMAT 函数兼容。可以通过将设置项 formatdatetime_f_prints_scale_number_of_digits 设为 1 来恢复之前的行为。#73324 (ollidraese )。
通过在索引分析中对隐式 Date 向 DateTime 的转换强制采用饱和处理,改进了日期时间转换逻辑。这解决了由于日期时间范围限制而导致的索引分析结果不准确的潜在问题,修复了 #73307 。同时也修复了在 date_time_overflow_behavior = 'ignore'(默认值)时的显式 toDateTime 转换。#73326 (Amos Bird )。
修复了从 S3 存储和表函数读取时基于 _etag 列进行过滤的问题。#73353 (Anton Popov )。
修复在使用旧分析器时,在 JOIN ON 表达式中使用 IN (subquery) 会触发 Not-ready Set is passed as the second argument for function 'in' 错误的问题。#73382 (Nikolai Kochetov ).
修复 Dynamic 和 JSON 列在压缩前的预处理逻辑。此前在某些情况下,即使尚未达到类型/路径的上限,新类型仍可能被插入到 shared variant/shared data 中。#73388 (Pavel Kruglov )。
在类型的二进制解码过程中检查损坏的大小值,以防止过大的内存分配。#73390 (Pavel Kruglov ).
修复了在启用并行副本功能的单副本集群中读取数据时出现的逻辑错误。 #73403 (Michael Kolupaev ).
修复 ObjectStorageQueue 在与 ZooKeeper 和旧版本 Keeper 一起使用时的问题。#73420 (Antonio Andelic ).
实现了修复,使 hive 分区默认启用。#73479 (Yarik Briukhovetskyi )。
修复在创建向量相似度索引时的数据竞争问题。 #73517 (Antonio Andelic ).
修复了当字典源包含带有错误数据的函数时发生的段错误。 #73535 (Yarik Briukhovetskyi ).
修复存储引擎 S3(Azure)Queue 中对插入失败的重试机制。关闭 #70951 。#73546 (Kseniia Sumarokova )。
修复了函数 tupleElement 中的错误,该错误在某些情况下处理具有 LowCardinality 元素并启用 optimize_functions_to_subcolumns 设置的元组时可能出现。#73548 (Anton Popov ).
修复了解析后面跟随区间的 enum 通配符时的问题。修复了 #73473 。#73569 (Konstantin Bogdanov )。
修复在非复制表的子查询中会忽略 parallel_replicas_for_non_replicated_merge_tree 设置的问题。 #73584 (Igor Nikonov ).
修复在无法调度任务时抛出的 std::logical_error。该问题在压力测试中发现。示例堆栈跟踪:2024.12.19 02:05:46.171833 [ 18190 ] {01f0daba-d3cc-4898-9e0e-c2c263306427} <Fatal> : Logical error: 'std::exception. Code: 1001, type: std::__1::future_error, e.what() = The associated promise has been destructed prior to the associated state becoming ready. (version 25.1.1.18724), Stack trace:. #73629 (Alexander Gololobov ).
在 EXPLAIN SYNTAX 中不对查询进行解释,以避免在分布式查询中因处理阶段设置不正确而产生逻辑错误。修复了 #65205 。#73634 (Dmitry Novik )。
修复 Dynamic 列中可能出现的数据不一致问题。修复可能出现的逻辑错误 Nested columns sizes are inconsistent with local_discriminators column size。#73644 (Pavel Kruglov )。
修复了在带有 FINAL 和 SAMPLE 的查询中出现的 NOT_FOUND_COLUMN_IN_BLOCK 错误。修复了从 CollapsingMergeTree 中使用 FINAL 的 SELECT 查询结果不正确的问题,并启用了 FINAL 的优化。#73682 (Anton Popov ).
修复 LIMIT BY COLUMNS 中的崩溃。 #73686 (Raúl Marín ).
修复了这样一个 bug:在被强制使用常规投影,且查询与所定义的投影完全相同时,却没有选择该投影,从而导致报错。 #73700 (Shichao Jin ).
修复 Dynamic/Object 结构的反序列化问题。该问题可能会导致 CANNOT_READ_ALL_DATA 异常。#73767 (Pavel Kruglov )。
在从备份中恢复数据部分时跳过 metadata_version.txt 文件。#73768 (Vitaly Baranov )。
修复 #73737 。#73775 (zhanglistar )。
修复了 #72078 (S3 Express 支持功能异常)。#73777 (Sameer Tamsekar )。
允许在 CollapsingMergeTree 表中合并包含 sign 列无效值的行。#73864 (Christoph Wurm )。
修复如下错误 Row 1: ────── hostname: c-test-wy-37-server-nlkyjyb-0.c-test-wy-37-server-headless.ns-test-wy-37.svc.cluster.local type: ExceptionWhileProcessing event_date: 2024-12-23 event_time: 2024-12-23 16:21:19 event_time_microseconds: 2024-12-23 16:21:19.824624 query_start_time: 2024-12-23 16:21:19 query_start_time_microseconds: 2024-12-23 16:21:19.747142 query_duration_ms: 77 read_rows: 1 read_bytes: 134 written_rows: 0 written_bytes: 0 result_rows: 0 result_bytes: 0 memory_usage: 7824 current_database: default query: CREATE DATABASE db0 formatted_query: normalized_query_hash: 7820917191074023511 -- 7.82 quintillion query_kind: Create databases: ['db0'] tables: [] columns: [] partitions: [] projections: [] views: [] exception_code: 170 exception: Code: 170. DB::Exception: Bad get: has Null, requested Int64: While executing DDLOnClusterQueryStatus. (BAD_GET) (version 25.1.1.19134 (official build)) stack_trace: 0. ./build_docker/./src/Common/Exception.cpp:107: DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0x000000000da5e53b 1. DB::Exception::Exception(PreformattedMessage&&, int) @ 0x00000000088aca4c 2. DB::Exception::Exception<std::basic_string_view<char, std::char_traits<char>>, std::basic_string_view<char, std::char_traits<char>>>(int, FormatStringHelperImpl<std::type_identity<std::basic_string_view<char, std::char_traits<char>>>::type, std::type_identity<std::basic_string_view<char, std::char_traits<char>>>::type>, std::basic_string_view<char, std::char_traits<char>>&&, std::basic_string_view<char, std::char_traits<char>>&&) @ 0x00000000088bae8b 3. auto& DB::Field::safeGet<long>() & @ 0x0000000008a3c748 4. ./src/Core/Field.h:484: DB::ColumnVector<long>::insert(DB::Field const&) @ 0x0000000012e44c0f 5. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:53: DB::DDLOnClusterQueryStatusSource::generateChunkWithUnfinishedHosts() const @ 0x0000000012a40214 6. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:104: DB::DDLOnClusterQueryStatusSource::handleTimeoutExceeded() @ 0x0000000012a41640 7. ./build_docker/./src/Interpreters/DDLOnClusterQueryStatusSource.cpp:109: DB::DDLOnClusterQueryStatusSource::stopWaitingOfflineHosts() @ 0x0000000012a41be9 8. ./build_docker/./src/Interpreters/DistributedQueryStatusSource.cpp:182: DB::DistributedQueryStatusSource::generate() @ 0x0000000011feb3bf 9. ./build_docker/./src/Processors/ISource.cpp:139: DB::ISource::tryGenerate() @ 0x0000000014148f5b 10. ./build_docker/./src/Processors/ISource.cpp:108: DB::ISource::work() @ 0x0000000014148c47 11. ./build_docker/./src/Processors/Executors/ExecutionThreadContext.cpp:49: DB::ExecutionThreadContext::executeTask() @ 0x0000000014164fc7 12. ./build_docker/./src/Processors/Executors/PipelineExecutor.cpp:290: DB::PipelineExecutor::executeStepImpl(unsigned long, std::atomic<bool>*) @ 0x00000000141577e5。#73876 (Tuan Pham Anh )。
修复了在比较 map() 类型时偶发失败的问题,该问题是由于允许创建其嵌套 tuple 未显式命名为('keys'、'values')的 Map 所致。 #73878 (Yakov Olkhovskiy ).
在解析 GROUP BY ALL 子句时忽略窗口函数。修复 #73501 。#73916 (Dmitry Novik )。
在客户端-服务器通信中正确传播 Native 格式设置。#73924 (Pavel Kruglov ).
修复隐式权限(之前被当作通配符处理)。#73932 (Azat Khuzhin )。
修复在创建嵌套 Maps 时出现的过高内存占用。#73982 (Pavel Kruglov )。
修复解析包含空键的嵌套 JSON 的问题。 #73993 (Pavel Kruglov ).
修复:当某个别名被另一个别名引用并以相反顺序进行选择时,该别名可能不会被添加到 projection 中。#74033 (Yakov Olkhovskiy ).
使用 plain_rewritable 元数据的磁盘可以在多个服务器实例之间共享。这是预期的使用方式:一个实例读取某个元数据对象的同时,另一个实例对其进行修改。在使用 Azure 存储初始化 plain_rewritable 时,如果出现对象未找到错误会被忽略,其行为与为 S3 实现的逻辑类似。 #74059 (Julia Kartseva ).
修复 any 和 anyLast 在处理枚举类型和空表时的行为。#74061 (Joanna Hulboj )。
修复了用户在 kafka 表引擎中指定关键字参数时出现的问题。#74064 (Yarik Briukhovetskyi )。
修复在修改 Storage S3Queue 设置时,在带有 "s3queue_" 前缀与不带此前缀之间切换时的问题。 #74075 (Kseniia Sumarokova ).
添加设置 allow_push_predicate_ast_for_distributed_subqueries。这为使用 analyzer 的分布式查询增加了基于 AST 的谓词下推功能。这是一个临时解决方案,将会使用到分布式查询支持查询计划序列化为止。关闭 #66878 #69472 #65638 #68030 #73718 。#74085 (Nikolai Kochetov )。
修复了在 #73095 之后,forwarded_for 字段中可能包含端口,从而导致无法解析带端口的主机名的问题。#74116 (Yakov Olkhovskiy )。
修正了 ALTER TABLE (DROP STATISTICS ...) (DROP STATISTICS ...) 的格式错误。 #74126 (Han Fei ).
修复了问题 #66112 。#74128 (Anton Ivashkin )。
现在已无法在 CREATE TABLE 中将 Loop 用作表引擎。此前这种组合会导致段错误。#74137 (Yarik Briukhovetskyi )。
修复安全问题,防止在 PostgreSQL 和 SQLite 表函数中发生 SQL 注入。 #74144 (Pablo Marcos )。
修复从压缩的 Memory 引擎表中读取子列时发生的崩溃问题。修复了 #74009 。#74161 (Nikita Taranov )。
修复了在查询 system.detached_tables 时出现的无限循环问题。 #74190 (Konstantin Morozov ).
修复在将文件标记为失败时 s3queue 中的逻辑错误。 #74216 (Kseniia Sumarokova ).
为某些存储添加对不支持类型的检查。#74218 (Pavel Kruglov ).
修复了在 macOS 上通过 PostgreSQL 接口执行 INSERT INTO SELECT 查询时出现的崩溃问题(问题 #72938 )。#74231 (Artem Yurov )。
修复从基础备份执行 RESTORE 时的本机复制设置(allow_s3_native_copy/allow_azure_native_copy)。#74286 (Azat Khuzhin )。
修复了当数据库中分离的表数量是 max_block_size 的倍数时出现的问题。 #74289 (Konstantin Morozov ).
修复当源和目标使用不同凭证时,通过 ObjectStorage(如 S3)进行复制的问题。 #74331 (Azat Khuzhin ).
修复了复制数据库中未初始化的 max_log_ptr。#74336 (Konstantin Morozov )。
修复在 GCS 上进行原生复制时,“在 JSON API 中使用 Rewrite 方法”的检测逻辑。#74338 (Azat Khuzhin )。
修复在插入 interval 时发生的崩溃(问题 #74299 )。#74478 (NamNguyenHoai )。
修复在聚合投影中使用 count(nullable) 时的错误投影分析问题。此更改修复了 #74495 。此 PR 还在投影分析相关过程中添加了一些日志,以便明确说明为何会使用某个投影或不使用某个投影。#74498 (Amos Bird )。
修复 BackgroundMergesAndMutationsPoolSize 的错误计算(此前被错误地计算为实际值的 2 倍)。#74509 (alesapin )。
修复在启用 Cluster Discovery 时 Keeper watches 泄漏的问题。#74521 (RinChanNOW )。
修复格式化常量 JSON 字面量的问题。之前在将查询发送到其他服务器时,可能会导致语法错误。#74533 (Pavel Kruglov )。
修复 UBSan 报告的内存对齐问题 #74512 。#74534 (Arthur Passos )。
修复 KeeperMap 在创建表时的并发清理逻辑。 #74568 (Antonio Andelic ).
在包含 EXCEPT 或 INTERSECT 的情况下,不要删除子查询中未使用的投影列,以保证查询结果的正确性。修复 #73930 。修复 #66465 。#74577 (Dmitry Novik )。
修复在启用隐式投影时使用常量分区表达式导致异常的 CREATE 查询。这修复了 #74596 。#74634 (Amos Bird )。
修复了在启用稀疏序列化时,含有 Tuple 列的表之间执行 INSERT SELECT 查询的问题。#74698 (Anton Popov ).
函数 right 在常量负偏移量情况下行为不正确。 #74701 (Daniil Ivanik ).
修复由于在客户端解压缩过程中存在缺陷,导致插入 gzip 压缩的数据有时失败的问题。 #74707 (siyuan )。
避免在因异常结束的 INSERT 操作之后,使连接处于损坏状态。 #74740 (Azat Khuzhin ).
避免重用遗留在中间状态的连接。#74749 (Azat Khuzhin ).
在使用通配符授权时进行部分撤销,可能会撤销超出预期的权限。修复了 #74263 。#74751 (pufit )。
修复在解析 JSON 类型声明时,当类型名称不是大写时可能导致的崩溃。 #74784 (Pavel Kruglov ).
Keeper:修复从磁盘读取日志条目的问题。 #74785 (Antonio Andelic ).
修复了对 SYSTEM REFRESH/START/STOP VIEW 所需权限的检查逻辑,现在在对某个特定视图执行查询时,不再需要在 *.* 上授予该权限,只需对该视图本身授予相应权限即可。#74789 (Alexander Tokmakov ).
hasColumnInTable 函数目前不会考虑别名列。修复该函数,使其同样适用于别名列。#74841 (Bharat Nallan )。
Keeper:修复在连接建立前就被终止时产生的 logical_error。 #74844 (Michael Kolupaev )。
修复了当存在使用 AzureBlobStorage 的表时服务器无法启动的问题。现在可以在无需向 Azure 发送任何请求的情况下加载这些表。#74880 (Alexey Katsman )。
修复 query_log 中 BACKUP 和 RESTORE 操作缺失的 used_privileges 和 missing_privileges 字段。#74887 (Alexey Katsman )。
修复在 Azure Blob Storage 中对包含空列的表进行数据分片合并时出现的 FILE_DOESNT_EXIST 错误。#74892 (Julia Kartseva )。
在与临时表进行 JOIN 时修复投影列名,并关闭 #68872 。#74897 (Vladimir Cherkasov )。
如果在 HDFS select 请求期间出现 SASL 错误,则刷新 HDFS Kerberos 票据。#74930 (inv2004 )。
修复 startup_scripts 中针对 Replicated 数据库的查询。#74942 (Azat Khuzhin ).
修复在 JOIN ON 子句中使用类型别名表达式并进行 NULL 安全比较时出现的问题。#74970 (Vladimir Cherkasov )。
当删除操作失败时,将 part 的状态从 deleting 回退为 outdated。#74985 (Sema Checherinda )。
在早期版本中,当存在标量子查询时,我们会在数据格式初始化阶段开始写入进度信息(由处理该子查询累积的进度),而这个阶段发生在写入 HTTP 头部之前。这会导致 HTTP 头部丢失,例如 X-ClickHouse-QueryId、X-ClickHouse-Format 以及 Content-Type。 #74991 (Alexey Milovidov )。
修复在 database_replicated_allow_replicated_engine_arguments=0 时 CREATE TABLE AS... 查询的问题。 #75000 (Bharat Nallan ).
修复在 INSERT 操作发生异常后客户端连接被遗留在异常状态的问题。 #75030 (Azat Khuzhin ).
修复 PSQL 复制中因未捕获异常引发的崩溃。#75062 (Azat Khuzhin ).
SASL 可能导致任意 RPC 调用失败,此修复可以在 krb5 ticket 过期时重试该调用。#75063 (inv2004 ).
修复了在启用 optimize_function_to_subcolumns 设置时,对 Array、Map 和 Nullable(..) 列的索引(主索引和二级索引)的使用问题。此前,这些列上的索引可能会被忽略。 #75081 (Anton Popov ).
在创建包含内部表的物化视图时应禁用 flatten_nested,因为之后将无法使用这些被扁平化的列。#75085 (Christoph Wurm )。
修复了在 forwarded_for 字段中对某些 IPv6 地址(例如 ::ffff:1.1.1.1)的错误解析问题,该问题会导致客户端连接因异常而中断。#75133 (Yakov Olkhovskiy )。
修复了在处理 LowCardinality 可为空数据类型时的 nullsafe JOIN 问题。此前,在 JOIN ON 中使用空值安全(null-safe)比较(例如 IS NOT DISTINCT FROM、<=>、a IS NULL AND b IS NULL OR a == b)与 LowCardinality 列一起使用时,无法正常工作。#75143 (Vladimir Cherkasov )。
使用新的分析器修复包含未使用插值的查询。#75173 (János Benjamin Antal )。
修复在 CTE 与 INSERT 语句配合使用时出现的崩溃问题。#75188 (Shichao Jin ).
Keeper 修复:在回滚日志时,避免向已损坏的变更日志写入数据。 #75197 (Antonio Andelic ).
在合适的情况下使用 BFloat16 作为超类型。由此关闭:#74404 。#75236 (Nikita Mikhaylov )。
修复在使用 any_join_distinct_right_table_keys 且 JOIN ON 条件中包含 OR 时,连接结果中出现的意外默认值。#75262 (Vladimir Cherkasov )。
对 azureblobstorage 表引擎的凭证进行脱敏处理。 #75319 (Garrett Thomas ).
修复了在某些情况下 ClickHouse 可能错误地将过滤下推到 PostgreSQL、MySQL 或 SQLite 等外部数据库的行为。已关闭的问题:#71423 。#75320 (Nikita Mikhaylov )。
修复了在以 Protobuf 格式输出期间并行执行查询 SYSTEM DROP FORMAT SCHEMA CACHE 时,可能发生在 Protobuf 模式缓存中的崩溃问题。#75357 (Pavel Kruglov )。
修复在使用并行副本时,将来自 HAVING 的过滤条件下推时可能出现的逻辑错误或未初始化的内存问题。#75363 (Vladimir Cherkasov )。
在 icebergS3、icebergAzure 表函数和表引擎中隐藏敏感信息。#75378 (Kseniia Sumarokova )。
现在,当修剪字符是通过表达式计算且结果为空字符串时,函数 TRIM 能够被正确处理。例如:SELECT TRIM(LEADING concat('') FROM 'foo')(问题 #69922 )。#75399 (Manish Gill )。
修复 IOutputFormat 中的数据竞争问题。 #75448 (Pavel Kruglov ).
修复在针对分布式表执行 JOIN 时,使用 Array 类型的 JSON 子列时可能出现的错误 Elements ... and ... of Nested data structure ... (Array columns) have different array sizes。 #75512 (Pavel Kruglov ).
修复无效的结果缓冲区大小计算。关闭 #70031 。#75548 (Konstantin Bogdanov )。
修正 allow_feature_tier 与 compatibility mergetree 设置之间的交互行为。 #75635 (Raúl Marín ).
修复在文件被重试处理时,system.s3queue_log 中 processed_rows 值不正确的问题。#75666 (Kseniia Sumarokova ).
当物化视图写入 URL 引擎且出现连接问题时,遵循 materialized_views_ignore_errors 设置。 #75679 (Christoph Wurm ).
修复了在不同类型列之间多次异步执行 RENAME 查询(alter_sync = 0)后,从 MergeTree 表读取时出现的罕见崩溃问题。 #75693 (Anton Popov ).
修复某些包含 UNION ALL 的查询出现 Block structure mismatch in QueryPipeline stream 错误的问题。#75715 (Nikolai Kochetov )。
在对其主键列执行 ALTER MODIFY 操作时重建 projection。此前,在对用作 projection 主键的列执行 ALTER MODIFY 后再进行查询,可能会导致 CANNOT_READ_ALL_DATA 错误。#75720 (Pavel Kruglov )。
修复在标量子查询中使用 ARRAY JOIN 时的错误结果(在启用 analyzer 时)。 #75732 (Nikolai Kochetov ).
修复 DistinctSortedStreamTransform 中的空指针解引用问题。#75734 (Nikita Taranov )。
修复 allow_suspicious_ttl_expressions 的行为。#75771 (Aleksei Filatov )。
修复了函数 translate 中未初始化内存读取的问题。此更改关闭了 #75592 。#75794 (Alexey Milovidov )。
在 Native 格式中,将格式设置作为字符串格式传递到 JSON。 #75832 (Pavel Kruglov )。
在设置变更历史中记录了在 v24.12 中默认启用并行哈希作为 JOIN 算法的变更。这意味着,如果配置了早于 v24.12 的兼容性级别,ClickHouse 将继续使用非并行哈希进行 JOIN。#75870 (Robert Schulze )。
修复了一个缺陷:具有隐式添加的 min-max 索引的表无法复制到新表中(问题 #75677 )。#75877 (Smita Kulkarni )。
clickhouse-library-bridge 允许从文件系统中打开任意库,因此出于安全考虑,应仅在隔离环境中运行。为防止在其与 clickhouse-server 运行在同一环境时出现漏洞,我们将把库路径限制在配置中指定的位置。该漏洞由 Arseniy Dugin 通过 ClickHouse Bug Bounty Program 发现。#75954 (Alexey Milovidov )。
我们当时使用了 JSON 序列化来处理某些元数据,事实证明这是一个错误的选择,因为 JSON 不支持在字符串字面量中包含二进制数据(包括零字节)。SQL 查询可以包含二进制数据和无效的 UTF-8,因此我们也必须在元数据文件中支持这一点。与此同时,ClickHouse 的 JSONEachRow 和类似格式通过偏离 JSON 标准来规避这一问题,以换取对二进制数据的完美往返(roundtrip)支持。动机说明参见:https://github.com/ClickHouse/ClickHouse/pull/73668#issuecomment-2560501790 。解决方案是让 Poco::JSON 库与 ClickHouse 中的 JSON 格式序列化保持一致。此更改关闭了 #73668 。#75963 (Alexey Milovidov )。
在执行 DETACH PART 时,修复出现 Part <...> does not contain in snapshot of previous virtual parts. (PART_IS_TEMPORARILY_LOCKED) 错误的问题。 #76039 (Aleksei Filatov ).
修复对存储引擎 S3Queue 中提交限制的检查。#76104 (Kseniia Sumarokova ).
修复在附加带有自动索引(add_minmax_index_for_numeric_columns/add_minmax_index_for_string_columns)的 MergeTree 表时出现的问题。#76139 (Azat Khuzhin ).
修复了作业父线程的堆栈跟踪(enable_job_stack_trace 设置)未被打印的问题。修复了 enable_job_stack_trace 设置未正确传播到线程的问题,该问题导致生成的堆栈跟踪内容并不总是符合该设置。#76191 (Yakov Olkhovskiy )。
修复在大端架构上使用 reinterpretAs 处理 FixedString 时的问题。 #76253 (Azat Khuzhin ).
修复了由于 UUID 与表名之间的竞态条件导致的各种错误(例如,这解决了 RENAME 与 RESTART REPLICA 之间的竞态。在并发执行 RENAME 和 SYSTEM RESTART REPLICA 的情况下,您可能最终会重启错误的副本,和/或使其中一张表处于 Table X is being restarted 状态)。 #76308 (Azat Khuzhin ).
从信号处理程序中删除了内存分配。 #76446 (Nikita Taranov ).
修复动态文件系统缓存在淘汰过程中调整大小时处理意外错误的问题。#76466 (Kseniia Sumarokova ).
修复了并行哈希表中 used_flag 的初始化问题,该问题可能导致服务器崩溃。#76580 (Nikita Taranov )。
修复在投影中调用 defaultProfiles() 函数时的逻辑错误。#76627 (pufit )。
在 Web UI 中不再通过浏览器请求交互式 Basic 认证。修复了 #76319 。#76637 (Alexey Milovidov )。
修复从分布式表查询布尔字面量时出现的 THERE_IS_NO_COLUMN 异常。#76656 (Yakov Olkhovskiy )。
现在以更合理的方式选择表目录中的子路径。#76681 (Daniil Ivanik )。
修复在修改主键中包含子列的表后出现的错误 Not found column in block。在 https://github.com/ClickHouse/ClickHouse/pull/72644 之后,还需要 https://github.com/ClickHouse/ClickHouse/pull/74403 。#76686 (Nikolai Kochetov )。
为 NULL 短路添加性能测试并修复缺陷。 #76708 (李扬 ).
在对输出写缓冲区进行最终处理之前先刷新它们。修复在某些输出格式最终处理期间产生的 LOGICAL_ERROR,例如 JSONEachRowWithProgressRowOutputFormat。 #76726 (Antonio Andelic )。
添加了对 MongoDB 二进制 UUID 的支持(#74452 ) - 修复了在使用表函数时对 MongoDB 的 WHERE 下推(#72210 ) - 修改了 MongoDB 与 ClickHouse 之间的类型映射,使得 MongoDB 的二进制 UUID 只能解析为 ClickHouse 的 UUID。这样可以避免今后出现歧义和意外行为。- 修复了 OID 映射,同时保留向后兼容性。#76762 (Kirill Nikiforov )。
修复在并行前缀反序列化 JSON 子列过程中的异常处理。#76809 (Pavel Kruglov )。
修正 lgamma 函数在负整数上的行为。#76840 (Ilya Kataev ).
修复对显式定义主键的反向键分析问题。类似于 #76654 。#76846 (Amos Bird )。
修复 JSON 格式中布尔值的美化输出。#76905 (Pavel Kruglov ).
修复在异步插入过程中出错时,由于不正确的 JSON 列回滚导致的可能崩溃问题。 #76908 (Pavel Kruglov ).
此前,multi_if 在计划阶段和主执行阶段可能返回不同类型的列。这会导致生成在 C++ 层面存在未定义行为的代码。#76914 (Nikita Taranov )。
修复了 MergeTree 中可为空的常量键的错误序列化问题。此修复解决了 #76939 。#76985 (Amos Bird )。
修复 BFloat16 值的排序。已关闭 #75487 。已关闭 #75669 。#77000 (Alexey Milovidov )。
通过在 part 一致性检查中添加跳过临时子列的检查,修复了带有 Variant 子列的 JSON 的 bug。 #72187 。 #77034 (Smita Kulkarni )。
修复在 Values 格式中解析模板时由于类型不匹配而导致的崩溃问题。 #77071 (Pavel Kruglov )。
不再允许创建在主键中包含子列的 EmbeddedRocksDB 表。此前虽然可以创建这样的表,但 SELECT 查询会失败。#77074 (Pavel Kruglov )。
修复分布式查询中的非法比较问题,因为在将谓词下推到远程节点时未正确处理字面量的类型。#77093 (Duc Canh Le )。
修复在创建 Kafka 表时因异常导致的崩溃。#77121 (Pavel Kruglov )。
在 Kafka 和 RabbitMQ 引擎中新增对 JSON 及其子列的支持。 #77122 (Pavel Kruglov )。
修复在 macOS 上异常栈展开的问题。 #77126 (Eduard Karacharov ).
修复 getSubcolumn 函数中读取 'null' 子列的问题。#77163 (Pavel Kruglov ).
修复在 analyzer 中使用包含字面量的表达式时 skip 索引不生效的问题,并在索引分析阶段移除多余的类型转换。 #77229 (Pavel Kruglov ).
修复涉及 Array 和不受支持函数的布隆过滤器索引问题。 #77271 (Pavel Kruglov ).
我们只应在最初的 CREATE 查询期间检查对表数量的限制。#77274 (Nikolay Degterinsky )。
SELECT toBFloat16(-0.0) == toBFloat16(0.0) 现在会正确返回 true(此前为 false)。这使得其行为与 Float32 和 Float64 保持一致。#77290 (Shankar Iyer )。
修复了对未初始化的 key_index 变量可能不正确的引用,该问题可能会在调试构建中导致崩溃(在发布构建中,由于后续代码很可能会抛出错误,因此这个未初始化引用通常不会造成问题)。### 面向用户可见变更的文档条目。#77305 (wxybear )。
已回滚。 #77307 (Nikolai Kochetov ).
修复了具有 Bool 值的分区名称问题。该问题是在 https://github.com/ClickHouse/ClickHouse/pull/74533 中引入的。#77319 (Pavel Kruglov )。
修复在包含可为空元素的 Tuple 与字符串之间进行比较时出现的问题。举例来说,在此更改之前,Tuple (1, null) 与 String '(1,null)' 之间的比较会导致错误。另一个例子是比较 Tuple (1, a) 与 String '(1, 2)',其中 a 是一个 Nullable 列。此更改解决了这些问题。#77323 (Alexey Katsman )。
修复了 ObjectStorageQueueSource 中的崩溃问题。该问题是在 https://github.com/ClickHouse/ClickHouse/pull/76358 中引入的。#77325 (Pavel Kruglov )。
修复了一个错误:close_session 查询参数不起作用,导致命名会话只能在 session_timeout 之后才会被关闭。 #77336 (Alexey Katsman ).
修复在使用 input() 时的 async_insert 问题。#77340 (Azat Khuzhin )。
修复:当查询计划器移除排序列时,WITH FILL 可能因 NOT_FOUND_COLUMN_IN_BLOCK 而失败;同时修复了与为 INTERPOLATE 表达式计算的 DAG 不一致相关的类似问题。#77343 (Yakov Olkhovskiy ).
已回滚。 #77390 (Vladimir Cherkasov ).
修复了在未附加物化视图(MV)的情况下从 NATS 服务器接收消息的问题。#77392 (Dmitry Novikov ).
修复通过 merge 表函数从空的 FileLog 读取时的逻辑错误,并关闭 #75575 。#77441 (Vladimir Cherkasov )。
修复了多处在为无效 AST 节点设置别名时触发的 LOGICAL_ERROR。 #77445 (Raúl Marín ).
在文件系统缓存实现中修复了文件段写入过程中的错误处理问题。 #77471 (Kseniia Sumarokova ).
使 DatabaseIceberg 使用 catalog 提供的正确元数据文件。关闭了 #75187 。#77486 (Kseniia Sumarokova )。
在 shared variant 的动态序列化中使用默认格式设置。 #77572 (Pavel Kruglov ).
回退 '在执行标量子查询时避免使用 toAST()'. #77584 (Raúl Marín ).
修复在本地磁盘上检查表数据路径是否存在的逻辑。#77608 (Tuan Pham Anh )。
查询缓存现在默认将 UDF 视为非确定性函数。因此,包含 UDF 的查询结果将不再被缓存。此前,用户可以定义非确定性的 UDF,而其结果会被错误缓存(问题 #77553 )。#77633 (Jimmy Aguilar Mena )。
修复了在向远程发送常量值时对某些类型的处理问题。#77634 (Pavel Kruglov )。
修复 system.filesystem_cache_log 仅在启用设置 enable_filesystem_cache_log 时才生效的问题。#77650 (Kseniia Sumarokova ).
修复在投影中调用 defaultRoles() 函数时的逻辑错误。作为对 #76627 的后续跟进。#77667 (pufit )。
修复由于 StorageS3(Azure)Queue 中上下文过期导致的崩溃。#77720 (Kseniia Sumarokova )。
现在不再允许在函数 arrayResize 中使用类型为 Nullable 的第二个参数。此前,当第二个参数为 Nullable 时,可能会出现从报错到返回错误结果等各种问题。(问题 #48398 )。#77724 (Manish Gill )。
在 RabbitMQ、NATS、Redis、AzureQueue 表引擎中隐藏凭据。#77755 (Kseniia Sumarokova ).
修复 ArgMin/ArgMax 中在比较 NaN 时的未定义行为。 #77756 (Raúl Marín ).
即使在操作不会产生任何要写入的数据块的情况下,也要定期检查合并(merge)和变更(mutation)是否已被取消。#77766 (János Benjamin Antal )。
已回滚。#77843 (Vladimir Cherkasov )。
修复在出现 NOT_FOUND_COLUMN_IN_BLOCK 错误时可能发生的崩溃。#77854 (Vladimir Cherkasov )。
修复在填充数据时发生在 StorageSystemObjectStorageQueueSettings 中的崩溃。#77878 (Bharat Nallan )。
在 SSH 服务器中禁用对历史记录的模糊搜索功能(因为这需要 skim)。 #78002 (Azat Khuzhin ).
修复了这样一个问题:当在未建立索引的列上执行向量搜索查询时,如果表中存在另一列已定义向量相似度索引的向量列,则会返回不正确的结果。(Issue #77978 )。#78069 (Shankar Iyer )。
修复 The requested output format {} is binary... Do you want to output it anyway? [y/N] 提示信息。 #78095 (Azat Khuzhin ).
修复了在 toStartOfInterval 使用 origin 参数为零时的一个缺陷。#78096 (Yarik Briukhovetskyi )。
禁止在 HTTP 接口中指定空值的 session_id 查询参数。 #78098 (Alexey Katsman ).
修复 Database Replicated 中的元数据被错误覆盖的问题,该问题可能发生在紧接着执行 ALTER 查询后立即执行 RENAME 查询的情况下。 #78107 (Nikolay Degterinsky ).
修复 NATS 引擎中的崩溃。#78108 (Dmitry Novikov ).
不要尝试在嵌入式 SSH 客户端中创建 history_file。#78112 (Azat Khuzhin ).
修复在执行 RENAME DATABASE 或 DROP TABLE 查询后,system.detached_tables 显示不正确信息的问题。#78126 (Nikolay Degterinsky )。
修复在 https://github.com/ClickHouse/ClickHouse/pull/77274 之后,对 Database Replicated 数据库中过多表数量的检查。同时,将该检查提前到创建存储之前执行,以避免在 RMT 或 KeeperMap 的情况下在 ZooKeeper 中创建未被计数的节点。#78127 (Nikolay Degterinsky )。
修复由于并发初始化 S3Queue 元数据而可能导致的潜在崩溃问题。#78131 (Azat Khuzhin )。
groupArray* 函数现在在 max_size 参数为 Int 类型且值为 0 时,会像对 UInt 类型参数一样返回 BAD_ARGUMENTS 错误,而不是尝试继续执行。#78140 (Eduard Karacharov )。
避免在本地表在分离前被删除时 recoverLostReplica 发生崩溃。#78173 (Raúl Marín )。
修复 system.s3_queue_settings 中 “alterable” 列始终返回 false 的问题。 #78187 (Kseniia Sumarokova ).
对 Azure 访问签名进行掩码处理,使其对用户不可见,也不会出现在日志中。 #78189 (Kseniia Sumarokova ).
修复 Wide 部分中带前缀的子流预取。 #78205 (Pavel Kruglov ).
修复了在键数组为 LowCardinality(Nullable) 类型时,mapFromArrays 发生崩溃或返回错误结果的问题。 #78240 (Eduard Karacharov ).
修复 delta-kernel 身份验证选项。#78255 (Kseniia Sumarokova )。
当副本的 disable_insertion_and_mutation 为 true 时,不再调度 RefreshMV 任务。该任务本质上是一次插入操作,如果 disable_insertion_and_mutation 为 true,则会失败。#78277 (Xu Jia ).
验证对 Merge 引擎底层表的访问权限。#78339 (Pervakov Grigorii )。
Distributed 引擎表可能会丢失 FINAL 修饰符。#78428 (Yakov Olkhovskiy )。
当位图为空时,Bitmapmin 返回 uint32_max(当输入类型 >= 8bits 时返回 uint64_max),这与空 roaring_bitmap 的 minimum() 行为一致。#78444 (wxybear )。
回退 "Apply preserve_most attribute at some places in code" 更改,因为它可能导致崩溃。 #78449 (Azat Khuzhin ).
在 INFILE 的模式推断中使用插入列。 #78490 (Pervakov Grigorii ).
在启用 distributed_aggregation_memory_efficient 时,禁用在读取 FROM 之后立即并行化查询处理,以免导致逻辑错误。修复了 #76934 。#78500 (flynn )。
在应用 max_streams_to_max_threads_ratio 设置后,如果计划的流数为 0,则确保至少有一个用于读取的流。#78505 (Eduard Karacharov ).
在 S3Queue 存储中修复逻辑错误 “Cannot unregister: table uuid is not registered”。关闭了 #78285 。#78541 (Kseniia Sumarokova )。
现在,在同时启用了 cgroup v1 和 v2 的系统上,ClickHouse 能够正确识别其 cgroup v2。#78566 (Grigory Korolev )。
在与表级设置配合使用时,ObjectStorage 集群表函数会失败。#78587 (Daniil Ivanik )。
ReplicatedMergeTree 尚不支持在 INSERT 时对事务进行更完善的检查。 #78633 (Azat Khuzhin ).
在 ATTACH 操作期间应用查询设置。 #78637 (Raúl Marín ).
修复在 iceberg_metadata_file_path 中指定无效路径时发生的崩溃问题。#78688 (alesapin )。
在 DeltaLake 表引擎的 delta-kernel 实现中,修复了这样一种情况:当读取的 schema 与表的 schema 不一致且存在分区列时,会导致“找不到列”错误。 #78690 (Kseniia Sumarokova ).
此更新修复了一个 Bug:当两个会话具有相同名称且在旧会话超时之前创建了新的命名会话时,新会话会在旧会话预定的超时时刻被意外关闭。 #78698 (Alexey Katsman )。
在运行 CHECK TABLE 时不再阻塞表的关闭。 #78782 (Raúl Marín ).
Keeper 修复:在所有情况下修正 ephemeral 节点计数。#78799 (Antonio Andelic ).
修复在使用非 view() 的其他表函数时,StorageDistributed 中的不正确类型转换问题。关闭 #78464 。#78828 (Konstantin Bogdanov )。
修复 tupleElement(*, 1) 的格式问题。关闭 #78639 。#78832 (Konstantin Bogdanov )。
类型为 ssd_cache 的字典现在会拒绝 block_size 和 write_buffer_size 为零或负数的参数(问题 #78314 )。#78854 (Elmi Ahmadov )。
修复在异常关闭后执行 ALTER 时导致 REFRESHABLE MV 崩溃的问题。 #78858 (Azat Khuzhin ).
修复在 CSV 格式中解析无效 DateTime 值的问题。#78919 (Pavel Kruglov )。
构建/测试/打包方面的改进