github taosdata/TDengine ver-3.4.2.8
3.4.2.8

4 hours ago

Release date: 2026-08-30

Release type Recommended for
Maintenance release Users of stream processing, virtual tables, taosX synchronization and backup, or several level-0 mount points

1. Highlights

  • taosExplorer can show latency, input and output rates, historical progress, failure reasons, and recalculation records on the stream page.
  • TDinsight adds a stream observability panel and preset alerts for stream failure and recalculation failure. TDengine v3.4.2.7 or later is required.
  • A stream trigger supports a nested window.
  • One statement can create or drop several virtual tables. A virtual ordinary table and an ordinary table support their own tags.
  • ALTER DATABASE can change MAXROWS at runtime.
  • When level 0 is configured with several mount points, a new WAL segment can be assigned across those mount points in round-robin order.

2. Features

2.1 Stream processing

  • The taosExplorer stream page shows latency, input and output rates, historical progress, failure reasons, and recalculation records of a stream task.
  • TDinsight adds a stream observability panel and preset alerts for stream failure and recalculation failure. Alerts can be forwarded to a channel such as DingTalk through a notification policy. TDengine v3.4.2.7 or later is required.
  • A stream trigger supports nested windows. WINDOW can combine 2 to 8 window layers, and outer context variables drive the inner calculation. See Nested Window Trigger.
  • The first time a stream task stops because of an error, a failure metric is reported to taosKeeper.

2.2 Virtual tables

  • DROP VTABLE can drop several virtual ordinary tables or virtual child tables at once, including objects in different databases.
  • One CREATE VTABLE can create several virtual child tables.
  • A virtual ordinary table and an ordinary table support their own tag columns. The tags can be defined and maintained with CREATE and ALTER, and they appear in SHOW CREATE TABLE, SHOW TAGS, and ins_tags. See Virtual Tables.

2.3 Storage and operations

  • ALTER DATABASE can change MAXROWS at runtime. After that, COMPACT FORCE makes existing filesets use the new block size.
  • walMultiMountEnable is added. When level 0 has several mount points, a new WAL segment is assigned across the mount points in round-robin order. The default is 1. It can be changed at runtime with ALTER ALL DNODES and affects only segments created afterward. The parameter was introduced in v3.4.2.7.
  • FLUSH MNODE and taosd -fMnode are added. Exporting and importing sdb JSON can change metadata such as global parameters offline in a failure scenario.

3. Enhancements

  • When a taosX TMQ synchronization rebuilds a consumer, subscribe is retried a limited number of times, which lowers the chance that a short source restart fails the whole task.
  • While taosX imports hundreds of thousands of CSV files, parsing and task creation can be configured, which lowers timeouts and the import slowdown that grows with the file count.
  • Reliable-write ACK in taosX-Agent adds the protocol and a UUID v7 identity basis. This release still uses the original write path, and Kafka offset behavior is unchanged.
  • A failed manual stream recalculation no longer stops the whole stream. An unfinished recalculation request can resume after a restart.
  • When the data-subscription heartbeat timer has not reported for more than two periods, the poll thread sends a heartbeat, which lowers the chance that a consumer is marked offline by mistake.
  • The PARTITION BY group cache and spill policy are improved, which lowers disk reads and writes caused by insufficient memory pages when cardinality is high and groups are small.
  • taosX strengthens timeout handling of Kafka consumption and downstream writes, and adds connection-pool and connector observability metrics.
  • While ingesting MySQL, taosX sample queries and historical synchronization no longer send a large-window SQL that exceeds the query interval.

4. Fixes

4.1 Severe issues

  • During real-time MySQL synchronization, taosX delay also moved the window start backward, so query windows overlapped and data was written twice. Affected versions: all versions. Data already synchronized needs to be checked for duplicates.
  • In taosX OPC UA "select data points" mode, a point id that contained :: or , was truncated, so some points had no data. Affected versions: all versions. Points already collected need to be checked against the source.
  • While deciding that a taosX backup task was finished, the task queried the offset of a vgroup it did not own, so the task never ended. Affected versions: all versions.
  • Reusing a result block for a stream external window could write out of bounds and crash taosd. The new stream processing was released in v3.3.7.0. Affected versions: v3.3.7.0 through v3.4.2.5.
  • With stream nodelay_create_subtable enabled, a grouped result child table was visible in information_schema and SHOW TABLES, but SELECT reported that the table did not exist. Affected versions: v3.3.7.0 through v3.4.2.5.
  • During RECALCULATE STREAM, the user-specified FROM / TO was clipped by the runtime boundary, so some data did not take part in the recalculation. Affected versions: v3.3.7.0 through v3.4.2.5. Run the recalculation again after the upgrade for streams that need it.
  • A stream task failed when a reader task was briefly absent during cluster balance. Affected versions: v3.3.7.0 through v3.4.2.5.
  • A STMT2 or WebSocket query that used tbname = ? or tbname IN (?) read the placeholder instead of the bound table name, routed to the wrong vgroup, and returned an empty result. STMT2 was released in v3.3.3.0. Affected versions: v3.3.3.0 through v3.4.2.5.
  • An XNode task that contained escape characters was stored using the length before unescaping. After the upgrade, trailing null bytes made JSON parsing fail, so the task could not be loaded. XNode was released in v3.4.0.0. Affected versions: v3.4.0.0 through v3.4.2.5.
  • After an offline replica recovered through a snapshot, it did not apply the leader's KEEP. The retention policy did not match, so expired data could not be cleaned by the new policy. Affected versions: all versions.
  • The slope and intercept of LEASTSQUARES were unstable across several vgroups. Affected versions: all versions.
  • REGEXP_IN_SET returned the wrong result when an NCHAR column was the separator, or when an empty NCHAR was passed. Affected versions: all versions.
  • Timezone functions such as TO_CHAR on the RESTful interface parsed an ISO 8601 offset such as +0800 as POSIX, so the timezone result was offset. Affected versions: all versions.
  • After the reference of a virtual super table changed, a query occasionally reported Invalid parameters. Virtual tables were released in v3.3.6.0. Affected versions: v3.3.6.0 through v3.4.2.5.
  • When the source-table VGroup route of a virtual super table was stale, the retry did not refresh the source-database metadata, and No valid epSet occurred occasionally. Affected versions: v3.3.6.0 through v3.4.2.5.
  • Running SHOW TRANSACTIONS while a transaction was unfinished could crash taosd. Affected versions: all versions.
  • When database minRows equaled maxRows, SHOW DISK_INFO or SHOW TABLE DISTRIBUTED could crash taosd. Affected versions: all versions.

