3.4.3.6 版本说明
发布时间:2026-10-24
| 版本类型 | 推荐升级对象 |
|---|---|
| 维护版本 | 使用流计算、虚拟表、订阅、taosX OPC DA 接入的用户 |
1. 版本亮点
- SQL Server 外部数据源:联邦查询可以登记本地部署的 SQL Server 2019 和 2022,查询其表和视图,并在虚拟表中引用。流计算可以把这些列和本地列一起计算。
- OPC DA 与 PI:OPC DA 点位任务可以使用 PI 兼容的质量码和数字状态映射。迁移工具可以把 PI 归档复刻到 PI 服务器,再按 OPC DA 回放并映射到已有 TDengine 表。
- 安全修复:会让 taosd 崩溃或越界访问的畸形元数据、WAL、查询、流计算和订阅输入会被拒绝。社区版中,未授权用户不能再管理用户和会话。Grafana 数据源插件升级了 kin-openapi。
2. 新特性
2.1 查询与流计算
- 联邦查询可以把本地部署的 SQL Server 2019 和 2022 登记为外部数据源,并查询其表和视图。说明见 联邦查询。
- 流计算可以使用引用 SQL Server 列的虚拟表,并与本地列混合计算。短引用和显式 database、schema 引用指向同一张远端表。动态重绑定后,已完成窗口的结果仍然保留。
- 每个流计算通知事件都增加
triggerTableName。按PARTITION BY tbname分组时,它是不带库名前缀的触发子表名。虚拟子表使用虚拟子表名。其余情况为空字符串。说明见 流式计算的通知机制。
2.2 订阅、数据接入与 taosExplorer
- 表订阅和库订阅新增参数
msg.consume.start.ts。只消费主键时间不早于该 Unix 毫秒时间戳的数据。默认0表示不过滤。列订阅不受影响。说明见 msg.consume.start.ts。 - OPC DA 点位任务支持 PI 兼容的质量码和数字状态映射。迁移工具可以把 PI 归档复刻到 PI 服务器,再按 OPC DA 回放并映射到已有 TDengine 表。说明见 OPC DA。
- 自部署 taosExplorer 的 SQL 编辑器可以设置本次执行的前端超时。默认 60 秒,范围为 1 至 3600 秒。请求超时会显示黄色警告,且不取消服务端仍在执行的查询。
3. 优化
3.1 查询
- 查询
information_schema.ins_tables并用table_name等值或IN过滤时,按表名索引定位目标表,不再扫描 vnode 中的全部表。 - 列数很大的虚拟表在建表和查询时按列号定位引用列,SQL 分析不再逐列反复扫描。
- 单表标签上的
SUM、AVG、COUNT,以及按标签分区的INTERVAL查询更快。 - 超级表上同时带
INTERVAL和LIMIT的查询可以使用INTERVAL_LIMIT()提示,在取到所需窗口后结束扫描。该提示没有参数,语句里不写则不生效。说明见 INTERVAL_LIMIT。 - 多数 BLOB 列查询更快。满足条件的
count(blob)重新使用块级预计算结果。部分中等长度的SELECTBLOB 可能变慢,内存占用也会增加。 - 超级表上按子表分组的
last_row查询在缓存扫描尚未结束时就开始输出,子表很多时更快返回。 - 不含 BLOB 列的查询不再逐行检查 BLOB 长度。
- 开启 DEBUG 日志时,标量计算不再为每个列参数写调试日志,
JOIN不再因这些日志变慢。 - 分组
last()查询不再在复用的扫描块上保留过期的空值标志。每条查询的 reader timing 日志从 INFO 降为 DEBUG。
3.2 流计算
- 流计算从外部表取计算数据时,按计算语句中的时间表达式确定范围。窗口连接只裁剪引用这些时间列的一侧。到期的
PERIOD窗口不再因空闲节流被跳过。 - 使用独立
SLIDING并设置IGNORE_NODATA_TRIGGER的流,不再为大段时间空档逐个生成空窗口。窗口结果不变,其他分组也不再被这段空档拖住。
3.3 客户端
libtaos.so不再依赖libtaosnative.so。只使用 WebSocket 时也可以单独加载客户端。
4. 问题修复
4.1 严重问题
- InfluxDB 连接器可能在读线程启动前退出。迁移任务被报为成功,但实际没有写入数据。影响版本:所有版本。
- 分组窗口流在某个分组于某个 vgroup 上没有有效输入时,仍可能输出空聚合。输出顺序错乱,流进入 Failed。影响版本:
v3.4.2.9至v3.4.2.14。 - 分配 TDB 空闲页时先改写页面再写入回滚日志。意外重启后空闲页链可能被写坏,再次分配时因非法页号退出。升级不会修复已经损坏的 TDB 文件,这类文件仍可能表现为超大文件或非法页号。影响版本:所有版本。
- 加密备份写满一个加密块后没有清空缓冲长度,后续写入可能重复输出旧数据,恢复时报 Invalid message。影响版本:
v3.4.3.3至v3.4.3.4。 v3.4.3.5拒绝v3.4.3.0至v3.4.3.4写出的流 checkpoint,报 Invalid message,流进入 Failed。本版本可以重新读取这些 checkpoint。影响版本:v3.4.3.5。- 虚拟表流在历史计算中,条件比较被过滤后为空的列时,taosd 崩溃。影响版本:
v3.3.0及后续版本。 - 虚拟超级表按源表标签分组聚合,且时间条件可以下推时,客户端崩溃。影响版本:
v3.4.0及后续版本。 - 流计算任务销毁时先释放数据缓存,再释放仍在使用该缓存的迭代器,taosd 在关闭阶段访问已释放内存。影响版本:
v3.3.8及后续版本。 - 流计算使用
%%trows,且窗口含变长列、行序与写入顺序不一致时,taosd 越界崩溃。影响版本:v3.3.8及后续版本。 - taosX 的 OPC UA 采集在订阅失败、重连或任务退出时未关闭会话。会话累积后,后续连接被拒绝,任务也无法再次启动。影响版本:所有版本。
- 短时间按 UID 反复查询
information_schema.ins_tables以获取虚拟子表名时,可能把 taosd 资源打满。影响版本:所有版本。
4.2 查询与虚拟表
- 虚拟表
SERIES的ALTER语句解析结束后不再泄漏别名、外部源名称和标签条件。重复执行不再持续占用客户端内存。 - 非 Windows 平台从源码构建 Arrow 时,内置 Thrift 使用项目自带的 OpenSSL 3.1.3,macOS 编译不再选中不兼容的 OpenSSL 4。
- 用户手册现在明确:
FIRST和LAST对非主键时间戳按有效时间线取值,不等价于按参数列ORDER BY ... LIMIT 1。 - 用户手册现在明确:用户和角色同时拥有同一类型权限时优先使用用户权限;用户未设置时,多个角色取更新时间较晚的权限。
4.3 流计算与虚拟表
- 单起始条件的
EVENT_WINDOW配置TRUE_FOR后,历史扫描结束时窗口尚未关闭但时长已经满足,也会发送历史 OPEN 通知。 - 显式事务中
CREATE STREAM新建输出超级表或NODELAY普通表时,语句成功返回后,当前事务即可看到该表。 - 虚拟表列改绑后,流计算重新部署若在 60 秒内没有完成,不再无限重试,而是返回明确错误并使流进入 Failed。60 秒内完成的重新部署行为不变。
- 流计算只使用虚拟表部分列时,改绑未使用的列不再补充计算 Reader 并引发不必要的重试。参与计算或出现在
WHERE中的列改绑后,仍会按需部署 Reader。 - 以虚拟超级表为源的流在解析标签引用时,不再重复向 mnode 获取库路由,也不再展开未使用的列引用。
4.4 存储、集群与订阅
- 0 级挂载多块磁盘时,WAL 保留策略和回滚会删除非主挂载盘上的 WAL 文件。这些文件不再使磁盘占用持续增长。
BALANCE VGROUP LEADER未能把某个 vgroup 加入平衡事务时,会记录该 vgroup、数据库和失败原因。- 快照恢复 vnode(包括
REDISTRIBUTE VGROUP)按文件时间和KEEP配置选择存储级别,不再把数据全部写到 0 级目录。 ONLY META或WITH META的超级表订阅,在元数据快照中按WHERE条件过滤子表。指定子表名时,不再把全部子表的建表事件推给消费者。- 未显式设置
session.timeout.ms的消费者,默认值由 12 秒改为 45 秒。心跳处理延迟时,消费者不再因此被移出消费组。 - 消费者退订与再均衡提交交错时,过期的再均衡结果不再把消费者改回就绪。刚退订的主题可以立即删除。
- 开启监控协议日志时,taosd 按内容大小估算多行 JSON 的行数,日志文件按
numOfLogLines正常切换并压缩。 - 日志文件已可写但无法把权限改为
0666时,taosd 和taos不再因此启动失败,而是沿用现有权限并给出警告。
4.5 写入、客户端、taosX 与 taosExplorer
- Windows 上创建或重启
XNODE时,xnoded 就绪探测的单次等待由 100 毫秒改为最多 3 秒。已经启动的 xnoded 不再被判为不可访问并被停止。 - Windows 上 taosd、taosAdapter、taosKeeper、taosX 和 taosExplorer 异常退出后,会按 10 秒、30 秒、90 秒、180 秒和 300 秒自动重启,最多五次,之后不再自动重启。
- taosdump 导入 AVRO 时,表结构预检查不再把刚创建的表误报为不存在。创建数据库失败会中止后续导入,创建子表时也会显示进度。
- Rust WebSocket 文档示例在 tokio 1.54 及以上版本创建数据库时,不再因零容量缓冲区断言而 panic。
- 经 taosX Agent 执行的任务,在 Agent 尚未连上时启动失败后不再一直停在排队中。Agent 恢复连接后会自动启动。
- taosExplorer 使用 pSpace 数据源时,点位列表为空会显示错误,不再弹出无文字的提示。Chrome、Edge 86 上,任务运行后的指标弹窗不再偏移,也可以滚动。
5. 安全
5.1 漏洞修复
见 安全公告。
- TMQ 客户端解码 ask-ep 响应时校验字段长度和剩余报文。超长 topic、数据库名和 FQDN 会被拒绝,不再造成客户端栈溢出。CWE-121。
- WAL 恢复不再把记录体内伪造的帧头当成新日志记录,也不会据此采用伪造索引并截断日志。非法记录长度不再导致 taosd 崩溃或恢复卡住。
- 查询执行和流计算解码数据块时,按计划列宽校验长度。非法块返回错误。正常查询结果不变。
ALTER STABLE在字段数组为空或长度不一致时不再继续处理,避免 mnode 崩溃。CREATE TSMA不再保存之后会被按错误类型读取的查询语法树。SHOW STABLES拼接 rollup 函数名时不再写出栈缓冲区。缺少运行时信息的流计算拉取请求不再导致 taosd 崩溃。CREATE STREAM拒绝节点类型不符或缺少必要子节点的客户端计算计划,也拒绝缺少名称、数据库或表名的请求。DROP XNODE JOB和REBALANCE XNODE JOB拒绝空值或缺少操作数的WHERE条件。嵌套的批量元数据请求会被拒绝,短于消息头的批次内容也不再被写入。CWE-674。查询information_schema.ins_dnode_variables时不再使用非法的系统表类型下标。- 创建超级表时,固定宽度列的长度必须落在该类型允许的范围内。非法长度会被拒绝,不再把越界的列宽写入订阅和流计算的数据块。
- snode 校验流计算 checkpoint、fetch、calc 和 drop 消息的长度、运行参数和任务类型,并拒绝畸形输入。
- 查询元数据和
EXPLAIN报文在使用前校验长度、计数和指针。SHOW CREATE输出增加边界检查。备份在建表语句超出缓冲区时改用回退生成。 - mnode 应用已提交的元数据记录时校验记录头的长度和类型,长度越界或绕过事务的直接写入会被拒绝。订阅相关的元数据解码会检查字符串长度和条目数量,对端提供的超长内容不再造成 mnode 堆溢出。
- 社区版对用户执行
GRANT或修改角色时,不再使用未初始化的用户对象。用户与会话管理补上权限检查,未授权用户不能再设置 TOTP 密钥、结束他人会话或修改角色。 SHOW VARIABLES不再返回对象存储访问串等敏感配置,包括已具备查看配置权限的用户。- 查询落盘的临时文件改为随机文件名、排他创建和仅所有者可读写,不再跟随
tempDir中预先放置的符号链接。CWE-59。 - Grafana 数据源插件将 kin-openapi 从 0.144.0 升级到 0.149.0。该升级修复 CVE-2026-100347(GHSA-fh4f-47mf-f2gj)、CVE-2026-100348(GHSA-mh7x-f8wq-4jhx)、CVE-2026-100351(GHSA-23vg-4cjm-66q5)、CVE-2026-100352(GHSA-rj39-cv6w-8wv7)、CVE-2026-100353(GHSA-vrcc-3ch7-hppw)和 CVE-2026-100354(GHSA-g8cf-rcjf-c8cf)。
- JDBCDemo 示例将 jackson-databind 从 2.18.9 升级到 2.18.10,修复 CVE-2026-83557(GHSA-gx83-3vf8-gh7j)。服务端行为不变。
5.2 安全加固
- 传输层对未认证报文加强校验,拒绝畸形端点集、超长 telemetry 地址、跨连接任务释放和非法消息类型。
- mnode 转发监控统计前会确认所声称的用户存在,并拒绝非法 JSON。
- 流计算心跳中的任务类型和状态在写入日志和
SHOW结果前会检查枚举范围。按消费组分配工作线程时,不再使用可能为负的下标。
6. 升级须知
6.1 升级路径
- 支持直接升级的源版本:
v3.3.7及后续版本。 - 是否支持滚动升级:支持,范围为
v3.4.3.0至v3.4.3.5。 - 是否支持降级或回滚:支持,范围为
v3.4.3.0至v3.4.3.5。 - 客户端与连接器的最低配套版本:
v3.4.3.0。
6.2 行为变更
- 未设置
session.timeout.ms的消费者现在使用 45 秒。原先默认是 12 秒。 ONLY META或WITH META的超级表订阅,只向匹配WHERE的子表发送元数据建表事件。按名称过滤时,不再为每张子表都发送建表事件。SHOW VARIABLES不再返回对象存储访问串,包括原先可以查看该配置的用户。- 社区版中,未授权用户不能再设置 TOTP 密钥、结束他人会话或修改角色。
- 虚拟表列改绑后,重新部署超过 60 秒仍未完成时,流进入失败,不再无限重试。将该虚拟超级表上的流删除后重新创建即可。60 秒内完成的重新部署行为不变。
- 每个流计算通知事件现在都包含
triggerTableName。拒绝未知 JSON 字段的消费者需要接受该字段。 - 单起始条件且设置了
TRUE_FOR的EVENT_WINDOW,在历史扫描结束时窗口仍开着但时长已满足,会发送以前不会发送的历史 OPEN 通知。 - 快照恢复和
REDISTRIBUTE VGROUP按文件时间与KEEP选择存储级别,不再把文件全部写到 0 级。 - Windows 上 taosd、taosAdapter、taosKeeper、taosX 和 taosExplorer 在异常退出后会自动重启,最多五次。
- 部分中等长度的
SELECTBLOB 可能变慢,内存占用增加。满足条件的count(blob)更快。结果不变。
6.3 配置参数变更
两项订阅设置有变化。没有新增或移除服务端参数。
| 参数 | 作用 |
|---|---|
msg.consume.start.ts | 表订阅和库订阅只消费主键时间不早于该 Unix 毫秒时间戳的数据。默认 0,表示不过滤。列订阅忽略该参数。 |
session.timeout.ms | 消费者多久没有心跳就会被移出消费组。未显式设置时,默认现在是 45 秒,原先是 12 秒。 |
6.4 关键字变更
相对 v3.4.3.3,没有新增或移除保留关键字。INTERVAL_LIMIT 是查询提示,不是新的保留关键字。
6.5 系统表变更
本版本没有新增、移除或加长系统表和列。
6.6 依赖库变更
| 组件 | 依赖库 | v3.4.3.3 | v3.4.3.6 |
|---|---|---|---|
| taosAdapter | klauspost/compress | 1.18.6 | 1.18.7 |
| taosKeeper | golang.org/x/crypto | 0.56.0 | 0.58.0 |
| taosKeeper | golang.org/x/net | 0.57.0 | 0.61.0 |
| taosKeeper | golang.org/x/sys | 0.47.0 | 0.49.0 |
| taosKeeper | golang.org/x/text | 0.41.0 | 0.43.0 |
| taosX | zip | 2.4.2 | 9.0.5 |
| taosX | rustls-webpki | 0.103.15 | 0.103.16 |
| taosX | webpki-roots | 1.0.7 | 1.0.10 |
| taosX InfluxDB 插件 | netty | 4.1.118.Final | 4.1.101.Final |
| Rust 连接器 | rustls | 0.23.45 | 0.23.46 |
| Grafana 插件 tdengine-datasource | kin-openapi | 0.144.0 | 0.149.0 |
| Grafana 插件 tdengine-datasource | klauspost/compress | 1.17.9 | 1.18.7 |
| Grafana 插件 tdengine-datasource | jsonschema | 6.0.2 | 6.0.3 |
| Grafana 插件 tdengine-datasource | golang.org/x/net | 0.58.0 | 0.60.0 |
| Grafana 插件 tdengine-datasource | golang.org/x/sys | 0.47.0 | 0.48.0 |
| Grafana 插件 tdengine-datasource | golang.org/x/text | 0.41.0 | 0.42.0 |
| Grafana 插件 tdengine-datasource | dompurify | 3.4.13 | 3.4.16 |
| Grafana 插件 tdengine-datasource | axios | 1.18.0 | 不再依赖 |
6.7 升级前操作
从 v3.3.6 升级到本版本时,旧流计算不能直接沿用。未删除旧流、TSMA、snode 及其数据目录时,taosd 会启动失败。步骤见 流计算兼容性说明。已经在 v3.4.2.0 及之后按新流计算重建过的集群,滚动到本版本时不必重复上述步骤。
从 v3.4 以前的版本升级到本版本时,taosX 不会自动迁移已有任务。此前任务存在 SQLite 中,v3.4 起存在 mnode 中。升级前在 taosExplorer 中导出任务;升级后导入,再启动需要运行的任务。没有在升级前导出时,升级后的 taosExplorer 中看不到这些任务。步骤见 从 v3.4 以前的版本升级到 v3.4.x 时迁移任务。已经在 v3.4.0.0 及之后运行、任务已在 mnode 中的集群,滚动到本版本时不必重复上述步骤。
7. 已知问题
无。
8. 下载
安装包从 TDengine 下载中心 获取。安装包内附带 SPDX 与 CycloneDX 两种 SBOM,以及 SHA256。








