跳到主要内容

3.4.3.3 版本说明

发布时间:2026-10-18

版本类型推荐升级对象
功能版本使用流计算、虚拟表、关联查询、联邦查询的用户,以及需要安装本版本安全修复的用户

1. 版本亮点​

  • 流计算分层规则与跨源闭环:一条流按设备路径同时汇总产线、车间和工厂。事件窗口支持多级开始条件和嵌套窗口,并按流自己的时区做自然月、季、年结算。外部工单和质检表可以直接驱动流。运行状态可在系统表、taosExplorer 和 TDinsight 中查看;告警通知异步发送,切主或虚拟表引用变更后流继续输出。
  • 虚拟表继承与跨层引用:虚拟超级表可以从父模型继承列和标签,列和标签也可以逐层引用其他虚拟表。虚拟子表可以带自有列和标签,并支持批量创建和删除。外部列可以先过滤再按时间戳对齐,一张表可以同时引用不同时间精度的库。引用失效时,报错点名失效对象和完整引用链。
  • 查询关联与子查询:普通 JOIN 可以按业务列、范围或组合条件关联,不必强制主时间戳等值。它可以和 ASOF JOIN、WINDOW JOIN 写在同一条 SQL 里,两侧可以是子查询或虚拟表。标量子查询可以引用外层当前行,窗口查询可以输出原始列和序列结果。TEXT 和 FILE 可以直接参与查询。
  • 联邦查询:同一条 SQL 可以联合查询 MySQL、PostgreSQL、InfluxDB 和本地数据,窗口、聚合和 INTERVAL 可以下推到外部数据源。该能力默认关闭,使用前需要显式开启。
  • 安全修复:拒绝会导致服务崩溃或越界读写的畸形输入,并修复同步模块中的已知漏洞。Grafana 数据源插件修复 30 项依赖漏洞,XNode 任务和作业中的 DSN 可以加密后再展示。

2. 新特性​

2.1 查询​

  • ASOF JOIN 和 WINDOW JOIN 可以使用虚拟表或子查询作为输入。WINDOW JOIN 可用 WINDOW_TIME 指定两侧时间列。
  • 普通 JOIN 可以按 SQL 括号和结合顺序与 ASOF JOIN、WINDOW JOIN 嵌套。流计算查询同样支持。
  • 等值 JOIN 在输入无序时使用 Hash Join。已经按连接键有序的输入仍使用 Merge Join。需要稳定顺序时必须写 ORDER BY。
  • 支持标量相关子查询。没有匹配行时结果为 NULL,返回多行或多列时报错。
  • DELETE 的 WHERE 支持按普通列过滤,可与时间范围和标签条件用 AND 组合。复合主键表、SECURE_DELETE,以及时间、标签与普通列之间的 OR 仍不支持。
  • 新增 BIT_CHANGES、VALUE_CHANGES,以及时间加权聚合 TWAVG、TWSUM、TWVAR。它们可用于查询和流计算。
  • 支持 CSUM(expr) OVER (PARTITION BY ... ORDER BY ...),按分区和指定顺序保留每一行的累计和。
  • 单数据源虚拟子表和虚拟普通表支持精确 PERCENTILE。
  • 外部窗口支持 DIFF、CSUM、MAVG、LAG、LEAD,以及 TOP、BOTTOM、SAMPLE、HISTOGRAM。规则与其他时间窗口一致。说明见 外部窗口。
  • SHOW TABLE DISTRIBUTED 指定超级表时,汇总其全部子表在各 vnode 上的压缩数据块大小。同一结果也可从 INS_TABLE_FIXED_DISTRIBUTED 查询。统计只含 data 文件中的数据块。
  • 支持通过 CREATE EXTERNAL SOURCE 注册外部数据源。说明见 联邦查询。
  • 提供 Spark JDBC 方言 com.taosdata.spark:TDengine-spark-dialect:1.0.0。PySpark 注册后可通过 WebSocket 访问 TDengine。

2.2 流计算与虚拟表​

  • 流计算支持 INNER JOIN 与 LEFT JOIN 多层嵌套。
  • 流计算可以用引用 MySQL、PostgreSQL、InfluxDB 列的虚拟表作为触发表,并与本地列混合、按时间戳合并。此类流暂不支持 FILL_HISTORY 和 FILL_HISTORY_FIRST。
  • STREAM_OPTIONS(CONFIG) 可以固化时区和一周起始日,并支持含季度的自然时间单位。
  • 流计算支持多级嵌套子事件。
  • 虚拟子表可以通过 CREATE VTABLE 和 ALTER VTABLE 增加自有列和自有标签。
  • 普通表和虚拟普通表的标签可以作为虚拟表 tag-ref 源,并支持链式引用。
  • 虚拟表引用 MySQL、PostgreSQL 外部列时可以加 WHERE 过滤。
  • 虚拟表可以引用不同时间精度(毫秒、微秒、纳秒)数据库中的表,查询时自动转换时间戳。
  • ALTER STABLE RENAME COLUMN 可以修改超级表和虚拟超级表的数据列名。ALTER TABLE ... RENAME TAG 可以修改普通表和虚拟普通表的标签列名。

