25.6企业版发布详情

本文介绍云数据库ClickHouse25.6企业版发布的功能详情。

重要变更

  • 支持Coalescing MergeTree。

  • 添加分布式协同Merge算法(Coordinated Merge),大幅提升Merge性能。

  • JSON数据类型正式发布。

  • DynamicVariant数据类型正式发布。

  • 实现查询条件缓存,利用重复条件提升查询性能。

  • 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)中,所有扩缩容事件都通过进程重启发生,此项变更旨在明确禁用此功能以更好地控制行为并作为安全措施。

  • 移除对旧索引类型annoyusearch的支持。

  • 移除format_alter_commands_with_parentheses服务器设置。

  • 强制backup_threadsrestore_threads服务器设置为非零值。

  • 修复bitNot()对于String返回零终止字符串的问题。

  • Parquet输出格式将DateDateTime列转换为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表将通过列并集和推导共同类型来统一底层表结构。若表间无共同类型但可转换为第一表类型(如UInt64Int64或任何数字类型与String),此变更可能导致不兼容。设置merge_table_max_tables_to_look_for_schema_inference1compatibility24.12或更早可恢复旧行为。

  • CHECK TABLE查询需要单独的CHECK权限。

  • allow_materialized_view_with_bad_selectfalse,则检查物化视图所有列是否匹配目标表。

  • 新增JSONCompactEachRowWithProgressJSONCompactStringsEachRowWithProgress格式。JSONCompactWithNamesJSONCompactWithNamesAndTypes不再输出“totals”。

  • 更改format_alter_operations_with_parentheses默认值为true以明确alter命令列表。此项变更会破坏与24.3之前集群的复制。升级使用旧版本的集群时,需在服务器配置中关闭该设置或先升级到24.3。

  • 禁止对复制数据库执行截断操作。

  • 当分析器禁用时,无论compatibility设置如何,默认禁用并行副本。显式设置parallel_replicas_only_with_analyzerfalse仍可更改此行为。

  • 禁止在浮点型设置值中使用NaNinf

  • 修复了dateTrunc使用负日期、时间参数的情况。

  • 移除旧版MongoDB集成。服务器设置use_legacy_mongodb_integration已废弃且无效。

  • 增强SummingMergeTree验证,跳过对分区或排序键中使用的列进行聚合。

