跳到主要内容

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) 重新使用块级预计算结果。部分中等长度的 SELECT BLOB 可能变慢,内存占用也会增加。
  • 超级表上按子表分组的 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 在异常退出后会自动重启,最多五次。
  • 部分中等长度的 SELECT BLOB 可能变慢,内存占用增加。满足条件的 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.3v3.4.3.6
taosAdapterklauspost/compress1.18.61.18.7
taosKeepergolang.org/x/crypto0.56.00.58.0
taosKeepergolang.org/x/net0.57.00.61.0
taosKeepergolang.org/x/sys0.47.00.49.0
taosKeepergolang.org/x/text0.41.00.43.0
taosXzip2.4.29.0.5
taosXrustls-webpki0.103.150.103.16
taosXwebpki-roots1.0.71.0.10
taosX InfluxDB 插件netty4.1.118.Final4.1.101.Final
Rust 连接器rustls0.23.450.23.46
Grafana 插件 tdengine-datasourcekin-openapi0.144.00.149.0
Grafana 插件 tdengine-datasourceklauspost/compress1.17.91.18.7
Grafana 插件 tdengine-datasourcejsonschema6.0.26.0.3
Grafana 插件 tdengine-datasourcegolang.org/x/net0.58.00.60.0
Grafana 插件 tdengine-datasourcegolang.org/x/sys0.47.00.48.0
Grafana 插件 tdengine-datasourcegolang.org/x/text0.41.00.42.0
Grafana 插件 tdengine-datasourcedompurify3.4.133.4.16
Grafana 插件 tdengine-datasourceaxios1.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。