2.3 备份、XNode 与写入​

  • 支持集群和数据库级全量备份及离线恢复,覆盖 mnode、snode 和 vnode(含流检查点)。新增 CREATE FULL BACKUP、SHOW BACKUPS、KILL BACKUP,以及 taosd --restore。增量备份和只备份指定库在本版本尚未实现。
  • 新增 RESTART XNODE,重启当前 mnode leader 所在节点上的 xnoded。
  • 可以开启 XNode DSN 保护。SHOW XNODE TASKS 和 SHOW XNODE JOBS 中的敏感字段显示为 ******,运行时下发使用信封加密。ALTER 提交 ****** 表示保留原值。
  • taosX 新增 archive 子命令,用于查看和导出 archive、cache 文件。
  • taosX 的 MySQL 数据源支持任务级 Job(job_id=-1)使用持久化 checkpoint。关闭「双竖线字符串连接」和「禁止存储引擎替换」后,可以通过 MySQL 协议从 Apache Doris 同步数据。
  • taosExplorer 可以配置 taosX 的 -T 转换动作,例如超级表和子表重命名与映射。
  • JDBC WebSocket 连接新增 stmtCacheSize,缓存 PreparedStatement。默认 5,高效写入模式默认 2,0 表示关闭。
  • taosAdapter 支持 InfluxDB 1.x 的 ping 接口。兼容客户端可以通过 GET 或 HEAD /influxdb/v1/ping 检查服务是否可用。
  • taosgen 提供 gRPC ingress 写入接口,外部程序推送标准化数据后由 STMT2 拼批写入。
  • 二级压缩可以通过环境变量挂载可插拔的硬件加速 zlib、zstd、lz4 库。

3. 优化​

3.1 查询​

  • HAVING 可以在没有 GROUP BY、PARTITION BY 或窗口时使用。
  • 关联查询的 ON 条件支持单侧表达式等值、有限的整数与时间偏移、范围比较和组合条件。
  • 子查询排序与 JOIN 时间条件不一致时,按实际时间条件返回结果。
  • 按 tbname 分组的 INTERVAL 查询走快速路径。分组 last 查询批量读取缓存。符合条件的普通查询可以从副本读取。
  • 超级表 INTERP 覆盖按标签或普通列分区的场景,并减少按子表输出时的数据传输,提升大规模断面插值性能。
  • 分区状态窗口减少大量小分区的切换开销,并保持多 vnode 下分区内的时间顺序。
  • 超级表查询中 tbname 等值条件走名称索引。
  • 增加 FAST_INTERVAL 和 EX_INTERVAL 两个 Hint,用于符合条件的固定窗口 INTERVAL。
  • NCHAR 与字符串常量比较按客户端字符集解析。
  • CREATE SMA INDEX 不再支持。已有 SMA 对象仍可查询和删除。
  • Linux 上联邦查询在已有目录找不到三方库时,再从 /usr/local/lib 加载。随安装包提供的库仍优先。

3.2 流计算与虚拟表​

  • 流计算在源 vnode 切主或 vgroup 重新分布后继续输出正确结果。虚拟表流在切主后重新加载表信息。未映射源列的虚拟表流不再反复重新部署。
  • 流运行期间虚拟表元数据变更时,触发器在线更新引用和子表列表,流保持运行。
  • 流计算写入已有超级表时,只校验输出列与保存列的顺序、名称和类型。
  • 非 ON_FAILURE_PAUSE 的事件通知改为异步批量发送。
  • 新增 streamTriggerMaxPendingParams,限制触发器积压的待计算参数。
  • external window 的多分组批处理支持 JOIN 和嵌套窗口。COUNT_WINDOW 等触发下,含派生聚合的计算子查询可以走 external window。
  • 关联维表的嵌套窗口流按批读取维表,并在预算内用等值键过滤连接数据。
  • 元数据事务可以包含创建流、删除流和更多表结构变更。
  • 虚拟表引用的源表或源列失效时,查询和 SHOW VTABLE VALIDATE 点名失效对象和引用链。源列已删除的虚拟超级表不再静默返回空结果。
  • 虚拟表上的联邦查询可以把窗口、聚合和 INTERVAL 下推到外部数据源。

3.3 存储与集群​

  • 提升 split vgroup 执行效率,降低对在线写入的阻塞。
  • 改进 REDISTRIBUTE VGROUP 与写入、流计算、订阅、虚拟表查询并发时的处理。
  • CREATE DATABASE 在全部 vgroup 选出主之后才返回,避免随后 SHOW CLUSTER ALIVE 误报部分可用。
  • BALANCE VGROUP LEADER 拆成默认的随机再平衡和 FORCE 强制均匀。强制方式在副本落后过多时可能暂时选不出主。
  • 强制均衡增加约 2 分钟的超时回退,避免落后副本长期无法选出主。
  • 多副本切主后的集群恢复时间缩短。
  • 修改数据库副本数时可以用 PARALLEL 控制并发。restore dnode 新增 parallel。
  • 新增 compactSpeedLimitMB,限制 COMPACT 写盘速度。0 表示不限制。
  • 新增 snapshotMediumOnLag。默认关闭。打开后,已有数据但落后的副本用文件级增量快照追赶。
  • BLOB 单值上限从 4MB 提升到 16MB。Python、Node.js 连接器和 taosX 支持该上限,并修复 Python 读取超过 64KB、Node.js 绑定较大 BLOB 失败的问题。
  • 复合主键支持 TIMESTAMP 列。
  • Last Cache 的 RocksDB 参数可通过 taos.cfg 中的 sLastCache* 配置,并新增 information_schema.ins_last_cache_stats。
  • SHOW VARIABLES 和 SHOW LOCAL VARIABLES 增加 reboot 列,表示该项已修改、需要重启才生效。
  • 慢查询、UDF、MQTT 和 XNode 日志文件名统一为 taos 前缀。logKeepDays 可以清理过期慢查询日志。
  • taosd 为迁移、compact、选主、流计算、订阅和虚拟表 DDL 输出 [KEYOP] 日志。
  • 支持免费许可,并新增系统变量 registerEmail。
  • 社区版启动时按操作系统白名单做交叉校验,并支持 Rocky Linux 和 AlmaLinux。执行专有功能时返回带功能名的错误。

