恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
ClickHouse v20.8.7.15 LTS 发布说明解析:SNI 安全接入支持与 11 项关键缺陷修复
首页
资讯中心
/
ClickHouse v20.8.7.15 LTS 发布说明解析:SNI 安全接入支持与 11 项关键缺陷修复
ClickHouse v20.8.7.15 LTS 发布说明解析:SNI 安全接入支持与 11 项关键缺陷修复
发布时间:2026/9/10 1:45:01
ClickHouse v20.8.7.15 LTS 发布说明解析SNI 安全接入支持与 11 项关键缺陷修复【免费下载链接】ClickHouseClickHouse® is a real-time analytics database management system项目地址: https://gitcode.com/GitHub_Trending/cli/ClickHouse本篇技术指南以 ClickHouse 官方发布说明 docs/changelogs/archive/v20.8.7.15-lts.md 为骨架逐条解析该 LTS 补丁版本在 TLS/SNI 安全接入、分布式查询取消、按序读取优化、聚合函数与 NULL 语义、S3 上传、Avro Schema Registry 等领域引入的 1 项改进与 11 项修复并结合当前仓库源码src/Client/Connection.cpp、src/Core/Settings.cpp、src/Core/FormatFactorySettings.h等给出底层实现证据与升级验证建议。读完本文你将能理解每个修复背后的根因、受影响的配置项与查询场景并能在升级到该版本后针对性地回归验证。版本定位v20.8.7.15 在 LTS 分支中的位置v20.8.7.15-lts 是 ClickHouse 20.8 LTS 稳定分支上的一个补丁版本官方发布说明将其与前一补丁版 v20.8.6.6-lts 对比属于典型的小步快跑式缺陷修复版本不引入破坏性功能全部变更均可安全回滚与验证。从变更构成看Improvement改进1 项聚焦 TLS 连接在 SNI 场景下的可用性Bug Fix修复11 项覆盖查询执行、优化器、聚合函数、存储层与安装脚本。该版本涉及的多项修复均通过Backported in机制从主分支移植而来体现了 LTS 分支对稳定性与兼容性的优先保障。核心改进支持 SNI 的 TLS 安全端点连接发布说明指出本次改进使clickhouse-server客户端能够连接要求SNIServer Name Indication的clickhouse-server安全端点典型场景是服务器部署在TLS 反向代理之后此时同一个 IP 端口上托管了多个主机名代理需要依据 TLS ClientHello 中的 SNI 字段来路由请求。从源码实现看该能力在 src/Client/Connection.cpp 中落地当建立安全连接时客户端会先解析 IP再通过setPeerHostName将主机名单独传入 TLS Hello 包使单个 IP 能服务多个主机同时代码注释明确说明这是为了让 SNI 生效而必须将 host 与已解析的 IP 分离传递。此外Connection还保留了tls_sni_override字段见 src/Client/Connection.h允许显式覆盖 SNI 字段而在连接复用的adoptSocket路径中src/Client/Connection.cpp同样以tls_sni_override.empty() ? host : tls_sni_override的方式把主机名透传给SecureStreamSocket::attach保证已建立连接的复用场景下 SNI 依然正确。实操提示若你的客户端连接报 TLS 协商失败或代理路由错误可检查是否处于多主机共享 IP 的代理部署并在连接配置中核对 host 与 SNI 覆盖值是否一致。查询执行稳定性修复本版本修复了多个会导致查询挂起、崩溃或返回错误结果的执行层问题下面按根因归类展开。异常时取消远程副本上的查询执行第一个修复保证查询在发生异常时更快结束如果异常发生会取消远程副本上的执行。在分布式查询中若某个分片失败而其他分片仍继续运行整个查询会长时间无法收敛该修复在异常路径上主动向远程副本下发取消信号缩短失败查询的整体耗时。修复ON CLUSTER查询在非 Leader ReplicatedMergeTree 表上永久挂起发布说明指出此前的ON CLUSTER查询在非 Leader 的 ReplicatedMergeTree 表上可能无限期挂起。修复保证了集群级 DDL/DML 在副本角色非 Leader 时也能正确协调完成不再因等待领导权而卡死。升级后建议对 ReplicatedMergeTree 集群执行一轮ON CLUSTER操作验证。修复带表达式的ORDER BY在按序优化下的执行问题该修复针对optimize_read_in_order/optimize_aggregation_in_order在max_threads 0且ORDER BY中包含表达式时的组合场景。这两个优化分别控制 MergeTree 表读取数据时的按排序键顺序读取优化与按序聚合优化定义与默认值见 src/Core/Settings.cppoptimize_read_in_order默认true按表排序键顺序读取数据optimize_aggregation_in_order默认false按对应顺序聚合以降低内存与排序开销。当ORDER BY使用表达式而非直接排序键时按序读取的边界判断可能失真导致结果错误或性能回退本次修复修正了该组合下的执行逻辑。回归建议在max_threads 0且ORDER BY含func(col)表达式的查询上对比修复前后的结果一致性。修复Illegal type of argument错误另一个与ORDER BY相关的修复消除了查询可能出现的Illegal type of argument错误对应 issue #16580涉及类型推断在排序路径上的边界场景。该问题表现为类型合法的查询因优化路径类型推导不完整而报错修复后恢复正常执行。聚合函数与 NULL 语义修复修复if后缀聚合函数导致的远程查询失败发布说明修复了使用if后缀聚合函数如sumIf、countIf等AggregateFunction*If家族时远程查询失败的问题对应 issue #16574、#16231。这类带条件分支的聚合在分布式场景下需要跨分片正确合并状态修复保障了其与远程执行协议的兼容性。修复无参any导致的崩溃修复了在无任何参数时调用any聚合导致的服务端崩溃。any(col)本应要求至少一个参数此前缺少参数的调用在聚合状态初始化阶段会触发崩溃修复后该误用得到妥善处理。回归建议构造SELECT any() FROM t形式的非法查询验证不再崩溃并确认返回合理的语法错误。修复TimeSeriesGroupSum导致的服务端崩溃TimeSeriesGroupSum是面向时间序列分组的聚合函数此前特定输入下会触发服务器崩溃issue #16950。本次修复加固了其分组状态的处理路径。修复多列元组IN与transform_null_in的组合问题修复了在启用transform_null_in设置时多列元组IN运算符如(a, b) IN ((1, 2), ...)处理错误的问题issue #15310。transform_null_in的完整语义与示例见 src/Core/Settings.cpp默认falseNULL值在IN比较中视为不等expr NULL恒为false设为1IN运算符中NULL NULL视为true即启用 NULL 值相等比较。例如对包含(idx2, iNULL)行的表执行WHERE i IN (1, NULL)transform_null_in 0时只返回i 1的行transform_null_in 1时同时返回i NULL的行。此前该设置在单列IN下正确但在多列元组 嵌套IN场景下展开逻辑有误本次修复统一了两种形态的语义。回归建议分别以单列与(col1, col2) IN (...)元组形式、在开关两种设置下对比结果集。存储层与外部系统修复S3无数据写入时中止 multipart upload修复了当WriteBufferFromS3没有任何数据写入时multipart upload 未正确 abort的问题。此前空写入可能导致 S3 上残留未完成的分片上传积累产生存储成本与碎片修复后在无数据写入路径上显式中止abort上传避免资源泄漏。该问题主要影响使用 S3 作为磁盘或备份目标、且存在空对象写入场景的部署。AvroSchema Registry 地址出错时重新解析 IP修复了format_avro_schema_registry_url指向的地址在出错时不重新解析 IP的问题。该设置用于 AvroConfluent 格式指定 Confluent Schema Registry 的 URL见 src/Core/FormatFactorySettings.h。此前一旦首次 DNS 解析失败后续即使 DNS 已恢复仍持续失败修复后会在错误发生时重新解析提升对注册表短暂不可达场景的韧性。与 Schema Registry 通信相关的配套设置还包括format_avro_schema_registry_connection_timeout默认 1 秒连接超时format_avro_schema_registry_send_timeout/receive_timeout默认 1 秒收发超时format_avro_schema_registry_max_retries默认 5可设为 0 禁用重试format_avro_schema_registry_retry_initial_backoff_ms默认 100ms指数退避且上限 10 秒。这些设置可从源码确认默认值与取值范围便于在低可用性网络环境中调优。运维与安装脚本修复安装脚本始终在配置目录创建子目录修复了安装脚本在使用自定义配置的 Docker 构建场景下可能无法在配置目录中创建子目录的问题。此前特定自定义配置布局会导致目录缺失进而引发运行时告警或启动异常修复后安装脚本保证配置目录层级总是被完整创建。涉及安装逻辑的参考实现位于 docker/server 与 programs/install 相关目录Docker 构建自定义配置时可结合该修复验证目录布局。升级与回归验证建议v20.8.7.15-lts 作为 LTS 补丁版本升级路径平滑建议按以下清单回归验证本次变更TLS 接入在 TLS 代理后部署场景验证带 SNI 的安全连接与连接复用是否正常分布式查询构造失败分片查询验证远程副本取消对 ReplicatedMergeTree 执行ON CLUSTER操作验证不再挂起优化器在max_threads 0且ORDER BY含表达式时对比optimize_read_in_order/optimize_aggregation_in_order的查询结果聚合函数回归*If后缀聚合、无参any、TimeSeriesGroupSum场景NULL 语义在单列与多列元组两种形态下回归transform_null_in开关行为外部系统检查 S3 空对象写入无残留未完成分片验证 Avro Schema Registry 在 DNS 抖动后能自动恢复。若需核对本版本与相邻版本的差异可在 docs/changelogs/archive 目录下对比 v20.8.6.6-lts 与 v20.8.7.15-lts 两份发布说明相关设置的完整定义与默认值均可在 src/Core/Settings.cpp 与 src/Core/FormatFactorySettings.h 中直接检索确认。【免费下载链接】ClickHouseClickHouse® is a real-time analytics database management system项目地址: https://gitcode.com/GitHub_Trending/cli/ClickHouse创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考