Apache IoTDB Extras 2.0.11

Changes since v2.0.3. Built against IoTDB 2.0.11 (TsFile 2.4.0, Thrift 0.23.0).

Release date: to be set when the release vote passes.

Compatibility

  • All Java modules require JDK 17 and build against IoTDB 2.0.11. The JDK 8 and 11 build profiles are removed. (#132)
  • The Spring Boot starter also supports Spring Boot 4 (Spring Framework 7.0.9) through the spring-boot4 profile, and CI runs the starter and the MyBatis-Plus example on it. (#132)
  • MyBatis: TIME and TIMESTAMP columns map to Long, FLOAT to Float, DATE to LocalDate and BLOB to byte[]. Regenerate mapper interfaces and XML together. (#132)
  • MyBatis: applications must register IoTDBQueryInterceptor from the new mybatis-support module. With the 2.0.11 JDBC driver, a table-model prepared SELECT run with execute() returns true without populating getResultSet(). See mybatis-support/README.md. The with-mybatis distribution profile ships mybatis-support next to the generator plugin. (#132)
  • Spring Boot starter: fetch-size defaults to 5000 (was 1024), connection-timeout-in-ms defaults to 0, and sql-dialect is deprecated. (#132)
  • The Grafana plugin requires Grafana 12.3.0 or later. (#118)

New Modules

  • ThingsBoard: iotdb-thingsboard-table stores ThingsBoard 4.3.1.2 historical telemetry, latest telemetry and entity attributes in the IoTDB table model. Each path has its own selector and is off by default. It includes time-bucketed aggregation, user and migration guides, and an ingestion benchmark. (#110, #113, #115, #116, #117, #119, #120, #121, #124, #125, #127, #137)
  • Metric scrape: metric-scrape scrapes Prometheus text endpoints and writes the metrics to the IoTDB table model, with Docker and Kubernetes examples. (#111)
  • MyBatis: mybatis-support adds runtime adapters for the 2.0.11 JDBC driver. (#132)

Grafana Plugin

  • Table-model SQL queries through the native IoTDB Go client, with time macros and $__interval / $__interval_ms. (#114, #122)
  • Database, table and column pickers and a starter query in the table-model editor. (#134)
  • Range, Instant and Both query types, legend format, and “No data” on empty results. (#123, #129)
  • Table-model template variables, object-form variable queries, and multi-value variables in tree-model path prefixes. (#109, #126, #128)
  • The build moves from grafana-toolkit to create-plugin, the IoTDB Go client is upgraded to 2.0.10, and the README screenshots are fixed. (#118, #130, #131)

Connectors and Examples

  • Flink SQL connector: the lookup join no longer fails on a null value, and no longer returns a row for a timestamp with no data. (#135)
  • Flink DataStream sink: accepts multiple node URLs. (#84)
  • Spring Boot starter: IoTDBSessionPool is an @AutoConfiguration whose pool beans close with the context. (#132)
  • Collector: IoTDBPushSource consumes record-format subscription messages through the 2.0.11 API. (#132)
  • Zeppelin interpreter: the jar with dependencies is built by default. (166d75d, 827ccea, pushed without a PR)
  • Kafka, RocketMQ and RabbitMQ examples for the table model, and updated MyBatis-Plus and Spring Boot examples and dependencies. (#83, #85, #93, #132)
  • Helm: unnecessary ConfigNode settings are removed. (#89)

Build

  • IoTDB, TsFile and build plugin versions are updated, and the build publishes to develocity.apache.org. (#94, #132, #133, #136)
  • Repository README in English and Chinese. (#82)

Known Limitations

  • On servers using us or ns time precision, a DELETE with a time predicate can report success without deleting the row on IoTDB 2.0.11. This is a server-side issue that also reproduces with raw JDBC; see examples/mybatis-generator/README.md and examples/mybatisplus-generator/README.md.
  • The Spark 2.4 / Scala 2.11 modules compile, but need a runtime migration before deployment on JDK 17.