4.2 Query and timezone

  • Running a statement such as INTERP through a view or a prepared statement reported a function conflict by mistake.
  • A timezone error no longer returns the unreplaced Invalid timezone: '%s'. A system error such as running out of file descriptors is no longer reported as an illegal timezone.
  • A POSIX offset that omits the plus sign, such as UTC0 or UTC8, can be accepted. UTC0 means UTC+0.

4.3 Stream processing and writes

  • After a super table was dropped and recreated with the same name, STMT2 still used the old cache and the write reported Table does not exist.
  • When STMT2 bound DECIMAL, binding only some columns, or using non-contiguous column IDs, used another column's precision by mistake and reported Decimal value overflow.
  • After the user who created an XNode task was deleted, root or a privileged user could not delete or update the task.
  • A WebSocket TMQ client failed to deserialize an error response, so the request hung or reported an error.
  • The Rust WebSocket connector did not clear requests still in the channel when the connection closed.

4.4 taosX, taosdump, and taosExplorer

  • After a taosX MySQL task was stopped and started again, it could not continue from the checkpoint and synchronized again from the configured start time.
  • When taosdump restored only ext-meta, it did not create every database before running stream and topic DDL, so a cross-database dependency restore failed at random. This capability is available from v3.4.2.5. Affected versions: v3.4.2.5.
  • taosExplorer: fields were not shown while editing an ordinary table; the ordinary-table detail showed a composite primary key as a tag and showed the super-table and tag areas by mistake; in the data-write preview, a child-table name template column lost its prefix and suffix when cast to empty; restore from a specified backup point failed because the task name was missing or the DSN encoding was wrong; the cross-origin policy was too strict, so an HTTP preflight from a different origin such as IDMP failed and the WebSocket handshake was rejected.

5. Security

This release has no security-related fix.

6. Upgrade notes

6.1 Upgrade path

  • Source versions that support a direct upgrade: v3.3.7 and later.
  • Rolling upgrade: supported, from v3.4.2.0 through v3.4.2.8.
  • Downgrade or rollback: supported, from v3.4.2.0 through v3.4.2.8.
  • Minimum matching client and connector version: v3.4.2.0.

6.2 Behavior changes

  • A failed manual stream recalculation no longer stops the whole stream.
  • UTC0 means UTC+0. Forms that omit the plus sign, such as UTC0 and UTC8, are no longer rejected.
  • A timezone error returns the formatted message. The unreplaced Invalid timezone: '%s' is no longer given to the application. Running out of file descriptors is no longer reported as an illegal timezone.
  • cors of taosExplorer controls HTTP cross-origin. When cors is true, any Origin is allowed. The default is false. allowedOrigins constrains only cross-host WebSocket handshakes and no longer affects HTTP. When cors is false, the same host on any port and loopback can access by default.
  • information_schema.ins_stream_recalculates adds the request_time and message columns. An application that reads by column name does not need to change.

6.3 Configuration changes

Parameter Purpose
walMultiMountEnable When level 0 has several mount points, whether a new WAL segment is assigned across the mount points in round-robin order. Default 1. Changeable at runtime, and it affects only segments created afterward. Introduced in v3.4.2.7.
cors HTTP cross-origin switch of taosExplorer. Default false. When true, any Origin is allowed.
allowedOrigins Constrains only cross-host WebSocket handshakes of taosExplorer, and no longer affects HTTP.

6.4 Keyword changes

None.

6.5 System table changes

information_schema.ins_stream_recalculates adds request_time and message.

No system table is removed in this release.

6.6 Dependency changes

Component Dependency v3.4.2.5 v3.4.2.8
taosAdapter golang.org/x/crypto 0.52.0 0.53.0
taosAdapter golang.org/x/net 0.55.0 0.56.0
Grafana plugin tdengine-datasource axios 1.15.2 1.16.0
Grafana plugin tdengine-datasource dompurify 3.4.0 3.4.11
Grafana plugin tdengine-datasource protobufjs 7.5.8 7.6.3
Grafana plugin tdengine-datasource golang.org/x/mod 0.30.0 0.37.0

6.7 Before you upgrade

An upgrade from v3.3.6 cannot keep the old stream processing. If the old streams, TSMA, snode, and their data directories are not removed, taosd fails to start. See Compatibility Notes.

A cluster that already rebuilt streams with the new stream processing on v3.4.2.0 or later does not repeat those steps when it rolls to this release.

7. Known issues

None.

8. Downloads

The package is available from the TDengine download center. The package includes an SBOM and a SHA256 checksum.

Don't miss a new TDengine release

NewReleases is sending notifications on new releases.