新特性

  • MergeTree添加了一个新选项SETTINGS,用于在CREATE查询未为给定列明确定义时指定默认压缩编解码器。

  • 实现了TimeTime64数据类型。实现新的数据类型: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表。

  • 为工作负载添加了查询槽调度。

  • 添加了getServerSettinggetMergeTreeSetting函数。

  • 支持在设置约束下禁止的值。

  • 添加了新的iceberg_enable_version_hint设置以利用version-hint.text文件。

  • 提供了使用LIKE关键字过滤后截断数据库中特定表的可能性。

  • clickhouse-local(及其简写别名ch)现在在有输入数据需要处理时使用隐式的FROM table。同时,如果--input-format未指定且它处理常规文件,则在clickhouse-local中启用格式推断。

  • 添加了icebergHashicebergBucketTransform函数。支持在使用bucket transform分区的Iceberg表中进行数据文件修剪。

  • 添加了对Coalescing Merge Tree的支持。

  • 添加了stringBytesUniqstringBytesEntropy函数以搜索可能随机或加密的数据。

  • 支持MergeTree系列表中的_part_starting_offset虚拟列。此列表示所有先前部分的累积行数,在查询时基于当前部分列表计算。累积值在整个查询执行期间保留,并且在部分修剪后仍然有效。

  • 添加了一个设置enable_shared_storage_snapshot_in_query,以在单个查询中的所有子查询之间共享相同的存储快照。这确保了即使表在查询中被多次引用,也能从同一表进行一致读取。

  • 支持将CH JSON列写入Parquet,并将Parquet JSON列直接作为CH JSON列读取。

  • chdig-ClickHouseTUI界面(类似top)捆绑为ClickHouse的一部分。

  • pointInPolygon添加了MultiPolygon支持。

  • 支持geo parquet。

  • 添加了通过deltaLakeLocal表函数查询本地文件系统挂载的delta表的支持。

  • 添加了base32编码/解码功能。

  • Clickhouse向量搜索现在支持预过滤和后过滤,并提供相关设置以进行更精细的控制。

  • 支持读取WKB格式的函数。

  • 添加了新的设置cast_string_to_date_time_mode,允许在从String转换期间选择DateTime解析模式。

  • 添加了Bech32Bech32m编码和解码函数。

  • 支持AtomicOrdinary DB引擎的disk设置,指定用于存储表元数据文件的磁盘。

  • 支持解包和比较merge tree部分的函数。

  • timeSeries*辅助函数,用于加速处理时间序列数据的一些场景:将数据重新采样到具有指定开始时间戳、结束时间戳和步长的时间网格;计算类似PromQLdeltarateideltairate

  • 允许按部分所在的磁盘过滤选择用于查询的部分。

  • 添加了一个包含嵌入式Web工具列表的着陆页。当浏览器类用户代理请求时将打开。

  • 允许在arrayFirstarrayFirstIndexarrayLastarrayLastIndex中过滤NULL值。

  • 为反序列化的跳数索引颗粒添加内存缓存,提升重复使用跳数索引的查询速度。新缓存大小由skipping_index_cache_sizeskipping_index_cache_max_entries控制。

  • Iceberg表添加按特定时间戳查询的设置。

  • 实现Iceberg表时间相关分区操作的修剪。

  • 新增聚合函数sequenceMatchEvents,返回模式匹配事件链中事件的时间戳。

  • SELECTVIEW语句支持别名,如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 floatBFloat16不同。

  • system.trace_log表新增symbolslines列,包含符号化堆栈跟踪,便于收集导出性能信息。由服务器配置trace_log中的symbolize控制,默认启用。

  • 新增函数generateSerialID,用于在表中生成自增数字。

  • 新增语法query1 PARALLEL WITH query2 PARALLEL WITH query3 ... PARALLEL WITH queryN,表示子查询{query1, query2, ... queryN}可彼此并行运行(且优先)。

  • 新增通过设置add_minmax_index_for_numeric_columnsadd_minmax_index_for_string_columnsMergeTree管理列默认创建min-max索引功能(当前默认禁用)。

  • system.query_log添加script_query_numberscript_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解决INSERTSELECT间不公平CPU分配问题)。

  • 新增函数arraySymmetricDifference,返回多个数组参数中未在所有参数中出现的元素。

  • 新增estimatecompressionratio聚合函数。

  • 新增FilterTransformPassedRowsFilterTransformPassedBytes性能事件,显示查询执行期间过滤的行数和字节数。

  • 新增区块链常用哈希函数keccak256(尤其EVM系统)。

  • 支持PostgreSQL协议的SCRAM SHA256认证。

  • 支持从客户端请求头转发到外部HTTP认证器的头列表。

  • 支持IcebergMetadataFilesCache,缓存清单文件/列表和metadata.json。

  • 新增函数arrayLevenshteinDistancearrayLevenshteinDistanceWeightedarraySimilarity

  • 新增函数icebergTruncate(按规范)、toYearNumSinceEpochtoMonthNumSinceEpoch,支持Iceberg引擎中的truncate转换分区修剪。

  • 支持查询Iceberg表在历史时间点的状态。

  • 为工作负载添加CPU槽调度支持。

  • hasAll()函数可利用tokenbf_v1、ngrambf_v1全文跳数索引。

  • JSON数据类型正式生产就绪。DynamicVariant数据类型正式生产就绪。

  • 为反序列化的向量相似索引添加内存缓存,提升重复近似最近邻(ANN)搜索查询速度。新缓存大小由vector_similarity_index_cache_sizevector_similarity_index_cache_max_entries控制。

  • 新增UTF8版本的sparseGramssparseGramsHashes函数。

  • 引入toInterval函数,将值转换为特定Interval类型。

