本文介绍云数据库ClickHouse25.6企业版发布的功能详情。
重要变更
支持Coalescing MergeTree。
添加分布式协同Merge算法(Coordinated Merge),大幅提升Merge性能。
新
JSON数据类型正式发布。Dynamic和Variant数据类型正式发布。实现查询条件缓存,利用重复条件提升查询性能。
JOIN性能提升。
librdkafka升级至2.8.0,提升性能与稳定性。
非兼容变更
geoToH3()函数按(lat, lon, res)顺序接受输入(几何函数标准顺序)。需保留旧结果顺序(lon, lat, res)的用户可以设置geotoh3_lon_lat_input_order = true。h3ToGeo()函数按(lat, lon)顺序接受输入(几何函数标准顺序)。需保留旧顺序(lon,lat)的用户可设置h3togeo_lon_lat_result_order = true。full_text类型的索引已重命名为gin。仍然可加载现有的full_text类型索引,但使用时会抛出异常,建议改用gin索引。新增文件系统缓存设置
allow_dynamic_cache_resize,默认为false,以允许动态调整文件系统缓存的大小。原因如下:在某些环境(ClickHouse Cloud)中,所有扩缩容事件都通过进程重启发生,此项变更旨在明确禁用此功能以更好地控制行为并作为安全措施。移除对旧索引类型
annoy和usearch的支持。移除
format_alter_commands_with_parentheses服务器设置。强制
backup_threads和restore_threads服务器设置为非零值。修复
bitNot()对于String返回零终止字符串的问题。Parquet输出格式将Date和DateTime列转换为Parquet支持的日期或时间类型,而非原始数字。DateTime变为DateTime64(3)(原为UInt32)。设置output_format_parquet_datetime_as_uint32可恢复旧行为。Date变为Date32(原为UInt16)。
默认禁止在
ORDER BY和比较函数(如less/greater/equal等)中使用不可比较类型(如JSON/Object/AggregateFunction)。JSONEachRowWithProgress将在进度发生时立即写入进度。即使进度频繁发生也会发送,可能产生大量流量,压缩输出时进度不会刷新。mysql字典源不再执行SHOW TABLE STATUS查询。Merge表将通过列并集和推导共同类型来统一底层表结构。若表间无共同类型但可转换为第一表类型(如UInt64和Int64或任何数字类型与String),此变更可能导致不兼容。设置merge_table_max_tables_to_look_for_schema_inference为1或compatibility为24.12或更早可恢复旧行为。CHECK TABLE查询需要单独的CHECK权限。若
allow_materialized_view_with_bad_select为false,则检查物化视图所有列是否匹配目标表。新增
JSONCompactEachRowWithProgress和JSONCompactStringsEachRowWithProgress格式。JSONCompactWithNames和JSONCompactWithNamesAndTypes不再输出“totals”。更改
format_alter_operations_with_parentheses默认值为true以明确alter命令列表。此项变更会破坏与24.3之前集群的复制。升级使用旧版本的集群时,需在服务器配置中关闭该设置或先升级到24.3。禁止对复制数据库执行截断操作。
当分析器禁用时,无论
compatibility设置如何,默认禁用并行副本。显式设置parallel_replicas_only_with_analyzer为false仍可更改此行为。禁止在浮点型设置值中使用
NaN或inf。修复了
dateTrunc使用负日期、时间参数的情况。移除旧版MongoDB集成。服务器设置
use_legacy_mongodb_integration已废弃且无效。增强SummingMergeTree验证,跳过对分区或排序键中使用的列进行聚合。
新特性
为MergeTree添加了一个新选项
SETTINGS,用于在CREATE查询未为给定列明确定义时指定默认压缩编解码器。实现了
Time、Time64数据类型。实现新的数据类型:Time (HHH:MM:SS)和Time64 (HHH:MM:SS.<fractional>),一些基本的转换函数以及与其他数据类型交互的函数。同时,将现有函数toTime的名称更改为toTimeWithFixedDate,因为转换函数需要toTime函数。支持在
WHERE子句中将相关子查询作为EXISTS表达式的参数。允许写入Merge表引擎。
用于复制MergeTree表的分布式
INSERT SELECT现在有效地使用并行副本来并行化INSERT,通过在不同节点上选择不同的数据并独立插入它们。添加了
mapContainsValuesLike/mapContainsValues/mapExtractValuesLike函数以对映射值进行过滤,并支持在基于布隆过滤器的索引中使用它们。添加了
system.iceberg_history表。为工作负载添加了查询槽调度。
添加了
getServerSetting和getMergeTreeSetting函数。支持在设置约束下禁止的值。
添加了新的
iceberg_enable_version_hint设置以利用version-hint.text文件。提供了使用
LIKE关键字过滤后截断数据库中特定表的可能性。clickhouse-local(及其简写别名ch)现在在有输入数据需要处理时使用隐式的FROM table。同时,如果--input-format未指定且它处理常规文件,则在clickhouse-local中启用格式推断。添加了
icebergHash和icebergBucketTransform函数。支持在使用bucket transform分区的Iceberg表中进行数据文件修剪。添加了对Coalescing Merge Tree的支持。
添加了
stringBytesUniq和stringBytesEntropy函数以搜索可能随机或加密的数据。支持MergeTree系列表中的
_part_starting_offset虚拟列。此列表示所有先前部分的累积行数,在查询时基于当前部分列表计算。累积值在整个查询执行期间保留,并且在部分修剪后仍然有效。添加了一个设置
enable_shared_storage_snapshot_in_query,以在单个查询中的所有子查询之间共享相同的存储快照。这确保了即使表在查询中被多次引用,也能从同一表进行一致读取。支持将CH JSON列写入Parquet,并将Parquet JSON列直接作为CH JSON列读取。
将
chdig-ClickHouse的TUI界面(类似top)捆绑为ClickHouse的一部分。为
pointInPolygon添加了MultiPolygon支持。支持geo parquet。
添加了通过
deltaLakeLocal表函数查询本地文件系统挂载的delta表的支持。添加了base32编码/解码功能。
Clickhouse向量搜索现在支持预过滤和后过滤,并提供相关设置以进行更精细的控制。
支持读取WKB格式的函数。
添加了新的设置
cast_string_to_date_time_mode,允许在从String转换期间选择DateTime解析模式。添加了
Bech32和Bech32m编码和解码函数。支持Atomic和Ordinary DB引擎的
disk设置,指定用于存储表元数据文件的磁盘。支持解包和比较merge tree部分的函数。
timeSeries*辅助函数,用于加速处理时间序列数据的一些场景:将数据重新采样到具有指定开始时间戳、结束时间戳和步长的时间网格;计算类似PromQL的delta、rate、idelta和irate。允许按部分所在的磁盘过滤选择用于查询的部分。
添加了一个包含嵌入式Web工具列表的着陆页。当浏览器类用户代理请求时将打开。
允许在
arrayFirst、arrayFirstIndex、arrayLast和arrayLastIndex中过滤NULL值。为反序列化的跳数索引颗粒添加内存缓存,提升重复使用跳数索引的查询速度。新缓存大小由
skipping_index_cache_size和skipping_index_cache_max_entries控制。为Iceberg表添加按特定时间戳查询的设置。
实现Iceberg表时间相关分区操作的修剪。
新增聚合函数
sequenceMatchEvents,返回模式匹配事件链中事件的时间戳。SELECT和VIEW语句支持别名,如SELECT b FROM (SELECT number, number*2 FROM numbers(2)) AS x (a, b);,使TPC-H查询15无需修改即可运行。新增设置
enable_adaptive_memory_spill_scheduler,允许多个grace JOIN监控其组合内存占用并自适应触发溢出到外部存储以防止内存超限。新增函数
arrayNormalizedGini。支持low、cardinality、decimal、数据类型。
支持从Apache Arrow/Parquet/ORC读取HALF_FLOAT值(读取为Float32)。注意IEEE-754 half float与BFloat16不同。
system.trace_log表新增symbols和lines列,包含符号化堆栈跟踪,便于收集导出性能信息。由服务器配置trace_log中的symbolize控制,默认启用。新增函数
generateSerialID,用于在表中生成自增数字。新增语法
query1 PARALLEL WITH query2 PARALLEL WITH query3 ... PARALLEL WITH queryN,表示子查询{query1, query2, ... queryN}可彼此并行运行(且优先)。新增通过设置
add_minmax_index_for_numeric_columns和add_minmax_index_for_string_columns为MergeTree管理列默认创建min-max索引功能(当前默认禁用)。为
system.query_log添加script_query_number和script_line_number字段,以及原生协议中的ClientInfo和服务器日志。为DateTime64添加减法操作符支持,允许DateTime64值间及与DateTime的减法。
为clickhouse-client添加
bind_host设置以设置连接的源IP地址。新增在提交后立即对
SELECT查询应用未完成(后台进程未物化)变异的设置apply_mutations_on_fly。实现新函数
toStartOfIntervalAllowNegative,处理负时间参数的toStartOfInterval场景,仅返回Date32/DateTime64。允许修改数据库注释。
新增
concurrent_threads_scheduler服务器设置,控制CPU槽在并发查询间的分配方式(round_robin旧行为或fair_round_robin解决INSERT与SELECT间不公平CPU分配问题)。新增函数
arraySymmetricDifference,返回多个数组参数中未在所有参数中出现的元素。新增
estimatecompressionratio聚合函数。新增
FilterTransformPassedRows和FilterTransformPassedBytes性能事件,显示查询执行期间过滤的行数和字节数。新增区块链常用哈希函数
keccak256(尤其EVM系统)。支持PostgreSQL协议的SCRAM SHA256认证。
支持从客户端请求头转发到外部HTTP认证器的头列表。
支持
IcebergMetadataFilesCache,缓存清单文件/列表和metadata.json。新增函数
arrayLevenshteinDistance、arrayLevenshteinDistanceWeighted和arraySimilarity。新增函数
icebergTruncate(按规范)、toYearNumSinceEpoch和toMonthNumSinceEpoch,支持Iceberg引擎中的truncate转换分区修剪。支持查询Iceberg表在历史时间点的状态。
为工作负载添加CPU槽调度支持。
hasAll()函数可利用tokenbf_v1、ngrambf_v1全文跳数索引。新
JSON数据类型正式生产就绪。Dynamic和Variant数据类型正式生产就绪。为反序列化的向量相似索引添加内存缓存,提升重复近似最近邻(ANN)搜索查询速度。新缓存大小由
vector_similarity_index_cache_size和vector_similarity_index_cache_max_entries控制。新增UTF8版本的
sparseGrams和sparseGramsHashes函数。引入
toInterval函数,将值转换为特定Interval类型。
实验性功能
用于Iceberg数据湖的Hive元存储目录。
通过键值对支持显式参数。目前支持的参数是必需的
tokenizer和两个可选的max_rows_per_postings_list和ngram_size。实验性的
gin类型索引已重命名为text。现有的gin类型索引仍然可加载,但当尝试在搜索中使用它们时,会抛出异常(建议改用text索引)。
性能优化
通过一次评估多个颗粒上的表达式来加速二级索引。
引入了阈值(由设置
parallel_hash_join_threshold调节),当右表的大小低于阈值时回退到hash算法。改进了
Pipe::resize的现有实现,通过避免在高核数环境中执行管道图时对ExecutingGraph::Node::status_mutex的争用。通过允许并行插入数据(可以通过
parallel_inserts=true队列设置启用)来提高S3Queue/AzureQueue的性能。更改紧凑部分格式以保存每个子流的标记,以便能够读取单个子列。
引入了新的设置
use_skip_indexes_in_final_exact_mode。如果对ReplacingMergeTree表的查询有FINAL子句,仅基于跳过索引读取表范围可能会产生不正确的结果。此设置可以通过扫描与跳过索引返回的主键范围重叠的较新部分来确保返回正确的结果。启用并行副本读取时使用副本数量来确定任务大小。当要读取的数据量不大时,提供了副本之间更好的工作分配。
允许在分布式聚合的最终阶段并行合并
uniqExact状态。修复了带有键的聚合的
uniqExact状态并行合并的可能性能下降。将
DELETE FROM ... WHERE 1查询替换为TRUNCATE。如果可能,将过滤器查询计划步骤中的相等条件合并到
JOIN条件中,以允许将它们用作哈希表键。通过使用
extractKeyValuePairs而不是正则表达式提高hive路径解析的性能。修复了带有并行副本的分布式
INSERT SELECT的性能。允许将带有子列的条件移动到
PREWHERE。改进了所有布隆过滤器类型的性能。
防止
LogSeriesLimiter在每次构造时进行清理,避免在高并发场景下的锁争用和性能回归。默认启用
compile_expressions(用于普通表达式片段的JIT编译器)。加速具有trivial count优化的查询。
在
UniqExactSet::merge中引入了一个快乐路径,当其中一个集合为空时。此外,如果LHS集合是两级而RHS是单级,将不会为RHS进行到两级的转换。向
convertDecimalsImpl添加了__attribute__((always_inline))。将
input_format_parquet_bloom_filter_push_down默认设置为true。默认使日志记录异步。
避免QueryConditionCache中不必要的更新并减少锁争用。
对
concatenateBlocks进行小优化,可能优化并行哈希连接。当从主键范围中选择标记范围时,如果主键被始终单调的函数链包装时,或RPN包含始终为真的元素,仍然可以应用二分搜索。
提高Kafka引擎的关闭速度(在多个Kafka表的情况下移除额外的3秒延迟)。
减少异步插入的内存使用量并提高插入查询的性能。
如果日志表被禁用,则不分析处理器。
当源正是所请求的内容时,加速
toFixedString。如果用户不受限制,则不处理配额值。
使ProcfsMetricsProvider成为thread_local以在任务之间保持文件打开。
修复了内存跟踪中的性能回归。
通过lazy projection优化避免读取未使用列。
优化RowBinary输入格式性能。
通过底层优化加速字符串反序列化。
实现查询条件缓存,利用重复条件提升查询性能。
支持
NativeORCBlockInputFormat的异步IO预读,隐藏远程IO延迟。通过按键重排右连接表优化grace hash join性能。
在
materialize ttl时重新引入遵从ttl_only_drop_parts;仅读取必要列重新计算TTL并通过替换为空部分来删除部分。允许
arrayROCAUC和arrayAUCPR计算曲线部分面积,便于大数据集并行化计算。避免生成过多空闲线程。
从
parallel_hashJOIN算法的探测阶段移除左表块的哈希分割。仅在大括号扩展的表函数中不列出blob存储键。
根据测试用clang内置i256替换Int256和UInt256的算术计算。
为所有参数为数值类型的函数添加快速路径。
对非函数列不应用
maskedExecute,提升短路执行性能。禁用Kafka/NATS/RabbitMQ/FileLog的头检测以提升性能。
按值使用日志包装器,避免堆分配。
分组集聚合后以更高并行度执行管道。
减少
MergeTreeReadPool中的关键部分。优化函数
indexHint,现在仅作为indexHint函数参数的列不从表中读取。并行副本性能改进:非并行副本协议相关的数据包反序列化现在始终在管道线程中进行。
修正
LowCardinality列内存大小计算。优化S3上Wide部分中整个JSON列的读取性能,通过添加子列前缀反序列化的预取、反序列化前缀缓存和子列前缀并行反序列化实现。
为异步插入预分配内存。
修复优化器交换连接边时
ConcurrentHashJoin中的双预分配问题。修复
parallel_hash中max_rows_in_join = max_bytes_in_join = 0时不必要争用。某些连接场景中预计算输出行数并为其预留内存,轻微提升性能。
plain_rewritable元数据文件小,无需大缓冲区。使用适合给定路径的适当大小写缓冲区,改善大量活跃部分时的内存利用率。数据部分包含空文件时可跳过写入对象存储,仅存储元数据。
发现无条件分配所有CPU槽给
max_threads=1的INSERT而高max_threads的SELECT因仅使用单线程性能差的不公平CPU分配问题。优化
wrapInNullable避免不必要的空映射分配。提升Decimal32/Decimal64/DateTime64的min/max性能。
在部分删除时主动从缓存驱逐数据,防止数据量少时缓存增长到最大大小。
查询编译(设置
compile_expressions)现在考虑机器类型,显著加速此类查询。优化arraySort。
通过去虚拟化
col->insertFrom()调用加速JOIN结果构建。合并相同部分的标记并一次性写入查询条件缓存以减少锁消耗。
优化单可空或低基数列的排序。
被动使用缓存(如合并)时禁用
filesystem_cache_prefer_bigger_buffer_size。为Iceberg实现简单计数优化,无任何过滤器的
count()查询应更快。支持基于列lower_bound和upper_bound值的Iceberg数据修剪。
优化NativeReader内存使用。
当需要
CAST时不将count(if())重写为countIf的简单优化。
改进
如果指定了
--path命令行参数,clickhouse-local将在重启后保留其数据库。EXPLAIN SYNTAX现在使用新的分析器。它返回从查询树构建的抽象语法树。添加了选项query_tree_passes以控制在将查询树转换为AST之前要执行的传递次数。默认在文件系统缓存中使用SLRU缓存策略。
重构了向视图推送的逻辑。
对象存储集群表函数现在将基于一致性哈希为读取分配文件到副本,以提高缓存局部性。
在出现
AuthenticationRequired错误后刷新S3凭据。借助构建器将代理配置嵌入到某些HTTP缓冲区中。
向
system.asynchronous_metrics添加了字典指标。DictionaryMaxUpdateDelay:字典更新的最大延迟(秒)。DictionaryTotalFailedUpdates:自上次在所有字典中成功加载以来的错误数。
添加了函数
divideOrNull、moduloOrNull、intDivOrNull、positiveModuloOrNull,以便在右参数为零时返回NULL。将
isIPAddressInRange函数扩展到String、IPv4、IPv6、Nullable(String)、Nullable(IPv4)和Nullable(IPv6)数据类型。动态更改PostgreSQL引擎连接池设置。
允许在普通投影中指定
_part_offset。这是构建投影索引的第一步。改进了分布式查询上的分片键优化。
为
system.named_collections添加了新列(create_query和source)。向系统表
system.query_condition_cache添加了字段condition。它存储其哈希用作查询条件缓存中键的明文条件。使用ClickHouse Keeper为StorageKafka2实现类似Kafka重新平衡的逻辑。
向
Kafka表引擎添加了用于SASL配置和凭据的表设置。这允许直接在CREATE TABLE语句中配置基于SASL的Kafka和Kafka兼容系统身份验证,而不必使用配置文件或命名集合。添加了关于为保存损坏表而可能创建的数据库的警告。
向量相似性索引现在可以在
BFloat16列上创建。支持在尽力而为的DateTime64解析中解析带有小数部分的Unix时间戳。
在存储DeltaLake delta-kernel实现中修复了columnMappingMode.name,为模式演进添加了测试。
通过更好地转换值来改进以Values格式插入Variant列。
在
S3Queue引擎中添加了_time虚拟列。tokens函数被扩展为接受一个额外的“tokenizer”参数以及进一步的特定于分词器的参数。SHOW CLUSTER语句现在在其参数中展开宏(如果有)。哈希函数现在支持数组、元组和映射内部的
NULL。支持只读MergeTree表的刷新。
更新cctz到2025a。
使控制过载CPU上连接丢弃的设置可热重载。
默认启用查询条件缓存。
添加了ProfileEvents ParquetReadRowGroups和ParquetPrunedRowGroups以分析parquet索引修剪。
在Azure blob存储中为普通磁盘报告的系统表中的数据路径添加了容器前缀,使报告与S3和GCP一致。
支持在集群上更改数据库。
显式跳过QueryMetricLog统计信息收集的错过运行,否则日志将需要很长时间才能赶上当前时间。
添加了轻量级删除的能力(设置
lightweight_deletes_sync = 0,apply_mutations_on_fly = 1)。优化了
ALTER ... DELETE突变,对于应删除所有行的部分。现在,在这种情况下,会创建一个空部分而不是原始部分,而不执行突变。对
CHColumnToArrowColumn进行了一些小优化。设置
allow_archive_path_syntax被错误地标记为实验性。添加测试以防止默认启用实验性设置。使页面缓存设置可在每个查询级别调整。这对于更快的实验以及为高吞吐量和低延迟查询进行微调的可能性是必需的。
不为看起来像大多数64位哈希的数字在漂亮格式中打印数字提示。
如果漂亮格式中的数据显示在终端中,并且后续块具有相同的列宽,则可以通过将光标向上移动将其粘附到前一个块,从前一个块继续。该功能由新设置
output_format_pretty_glue_chunks控制。高级仪表板上图形的颜色将从相应查询的哈希计算。这使得在滚动仪表板时更容易记住和定位图形。
添加了异步指标
FilesystemCacheCapacity-cache虚拟文件系统中的总容量。这对于全局基础设施监控很有用。优化了对system.parts的访问(仅在请求时读取列/索引大小)。
为查询
'SHOW CLUSTER <name>'选择重要字段而不是所有字段。允许为
DatabaseCatalog指定存储设置。在delta kernel中支持本地存储。
添加了一个查询级别设置以启用delta-kernel-rs:
allow_experimental_delta_kernel_rs。修复了从Azure/S3 blob 存储列出blob时可能出现的无限循环。
接受
param-<name>(破折号)以及param_<name>(下划线)作为查询参数。添加了文件系统缓存设置
max_size_ratio_to_total_space。在启用校验和的情况下从本地复制数据到远程S3时,提供带宽折扣的详细警告消息。
为
clickhouse-benchmark重新配置reconnect选项,以相应地接受0、1或N作为重新连接的值。添加了设置
input_format_max_block_size_bytes以限制输入格式中创建的块的大小(字节)。当行包含大值时,这有助于在数据导入期间避免高内存使用量。增强了sparseGrams的速度和内存使用。
在可能的情况下避免在插入紧凑部分时额外复制块。
默认启用
DeltaLake存储delta-kernel实现。如果从URL读取涉及多个重定向,则设置
enable_url_encoding会正确应用于链中的所有重定向。允许在不同普通可重写磁盘上的表之间进行
ALTER TABLE ... MOVE|REPLACE PARTITION。支持在
WHERE子句中的标量相关子查询。修复了当
input_format_parquet_max_block_size = 0时ClickHouse会卡住的行为。为startup_scripts添加了
throw_on_error设置:当throw_on_error为true时,除非所有查询成功完成,否则服务器不会启动。默认情况下,throw_on_error为false,保留先前行为。如果参考向量是
Array(BFloat16)类型,现在也使用向量相似性索引。向
system.error_log表添加了last_error_message、last_error_trace和query_id。默认启用发送崩溃报告。这可以在服务器的配置文件中关闭。
系统表
system.functions现在显示函数首次引入的ClickHouse版本。添加了
access_control_improvements.enable_user_name_access_type设置。此设置允许启用/禁用对用户/角色的精确授权。ASTSelectWithUnionQuery::clone()方法的正确实现现在也考虑了is_normalized字段。支持简单情况下列表中的相关子查询。
修复了带有
EXCEPT运算符的某些查询的不一致格式。允许在任何类型的
http_handlers中添加http_response_headers。通过使用变体反序列化顺序的缓存改进了JSON类型解析。
如果适用,允许将
GLOBAL [NOT] IN谓词移动到PREWHERE子句。添加了设置
s3_slow_all_threads_after_network_error。关于选择要合并的部分的日志记录级别是错误的(Information)。
函数reverse支持Tuple数据类型。
设置
enble_url_encoding的默认值现在设置为False。解决了允许从
system.zookeeper表获取auxiliary_zookeepers数据的问题。使用向量相似性索引的向量搜索现在是beta版(之前是实验性)。
函数
tokens现在支持string作为分词器。并行副本:如果所有读取任务已分配给其他副本,则避免等待缓慢的未使用副本。
在
simpleAggregateFunction中支持anylast_respect_nulls和any_respect_nulls。移除对复制数据库的
adjustCreateQueryForBackup()的不必要调用。允许在
clickhouse-local中使用不带等号的额外选项(在--之后,如-- --config.value='abc')。在
SHOW ... LIKE查询中高亮显示元字符。使SQL UDF在
clickhouse-local中持久化。先前创建的函数将在启动时加载。支持
Time与Time64之间的比较。修复了解释计划中初步去重步骤的描述。
允许在ODBC/JDBC中使用命名集合。
启用多投影过滤支持,允许使用多个投影进行部分级过滤。这是实现投影索引的第二步。
只读和损坏磁盘数量的指标。当DiskLocalCheckThread启动时,指示器日志。
在带有投影的
s3_plain_rewritable存储中实现支持。并行副本使用单独的连接超时,参见
parallel_replicas_connect_timeout_ms设置。SYSTEM UNFREEZE命令将不会尝试在只读和一次性写入磁盘中查找部分。将合并部分消息的日志级别从INFO更改为TRACE。
为Native格式中的Dynamic和JSON实现扁平化序列化,允许在没有特殊结构的情况下序列化/反序列化Dynamic和JSON数据。
更改了Iceberg表分区修剪的默认行为。
为索引搜索算法可观察性添加了两个新的ProfileEvents:
IndexBinarySearchAlgorithm和IndexGenericExclusionSearchAlgorithm。不要在日志中抱怨旧内核不支持
MADV_POPULATE_WRITE(以避免日志污染)。在TTL中添加了对Date32、DateTime64的支持。
调整了
max_merge_delayed_streams_for_parallel_write的兼容性值。修复了在析构函数中尝试删除临时文件(用于在磁盘上溢出临时数据)时抛出异常可能导致程序终止的崩溃。
向
SYSTEM SYNC REPLICA添加了IF EXISTS修饰符。扩展了关于“Having zero bytes, but read range is not finished...”的异常消息,向system.filesystem_cache添加了finished_download_time列。
以前,完整文本索引不支持packed存储,因为段ID是通过在磁盘上读取和写入(
.gin_sid)文件来即时更新的。在packed存储的情况下,不支持从未提交的文件读取值,这导致了问题。在使用
indexes = 1时,向EXPLAIN输出添加了搜索算法部分,显示为“binary search”或“generic exclusion search”。在2024年初,因为新分析器默认未启用,所以为MySQL处理程序硬编码了
prefer_column_name_to_alias为True。现在,它已被取消硬编码。现在
system.iceberg_history显示目录数据库(如glue或icebergrest)的历史记录。同时,为了保持一致性,将system.iceberg_history中的table_name和database_name列重命名为table和database。允许
merge表函数使用只读模式,因此使用它不需要CREATE TEMPORARY TABLE授权。更好地检查内存缓存(在不完整的
system.asynchronouse_metrics中的system.metrics中公开关于缓存的信息)。将内存缓存大小(字节)添加到dashboard.html中。在从system.rocksdb读取时,忽略不能包含RocksDB表的引擎的数据库。
允许在
clickhouse-local配置文件中使用filesystem_caches和named_collections。修复了
INSERT查询中PARTITION BY的高亮显示。Web UI中的改进:正确处理没有输出的查询,例如
CREATE、INSERT;双击表时,滚动到顶部。更新
c-ares到v1.34.5。将curl升级到8.14以解决CVE-2025-5025和CVE-2025-4947。
将libarchive升级到3.7.9以解决:CVE-2024-20696、CVE-2025-25724、CVE-2024-48958、CVE-2024-57970、CVE-2025-1632、CVE-2024-48957、CVE-2024-48615。
将libxml2升级到2.14.3。
MemoryResidentWithoutPageCache提供服务器进程使用的物理内存量(不包括用户空间页面缓存),以字节为单位。当使用用户空间页面缓存时,这提供了实际内存使用情况的更准确视图。当用户空间页面缓存被禁用时,此值等于MemoryResident。将客户端、本地服务器、keeper客户端和磁盘应用程序中手动记录的异常标记为已记录,以便它们不会被记录两次。
设置
use_skip_indexes_if_final和use_skip_indexes_if_final_exact_mode默认为True。带有FINAL子句的查询现在将使用跳过索引(如果适用)来筛选颗粒,并读取与匹配的主键范围对应的任何额外颗粒。需要早期近似/不精确结果行为的用户可以在仔细评估后将use_skip_indexes_if_final_exact_mode设置为FALSE。当在Web UI中有多个查询时,它将运行光标下的那个。
解决了转换函数单调性检查中
is_strict实现的问题。在具有日志的文件系统中,
mkdir被写入文件系统的日志并持久化到磁盘。在慢速磁盘的情况下,这可能需要很长时间。绝对有必要从保留锁范围中移出。当检查
KeyCondition是否匹配连续范围时,如果键被非严格函数链包装,则可能需要将Constraint::POINT转换为Constraint::RANGE。使用
postgres16.9。使用
openssl3.2.4。使用
abseil-cpp2025-01-27。使用
mongo-c-driver1.30.4。使用
krb51.21.3-final。使用
orc2.1.2。在
clickhouse-local中添加了对--database参数的支持。您可以切换到先前创建的数据库。clickhouse/ch别名将在指定了--host或--port时调用clickhouse-client而不是clickhouse-local。有了keeper响应时间分布数据,可以调整直方图桶。
推迟读取Iceberg清单文件,直到查询的第一次读取。
使用
grpc1.73.0。使用
delta-kernel-rsv0.12.1。添加了ProfileEvent
PageCacheReadBytes。减少Keeper请求量,通过消除单
get请求(在可用multiRead处使用),避免副本数增加时Keeper负载显著增加。为MySQL添加命名集合的SSL认证支持。
通过存储
ColumnPtr替代Field提升新分析器基础设施性能。服务器过载时拒绝查询,基于等待时间与繁忙时间比率决定。
尽早丢弃块以减少内存需求。
允许在DateTime64数据类型列上创建
bloom_filter索引。Executable存储传递的查询不再限于单线程执行。为OpenTelemetry跨度日志表添加HTTP头增强可追溯性。
支持按自定义时区(非始终GMT)写入orc文件。
启用并行副本时用
-Cluster替代品替换表函数。后台重建MySQL和Postgres字典副本连接,避免延迟对应字典请求。
system.query_log现在包含可刷新物化视图的刷新操作。一起评估parquet布隆过滤器和最小/最大索引。
修复并行副本指标未完全显示问题,按最近更新顺序然后按名称字典序显示指标,不显示陈旧指标。
为
ALTER TABLE MOVE PARTITION TO TABLE使用专用ALTER_MOVE_PARTITION权限(原需SELECT和ALTER DELETE)。默认启用
use_hive_partitioning。当尝试物化排序键中的列时抛出异常而非允许破坏排序顺序。
启用哈希连接算法时允许更通用的连接规划算法。
支持原生读取器中的parquet整数逻辑类型。
默认美化JSON输出格式,新增
output_format_json_pretty_print设置控制(默认启用)。若默认用户需要密码,浏览器中交互式请求凭据(旧版本返回HTTP 403,现返回HTTP 401)。
将访问类型
CREATE_USER、ALTER_USER、DROP_USER、CREATE_ROLE、ALTER_ROLE、DROP_ROLE从全局转为参数化,便于更精确授予访问管理权限。支持不同参数JSON类型间的CAST和ALTER。
为
system.mutations添加latest_fail_error_code_name列,便于基于错误构建图表和添加新警报。使
max_bytes_before_external_sort限制依赖于查询总内存消耗(原为单排序线程块字节数),新增min_external_sort_block_bytes控制磁盘块大小。支持MergeTree排序键和跳数索引中使用子列。
为
system.server_settings添加dictionaries_lazy_load和wait_dictionaries_load_at_startup。为
BACKUP/RESTORE查询添加max_backup_bandwidth设置。并行副本使用历史副本可用性信息改进副本选择,但连接不可用时未更新副本错误计数。
降低ReplicatedMergeTree引擎中复制部分出现的日志级别,最小化复制集群日志量。
支持JSON列值的相等比较。
避免JSON子列不必要的反引号,改进标识符格式化。
以
Test级别记录PREWHERE条件。若
optimize_on_insert启用,写入级别1的部分,便于对刚写入部分使用FINAL查询优化。对
WHERE a<b AND b<c AND c<5类查询生成新比较条件(a<5 and b<5)以提升过滤能力。改进析取式中公共表达式提取,即使并非所有析取项有公共子表达式也允许简化过滤表达式。
修复使用修饰符的排序区域因错误抛出问题,如
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现在有效。支持Nullable(JSON)类型。
函数
parseDateTime64及其变体现在对1970年前/2106年后输入日期产生正确结果。支持
BACKUP/RESTORE查询中的核心设置。在Parquet输出中读取
output_format_compression_level。将arrow fixed_size_list作为Array读取而非不支持类型处理。
新增
Memory(当前用户会话内保持备份)和Null(不保留备份)备份引擎。concurrent_threads_soft_limit_num和concurrent_threads_soft_limit_num_ratio_to_cores可不重启服务器更改。为formatReadable函数添加扩展数值类型(Decimal、大整数)支持。
为元组列字段启用列不敏感匹配。
支持PostgreSQL有线协议的TLS。
改进无法追加文件的File表的错误消息。
当终端中请求输出二进制格式(如Native、Parquet、Avro)时询问确认。
BFloat16数据类型正式生产就绪。在Pretty和Vertical格式中高亮尾随空格提升清晰度,由
output_format_pretty_highlight_trailing_spaces控制。默认截断Pretty格式中过长列名,由
output_format_pretty_max_column_name_width_cut_to和output_format_pretty_max_column_name_width_min_chars_to_cut控制。美化Pretty格式:若自上一块输出后未过多久则压缩块,由
output_format_pretty_squash_consecutive_ms(默认50ms)和output_format_pretty_squash_max_wait_ms(默认1000ms)控制。修复SQLite的类型映射(整数类型转
int64,浮点转float64)。增强MySQL兼容性使
mysqlsh(Oracle的丰富MySQLCLI)可连接ClickHouse。若输出记录数超过N=
output_format_pretty_max_rows,不仅显示前N行,而是在中间切割输出表,显示前N/2行和后N/2行。函数
isIPv4String在正确IPv4地址后跟零字节时返回true,而此情况应返回false。使MySQL有线协议中的错误码兼容MySQL。
新增设置
validate_enum_literals_in_opearators验证IN、NOT IN等操作符中的枚举字面量,若非有效枚举值则抛出异常。在存储S3(Azure)Queue中单次Keeper事务提交所有文件(由提交设置定义的单个批次)。
禁用可执行UDF和字典的头检测(可能导致错误结果)。
EXPLAIN PLAN支持distributed选项,EXPLAIN distributed=1 ...将远程计划附加到ReadFromParallelRemote*步骤。为Dynamic参数的not/xor使用正确返回类型。
支持物化视图查询中的子列。
Pretty格式可在表格单元格内渲染多行字段提升可读性,由
output_format_pretty_multiline_fields控制。为
MergingAggregated步骤支持查询计划级的谓词下推优化,提升新分析器某些查询性能。clickhouse-client中设置自定义提示的三种简单方式:命令行参数
--prompt。配置文件
<prompt>[...]</prompt>。配置文件每连接设置
<connections_credentials><prompt>[...]</prompt></connection_credentials>。
将Prometheus远程写入响应成功状态从200/OK改为204/NoContent。
向浏览器JavaScript暴露X-ClickHouseHTTP头,便于编写应用。
JSONEachRowWithProgress格式将包含带元数据的事件及总计和极值,还包括rows_before_limit_at_least和rows_before_aggregation,正确打印部分结果后的异常,进度含经过纳秒,结束时发出最终进度事件,查询运行期间进度打印频率不超过interactive_delay设置值。即使HTTP响应压缩也尽快发送到达的数据包,使浏览器能接收进度包和压缩数据。
无需重启服务器动态重载
max_remote_read_network_bandwidth_for_serve和max_remote_write_network_bandwidth_for_server。连接到9440端口时ClickHouse Client自动检测安全连接。
为http_handlers仅用用户名认证用户(原需同时提供密码)。
在更多聚合函数中支持返回默认Enum类型。
新增MergeTree设置
materialize_skip_indexes_on_merge抑制合并期间跳数索引创建,允许显式控制(通过ALTER TABLE [..] MATERIALIZE INDEX [...])跳数索引创建时机,适用于创建昂贵的跳数索引(如向量相似索引)。支持默认和物化表达式中的子列。
添加IsServerShuttingDown指标,需在服务器关闭耗时过长时触发警报。
在EXPLAIN中添加Iceberg表名。
默认启用最多1000个并行副本。
改进S3磁盘的HTTP会话复用。
在
system.errors中显示扩展错误消息。为失败复制获取/合并/任务重新引入退避逻辑,减少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设置。更准确计算
parallel_hashJOIN算法的max_joined_block_size_rows设置,避免相比hash算法内存消耗增加。添加
dfs.client.use.datanode.hostnamelibhdfs3配置选项支持。修复“Codec 'snappy' doesn't support setting a compression level”无效错误。
支持在备份时使用blob路径计算校验和。
若JOIN键是两部分的PK前缀,则启用JOIN的动态分片。此优化由
query_plan_join_shard_by_pk_ranges设置控制(默认禁用)。改进
/binary服务器页面:使用希尔伯特曲线替代莫顿曲线,在方形中显示512MB地址(旧版仅填充方形一半),按库名而非函数名着色地址,允许在区域外滚动更多。禁止查询
ALTER USER user1 ADD PROFILES a, DROP ALL PROFILES,因所有DROP操作应首先按顺序。为SYNC REPLICA添加各种增强(更好错误消息、更好测试、健全性检查)。
将
output_format_pretty_max_rows默认值从10000改为1000,提升可用性。支持只读MergeTree表的刷新。
备份时多部分复制到S3因不同凭证失败时使用正确回退。
更快关闭ClickHouse服务器(消除2.5秒延迟)。
为
system.errors添加query_id。升级librdkafka至2.8.0,改进Kafka表关闭序列,减少表删除和服务器重启延迟。
engine=Kafka不再显式离开消费者组,消费者在session_timeout_ms(默认45秒)不活动后自动移除。避免readbufferfroms3和其他远程读取缓冲区的过量分配,内存消耗减半。
支持从View读取JSON类型和子列。
添加将UInt128转换为IPv6的支持,允许对IPv6进行
bitAnd操作和算术运算并转换回IPv6。为
information_schema.tables添加index_length_column列提升与MySQL兼容性。引入两个新指标:
TotalMergeFailures和NonAbortedMergeFailures,用于检测短时间内过多合并失败情况。修复路径样式中未指定键时的S3 URI解析。
修正
BlockActiveTime、BlockDiscardTime、BlockWriteTime、BlockQueueTime和BlockReadTime异步指标的错误值(原1秒错误报告为0.001)。在StorageS3(Azure)Queue的物化视图推送错误中遵从
loading_retries限制,之前此类错误会无限重试。在DeltaLake存储的delta-kernel-rs实现中修复性能和进度条。
向量相似索引可能过度分配主内存达2倍。此修复重做内存分配策略,减少内存消耗并提升向量相似索引缓存有效性。
为
system.metric_log表引入设置schema_type,支持三种模式:wide:每指标/事件单独列,最有效读取单独列。transposed:类似system.asynchronous_metric_log,指标/事件存储为行。transposed_with_wide_view:创建底层transposed表,同时引入wide模式视图将查询转换到底层表)。
为Iceberg表函数和引擎添加多种便捷方式解析根metadata.json文件。
支持DeltaLake中的分区修剪。
支持ClickHouse中SSH协议的基于密码认证。
为
system.warnings添加长时间运行变异的动态警告。CPU严重过载时断开连接,基于等待时间与繁忙时间比率决定,当比率在
min_os_cpu_wait_time_ratio_to_drop_connection和max_os_cpu_wait_time_ratio_to_drop_connection之间时概率断开查询。支持Hive分区中的空值。
bug修复
修复了带有
SELECT EXCEPT查询的参数化视图。分析器:修复连接中列类型提升后的列投影名称。
物化视图可能启动得太晚,例如在流向它的Kafka表之后。
在启用
analyzer_compatibility_join_using_top_level_identifier时修复了列名冲突情况下的逻辑错误。修复了在多个异步(带有
alter_sync = 0)RENAME COLUMN和ADD COLUMN查询后从MergeTree表读取时罕见的崩溃。修复了启用分析器时在
VIEW创建期间的SELECT查询重写。在启用
allow_push_predicate_ast_for_distributed_subqueries时修复下推谓词中CTE的使用。修复从服务器应用
async_insert(通过apply_settings_from_server)(先前导致客户端出现Unknown packet 11 from server错误)。修复了在复制数据库中可刷新物化视图在新添加的副本上不起作用的问题。
修复了可刷新物化视图破坏备份的问题。
修复了
transform的旧触发逻辑错误。修复了
SYSTEM SYNC REPLICA LIGHTWEIGHT 'foo'在指定副本不存在时仍报告成功的问题。修复了分析器未应用二级索引的一些情况。
修复了在启用压缩的HTTP协议下转储ProfileEvents(
NetworkSendElapsedMicroseconds/NetworkSendBytes)的问题。修复了在具有lambda表达式的跳过索引无法应用的问题。修复索引定义中的高级函数与查询中的函数完全匹配的情况。
修复了分析器:如果
SELECT包含位置参数,则CREATE VIEW ... ON CLUSTER失败。修复了在
INSERT SELECT到具有模式推断的函数表的情况下,如果SELECT有标量子查询,则出现Block structure mismatch错误。修复了分析器:对于分布式表中的
SELECT查询,在prefer_global_in_and_join=1的情况下,in函数应被globalIn替换。修复了从具有
MongoDB引擎或mongodb表函数的表读取的几种SELECT查询类型:在WHERE子句中具有常量值隐式转换的查询;带有LIMIT和GROUP BY的查询。修复了不同JSON类型之间的转换。现在通过转换为自String的简单转换来执行。效果较差但100%准确。
修复了在Interval转换期间Dynamic类型的逻辑错误。
修复了JSON解析错误时的列回滚。
修复了使用常量别名列连接时的“bad cast”错误。
不允许在物化视图的
PREWHERE中使用视图和目标表中类型不同的列。修复了在解析Variant列的错误二进制数据期间的逻辑错误。
在parquet批处理大小设置为0时抛出异常。
修复了紧凑部分中基本格式的变体判别器的反序列化。
complex_key_ssd_cache类型的字典现在拒绝零或负的block_size和write_buffer_size参数。避免在SummingMergeTree中对非聚合列使用Field。这可能导致在SummingMergeTree中使用Dynamic/Variant类型时出现意外错误。
修复了分析器中具有分布式目标表和不同标题的物化视图的读取。
修复了在
ON CLUSTER查询的CONSTRAINT部分中使用currentDatabase函数时的非常特定情况的崩溃。修复了在具有批插入的表上
arrayUnion()返回额外(不正确)值的错误。修复了过滤器下推后可能的逻辑错误。
尝试在SingleValueDataGeneric中使用IColumn而不是Field。它修复了某些聚合函数(如
argMax)对于类型Dynamic/Variant/JSON的不正确返回值。修复了基于delta-kernel实现的DeltaLake表引擎与基于http的端点一起使用的问题,修复NOSIGN。
Keeper修复:避免在失败的多请求上触发监视。
禁止在IN中使用Dynamic和JSON类型。
修复了JSON类型解析中重复路径的检查。
修复了SecureStreamSocket连接问题。
修复了包含数据的普通可重写磁盘的加载。
修复了MergeTree中Wide部分的动态子列发现中的崩溃。
仅对初始创建查询验证表名的长度。不要对次要创建验证此操作以避免向后兼容性问题。
修复了在具有稀疏列的表的几种情况下的
Block structure mismatch错误。修复了
Logical Error: Can't set alias of * of Asterisk on alias的两种情况。修复了为azure blob存储应用use_native_copy和allow_azure_native_copy设置的问题,并更新为仅在凭据匹配时使用本机复制。
修复了重命名Atomic数据库时使用不正确路径的问题。
修复了使用其他列按JSON列排序。
在禁用
use_hedged_requests和allow_experimental_parallel_reading_from_replicas时从远程读取修复结果重复。修复了在使用统一目录时delta-kernel实现中的崩溃。
为自动发现集群解析宏。
修复了在检查此列是否相关时产生的关于列未知来源范围的逻辑错误。
修复了带有ColumnConst和分析器的分组集的错误结果。
在从分布式表读取时,当本地副本过时时,修复本地分片结果重复。
适当地处理错误配置的
page_cache_limits。修复了SQL函数
formatDateTime的结果,如果可变大小格式化程序后面跟着复合格式化程序。IcebergS3支持计数优化,但IcebergS3Cluster不支持。因此,在集群模式下返回的count()结果可能是副本数量的倍数。
修复了带有负符号位的NaN的排序顺序。
现在
GROUP BY ALL不考虑GROUPING部分。修复了在延迟物化情况下,在查询执行直到投影之前未使用任何列时的
AMBIGUOUS_COLUMN_NAME错误。修复了
TopK/TopKWeighted函数的不正确状态合并,该问题会导致即使容量未耗尽也会出现过多的错误值。隐藏查询
CREATE DATABASE datalake ENGINE = DataLakeCatalog(\'http://catalog:8181\', \'admin\', \'password\')的密码。允许在
JOIN USING中指定别名。在列被重命名的情况下指定此别名。修复了在JOIN USING中指定别名的问题。修复了在使用带有反斜杠转义字符的
match(column, '^…')时的不正确查询结果和内存不足崩溃。为数据湖禁用hive分区。
修复了当索引定义中的高级函数与查询中的函数完全匹配时,无法应用带有lambda表达式的跳过索引的问题。
允许在具有UNION的物化视图在新副本上正确工作。
修复了在从复制日志执行ATTACH_PART命令的副本上附加部分期间的元数据版本。
SQL函数
parseDateTime中的格式说明符%e现在识别单个数字的天(例如3),而之前需要空格填充(例如3)。这使其行为与MySQL兼容。要保留先前行为,请设置parsedatetime_e_requires_space_padding = 1。可执行用户定义函数名称不会添加到
system.query_log表的used_functions列中,与其他函数不同。新版本实现了如果在请求中使用了eUDF,则添加eUDF名称。修复了ClickHouse日志中关于在“[...]/memory.stat”中找不到'kernel'”的警告。
修复了带有LowCardinality(FixedString)的Arrow格式中的逻辑错误。
修复了从Merge引擎读取子列。
修复了关于
KeyCondition中数字类型比较的错误。当延迟物化应用于具有投影的表时修复AMBIGUOUS_COLUMN_NAME。
修复了在使用隐式投影时对字符串前缀过滤器(如LIKE 'ab_c%')的不正确计数优化。
修复了MongoDB文档中嵌套数字字段作为字符串的不正确序列化。移除MongoDB文档的最大深度限制。
对复制数据库中的RMT执行较不严格的元数据检查。
修复了PostgreSQL存储中DateTime和DateTime64的文本表示。
允许在
StripeLog表中使用带时区的DateTime。在查询计划步骤更改行数的情况下,禁用带有非确定性函数的谓词的过滤器下推。
修复了带有子列的投影中可能的逻辑错误和崩溃。
修复了在分区表中读取反向排序键时的不正确结果。
修复了在具有可空键和启用optimize_read_in_order的表中的错误排序。
修复了如果使用
SYSTEM STOP REPLICATED VIEW暂停了视图,则可刷新物化视图DROP卡住的问题。修复了分布式查询中带有常量元组的“Cannot find column”错误。
修复了在具有
join_use_nulls的分布式表中的shardNum函数。修复了在Merge引擎中读取存在于表子集中的列时的不正确结果。
iceberg_history表中的时间戳现在应该是正确的。
修复了在对象存储表函数中处理单个元素的枚举全局模式。
修复了带有Tuple(Dynamic)和String的比较函数的错误结果类型,该问题导致逻辑错误。
为统一目录添加了对数据类型
timestamp_ntz的缺失支持。修复了带有
IN cte的分布式查询的THERE_IS_NO_COLUMN错误。修复了外部
ORDER BY的过多文件数(导致过多内存使用)。修复了由于
get_member_id()从NULL创建std::string导致的Kafka崩溃(可能仅在连接到代理失败的情况下出现问题)。在关闭Kafka引擎之前正确等待消费者(关闭后的活动消费者可能触发各种调试断言,并且可能在表被删除/分离后从代理在后台读取数据)。
修复了由
predicate-push-down优化引起的NOT_FOUND_COLUMN_IN_BLOCK。修复了在带有
USING的JOIN中解析表函数中的星号匹配符时的逻辑错误。修复了Iceberg元数据文件缓存的内存记帐。
修复了带有可空分区键的错误分区。
修复了当源表在启动器上不存在时,带有下推谓词的分布式查询的“Table does not exist”错误。
修复了带有命名窗口的嵌套函数中的逻辑错误。
修复了可空和浮点列的极值。
修复了从system.tables查询时可能的崩溃(可能在内存压力下)。
修复了对于文件压缩从其文件扩展名推断的文件,原子重命名与截断的问题。
修复了“ErrorCodes::getName”。
修复了用户无法在没有所有表权限的情况下列出统一目录中的表的错误。现在所有表都正确列出,尝试从受限表读取将抛出异常。
忽略来自数据湖目录在
SHOW TABLES查询中的错误和意外响应。修复了在
JSONExtract和JSON类型解析中从整数解析DateTime64的问题。在模式推断缓存中反映
date_time_input_format设置。修复了如果在查询开始后但在列发送之前表被DROP,则在
INSERT时崩溃的问题。修复了quantileDeterministic中未初始化值的用法。
修复了用于磁盘事务的metadatastoragefromdisk磁盘的硬链接计数管理。
用户定义函数名称不会添加到
system.query_log表中,与其他函数不同。新版本实现了如果在请求中使用了UDF,则将UDF名称添加到used_executable_user_defined_functions或used_sql_user_defined_functions两列之一。修复了通过http协议使用文本格式(
JSON、Values、...)和省略Enum字段插入时出现“Too large size ... passed to allocator”错误或可能的崩溃。修复了在推送到非MT MV的INSERT块中出现稀疏列时的LOGICAL_ERROR。
修复了在具有跨复制的
distributed_product_mode_local=local情况下的Unknown table expression identifier错误。修复了在过滤后错误地缓存parquet文件中的行数。
修复了当与相对缓存路径一起使用时,fs缓存
max_size_to_total_space设置。修复了在Parquet格式中输出常量元组或映射时clickhouse-local崩溃的问题。
验证通过网络接收的数组偏移量。
修复了连接空表并使用窗口函数的查询中的一些极端情况。该错误导致并行流数量激增,从而导致OOM。
修复了数据湖集群函数的以下问题:在使用旧分析器的情况下,使用
Cluster函数时DataLakeConfiguration中的潜在段错误;移除重复的数据湖元数据更新;在未明确指定格式时修复对象存储中的冗余列出。使
force_restore_data标志恢复丢失的keeper元数据。修复了delta-kernel中的区域错误。
禁用对divideOrNull的不正确JIT。
修复了当MergeTree表具有长分区列名时的插入错误。
不要将多个清单文件的内容存储在内存中。
修复了在关闭后台池期间可能的崩溃。
修复了在写入带有
URL引擎的表时,Npy格式中发生的越界读取。Web UI有几率显示
NaN%(典型的JavaScript问题)。修复了
DatabaseReplicated在database_replicated_enforce_synchronous_settings=1时的问题。修复了LowCardinality(Nullable(...))类型的排序顺序。
如果尚未从套接字完全读取请求,服务器不应保留HTTP连接。
使标量相关子查询返回投影表达式的可空结果。修复相关子查询产生空结果集的情况。
修复了在
ATTACH到ReplicatedMergeTree期间出现Unexpected relative path for a deduplicated part的问题。查询设置
use_iceberg_partition_pruning不会对Iceberg存储生效,因为它使用全局上下文而不是查询上下文。该影响有限,因为其默认值为true,新版本已修复。为merge tree设置
merge_max_block_size添加验证以确保其非零。修复了涉及卡住
DROP VIEW查询的clickhouse-local问题。修复了在某些情况下StorageRedis连接的问题。
修复了在启用旧分析器的情况下,带有空
USING ()的ConcurrentHashJoin中的崩溃。Keeper修复:如果日志中有无效条目,则阻止提交新日志。
修复父作用域标识符解析,允许在WITH子句中使用表达式别名。
修复PositionImpl::vectorVector中的不正确字符计数。
修复负函数单调性,如
select * from a where -x = -42;其中x是主键可能返回错误结果。RESTORE操作因未处理部分撤销需要比必要更多权限。避免
ALTER TABLE REPLACE/MOVE PARTITION FROM/TO TABLE后暂停,检索后台任务调度的正确设置。修复arrayIntersect中的空元组处理。
修复某些输入输出格式(如Parquet、Arrow)中空元组的处理。
通配数据库/表上的列级
GRANT SELECT/INSERT语句现在抛出错误。修复目标访问实体中存在隐式授权时用户无法运行
REVOKE ALL ON *.*的情况。修复异步分布式
INSERT处理挂起(如因No such file or directory)。修复标量函数formatDateTime的正时区格式化。
当通过PROXYv1连接且
auth_use_forwarded_address设置时正确反映源端口,之前错误使用代理端口。添加currentQueryID()函数。在TCPHandler中传播格式设置到NativeWriter,使
output_format_native_write_json_as_string等设置正确应用。修复读取带有不正确前缀的JSON子对象子列。
修复StorageObjectStorageQueue崩溃。
修复服务器关闭期间可刷新物化视图的罕见崩溃。
函数
formatDateTime的%f占位符现在无条件生成六位(亚秒)数字,使行为兼容MySQLDATE_FORMAT函数。原行为可通过设置formatdatetime_f_prints_scale_number_of_digits=1恢复。通过在隐式Date到DateTime转换中强制饱和行为改进索引分析期间的日期时间转换,解决日期时间范围限制导致的潜在索引分析不准确。
修复从
s3存储和表函数读取时按_etag列过滤。修复旧分析器在
JOIN ON表达式中使用IN (subquery)时的Not-ready Set is passed as the second argument for function 'in'错误。修复Dynamic和JSON列的准备压缩,某些情况下新类型可能插入共享variant/共享数据即使类型/路径限制未达到。
检查类型二进制解码期间的损坏大小以避免过大分配。
修复启用并行副本时从单副本集群读取的逻辑错误。
修复数据竞争创建向量相似索引。
修复字典源包含错误数据函数时的段错误。
修复存储S3(Azure)Queue中失败插入的重试。
修复启用
optimize_functions_to_subcolumns时tupleElement函数可能出现的错误。修复枚举全局后跟范围时的解析。
修复非复制表的
parallel_replicas_for_non_replicated_merge_tree在子查询中被忽略。修复任务无法调度时抛出
std::logical_error的情况。在
EXPLAIN SYNTAX中不解释查询以避免分布式查询处理阶段不正确的逻辑错误。修复Dynamic列中可能的数据不一致,如“Nested columns sizes are inconsistent with local_discriminators column size”逻辑错误。
修复带
FINAL和SAMPLE查询中的NOT_FOUND_COLUMN_IN_BLOCK,修复从CollapsingMergeTree带FINAL选择及启用FINAL优化时的错误结果。修复
LIMIT BY COLUMNS中的崩溃。修复查询与投影定义完全相同时强制使用普通投影但未选择投影导致的错误。
修复Dynamic/Object结构的反序列化,可能导致CANNOT_READ_ALL_DATA异常。
从备份恢复部分时跳过
metadata_version.txt。修复S3Express支持损坏问题。
允许CollapsingMergeTree表中合并具有无效符号列值的行。
修复
JSONEachRowWithProgress格式在部分结果后正确打印异常。