3.4 写入、订阅与客户端​

  • STMT2 在服务端执行错误后可以继续复用同一语句。taos_stmt2 支持 UPDATE 参数绑定。
  • CSV 建表和导入支持 UTF-8 BOM。非 UTF-8 BOM 会被拒绝。
  • 表不存在等重试只刷新表元数据,不再频繁执行 USE。
  • 错误码、SQL 提示、客户端日志和命令行工具修正英文拼写与语法,错误码数值不变。
  • Windows 上 taos 支持 Tab 补全。libtaos 优先加载同目录的 taosnative.dll 和 taosws.dll。
  • JDBC WebSocket 支持 setTimezone 和 getTimezone。参数绑定支持数值类型自动转换。
  • Rust 连接器在 adapter_ha 模式下按连接选择 taosAdapter,并随集群注册表刷新故障转移地址。
  • 数据订阅在 vnode 重分布时自动 rebalance。
  • TMQ 消费宽表时,只在表结构变化后刷新投影列宽。

3.5 taosX、XNode 与 taosExplorer​

  • 已注册到一个集群的 taosX 不能再被另一个集群接管。
  • taosX 的 MSSQL、Oracle 和 MongoDB 数据源使用与 MySQL、PostgreSQL 相同的写入确认流程。任务取消时不推进检查点。
  • taosX 任务启动时,若绑定的 XNode 不存在或不可用,会改试其他可调度节点。
  • XNode 任务和作业在 xnoded、taosd 或 Agent 重连后按期望状态恢复。默认开启,可用 --auto-resume 或 XNODED_AUTO_RESUME 关闭。
  • taosX 和 XNode 增加 CPU、RPC、队列、下游写入和持久化缓冲等指标。
  • archive 和 cache 改为带版本号的帧格式,并按失败原因去重。旧文件仍可读。
  • taosExplorer 支持备份页的 S3 连通性测试、taosX-Agent 地址保存,以及超长文本的单行截断提示。
  • taosExplorer 的 Tools 页面与 Programming 卡片对齐,并补充工具说明。SQL 结果区的 Export 与 Run、Format 一样使用文本按钮。
  • TDgpt 镜像把 model 和 model_venvs 挂到宿主机,升级镜像不再覆盖已经添加的模型。
  • taosX 和 Java 插件的默认安装包不再包含 OpenTelemetry 与 Swagger UI,需要时再启用。
  • taosgen 的 WebSocket 写入支持断线重连,并输出重试和恢复日志。

4. 问题修复​