实验性功能

  • 用于Iceberg数据湖的Hive元存储目录。

  • 通过键值对支持显式参数。目前支持的参数是必需的tokenizer和两个可选的max_rows_per_postings_listngram_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并通过替换为空部分来删除部分。

  • 允许arrayROCAUCarrayAUCPR计算曲线部分面积,便于大数据集并行化计算。

  • 避免生成过多空闲线程。

  • parallel_hashJOIN算法的探测阶段移除左表块的哈希分割。

  • 仅在大括号扩展的表函数中不列出blob存储键。

  • 根据测试用clang内置i256替换Int256UInt256的算术计算。

  • 为所有参数为数值类型的函数添加快速路径。

  • 对非函数列不应用maskedExecute,提升短路执行性能。

  • 禁用Kafka/NATS/RabbitMQ/FileLog的头检测以提升性能。

  • 按值使用日志包装器,避免堆分配。

  • 分组集聚合后以更高并行度执行管道。

  • 减少MergeTreeReadPool中的关键部分。

  • 优化函数indexHint,现在仅作为indexHint函数参数的列不从表中读取。

  • 并行副本性能改进:非并行副本协议相关的数据包反序列化现在始终在管道线程中进行。

  • 修正LowCardinality列内存大小计算。

  • 优化S3Wide部分中整个JSON列的读取性能,通过添加子列前缀反序列化的预取、反序列化前缀缓存和子列前缀并行反序列化实现。

  • 为异步插入预分配内存。

  • 修复优化器交换连接边时ConcurrentHashJoin中的双预分配问题。

  • 修复parallel_hashmax_rows_in_join = max_bytes_in_join = 0时不必要争用。

  • 某些连接场景中预计算输出行数并为其预留内存,轻微提升性能。

  • plain_rewritable元数据文件小,无需大缓冲区。使用适合给定路径的适当大小写缓冲区,改善大量活跃部分时的内存利用率。

  • 数据部分包含空文件时可跳过写入对象存储,仅存储元数据。

  • 发现无条件分配所有CPU槽给max_threads=1INSERT而高max_threadsSELECT因仅使用单线程性能差的不公平CPU分配问题。

  • 优化wrapInNullable避免不必要的空映射分配。

  • 提升Decimal32/Decimal64/DateTime64min/max性能。

  • 在部分删除时主动从缓存驱逐数据,防止数据量少时缓存增长到最大大小。

  • 查询编译(设置compile_expressions)现在考虑机器类型,显著加速此类查询。

  • 优化arraySort。

  • 通过去虚拟化col->insertFrom()调用加速JOIN结果构建。

  • 合并相同部分的标记并一次性写入查询条件缓存以减少锁消耗。

  • 优化单可空或低基数列的排序。

  • 被动使用缓存(如合并)时禁用filesystem_cache_prefer_bigger_buffer_size

  • Iceberg实现简单计数优化,无任何过滤器的count()查询应更快。

  • 支持基于列lower_boundupper_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:自上次在所有字典中成功加载以来的错误数。

  • 添加了函数divideOrNullmoduloOrNullintDivOrNullpositiveModuloOrNull,以便在右参数为零时返回NULL。

  • isIPAddressInRange函数扩展到String、IPv4、IPv6、Nullable(String)、Nullable(IPv4)和Nullable(IPv6)数据类型。

  • 动态更改PostgreSQL引擎连接池设置。

  • 允许在普通投影中指定_part_offset。这是构建投影索引的第一步。

  • 改进了分布式查询上的分片键优化。

  • system.named_collections添加了新列(create_querysource)。

  • 向系统表system.query_condition_cache添加了字段condition。它存储其哈希用作查询条件缓存中键的明文条件。

  • 使用ClickHouse KeeperStorageKafka2实现类似Kafka重新平衡的逻辑。

  • Kafka表引擎添加了用于SASL配置和凭据的表设置。这允许直接在CREATE TABLE语句中配置基于SASLKafkaKafka兼容系统身份验证,而不必使用配置文件或命名集合。

  • 添加了关于为保存损坏表而可能创建的数据库的警告。

  • 向量相似性索引现在可以在BFloat16列上创建。

  • 支持在尽力而为的DateTime64解析中解析带有小数部分的Unix时间戳。

  • 在存储DeltaLake delta-kernel实现中修复了columnMappingMode.name,为模式演进添加了测试。

  • 通过更好地转换值来改进以Values格式插入Variant列。

  • S3Queue引擎中添加了_time虚拟列。

  • tokens函数被扩展为接受一个额外的“tokenizer”参数以及进一步的特定于分词器的参数。

  • SHOW CLUSTER语句现在在其参数中展开宏(如果有)。

  • 哈希函数现在支持数组、元组和映射内部的NULL

  • 支持只读MergeTree表的刷新。

  • 更新cctz2025a。

  • 使控制过载CPU上连接丢弃的设置可热重载。

  • 默认启用查询条件缓存。

  • 添加了ProfileEvents ParquetReadRowGroupsParquetPrunedRowGroups以分析parquet索引修剪。

  • Azure blob存储中为普通磁盘报告的系统表中的数据路径添加了容器前缀,使报告与S3GCP一致。

  • 支持在集群上更改数据库。

  • 显式跳过QueryMetricLog统计信息收集的错过运行,否则日志将需要很长时间才能赶上当前时间。

  • 添加了轻量级删除的能力(设置lightweight_deletes_sync = 0apply_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、1N作为重新连接的值。

  • 添加了设置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 = 0ClickHouse会卡住的行为。

  • startup_scripts添加了throw_on_error设置:当throw_on_errortrue时,除非所有查询成功完成,否则服务器不会启动。默认情况下,throw_on_errorfalse,保留先前行为。

  • 如果参考向量是Array(BFloat16)类型,现在也使用向量相似性索引。

  • system.error_log表添加了last_error_messagelast_error_tracequery_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_nullsany_respect_nulls

  • 移除对复制数据库的adjustCreateQueryForBackup()的不必要调用。

  • 允许在clickhouse-local中使用不带等号的额外选项(在--之后,如-- --config.value='abc')。

  • SHOW ... LIKE查询中高亮显示元字符。

  • 使SQL UDFclickhouse-local中持久化。先前创建的函数将在启动时加载。

  • 支持TimeTime64之间的比较。

  • 修复了解释计划中初步去重步骤的描述。

  • 允许在ODBC/JDBC中使用命名集合。

  • 启用多投影过滤支持,允许使用多个投影进行部分级过滤。这是实现投影索引的第二步。

  • 只读和损坏磁盘数量的指标。当DiskLocalCheckThread启动时,指示器日志。

  • 在带有投影的s3_plain_rewritable存储中实现支持。

  • 并行副本使用单独的连接超时,参见parallel_replicas_connect_timeout_ms设置。

  • SYSTEM UNFREEZE命令将不会尝试在只读和一次性写入磁盘中查找部分。

  • 将合并部分消息的日志级别从INFO更改为TRACE。

  • Native格式中的DynamicJSON实现扁平化序列化,允许在没有特殊结构的情况下序列化/反序列化DynamicJSON数据。

  • 更改了Iceberg表分区修剪的默认行为。

  • 为索引搜索算法可观察性添加了两个新的ProfileEvents:IndexBinarySearchAlgorithmIndexGenericExclusionSearchAlgorithm

  • 不要在日志中抱怨旧内核不支持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_aliasTrue。现在,它已被取消硬编码。

  • 现在system.iceberg_history显示目录数据库(如glueicebergrest)的历史记录。同时,为了保持一致性,将system.iceberg_history中的table_namedatabase_name列重命名为tabledatabase

  • 允许merge表函数使用只读模式,因此使用它不需要CREATE TEMPORARY TABLE授权。

  • 更好地检查内存缓存(在不完整的system.asynchronouse_metrics中的system.metrics中公开关于缓存的信息)。将内存缓存大小(字节)添加到dashboard.html中。

  • 在从system.rocksdb读取时,忽略不能包含RocksDB表的引擎的数据库。

  • 允许在clickhouse-local配置文件中使用filesystem_cachesnamed_collections

  • 修复了INSERT查询中PARTITION BY的高亮显示。

  • Web UI中的改进:正确处理没有输出的查询,例如CREATEINSERT;双击表时,滚动到顶部。

  • 更新c-aresv1.34.5

  • curl升级到8.14以解决CVE-2025-5025CVE-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_finaluse_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。

  • 添加了ProfileEventPageCacheReadBytes

  • 减少Keeper请求量,通过消除单get请求(在可用multiRead处使用),避免副本数增加时Keeper负载显著增加。

  • MySQL添加命名集合的SSL认证支持。

  • 通过存储ColumnPtr替代Field提升新分析器基础设施性能。

  • 服务器过载时拒绝查询,基于等待时间与繁忙时间比率决定。

  • 尽早丢弃块以减少内存需求。

  • 允许在DateTime64数据类型列上创建bloom_filter索引。

  • Executable存储传递的查询不再限于单线程执行。

  • OpenTelemetry跨度日志表添加HTTP头增强可追溯性。

  • 支持按自定义时区(非始终GMT)写入orc文件。

  • 启用并行副本时用-Cluster替代品替换表函数。

  • 后台重建MySQLPostgres字典副本连接,避免延迟对应字典请求。

  • system.query_log现在包含可刷新物化视图的刷新操作。

  • 一起评估parquet布隆过滤器和最小/最大索引。

  • 修复并行副本指标未完全显示问题,按最近更新顺序然后按名称字典序显示指标,不显示陈旧指标。

  • ALTER TABLE MOVE PARTITION TO TABLE使用专用ALTER_MOVE_PARTITION权限(原需SELECTALTER DELETE)。

  • 默认启用use_hive_partitioning

  • 当尝试物化排序键中的列时抛出异常而非允许破坏排序顺序。

  • 启用哈希连接算法时允许更通用的连接规划算法。

  • 支持原生读取器中的parquet整数逻辑类型。

  • 默认美化JSON输出格式,新增output_format_json_pretty_print设置控制(默认启用)。

  • 若默认用户需要密码,浏览器中交互式请求凭据(旧版本返回HTTP 403,现返回HTTP 401)。

  • 将访问类型CREATE_USERALTER_USERDROP_USERCREATE_ROLEALTER_ROLEDROP_ROLE从全局转为参数化,便于更精确授予访问管理权限。

  • 支持不同参数JSON类型间的CASTALTER。

  • system.mutations添加latest_fail_error_code_name列,便于基于错误构建图表和添加新警报。

  • 使max_bytes_before_external_sort限制依赖于查询总内存消耗(原为单排序线程块字节数),新增min_external_sort_block_bytes控制磁盘块大小。

  • 支持MergeTree排序键和跳数索引中使用子列。

  • system.server_settings添加dictionaries_lazy_loadwait_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_numconcurrent_threads_soft_limit_num_ratio_to_cores可不重启服务器更改。

  • formatReadable函数添加扩展数值类型(Decimal、大整数)支持。

  • 为元组列字段启用列不敏感匹配。

  • 支持PostgreSQL有线协议的TLS。

  • 改进无法追加文件的File表的错误消息。

  • 当终端中请求输出二进制格式(如Native、Parquet、Avro)时询问确认。

  • BFloat16数据类型正式生产就绪。

  • PrettyVertical格式中高亮尾随空格提升清晰度,由output_format_pretty_highlight_trailing_spaces控制。

  • 默认截断Pretty格式中过长列名,由output_format_pretty_max_column_name_width_cut_tooutput_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验证INNOT 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_leastrows_before_aggregation,正确打印部分结果后的异常,进度含经过纳秒,结束时发出最终进度事件,查询运行期间进度打印频率不超过interactive_delay设置值。

  • 即使HTTP响应压缩也尽快发送到达的数据包,使浏览器能接收进度包和压缩数据。

  • 无需重启服务器动态重载max_remote_read_network_bandwidth_for_servemax_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_msmax_postpone_time_for_failed_replicated_fetches_msmax_postpone_time_for_failed_replicated_merges_msmax_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。

  • 升级librdkafka2.8.0,改进Kafka表关闭序列,减少表删除和服务器重启延迟。engine=Kafka不再显式离开消费者组,消费者在session_timeout_ms(默认45秒)不活动后自动移除。

  • 避免readbufferfroms3和其他远程读取缓冲区的过量分配,内存消耗减半。

  • 支持从View读取JSON类型和子列。

  • 添加将UInt128转换为IPv6的支持,允许对IPv6进行bitAnd操作和算术运算并转换回IPv6。

  • information_schema.tables添加index_length_column列提升与MySQL兼容性。

  • 引入两个新指标:TotalMergeFailuresNonAbortedMergeFailures,用于检测短时间内过多合并失败情况。

  • 修复路径样式中未指定键时的S3 URI解析。

  • 修正BlockActiveTimeBlockDiscardTimeBlockWriteTimeBlockQueueTimeBlockReadTime异步指标的错误值(原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中的分区修剪。

  • 支持ClickHouseSSH协议的基于密码认证。

  • system.warnings添加长时间运行变异的动态警告。

  • CPU严重过载时断开连接,基于等待时间与繁忙时间比率决定,当比率在min_os_cpu_wait_time_ratio_to_drop_connectionmax_os_cpu_wait_time_ratio_to_drop_connection之间时概率断开查询。

  • 支持Hive分区中的空值。

bug修复

  • 修复了带有SELECT EXCEPT查询的参数化视图。

  • 分析器:修复连接中列类型提升后的列投影名称。

  • 物化视图可能启动得太晚,例如在流向它的Kafka表之后。

  • 在启用analyzer_compatibility_join_using_top_level_identifier时修复了列名冲突情况下的逻辑错误。

  • 修复了在多个异步(带有alter_sync = 0RENAME COLUMNADD 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子句中具有常量值隐式转换的查询;带有LIMITGROUP BY的查询。

  • 修复了不同JSON类型之间的转换。现在通过转换为自String的简单转换来执行。效果较差但100%准确。

  • 修复了在Interval转换期间Dynamic类型的逻辑错误。

  • 修复了JSON解析错误时的列回滚。

  • 修复了使用常量别名列连接时的“bad cast”错误。

  • 不允许在物化视图的PREWHERE中使用视图和目标表中类型不同的列。

  • 修复了在解析Variant列的错误二进制数据期间的逻辑错误。

  • parquet批处理大小设置为0时抛出异常。

  • 修复了紧凑部分中基本格式的变体判别器的反序列化。

  • complex_key_ssd_cache类型的字典现在拒绝零或负的block_sizewrite_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中使用DynamicJSON类型。

  • 修复了JSON类型解析中重复路径的检查。

  • 修复了SecureStreamSocket连接问题。

  • 修复了包含数据的普通可重写磁盘的加载。

  • 修复了MergeTreeWide部分的动态子列发现中的崩溃。

  • 仅对初始创建查询验证表名的长度。不要对次要创建验证此操作以避免向后兼容性问题。

  • 修复了在具有稀疏列的表的几种情况下的Block structure mismatch错误。

  • 修复了Logical Error: Can't set alias of * of Asterisk on alias的两种情况。

  • 修复了为azure blob存储应用use_native_copyallow_azure_native_copy设置的问题,并更新为仅在凭据匹配时使用本机复制。

  • 修复了重命名Atomic数据库时使用不正确路径的问题。

  • 修复了使用其他列按JSON列排序。

  • 在禁用use_hedged_requestsallow_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存储中DateTimeDateTime64的文本表示。

  • 允许在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

  • 修复了在带有USINGJOIN中解析表函数中的星号匹配符时的逻辑错误。

  • 修复了Iceberg元数据文件缓存的内存记帐。

  • 修复了带有可空分区键的错误分区。

  • 修复了当源表在启动器上不存在时,带有下推谓词的分布式查询的“Table does not exist”错误。

  • 修复了带有命名窗口的嵌套函数中的逻辑错误。

  • 修复了可空和浮点列的极值。

  • 修复了从system.tables查询时可能的崩溃(可能在内存压力下)。

  • 修复了对于文件压缩从其文件扩展名推断的文件,原子重命名与截断的问题。

  • 修复了“ErrorCodes::getName”。

  • 修复了用户无法在没有所有表权限的情况下列出统一目录中的表的错误。现在所有表都正确列出,尝试从受限表读取将抛出异常。

  • 忽略来自数据湖目录在SHOW TABLES查询中的错误和意外响应。

  • 修复了在JSONExtractJSON类型解析中从整数解析DateTime64的问题。

  • 在模式推断缓存中反映date_time_input_format设置。

  • 修复了如果在查询开始后但在列发送之前表被DROP,则在INSERT时崩溃的问题。

  • 修复了quantileDeterministic中未初始化值的用法。

  • 修复了用于磁盘事务的metadatastoragefromdisk磁盘的硬链接计数管理。

  • 用户定义函数名称不会添加到system.query_log表中,与其他函数不同。新版本实现了如果在请求中使用了UDF,则将UDF名称添加到used_executable_user_defined_functionsused_sql_user_defined_functions两列之一。

  • 修复了通过http协议使用文本格式(JSONValues、...)和省略Enum字段插入时出现“Too large size ... passed to allocator”错误或可能的崩溃。

  • 修复了在推送到非MT MVINSERT块中出现稀疏列时的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问题)。

  • 修复了DatabaseReplicateddatabase_replicated_enforce_synchronous_settings=1时的问题。

  • 修复了LowCardinality(Nullable(...))类型的排序顺序。

  • 如果尚未从套接字完全读取请求,服务器不应保留HTTP连接。

  • 使标量相关子查询返回投影表达式的可空结果。修复相关子查询产生空结果集的情况。

  • 修复了在ATTACHReplicatedMergeTree期间出现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恢复。

  • 通过在隐式DateDateTime转换中强制饱和行为改进索引分析期间的日期时间转换,解决日期时间范围限制导致的潜在索引分析不准确。

  • 修复从s3存储和表函数读取时按_etag列过滤。

  • 修复旧分析器在JOIN ON表达式中使用IN (subquery)时的Not-ready Set is passed as the second argument for function 'in'错误。

  • 修复DynamicJSON列的准备压缩,某些情况下新类型可能插入共享variant/共享数据即使类型/路径限制未达到。

  • 检查类型二进制解码期间的损坏大小以避免过大分配。

  • 修复启用并行副本时从单副本集群读取的逻辑错误。

  • 修复数据竞争创建向量相似索引。

  • 修复字典源包含错误数据函数时的段错误。

  • 修复存储S3(Azure)Queue中失败插入的重试。

  • 修复启用optimize_functions_to_subcolumnstupleElement函数可能出现的错误。

  • 修复枚举全局后跟范围时的解析。

  • 修复非复制表的parallel_replicas_for_non_replicated_merge_tree在子查询中被忽略。

  • 修复任务无法调度时抛出std::logical_error的情况。

  • EXPLAIN SYNTAX中不解释查询以避免分布式查询处理阶段不正确的逻辑错误。

  • 修复Dynamic列中可能的数据不一致,如“Nested columns sizes are inconsistent with local_discriminators column size”逻辑错误。

  • 修复带FINALSAMPLE查询中的NOT_FOUND_COLUMN_IN_BLOCK,修复从CollapsingMergeTreeFINAL选择及启用FINAL优化时的错误结果。

  • 修复LIMIT BY COLUMNS中的崩溃。

  • 修复查询与投影定义完全相同时强制使用普通投影但未选择投影导致的错误。

  • 修复Dynamic/Object结构的反序列化,可能导致CANNOT_READ_ALL_DATA异常。

  • 从备份恢复部分时跳过metadata_version.txt

  • 修复S3Express支持损坏问题。

  • 允许CollapsingMergeTree表中合并具有无效符号列值的行。

  • 修复JSONEachRowWithProgress格式在部分结果后正确打印异常。