3.4.3.9 版本说明
发布时间:2026-11-02
| 版本类型 | 推荐升级对象 |
|---|---|
| 月度版本 | 使用联邦查询、流计算、虚拟表、taosX OPC DA 或 Kepware 接入的用户 |
1. 版本亮点
- 联邦查询:Linux 上可以查询 SQL Server 和 Oracle。Windows 上可以查询 SQL Server、MySQL、PostgreSQL 和 InfluxDB。外部表和虚拟表的外部源都可以使用这些数据源。
- Neuron:taosExplorer 可以把 Neuron 或 NeuronEX 采集的数据经 eKuiper 写入 TDengine,并在数据采集代理中完成接入、刷新和监控。
- Kepware:taosExplorer 和 taosX 可以接入 Kepware Server 7.1,扫描 OPC UA 点位,并以订阅或轮询写入选定数据库。
- 安全修复:会让 taosd 崩溃或越界访问的畸形元数据、WAL、查询、流计算、订阅和同步输入会被拒绝。
2. 新特性
2.1 查询、流计算与联邦查询
- 联邦查询可以把本地部署的 SQL Server 2019 和 2022 登记为外部数据源,并查询其表和视图。Linux 上还可以登记 Oracle。Windows 上可以登记 MySQL、PostgreSQL、InfluxDB 和 SQL Server。外部表和虚拟表的外部源都支持这些类型。说明见 联邦查询。
- 流计算可以使用引用 SQL Server 列的虚拟表,并与本地列混合计算。短引用和显式 database、schema 引用指向同一张远端表。动态重绑定后,已完成窗口的结果仍然保留。
- 新增聚合函数
BIT_DURATION,统计整型或布尔测点按位掩码处于指定状态的持续时长,可用于窗口和流计算。自v3.4.3.7起可用。说明见 BIT_DURATION。 SHOW CREATE TABLE、SHOW CREATE STABLE、SHOW CREATE VTABLE和SHOW CREATE RSMA可以带FULL。带FULL时用 BLOB 返回完整建表语句,不再按 65535 字节截断。不带FULL时仍返回截断后的 VARCHAR。说明见 SHOW CREATE。- 每个流计算通知事件都增加
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 可以把 Neuron 或 NeuronEX 采集的数据经 eKuiper 写入 TDengine,并在数据写入的数据采集代理中完成接入、刷新和监控。说明见 Neuron。
- taosExplorer 和 taosX 可以接入 Kepware Server 7.1。可以扫描 OPC UA 点位,选择订阅或轮询,写入选定数据库。安装时也可以接入。说明见 Kepware。
- taosX 节点故障后,Agent 先确认旧任务已经退出,再由接管节点启动同一任务。过期的启动、停止和取消不能把任务抢回去。无法确认旧任务已退出时,接管失败,不会同时运行两份。
- 自部署 taosExplorer 的 SQL 编辑器可以设置本次执行的前端超时。默认 60 秒,范围为 1 至 3600 秒。请求超时会显示黄色警告,且不取消服务端仍在执行的查询。
2.3 客户端与 TDgpt
- 原生客户端可以在公开 API 边界录制连接、SQL、STMT 和 schemaless 调用。
workloadRecord默认0,只在客户端启动时读取;设为1后需要重启该客户端才开始录制。workloadRecordDir默认是日志目录下的workload。workloadRecordBufferSize默认 256,单位 MB,范围为 16 至 4096。写盘跟不上时会阻塞该客户端的业务线程。taosreplay只在 Linux 上从源码编译,不进入安装包。 - TDgpt 增加主成分分析 PCA、偏最小二乘 PLS,以及 KMeans、DBSCAN、GMM 聚类。聚类接口目前只能通过 REST 调用,不能通过 SQL 调用。
3. 优化
3.1 查询
- 查询
information_schema.ins_tables并用table_name等值或IN过滤时,按表名索引定位目标表,不再扫描 vnode 中的全部表。 - 按表名查询
information_schema.ins_tags时直接读取该子表的标签。库名、超级表名和表名上的等值条件也会提前筛选,子表很多时不再遍历全部元数据。(#35778) - 查询
information_schema.ins_databases时,语句没有请求ntables就不再为了统计表数扫描全部 vgroup。列和ntables的数值不变。 - 列数很大的虚拟表在建表和查询时按列号定位引用列,SQL 分析不再逐列反复扫描。
- 虚拟超级表查询时,客户端保存列引用和标签引用的内存更少。
- 查询和流计算按顺序遍历节点列表。节点很多时,开销随节点数线性增长。
- 单表标签上的
SUM、AVG、COUNT,以及按标签分区的INTERVAL查询更快。 - 超级表上同时带
INTERVAL和LIMIT的查询可以使用INTERVAL_LIMIT()提示,在取到所需窗口后结束扫描。该提示没有参数,语句里不写则不生效。说明见 INTERVAL_LIMIT。 - 多数 BLOB 列查询更快。满足条件的
count(blob)重新使用块级预计算结果。部分中等长度的SELECTBLOB 可能变慢,内存占用也会增加。 - 超级表上按子表分组的
last_row查询在缓存扫描尚未结束时就开始输出,子表很多时更快返回。(#35795) - 不含 BLOB 列的查询不再逐行检查 BLOB 长度。(#35745)
- 开启 DEBUG 日志时,标量计算不再为每个列参数写调试日志,
JOIN不再因这些日志变慢。(#35775) - 分组
last()查询不再在复用的扫描块上保留过期的空值标志。每条查询的 reader timing 日志从 INFO 降为 DEBUG。(#35737) - 查询计划解码时复用已经解析的时区句柄,不再为同一进程反复加载时区数据。(#35781)
- 区间查询的分组键只是表名或单个标签时,扫描块只保留一份分组键,不再逐行复制。查询结果不变。
- 联邦查询已用 PostgreSQL 18.6 做测试验证,支持范围仍是 14 及以上。说明见 外部数据库版本。
3.2 流计算与 XNode
- 流计算从外部表取计算数据时,按计算语句中的时间表达式确定范围。窗口连接只裁剪引用这些时间列的一侧。到期的
PERIOD窗口不再因空闲节流被跳过。 - 使用独立
SLIDING并设置IGNORE_NODATA_TRIGGER的流,不再为大段时间空档逐个生成空窗口。窗口结果不变,其他分组也不再被这段空档拖住。(#35785) - XNode 异常或 Agent 重新连接后,仍应继续运行的 Agent 任务会自动恢复。
xnodeDsnProtection、xnodeDsnPublicKeyFile和xnodedDsnPrivateKeyFile可以用 SQL 修改,结果会保存,重启 taosd 后生效。xnodeDsnProtection是全局参数,默认0,使用ALTER ALL DNODES修改,按单个 dnode 修改会失败。两个密钥路径是局部参数,使用ALTER DNODE修改。taosExplorer 和 taosX 的私钥路径仍通过各自的配置文件设置。
3.3 客户端与 taosExplorer
libtaos.so不再依赖libtaosnative.so。只使用 WebSocket 时也可以单独加载客户端。- taosExplorer 不再内置用户手册。中文和英文手册分别安装。未安装对应语言的手册时,帮助入口打开官网,不再返回 404。
- taosX 的数据源插件改为单独安装。主机没有对应插件时,不能在该主机上运行这种数据源任务。taosExplorer 仍列出该数据源,并提示缺少的插件和安装包。
- taosExplorer 浏览器标签页使用与官方文档一致的 favicon。
4. 问题修复
4.1 严重问题
- InfluxDB 连接器可能在读线程启动前退出。迁移任务被报为成功,但实际没有写入数据。影响版本:所有版本。(#35729)
- 分组窗口流在某个分组于某个 vgroup 上没有有效输入时,仍可能输出空聚合。输出顺序错乱,流进入 Failed。影响版本:
v3.4.2.9至v3.4.2.14。(#35786) - 分配 TDB 空闲页时先改写页面再写入回滚日志。意外重启后空闲页链可能被写坏,再次分配时因非法页号退出。升级不会修复已经损坏的 TDB 文件,这类文件仍可能表现为超大文件或非法页号。影响版本:所有版本。(#35767)
- 加密备份写满一个加密块后没有清空缓冲长度,后续写入可能重复输出旧数据,恢复时报 Invalid message。影响版本:
v3.4.3.3至v3.4.3.4。(#35769) v3.4.3.5拒绝v3.4.3.0至v3.4.3.4写出的流 checkpoint,报 Invalid message,流进入 Failed。本版本可以重新读取这些 checkpoint。影响版本:v3.4.3.5。(#35749)- 虚拟表流在历史计算中,条件比较被过滤后为空的列时,taosd 崩溃。影响版本:
v3.3.0及后续版本。(#35762) - 虚拟超级表按源表标签分组聚合,且时间条件可以下推时,客户端崩溃。影响版本:
v3.4.0及后续版本。(#35794) - 流计算任务销毁时先释放数据缓存,再释放仍在使用该缓存的迭代器,taosd 在关闭阶段访问已释放内存。影响版本:
v3.3.8及后续版本。(#35783) - 流计算使用
%%trows,且窗口含变长列、行序与写入顺序不一致时,taosd 越界崩溃。影响版本:v3.3.8及后续版本。(#35784) - taosX 的 OPC UA 采集在订阅失败、重连或任务退出时未关闭会话。会话累积后,后续连接被拒绝,任务也无法再次启动。影响版本:所有版本。(#35752)
- 短时间按 UID 反复查询
information_schema.ins_tables以获取虚拟子表名时,可能把 taosd 资源打满。影响版本:所有版本。(#35751) - 状态窗口流的外层过滤条件在结果写入前生效。不满足条件的窗口不再输出。历史回填结束时,未达到
TRUE_FOR时长的尾窗不再触发计算。影响版本:v3.3.7及后续版本。(#35790) - 流被删除后用同名重建时,过期的部署动作不再继续占用部署状态。部署失败和计算任务卸载时也会释放尚未完成的管理状态,taosd 内存不再因此持续增长。影响版本:
v3.3.7及后续版本。(#35782) - taosd 启动较慢时,流心跳不再在消息回调注册前发出,启动过程不再因此崩溃。影响版本:
v3.3.7及后续版本。(#35741) - 监控指标标签值含逗号、等号、引号或大括号时,taosKeeper 报告不再把 taosd 打崩溃。写出标签时这些字符替换为下划线。影响版本:
v3.3.7及后续版本。(#35758) - 虚拟表流设置
PRE_FILTER且 TAG 使用引用写法时,不再把源表全部裁掉。修复前流状态可以是 RUNNING,但没有输出。影响版本:v3.3.8及后续版本。(#35760) - 虚拟表流在运行中变更虚拟表后,不再反复重试虚拟表补丁并把 trigger 卡在 Invalid parameters。影响版本:
v3.3.8及后续版本。(#35763) - 虚拟表流开启
NODELAY_CREATE_SUBTABLE时,初始化响应交错不再使流停在 Retry needed 或 Internal error。结果子表仍会提前创建。影响版本:v3.3.8及后续版本。(#35764) - 流重启或重新部署后,读取位置对应的 WAL 已被回收时,不再反复报 WAL log does not exist 并持续无输出,改为从仍保留的 WAL 继续处理。影响版本:
v3.3.7及后续版本。(#35757) - 流计算实时进度已经推进且自动重算队列为空之后,再删除数据且没有后续写入时,删除重算不再一直挂起,结果表不再因此缺行。影响版本:
v3.4.2及后续版本。(#35788) - taosX OPC 异常退出并重启后,监控指标上报或 OPC DA 初始连接阻塞时,任务不再一直处于 running 且没有数据写入。影响版本:
v3.4.2及后续版本。(#35753) - 流计算读取虚拟子表上直接添加的数据列时,引用可能缺失,结果为空或为 NULL。删除未使用的自有源表后,继承列计算不再因此失败。影响版本:
v3.4.3及后续版本。(#35756) - 以虚拟表为数据源的流计算,在引用的 TAG 为空、短于类型头,或定长 TAG 为 NULL 时,不再因此中断分组,结果表可以继续产出。影响版本:
v3.4.3及后续版本。(#35747)
4.2 查询与虚拟表
- 虚拟表
SERIES的ALTER语句解析结束后不再泄漏别名、外部源名称和标签条件。重复执行不再持续占用客户端内存。(#35791) - 虚拟表在
ORDER BY ts且带LIMIT时,会下推排序方向和行数上限,不再先全量扫描再额外排序。(#35761) - 虚拟表列比源列窄时,
UNION和UNION ALL按较宽的列输出,不再报输入无效。(#35793) DECIMAL转为VARCHAR、BINARY或BLOB时,目标宽度不足以容纳完整文本就不再越界读取内存。(#35750)- SQL Server 停服后,联邦查询按配置的
connect_timeout_ms返回失败,不再被驱动内部重试拖过这个时间。正常连接不受影响。(#35733) - 非 Windows 平台从源码构建 Arrow 时,内置 Thrift 使用项目自带的 OpenSSL 3.1.3,macOS 编译不再选中不兼容的 OpenSSL 4。(#35797)
- 用户手册现在明确:
FIRST和LAST对非主键时间戳按有效时间线取值,不等价于按参数列ORDER BY ... LIMIT 1。(#35765) - 用户手册现在明确:用户和角色同时拥有同一类型权限时优先使用用户权限;用户未设置时,多个角色取更新时间较晚的权限。(#35766)
- 两侧已按主键时间有序、另有普通列或标签等值条件的普通 Inner Join,默认改回 Merge Join,不再因附加等值条件改走 Hash Join。结果集合不变。(#35746)
4.3 流计算与虚拟表
- 单起始条件的
EVENT_WINDOW配置TRUE_FOR后,历史扫描结束时窗口尚未关闭但时长已经满足,也会发送历史 OPEN 通知。(#35771) - 显式事务中
CREATE STREAM新建输出超级表或NODELAY普通表时,语句成功返回后,当前事务即可看到该表。(#35780) - 虚拟表列改绑后,流计算重新部署若在 60 秒内没有完成,不再无限重试,而是返回明确错误并使流进入 Failed。60 秒内完成的重新部署行为不变。(#35792)
- 流计算只使用虚拟表部分列时,改绑未使用的列不再补充计算 Reader 并引发不必要的重试。参与计算或出现在
WHERE中的列改绑后,仍会按需部署 Reader。(#35755) - 以虚拟超级表为源的流在解析标签引用时,不再重复向 mnode 获取库路由,也不再展开未使用的列引用。(#35754)
- 创建未配置
FILL_HISTORY的虚拟表流后,Trigger 线程不再因为立即初始化历史上下文并按分组全量匹配虚拟表而占满 CPU。(#35768) - 流计算外部数据源的拉取请求在响应被丢弃时会释放句柄,不再因此泄漏内存。(#35787)
- 超级表心跳响应或表元数据解码失败时,释放已经解析的部分数据,这条异常路径不再泄漏内存。(#35796)
4.4 存储、集群与订阅
- 0 级挂载多块磁盘时,WAL 保留策略和回滚会删除非主挂载盘上的 WAL 文件。这些文件不再使磁盘占用持续增长。(#35726)
BALANCE VGROUP LEADER未能把某个 vgroup 加入平衡事务时,会记录该 vgroup、数据库和失败原因。(#35727)- 快照恢复 vnode(包括
REDISTRIBUTE VGROUP)按文件时间和KEEP配置选择存储级别,不再把数据全部写到 0 级目录。(#35777) - 对不存在的
vgroup_id执行SPLIT VGROUP时返回 vgroup 不存在,不再返回成功。(#35772) - 带仲裁的双副本库执行
SPLIT后,SHOW ARBGROUPS去掉被拆分 vgroup 的仲裁组,并为拆出的两个 vgroup 各建一个新的仲裁组。(#35774) - 仲裁器指派 vnode leader 时始终校验成员令牌。
force不能再跳过校验。未通过校验的请求不能把 vnode 设为指定 leader。(#35748) ONLY META或WITH META的超级表订阅,在元数据快照中按WHERE条件过滤子表。指定子表名时,不再把全部子表的建表事件推给消费者。(#35730)- 未显式设置
session.timeout.ms的消费者,默认值由 12 秒改为 45 秒。心跳处理延迟时,消费者不再因此被移出消费组。(#35773) - 消费者退订与再均衡提交交错时,过期的再均衡结果不再把消费者改回就绪。刚退订的主题可以立即删除。(#35789)
- 开启监控协议日志时,taosd 按内容大小估算多行 JSON 的行数,日志文件按
numOfLogLines正常切换并压缩。(#35776) - 日志文件已可写但无法把权限改为
0666时,taosd 和taos不再因此启动失败,而是沿用现有权限并给出警告。(#35779)
4.5 写入、客户端、taosX 与 taosExplorer
- C/C++ 客户端使用 STMT2 参数绑定写入时不再泄漏内存。固定表且未开启 interlace 时,执行失败后的下一次成功写入仍保留已绑定的固定标签。(#35728)
- schemaless 在超级表已存在时再次创建,不能再修改已有列和标签的类型、缩短其宽度或删除它们。变长类型仍可加宽。taosX 同样不能改类型或缩短宽度,但跨集群复制仍可删除列和标签。(#35738)
- taosdump 备份改为使用
SHOW CREATE ... FULL。列数很多的虚拟表不再因为建表语句被截断而漏表。导入时也不再因为截断报 Row length exceeds max length。(#35743、#35744) - Windows 上创建或重启
XNODE时,xnoded 就绪探测的单次等待由 100 毫秒改为最多 3 秒。已经启动的 xnoded 不再被判为不可访问并被停止。(#35735) - Windows 上 taosd、taosAdapter、taosKeeper、taosX 和 taosExplorer 异常退出后,会按 10 秒、30 秒、90 秒、180 秒和 300 秒自动重启,最多五次,之后不再自动重启。(#35734)
- taosdump 导入 AVRO 时,表结构预检查不再把刚创建的表误报为不存在。创建数据库失败会中止后续导入,创建子表时也会显示进度。(#35742)
- Rust WebSocket 文档示例在 tokio 1.54 及以上版本创建数据库时,不再因零容量缓冲区断言而 panic。(#35732)
- 经 taosX Agent 执行的任务,在 Agent 尚未连上时启动失败后不再一直停在排队中。Agent 恢复连接后会自动启动。(#35759)
- taosExplorer 使用 pSpace 数据源时,点位列表为空会显示错误,不再弹出无文字的提示。Chrome、Edge 86 上,任务运行后的指标弹窗不再偏移,也可以滚动。(#35739)
- TDgpt 模型在容器重启或 worker 被结束后,不再卡在 started 并使加载接口持续返回 500。启动时和请求前会按实际进程和已安装文件校正状态。(#35736)
- OPC DA 采集的固定长度字符串默认只保留首个 NUL 之前的内容,不再把 NUL 及其后的字符写入 TDengine。OPC UA 不受影响。原始数据 dump 仍保存截断前的完整值。(#35731)
- taosX 写入每批数据前不再每次查询目标库的
KEEP和 precision。同一任务在缓存有效期内复用上一次的结果,默认 1 小时。(#35740)
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)。服务端行为不变。
- 创建和修改 vnode 时校验副本数和学习副本数的上下界,也拒绝引用未注册 dnode 的 vgroup 配置。超出范围的请求被拒绝,不再造成栈溢出。TD-SEC-2026-034,GHSA-c6c6-fm4m-fj5w。CVE 尚未分配。安全公告页还没有这一条。
- dnode 拒绝非法管理消息和伪造的响应。超出动态范围的配置不再被应用。
- 同步超时和选举超时消息不再从网络接收。未认证的对端不能再靠这两条消息强迫重新选举,也不能再写入 Raft 日志。投票请求如果声称来自本节点,或在同一任期声称来自当前 leader,会被丢弃。领导者只按实际发给该副本的日志范围计票,伪造的确认不能再凑成多数派。指定仲裁组主副本必须通过权限检查。节点已经登记机器标识后,状态心跳必须带上相同的标识。
- 追加日志、快照发送和快照应答在读取字段前必须先装下完整消息头。声明的数据长度也不能超过帧内剩余字节。截断或超长的帧被拒绝,不再越界读取。这是 GHSA-q86r-32wm-qwpg 和 GHSA-xg67-9f8r-64v5 的后续修复。安全公告页还没有这两条的独立标题。
- 解码事务原始记录时按无符号范围检查字段长度。超长长度不再因整数回绕分配巨量内存并导致 mnode 崩溃。
- 创建超级表时,
DECIMAL和DECIMAL64列必须带有精度和范围。缺少这些信息的列会被拒绝,查询information_schema.ins_columns不再因此导致 mnode 崩溃。 - JSON 标签索引遇到超长列名时拒绝这次索引过滤。嵌套条件共用的过滤结果也只释放一次。
- 客户端在拷贝服务器返回的列宽、压缩长度和批消息长度之前先检查上限。超限则断开并报错,不再写穿本地缓冲区。标签、行数据和列数据在使用前按实际长度校验。
- 标量函数、聚合函数和 UDF 收紧长度与缓冲区校验。标量
AES_ENCRYPT改为使用完整的 16 字节初始化向量。读取修正前由SELECT写出的 CBC 密文时,AES_DECRYPT需要指定legacy。说明见 AES_DECRYPT。 - Python WebSocket 连接器将 rkyv 从 0.8.16 升级到 0.8.18,修复 RUSTSEC-2026-0233、RUSTSEC-2026-0234 和 RUSTSEC-2026-0235。rustls 从 0.23.45 升级到 0.23.46,rustls-webpki 从 0.103.14 升级到 0.103.16,修复 RUSTSEC-2026-0346、RUSTSEC-2026-0347、RUSTSEC-2026-0348、RUSTSEC-2026-0349 和 RUSTSEC-2026-0382。pyo3 从 0.17.3 升级到 0.29.3,修复 RUSTSEC-2026-0177(GHSA-chgr-c6px-7xpp)和 RUSTSEC-2025-0020(GHSA-pph8-gcv7-4qj5)。tokio 从 1.43.1 升级到 1.53.3。安装这个连接器需要 Python 3.8 及以上。
- Rust 连接器的 rustls-webpki 从 0.103.14 升级到 0.103.16,修复 RUSTSEC-2026-0382。event-listener 从 5.4.0 升级到 5.4.2,修复 RUSTSEC-2026-0221。
- TDgpt 将 Python 3.11 及以上的 keras 升级到 3.15.0,更早的 Python 升级到 3.12.3。3.12.3 修复 CVE-2026-12479(GHSA-gh82-f9x8-5frx)、CVE-2026-12480(GHSA-26c4-7vv6-867j)、CVE-2026-12481(GHSA-5gwj-m78q-7pq3)、CVE-2026-12482(GHSA-58hv-7753-xmfq)、CVE-2026-12484(GHSA-v2w2-w228-c444)和 CVE-2026-9335(GHSA-m8wh-29wm-52mv)。3.15.0 另外修复 CVE-2026-1462(GHSA-4f3f-g24h-fr8m)和 CVE-2026-12570(GHSA-74m6-m3xx-3vmj)。时序基础模型依赖将 pyarrow 升级到 23.0.1,修复 CVE-2026-25087(GHSA-rgxp-2hwp-jwgg)。
- taosX 将 anyhow 从 1.0.102 升级到 1.0.103(RUSTSEC-2026-0190),event-listener 5.4.1 升级到 5.4.2(RUSTSEC-2026-0221),tokio 从 1.52.1 升级到 1.53.3(RUSTSEC-2026-0386),libz-sys 从 1.1.28 升级到 1.1.31(RUSTSEC-2026-0418),zstd-sys 从 2.0.16 升级到 2.1.2(RUSTSEC-2026-0403)。这些公告没有 CVE 或 GHSA 编号。(#35770)
- taosX 的 OpenTSDB 插件将 Netty 从 4.1.118.Final 升级到 4.1.137.Final,修复 CVE-2026-75595。InfluxDB 插件将 bcprov-jdk18on 从 1.83 升级到 1.85,修复 CVE-2025-14813(GHSA-574f-3g2m-x479)。
- Python 连接器将 certifi 从 2026.2.25 升级到 2026.10.19,将 Python 3.10 及以上使用的 urllib3 从 2.7.0 升级到 2.8.0。同一次锁定里仍保留 urllib3 2.0.7。涉及 GHSA-6q48-6c7w-9gw2、CVE-2026-114134、PYSEC-2026-4175、PYSEC-2026-4176 和 PYSEC-2026-4177。
- taos-insight 将 dompurify 从 3.4.16 升级到 3.4.17,修复 GHSA-cg2g-xh64-v4q7。
5.2 安全加固
- 传输层对未认证报文加强校验,拒绝畸形端点集、超长 telemetry 地址、跨连接任务释放和非法消息类型。
- mnode 转发监控统计前会确认所声称的用户存在,并拒绝非法 JSON。
- 流计算心跳中的任务类型和状态在写入日志和
SHOW结果前会检查枚举范围。按消费组分配工作线程时,不再使用可能为负的下标。
6. 升级须知
6.1 升级路径
- 支持直接升级的源版本:
v3.3.7及后续版本。 - 是否支持滚动升级:支持,范围为
v3.4.3.0至v3.4.3.8。 - 是否支持降级或回滚:支持,范围为
v3.4.3.0至v3.4.3.8。 - 客户端与连接器的最低配套版本:
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)更快。结果不变。 - taosX 主程序包不再包含各数据源插件。使用前按数据源另行安装。taosExplorer 仍显示全部数据源;所选插件未安装时给出警告。任务可以在已安装该插件的 Agent 上运行。
- taosExplorer 如需打开本地手册,请另行安装中文或英文手册包。只安装一种语言时,另一种语言的帮助入口打开官网。
- taosX Agent 任务被其他 taosX 节点接管时,会先等待旧任务退出。无法确认退出时接管失败,不会同时运行两份。升级 Agent 后才有这层确认。
connect_timeout_ms现在限制整次 SQL Server 连接等待。停服时到期即返回连接失败,不再等待驱动默认的重试间隔。- 查询使用的会话时区规则在进程内首次加载后会被缓存,之后不再重新读取系统时区数据。运行期间升级系统 tzdata 后,需要重启 taosd 和客户端应用才能生效。
- schemaless 在超级表已存在时再次写入,不能修改已有列或标签的类型,不能缩短宽度,也不能删除列或标签。变长类型仍可加宽。taosX 跨集群复制仍可删除列和标签。
- 对不存在的 vgroup 执行
SPLIT VGROUP会返回错误,不再返回成功。 - 标量表达式里的
AES_ENCRYPT现使用完整的 16 字节初始化向量。读取修正前通过SELECT或INSERT INTO ... SELECT保存的 CBC 密文时,AES_DECRYPT需要传入原密钥、原 16 字节 IV,以及legacy。ECB 密文、INSERT ... VALUES生成的密文和修正后的密文仍使用原来的两参数或三参数调用。初始化向量长度不是 16 字节时返回参数错误。 - taosdump 备份改为执行带
FULL的SHOW CREATE。超过 65535 字节的建表语句会完整写入备份。 - taos-ws-py 的安装最低版本从 Python 3.7 改为 Python 3.8。Python 侧 API 签名不变。
- 监控指标标签值里的逗号、等号、引号和大括号会写成下划线。其余字符保持不变。
xnodeDsnProtection、xnodeDsnPublicKeyFile和xnodedDsnPrivateKeyFile现在可以用 SQL 修改。修改会保存,重启 taosd 后才改变运行行为。xnodeDsnProtection默认0。- 两侧已按主键时间有序、另有普通列或标签等值条件的普通 Inner Join,默认改回 Merge Join。结果集合不变。没有
ORDER BY时,行序可能与此前不同。 - OPC DA 字符串默认在首个 NUL 处截断后再写入。独立插件在
[collect.da]中设置truncate_at_nul = false可保留完整字符串。由 taosX 管理的任务使用数据源参数truncate_at_nul=false。修改后需要重启任务。未配置或设为true时保持截断。OPC UA 不受影响。 - taosX 缓存目标库的
KEEP和 precision,默认 3600 秒。缓存未到期时,修改数据库KEEP或 precision 不会立即作用于后续写入。
6.3 配置参数变更
客户端新增三项录制参数。taosX 新增一项缓存时间,OPC DA 新增一项字符串截断参数。
| 参数 | 作用 |
|---|---|
msg.consume.start.ts | 表订阅和库订阅只消费主键时间不早于该 Unix 毫秒时间戳的数据。默认 0,表示不过滤。列订阅忽略该参数。 |
session.timeout.ms | 消费者多久没有心跳就会被移出消费组。未显式设置时,默认现在是 45 秒,原先是 12 秒。 |
workloadRecord | 原生客户端是否录制公开 API 调用。默认 0,不录制。设为 1 后需要重启该客户端才开始录制。只在客户端启动时读取。 |
workloadRecordDir | 录制文件目录。未设置时使用日志目录下的 workload。目录不可用时录制保持关闭。 |
workloadRecordBufferSize | 录制缓冲,单位 MB。默认 256,范围为 16 至 4096。写盘跟不上时会阻塞该客户端的业务线程。 |
TAOSX_KEEP_PRECISION_CACHE_TTL_SECS | taosX 缓存目标库 KEEP 和 precision 的秒数。默认 3600。缓存未到期时,修改这两项不会立即作用于后续写入。非法值会回退到默认值。 |
truncate_at_nul | OPC DA 固定长度字符串是否在首个 NUL 处截断后再写入。未配置或 true 时截断,false 时保留完整字符串。独立插件写在 [collect.da],taosX 任务写在数据源参数里。修改后需要重启任务。OPC UA 不受影响。 |
6.4 关键字变更
没有新增或移除保留关键字。
6.5 系统表变更
本版本没有新增、移除或加长系统表和列。
6.6 依赖库变更
| 组件 | 依赖库 | v3.4.3.0 | v3.4.3.9 |
|---|---|---|---|
| taosAdapter | klauspost/compress | 1.18.6 | 1.18.7 |
| taosAdapter | golang.org/x/crypto | 0.56.0 | 0.57.0 |
| taosAdapter | golang.org/x/net | 0.57.0 | 0.60.0 |
| taosAdapter | golang.org/x/sys | 0.47.0 | 0.48.0 |
| taosAdapter | golang.org/x/text | 0.41.0 | 0.42.0 |
| 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 |
| Python 连接器 | certifi | 2026.2.25 | 2026.10.19 |
| Python 连接器 | urllib3 | 2.7.0 | 2.8.0 |
| taos-ws-py | rkyv | 0.8.16 | 0.8.18 |
| taos-ws-py | rustls | 0.23.45 | 0.23.46 |
| taos-ws-py | rustls-webpki | 0.103.14 | 0.103.16 |
| taos-ws-py | pyo3 | 0.17.3 | 0.29.3 |
| taos-ws-py | tokio | 1.43.1 | 1.53.3 |
| Rust 连接器 | rustls | 0.23.45 | 0.23.46 |
| Rust 连接器 | rustls-webpki | 0.103.14 | 0.103.16 |
| Rust 连接器 | event-listener | 5.4.0 | 5.4.2 |
| taosX | zip | 2.4.2 | 9.0.5 |
| taosX | rustls | 0.23.45 | 0.23.46 |
| taosX | rustls-webpki | 0.103.15 | 0.103.16 |
| taosX | webpki-roots | 1.0.7 | 1.0.10 |
| taosX | anyhow | 1.0.102 | 1.0.103 |
| taosX | event-listener | 5.4.1 | 5.4.2 |
| taosX | tokio | 1.52.1 | 1.53.3 |
| taosX | libz-sys | 1.1.28 | 1.1.31 |
| taosX | zstd-sys | 2.0.16+zstd.1.5.7 | 2.1.2+zstd.1.5.7 |
| taosX InfluxDB 插件 | netty | 4.1.118.Final | 4.1.101.Final |
| taosX InfluxDB 插件 | bcprov-jdk18on | 1.83 | 1.85 |
| taosX OpenTSDB 插件 | netty | 4.1.118.Final | 4.1.137.Final |
| taos-insight | kin-openapi | 0.144.0 | 0.149.0 |
| taos-insight | klauspost/compress | 1.17.9 | 1.18.7 |
| taos-insight | jsonschema | 6.0.2 | 6.0.3 |
| taos-insight | golang.org/x/net | 0.58.0 | 0.60.0 |
| taos-insight | golang.org/x/sys | 0.47.0 | 0.48.0 |
| taos-insight | golang.org/x/text | 0.41.0 | 0.42.0 |
| taos-insight | dompurify | 3.4.13 | 3.4.17 |
| taos-insight | 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。