4.1 严重问题​

  • COUNT(DISTINCT) 与普通聚合混用时结果不稳定,该问题在 v3.4.2.10 和 v3.4.3.0 已修复。PARTITION BY 加 INTERVAL 仍把各分区折成一行;按分区去重的修复不在 v3.4.3.3 中。聚合 DISTINCT 自 v3.4.2.0 起。影响版本:v3.4.2.0 至 v3.4.3.3。(#35495)
  • COUNT(DISTINCT) 误用按标签计数优化,GROUP BY 结果混入时间过滤范围外的数据。影响版本:v3.4.2.0 至 v3.4.2.11。(#35508)
  • 内存池 session 空闲链表并发异常时,同一 session 被重复分配并销毁,taosd 崩溃。影响版本:v3.3.5.0 至 v3.4.2.8。(#35485)
  • 动态超级表 Join 补列按行数而不是块容量分配,导致堆损坏和 taosd 崩溃。影响版本:v3.3.6.0 至 v3.4.2.10。(#35509)
  • 查询内存分配失败时,清理空的子任务上下文导致 taosd 崩溃(#35468、#35559)。影响版本:v3.4.0.0 至 v3.4.3.2。
  • 整数列上 FILL_FORWARD 按 8 字节写入,超出列宽并破坏相邻内存。影响版本:v3.4.1.0 至 v3.4.3.2。(#35550)
  • 将列压缩改为 TSZ 后写入再查询,taosd 崩溃。TSZ 列的编码必须为 DISABLED。影响版本:v3.3.0.0 至 v3.4.2.9。(#35475)
  • 普通表和虚拟普通表执行 SET TAG 时可能崩溃,标签值未提交,查询返回 NULL。影响版本:v3.4.2.12。(#35505)
  • 虚拟表列声明宽度小于源列时越界写入,taosd 崩溃。现在按源列实际宽度分配缓冲;无法放宽的超宽值返回 Query buffer limit has reached。影响版本:v3.3.6.0 至 v3.4.3.0。(#35570)
  • 虚拟表上带时间范围的 LAST 可能报 Table schema is old,或返回错误列值。影响版本:v3.4.2.3 至 v3.4.3.0。(#35568)
  • 对没有精度扩展的联邦 MySQL DECIMAL 列执行 DESCRIBE 时,taos 和 taosAdapter 崩溃。影响版本:v3.4.2.0 至 v3.4.2.13。(#35534)
  • 流计算读取虚拟表时,重复的空心跳回复可能导致 taosd 崩溃。影响版本:v3.4.0.0 至 v3.4.2.12。(#35502)
  • 流计算在外部窗口零行结算时,组别名丢失并导致空指针崩溃,全过滤组的结算也可能漏发。影响版本:v3.4.1.0 至 v3.4.2.12。(#35537)
  • 关闭低延迟计算时,实时触发批次的截止时间被新数据反复推迟,COUNT_WINDOW 子查询流没有输出。影响版本:v3.4.1.0 至 v3.4.2.8。(#35490)
  • 流计算语句同一侧有多个时间条件时,点窗口的扫描区间被算空,流不产出数据。影响版本:v3.3.7.0 至 v3.4.3.1。(#35566)
  • 分组流在历史补算时被按单组处理,流变为 Failed 并报 Stream internal error。影响版本:v3.4.2.7 至 v3.4.2.13。(#35474)
  • 版本升级后,已保存的流计划因节点编号变化无法恢复,重新启动仍然失败。节点编号自 v3.4.2.0 起变化。影响版本:v3.4.2.0 至 v3.4.3.1。(#35556)
  • 流计算继续使用虚拟表 tag-ref 的旧缓存,配置表标签变更后仍按旧阈值计算。影响版本:v3.4.2.13 至 v3.4.3.1。(#35491)
  • Rust 连接器的 Native TMQ 在接收超时与消息到达重叠时静默丢消息,订阅或 taosX 同步缺数据。影响版本:v3.4.2.0 至 v3.4.3.0。(#35528)
  • 数据订阅 tmq_write_raw 在目标表不存在时吞掉错误并跳过,依赖该错误自动建表的调用方失效。影响版本:v3.4.2.0 至 v3.4.2.8。(#35523)
  • taosX 同步在空闲刷盘或退出时未提交未满批次的消费位点,重启或对端短暂不可写后重放已同步数据。影响版本:v3.4.2.0 至 v3.4.3.0。(#35571)
  • taosX 关系库同步的查询窗口和断点不正确,大时间范围迁移没有数据写入。影响版本:v3.4.2.0 至 v3.4.2.12。(#35510)
  • OPC UA 数据源重启后,taosX 任务仍显示运行中但不再采集,必须手动重启任务。影响版本:v3.4.2.0 至 v3.4.3.2。(#35557)
  • Windows 上 NOW 和 NOW() 返回接近 1970-01-01 的值。v3.4.1.0 起实时时钟与单调时钟的编号冲突。影响版本:v3.4.1.0 至 v3.4.3.1。(#35565)
  • dnode 心跳里的 vnode 负载列表为空时,SHOW VNODES 把 vnode 显示为 offline。影响版本:v3.4.2.0 至 v3.4.2.8。(#35481)

4.2 查询​

  • 多分支 UNION ALL 中可以折叠为空的分支在解析期剪枝,减少无效扫描。(#35483)
  • UNION ALL 去掉空分支时,把输出列别名同步到保留分支,外层按别名引用不再失败。(#35539)
  • 客户端执行大量同类型 UNION 或 UNION ALL 时,不再因嵌套过深导致栈溢出。(#35503)
  • 开启 keepColumnName 时,单参数聚合或选择函数的隐式列名与显式别名冲突,不再误报列歧义。(#35498)
  • 按行内 schema 版本找不到元数据时,保留底层错误码,不再一律显示为 NOT_FOUND。(#35542)
  • information_schema.ins_columns 等系统表在 db_name = DATABASE() 时只访问当前数据库,不再连到无关的离线 vnode。(#35535)
  • information_schema.ins_tags 扫描虚拟子表引用标签时不再产生无法中断的 RPC 风暴。(#35515)
  • 虚拟超级表查询在 split vgroup 导致批量元数据失败时结束 catalog 任务,查询不再挂起。(#35520)
  • 虚拟表查询引用已删除的源表或源列时释放临时内存,重复查询不再使 taosd 内存持续增长。(#35530)
  • 联邦查询 DESC 外部表时保留列名大小写。(#35493)
  • 普通用户可以查询已注册的外部源,以及引用它的虚拟表,不必再持有同名本地库表权限。创建、修改和删除外部源仍按原权限校验。(#35569)

4.3 流计算与虚拟表​

  • CREATE STREAM 从虚拟普通表或虚拟子表读取引用标签时,带上物理来源表,不再报 Not found。(#35564)
  • EVENT_WINDOW 只写 START、省略 END 时可以部署。START 变为假时,在最后一条满足条件的数据处关闭窗口。(#35533)
  • 嵌套窗口流在 PRE_FILTER 产生空子表切片时跳过该切片,后续数据继续计算。(#35511)
  • 虚拟表引用暂时解析失败时,不再把整条流重新部署,乱序重算结果得以保留。(#35477)
  • 读取虚拟表的流在算子重置或销毁时释放系统表扫描请求。(#35525)
  • 多个通知地址中,已经发送成功的地址在后续重试时不再重复收到同一通知。(#35529)
  • 流计算通知经 WebSocket 非阻塞发送时,重试和超时处理完整。(#35478)
  • 首次部署流任务时,注册失败不再泄漏任务对象。心跳遇到正在部署的流会跳过,不再等待慢连接。(#35561)

4.4 写入、订阅与客户端​

  • STMT2 interlace 模式下,子表被外部删除后,向另一超级表写入同名子表不再误报表已存在于其他超级表。(#35522)
  • STMT2 按绑定字符串的小数位和指数计算 DECIMAL 的 scale,长度为 8 或 16 的合法十进制字符串不再被当成二进制。(#35540)
  • DROP TABLE 只提交被删表自己的 last cache 脏项,开启缓存时删表速度恢复。(#35499)
  • MQTT 按数据库或超级表订阅时,返回数据包含子表名。(#35489)
  • 数据订阅读取变长列时按实际长度分配内存,并拒绝超出列定义的数据,超过 65535 字节的字符串不再使 taosd 崩溃。(#35546)
  • TMQ 消费者关闭时,即使取消订阅失败也会释放本地资源,连接数不再持续上涨。(#35497)
  • Go 连接器 TMQ 的 getData() 释放原生缓冲区,长时间消费不再持续增长内存。(#35484)
  • 从 3.3 升级到 3.4 后,未完成的订阅 rebalance 消息不再因格式不兼容导致订阅超时。(#35496)
  • taosAdapter 在 WebSocket 查询结果集空闲超时后释放结果。开启 gzip 时 /metrics 不再被重复压缩。(#35516、#35488)
  • taosBenchmark 在子表查询失败时不再二次释放结果。(#35538)
  • taosdump 使用 -Z websocket 时默认端口为 6041。Windows 上可以备份含冒号或中文的库表名。(#35517、#35482)
  • JDBC WebSocket 在连接时区与 JVM 时区不同时,不再对 TIMESTAMP 多做一次换算。(#35562)
  • taos 以 WebSocket 模式启动时,未实现接口的提示写入客户端日志,不再打印到终端。(#35558)
  • Windows 上 taosd 以服务方式可以拉起 xnoded。先以前台管理员启动、再以 LocalSystem 服务启动时,不再因流临时目录属主不同而失败。(#35501、#35555)
  • Windows 未配置 timezone 时保留系统识别出的时区名,建流不再因名称被截成 System 而失败。非法时区的 ALTER 在事务开始前被拒绝。(#35563、#35567)
  • 字符串时间戳解析不再因时区库缺少优化编译而变慢。(#35518)
  • 客户端库不再导出静态链接的第三方符号,避免在 Intel macOS 上与 OpenSSL 链接冲突。(#35543)
  • 找不到 xnoded 可执行文件时,CREATE XNODE 返回明确错误,不再显示 Unknown error 65534。首次 CREATE XNODE 会等待控制端点就绪后再发送。(#35549、#35548)
  • 社区版 taos 不再展示 restore 等专有命令。(#35576)
  • 社区版 taosd 在受支持的 Linux 上,不再因安装了 dpkg、残留其他发行版标识或 os-release 不一致而拒绝启动。(#35551)

4.5 taosX 与 taosExplorer​

  • taosX 与 XNode 断线重连后,OPC DA 等由 XNode 调度的写入任务不再自行停止。(#35527)
  • MySQL 实时同步的查询窗口可以配置,增量 SQL 可以拉到数据。(#35476)
  • MQTT 和 SparkplugB 数据源接受 version=3.x。taosX 不支持 MQTT 3.1(MQIsdp)。taosExplorer 已去掉「3.1」选项,已有该配置仍按 3.1.1 连接。(#35479、#35553)
  • OPC 采集可以解析 GBK 和 GB18030 配置。pSpace 可以解析这两种编码下的中文节点名。(#35532、#35544)
  • taosExplorer 配置 OPC DA 数据源时可以选择并上传 CSV。OPC-DA 连通性检查和 CSV 上传有可见结果。(#35519、#35536)
  • Windows 上 CSV 导入接受 \\?\ 扩展路径,路径不再被截断。(#35487)
  • PI 插件连接 AF 时使用与 Data Archive 相同的凭据,控制台实时任务启动时不再调用未初始化的回填管理器。(#35526)
  • S3 没有备份文件时,恢复任务不再永久挂起。删除备份任务时一并删除自动创建的 oneshot topic。(#35492)
  • 定时备份在上一周期未完成时不再丢弃到期周期,结束后立即补跑。(#35541)
  • 多个 taosX 任务连接同一 taosAdapter 集群时,连接分散到多个节点。要固定单个端点,在任务 DSN 中设置 adapter_ha=false。(#35521)
  • 更新任务时不再写入已删除的列,云控制台可以保存 Kafka 接入任务。(#35480)
  • TDengine 数据查询任务在 taosExplorer 中可以显示监控。(#35486)
  • replica 和 privileges 前台命令只在出现诊断事件时创建日志,不再留下空文件或删掉正在使用的服务日志。(#35524)
  • taosExplorer 从旧版本升级后可以完成 SQLite 迁移并登录。(#35554)
  • 任务列表在刷新、启动或停止后恢复活动历史。(#35512)
  • 创建或编辑用户并勾选数据库读或写权限时,同时授予 USE。取消最后一个读或写权限时连带收回 USE。该行为从 v3.4.0.0 起生效。(#35552)
  • 打开数据订阅时,集群地址或密码缓存异常不再把已经查到的主题显示为加载失败。(#35560)
  • 查看或编辑数据库时不再自动执行 SHOW disk_info。(#35514)
  • 编辑数据库时,WAL_RETENTION_PERIOD 接受 -1 到 2147483647,不再把小于 3600 的合法值回写成 3600。创建数据库的默认值仍为 3600。(#35531)
  • 超级表高级筛选可以录入条件。多个不同标签的 AND 返回同时满足的子表。超过展示上限时显示精确子表数。列表默认最多展示 500 张表,其余通过搜索定位。(#35545、#35513)
  • 编辑已有 taosX-Agent 时回填 endpoint 和 token。(#35536)
  • 社区版和精简版不再请求专有的 taosX 监控、令牌、许可证和用户权限接口。面板不再查询不存在的专有表,并与其他组件一起展示 taosX。(#35506、#35500、#35504)
  • XNode drain 失败时保持 Drain 状态,任务未排空不会重新调度。(#35547)

5. 安全​

5.1 漏洞修复​

  • 社区版中,系统对象操作仅超级用户可以执行。已登录的普通用户不能再 ALTER DNODE,也不能修改其他用户或自己的 IP 白名单。GHSA-xhwr-25r2-jg46,CWE-862。
  • TMQ 查询 vnode 端点时校验消费者属主,拒绝使用他人的 consumerId。GHSA-crfh-3p34-23cw,CWE-639。
  • INSERT 反序列化拒绝会使长度回绕的列数量和跳转长度。GHSA-gmhq-7r4w-7rp5,CWE-190。
  • 同步 Append Entries、同步快照、消息长度被截成 32 位整数,以及字符串解码未校验目标缓冲区,分别对应 GHSA-q86r-32wm-qwpg、GHSA-xg67-9f8r-64v5、GHSA-hr67-c6c8-mwpx、GHSA-x8q3-55fg-4pwh。
  • 同步 RequestVote 的 Cluster ID 校验可被绕过。GHSA-c39q-62fx-c853。
  • 创建函数请求的代码长度或名称长度未校验。GHSA-qh9p-wprq-p2hf、GHSA-8c53-8w6m-w28r。
  • REPEAT() 和带超长参数的 SQL Hint 可触发已认证用户的缓冲区溢出。GHSA-f939-x5h3-cg4f、GHSA-j63p-9gcr-5fv8。
  • 查询计划中 DECIMAL 的 TLV 长度与声明字节数不一致时被拒绝。GHSA-pc9g-w85r-7c6x。
  • 流计算心跳缺少长度校验导致整数下溢。GHSA-382r-9pxq-7vg2。
  • TDgpt 安装包解压拒绝写出目标目录。GHSA-4w45-hf5j-95m3。
  • taosKeeper 审计写入对请求字段转义并校验时间戳、库名和表名,不能再通过该接口改写审计日志。GHSA-9m72-77jp-x5f2。上报接口不再把请求字段拼进 SQL,并新增 TDengine.skipVerify。默认仍跳过证书校验。
  • TSZ 内置 zstd 从 1.3.5 升级到 1.3.8,修复输出缓冲区不足时的越界写。CVE-2019-11922,GHSA-2hff-w2r4-f7g5。说明见 NVD。
  • 客户端更新端点集时不再用未初始化内存计算消息长度。TD-SEC-2026-001。
  • taosX 将 quinn-proto 升级到 0.11.19,消除 0.11.15 上的 RUSTSEC-2026-0342、RUSTSEC-2026-0339、RUSTSEC-2026-0340、RUSTSEC-2026-0338 和 RUSTSEC-2026-0341。
  • Grafana 插件 TDengine-datasource 升级前后端依赖,修复 30 项已知漏洞,其中 1 项严重、10 项高危。
  • DROP DNODE 在节点 ID 不存在时,不再把请求中的 FQDN 当作格式字符串。
  • 建库 PRECISION 的范围检查生效,越界值不再作为时间刻度下标。CWE-129。
  • 超级表 COMMENT 拒绝超长或长度不符的值,SHOW STABLES 截断已写入的超长注释。CWE-121。
  • TMQ 订阅请求拒绝超出容量的消费者组、客户端标识、用户、FQDN 和 topic 列表。CWE-121。
  • 流心跳拒绝越界或头体不一致的分组号、越界的 deploy 下标和 trigger 状态,避免 mnode 崩溃或访问已释放内存。CWE-129、CWE-476、CWE-787。
  • 共享存储迁移拒绝 vgroup 下标越界的响应。查询事务详情时忽略空的阶段动作,避免空指针崩溃。CWE-476。
  • mnode 拒绝超过 128 字节的配置名,以及越界的 vgroup 副本数和过长的共享存储迁移库名。
  • DECIMAL 拒绝超大指数和非法 precision、scale,避免越界访问。
  • 查询计划和 SQL 解析校验节点类型、必要子节点、长度和嵌套深度。畸形计划返回错误。
  • TMQ 与 MQTT 在解码前校验响应头、消息类型、数据块长度和批量元数据,并拒绝非法 topic 过滤器。
  • 虚拟表元数据在列引用数不一致、批量响应类型错误或缺少表名时按无效消息拒绝。
  • 消息解码不再信任对端声明的长度。
  • TDgpt Analytics 服务收紧缓冲区边界和访问控制,并限制 taosanode 的创建地址。可以配置是否允许接入内网部署的 taosanode,且不再自动转发到 taosanode 的请求。
  • taosdump 恢复时校验不可信备份的长度和列数。
  • taos 交互历史按语句写入。含 PASS、TOKEN、TOTP_SECRET 的创建和修改语句不再写入历史。~/.taos_history 权限收紧为 0600。服务端返回文本中的控制字符在显示时丢弃。
  • macOS 上相关日志文件改为以 0666 权限创建,普通用户可以写入 root 创建的日志文件。
  • 目录配置不再做命令替换。日志和归档文件不跟随符号链接。压缩解码拒绝非法 codec 标记和会回绕的长度。
  • taosd 不再信任 dataDir 下的 xnoded pid 文件、unix socket,以及 udfd 和 taosmqtt 的运行时文件。pid 文件不跟随符号链接,只结束属主和可执行文件名都匹配的 xnoded。伴随进程只从安装目录加载。
  • 删除后重建的同名用户不再继承原 XNode 任务属主权限。(#35494)

5.2 安全加固​

  • 新增 xnodeDsnProtection,默认 0。打开后,SHOW 和 taosExplorer 中的 XNode DSN 密码显示为 ******。编辑时提交占位符则保留原密码。错误信息和日志不再输出密码、证书或私钥路径。连通性检查、采样和预览只携带 task_id。
  • SHOW XNODE TASKS 和 SHOW XNODE JOBS 支持 WITH ENCRYPTED。
  • 流计算 wss:// 通知默认校验证书链和主机名。不受信任、过期或主机名不匹配的证书会被拒绝。ws:// 不变。
  • 打开 vnode 前校验数据库加密密钥。密钥错误时返回明确的校验错误。
  • taosBenchmark 对超出容量的 CSV 行和标签表名报错退出,不再静默越界。
  • 安装和打包收紧 data 目录与驱动库权限,临时文件使用 mktemp。
  • 加固 TSZ 解码和压缩时的容量校验。
  • 对象存储下载和 TDB 页偏移做边界检查。
  • 流计算的心跳、任务部署和结果数据块校验长度、下标和任务类型。

6. 升级须知​

6.1 升级路径​

  • 支持直接升级的源版本:v3.3.7 及后续版本。
  • 是否支持滚动升级:支持,范围为 v3.4.3.0 至 v3.4.3.3。
  • 是否支持降级或回滚:支持,范围为 v3.4.3.0 至 v3.4.3.3。
  • 客户端与连接器的最低配套版本:v3.4.3.0。

6.2 行为变更​

  • BALANCE VGROUP LEADER 默认改为随机再平衡。需要原先的强制均匀时,显式加上 FORCE。副本落后过多时,强制方式可能暂时选不出主。
  • 等值 JOIN 在输入无序时改用 Hash Join。结果不变,行顺序可能变化。需要稳定顺序时写 ORDER BY。
  • 子查询排序与 JOIN 时间条件不一致时不再报错,按实际时间条件返回结果。
  • CREATE SMA INDEX 返回不支持。已有 SMA 仍可查询和删除。
  • 列压缩设为 TSZ 时,该列编码必须是 DISABLED。
  • 已注册到一个集群的 taosX 不能被另一个集群接管。
  • taosX 的 WebSocket 连接默认在多个 taosAdapter 之间均衡。要固定单个端点,在任务 DSN 中设置 adapter_ha=false。
  • 定时备份在上一周期未完成时不再丢弃到期周期,结束后立即补跑。实际间隔可能短于配置周期。
  • 流计算 wss:// 通知默认校验服务端证书。不受信任、过期或主机名不匹配的连接会失败。ws:// 不变。
  • 非 ON_FAILURE_PAUSE 的事件通知默认异步发送。负载过高时可能丢弃通知。
  • JDBC 的 TSWSPreparedStatement 由类改为接口。升级驱动后需要重新编译,否则运行时抛出 IncompatibleClassChangeError。close() 之后不能再使用该 Statement。
  • 设置了连接时区且使用 WebSocket 时,getTimestamp() 的 epoch 恢复为正确值,toString() 跟随 JVM 默认时区。未设置连接时区时无变化。
  • ~/.taos_history 在下次启动 taos 时权限变为 0600。同一行多条语句会写成多条历史。含 PASS、TOKEN、TOTP_SECRET 的创建和修改语句不再写入历史。
  • 慢查询、UDF、MQTT 和 XNode 的日志文件名改为 taos 前缀。按旧文件名采集的规则需要调整。
  • 社区版普通用户不能再 ALTER DNODE,也不能修改 IP 白名单。执行专有功能时返回带功能名的错误,不再静默不生效。
  • TDgpt Lite 的容器重启后不自动启动模型。

6.3 配置参数变更​

新增 21 项,没有移除。2 项放宽了下限。

6.3.1 流计算​

参数作用
streamNotifyWorkerNum每个 snode 的异步通知线程数。未配置时按 CPU 核数取值,上限 8。可配置范围 1 到 16。修改后重启生效。
streamNotifyBatchIntervalMs异步通知合并发送的最长等待,单位毫秒。默认 5,范围 0 到 60000。修改后重启生效。
streamNotifyParamPoolSize异步通知待处理对象池大小,单位 KB。默认 10240,范围 1 到 262144。修改后重启生效。
streamTriggerMaxPendingParams单个嵌套触发允许挂起的最大参数数。默认 1048576。修改后立即生效。

6.3.2 查询、存储与集群​

参数作用
maxRetryTimes查询调度任务的重试次数。默认 12,范围 1 到 1000。修改后重启生效。
enableFollowerRead是否允许符合条件的查询从 vgroup 副本读取。默认关闭。客户端和服务端都可动态修改,无需重启。
compactSpeedLimitMB限制 COMPACT 写盘速度,单位 MB/s。默认 0,表示不限制,范围 0 到 1024。实际速度可能低于设置值。
snapshotMediumOnLag持有数据但落后的副本改用文件级增量快照。默认关闭。修改后立即生效。
backupPullupInterval备份调度的巡检和补跑间隔,单位秒。默认 10,范围 1 到 10000。社区版不生效。
rpcQueueMemoryAllowed可配置下限由 32 MB 降为 10 MB。自动推导值和派生额度按新下限收口。
syncLogBufferMemoryAllowed可配置下限由 320 MB 降为 100 MB。

Last Cache 的 RocksDB 参数均可动态修改,重启后生效。

参数作用
sLastCacheOptionsOverrideRocksDB 原生选项串,优先级最低。默认空。
sLastCacheCompressionType压缩算法。默认 none。
sLastCacheBackgroundThreads后台线程数。默认 2,范围 1 到 256。
sLastCacheMaxWriteBufferNumbermemtable 数量上限。默认 2,范围 1 到 64。
sLastCacheWriteBufferSize单个 memtable 大小,单位 MB。默认 8,范围 1 到 1048576。
sLastCacheBloomFilterBitsBloom filter 位数。0 表示关闭。默认 10,范围 0 到 32。
sLastCacheMaxOpenFiles最大打开文件数。默认 -1,表示不限制。

6.3.3 安全、客户端与监控​

参数作用
xnodeDsnProtection是否加密 ins_xnode_tasks 和 ins_xnode_jobs 输出的 DSN。默认 0,范围 0 到 1。重启生效。
xnodeDsnPublicKeyFileDSN 加密公钥文件路径。默认空。重启生效。
xnodedDsnPrivateKeyFileDSN 解密私钥文件路径。默认空。重启生效。
anodeAllowInternalUrl是否允许用内网地址创建 ANODE。默认打开。修改后立即生效。
registerEmail免费版注册邮箱。默认空。修改后立即生效。
stmtCacheSizeJDBC WebSocket PreparedStatement 缓存容量。默认 5,高效写入模式默认 2,0 表示关闭。
TDengine.skipVerifytaosKeeper 在 usessl=true 时是否跳过证书校验。默认 true,与旧行为一致。
prometheus.maxTotalEntriestaosKeeper v2 内存缓存总条目上限。默认 100000。达到上限后拒绝新条目,已缓存数据不变。
prometheus.maxEntriesPerTabletaosKeeper 单表缓存条目上限。默认 10000。

6.4 关键字变更​

新增 9 个关键字,没有移除。这些词用作库名、表名、超级表名、子表名、列名或标签名时,不论大小写都要用反引号。见 关键字。

6.4.1 备份​

BACKUP、BACKUPS、INCREMENTAL,用于 CREATE BACKUP、SHOW BACKUPS 和 KILL BACKUP。

6.4.2 节点​

RESTART,用于 RESTART XNODE。

6.4.3 关联查询​

CROSS,用于 CROSS JOIN。WINDOW_TIME,用于 WINDOW JOIN 指定两侧时间列。MERGE_JOIN 和 JOIN_ALGO,用于指定 Join 算法的 Hint。

6.4.4 流计算​

_EVENT_CONDITION_PATH,事件窗口的条件路径伪列。

6.5 系统表变更​

新增 2 张表。4 张已有表新增字段。2 张已有表加长了字段。没有移除表。

6.5.1 新增表​

  • information_schema.ins_backups:集群备份记录。字段为 id、status、chain、database、full、encrypted、size、vgroups、start_time、update_time。
  • information_schema.ins_last_cache_stats:Last Cache 运行统计。包含 dnode、vgroup、库名,块缓存容量和用量,memtable 大小与刷新,压实和 SST 文件,写入是否被限流,以及 update_time。

6.5.2 已有表新增字段​

  • information_schema.ins_streams:新增 timezone、first_day_of_week。
  • information_schema.ins_dnode_variables:新增 reboot,表示该项在运行期修改后是否要重启才生效。SHOW VARIABLES 和 SHOW LOCAL VARIABLES 同样返回该列。
  • information_schema.ins_xnode_tasks、information_schema.ins_xnode_jobs:新增 desired_state,用于任务重启后恢复到期望状态。

6.5.3 已有表字段加长​

  • information_schema.ins_xnode_tasks:from 和 to 加长为原来的 2 倍。列名和含义不变。
  • information_schema.ins_xnode_jobs:config 按 SHOW 的展示上限加长。列名和含义不变。

6.5.4 移除表​

无。

6.6 依赖库变更​

下表只列安装包中版本有变化的依赖。TSZ 的 zstd 与 taosX 的 quinn-proto 的漏洞说明见第 5 章。

组件依赖库v3.4.2.8v3.4.3.3
TSZzstd1.3.51.3.8
taosXquinn-proto0.11.150.11.19
taosXrustls0.23.380.23.46
taosXrustls-webpki0.103.130.103.15
taosXaws-lc-rs1.16.31.18.1
taosXaws-lc-sys0.40.00.45.0
Rust 连接器rustls0.23.350.23.45
Rust 连接器rustls-webpki0.103.130.103.14
Rust 连接器aws-lc-rs1.16.31.18.1
Rust 连接器aws-lc-sys0.40.00.45.0
Python WebSocket 连接器rustls0.23.370.23.45
Python WebSocket 连接器rustls-webpki0.103.130.103.14
JDBC 连接器taos-jdbcdriver3.9.03.10.0
JDBC 连接器jackson2.22.02.22.1
JDBC 连接器netty4.2.15.Final4.2.17.Final
taosAdaptergolang.org/x/crypto0.53.00.57.0
taosAdaptergolang.org/x/net0.56.00.60.0
taosKeepergorilla/websocket1.5.01.5.3
taosKeeperdriver-go3.7.83.8.3
Go 连接器gorilla/websocket1.5.01.5.3
Grafana 插件 tdengine-datasourceaxios1.16.01.18.0
Grafana 插件 tdengine-datasourceimmutable4.3.84.3.9
Grafana 插件 tdengine-datasourcedompurify3.4.113.4.13
Grafana 插件 tdengine-datasourceprotobufjs7.6.37.6.5
Grafana 插件 tdengine-datasourcekin-openapi0.131.00.144.0
Grafana 插件 tdengine-datasourcegrpc1.79.31.83.2
Grafana 插件 tdengine-datasourceOpenTelemetry SDK1.43.01.45.0
Grafana 插件 tdengine-datasourceOpenTelemetry OTLP 导出器1.28.0 / 1.29.01.45.0
Grafana 插件 tdengine-datasourcegolang.org/x/mod0.37.00.40.0

6.7 升级前操作​

从 v3.3.6 升级到本版本时,旧流计算不能直接沿用。未删除旧流、TSMA、snode 及其数据目录时,taosd 会启动失败。步骤见 流计算兼容性说明。

已经在 v3.4.0.0 及之后按新流计算重建过的集群,滚动到本版本时不必重复上述步骤。

另外确认这三件事:

  1. 使用 wss:// 流通知时,证书受信任、未过期,且主机名与 URL 一致。
  2. taosX 仍有未重放的 cache 时,先排空再回滚。旧格式文件仍可读取。
  3. JDBC 应用如果持有 TSWSPreparedStatement,升级驱动后重新编译。

7. 已知问题​

无。

8. 下载​

安装包从 TDengine 下载中心 获取。安装包内附带 SPDX 与 CycloneDX 两种 SBOM,以及 SHA256。