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 参数均可动态修改,重启后生效。
| 参数 | 作用 |
|---|---|
sLastCacheOptionsOverride | RocksDB 原生选项串,优先级最低。默认空。 |
sLastCacheCompressionType | 压缩算法。默认 none。 |
sLastCacheBackgroundThreads | 后台线程数。默认 2,范围 1 到 256。 |
sLastCacheMaxWriteBufferNumber | memtable 数量上限。默认 2,范围 1 到 64。 |
sLastCacheWriteBufferSize | 单个 memtable 大小,单位 MB。默认 8,范围 1 到 1048576。 |
sLastCacheBloomFilterBits | Bloom filter 位数。0 表示关闭。默认 10,范围 0 到 32。 |
sLastCacheMaxOpenFiles | 最大打开文件数。默认 -1,表示不限制。 |
6.3.3 安全、客户端与监控
| 参数 | 作用 |
|---|---|
xnodeDsnProtection | 是否加密 ins_xnode_tasks 和 ins_xnode_jobs 输出的 DSN。默认 0,范围 0 到 1。重启生效。 |
xnodeDsnPublicKeyFile | DSN 加密公钥文件路径。默认空。重启生效。 |
xnodedDsnPrivateKeyFile | DSN 解密私钥文件路径。默认空。重启生效。 |
anodeAllowInternalUrl | 是否允许用内网地址创建 ANODE。默认打开。修改后立即生效。 |
registerEmail | 免费版注册邮箱。默认空。修改后立即生效。 |
stmtCacheSize | JDBC WebSocket PreparedStatement 缓存容量。默认 5,高效写入模式默认 2,0 表示关闭。 |
TDengine.skipVerify | taosKeeper 在 usessl=true 时是否跳过证书校验。默认 true,与旧行为一致。 |
prometheus.maxTotalEntries | taosKeeper v2 内存缓存总条目上限。默认 100000。达到上限后拒绝新条目,已缓存数据不变。 |
prometheus.maxEntriesPerTable | taosKeeper 单表缓存条目上限。默认 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.8 | v3.4.3.3 |
|---|---|---|---|
| TSZ | zstd | 1.3.5 | 1.3.8 |
| taosX | quinn-proto | 0.11.15 | 0.11.19 |
| taosX | rustls | 0.23.38 | 0.23.46 |
| taosX | rustls-webpki | 0.103.13 | 0.103.15 |
| taosX | aws-lc-rs | 1.16.3 | 1.18.1 |
| taosX | aws-lc-sys | 0.40.0 | 0.45.0 |
| Rust 连接器 | rustls | 0.23.35 | 0.23.45 |
| Rust 连接器 | rustls-webpki | 0.103.13 | 0.103.14 |
| Rust 连接器 | aws-lc-rs | 1.16.3 | 1.18.1 |
| Rust 连接器 | aws-lc-sys | 0.40.0 | 0.45.0 |
| Python WebSocket 连接器 | rustls | 0.23.37 | 0.23.45 |
| Python WebSocket 连接器 | rustls-webpki | 0.103.13 | 0.103.14 |
| JDBC 连接器 | taos-jdbcdriver | 3.9.0 | 3.10.0 |
| JDBC 连接器 | jackson | 2.22.0 | 2.22.1 |
| JDBC 连接器 | netty | 4.2.15.Final | 4.2.17.Final |
| taosAdapter | golang.org/x/crypto | 0.53.0 | 0.57.0 |
| taosAdapter | golang.org/x/net | 0.56.0 | 0.60.0 |
| taosKeeper | gorilla/websocket | 1.5.0 | 1.5.3 |
| taosKeeper | driver-go | 3.7.8 | 3.8.3 |
| Go 连接器 | gorilla/websocket | 1.5.0 | 1.5.3 |
| Grafana 插件 tdengine-datasource | axios | 1.16.0 | 1.18.0 |
| Grafana 插件 tdengine-datasource | immutable | 4.3.8 | 4.3.9 |
| Grafana 插件 tdengine-datasource | dompurify | 3.4.11 | 3.4.13 |
| Grafana 插件 tdengine-datasource | protobufjs | 7.6.3 | 7.6.5 |
| Grafana 插件 tdengine-datasource | kin-openapi | 0.131.0 | 0.144.0 |
| Grafana 插件 tdengine-datasource | grpc | 1.79.3 | 1.83.2 |
| Grafana 插件 tdengine-datasource | OpenTelemetry SDK | 1.43.0 | 1.45.0 |
| Grafana 插件 tdengine-datasource | OpenTelemetry OTLP 导出器 | 1.28.0 / 1.29.0 | 1.45.0 |
| Grafana 插件 tdengine-datasource | golang.org/x/mod | 0.37.0 | 0.40.0 |
6.7 升级前操作
从 v3.3.6 升级到本版本时,旧流计算不能直接沿用。未删除旧流、TSMA、snode 及其数据目录时,taosd 会启动失败。步骤见 流计算兼容性说明。
已经在 v3.4.0.0 及之后按新流计算重建过的集群,滚动到本版本时不必重复上述步骤。
另外确认这三件事:
- 使用
wss://流通知时,证书受信任、未过期,且主机名与 URL 一致。 - taosX 仍有未重放的 cache 时,先排空再回滚。旧格式文件仍可读取。
- JDBC 应用如果持有
TSWSPreparedStatement,升级驱动后重新编译。
7. 已知问题
无。
8. 下载
安装包从 TDengine 下载中心 获取。安装包内附带 SPDX 与 CycloneDX 两种 SBOM,以及 SHA256。








