This is an automated email from the ASF dual-hosted git repository.
duansg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git
The following commit(s) were added to refs/heads/master by this push:
new dc96f1766b [Fix]: fix TAG type mismatch by introducing schema version
for TDengine (#3963)
dc96f1766b is described below
commit dc96f1766b0a919132af333d10bbf430954faf03
Author: LunaRain_079 <[email protected]>
AuthorDate: Tue Jan 13 21:29:27 2026 +0800
[Fix]: fix TAG type mismatch by introducing schema version for TDengine
(#3963)
---
.../history/tsdb/tdengine/TdEngineDataStorage.java | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git
a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/tdengine/TdEngineDataStorage.java
b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/tdengine/TdEngineDataStorage.java
index b81bc5b401..85e905f31d 100644
---
a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/tdengine/TdEngineDataStorage.java
+++
b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/tdengine/TdEngineDataStorage.java
@@ -68,8 +68,14 @@ public class TdEngineDataStorage extends
AbstractHistoryDataStorage {
private static final String INSTANCE_NULL = "''";
private static final String CONSTANTS_CREATE_DATABASE = "CREATE DATABASE
IF NOT EXISTS %s";
private static final String INSERT_TABLE_DATA_SQL = "INSERT INTO `%s`
USING `%s` TAGS (%s) VALUES %s";
- private static final String CREATE_SUPER_TABLE_SQL = "CREATE STABLE IF NOT
EXISTS `%s` %s TAGS (monitor BIGINT)";
+ private static final String CREATE_SUPER_TABLE_SQL = "CREATE STABLE IF NOT
EXISTS `%s` %s TAGS (instance NCHAR(128))";
private static final String NO_SUPER_TABLE_ERROR = "Table does not exist";
+ /**
+ * schema version suffix - increment when TAG definition changes.
+ * v1: instance BIGINT (original monitorId like 123456789)
+ * v2: instance NCHAR(128) (supports string instance values like
127.0.0.1:8080)
+ */
+ private static final String SUPER_TABLE_VERSION = "_v2";
private static final String QUERY_HISTORY_WITH_INSTANCE_SQL =
"SELECT ts, metric_labels, `%s` FROM `%s` WHERE metric_labels =
'%s' AND ts >= now - %s order by ts desc";
@@ -185,7 +191,7 @@ public class TdEngineDataStorage extends
AbstractHistoryDataStorage {
String instance = metricsData.getInstance();
String app = metricsData.getApp();
String metrics = metricsData.getMetrics();
- String superTable = getTable(app, metrics, "_super");
+ String superTable = getSuperTable(app, metrics);
String table = getTable(app, metrics, instance);
StringBuilder sqlBuffer = new StringBuilder();
int i = 0;
@@ -246,7 +252,7 @@ public class TdEngineDataStorage extends
AbstractHistoryDataStorage {
sqlBuffer.append("
").append(String.format(sqlRowBuffer.toString(),
formatStringValue(JsonUtil.toJson(labels))));
}
- String insertDataSql = String.format(INSERT_TABLE_DATA_SQL, table,
superTable, instance, sqlBuffer);
+ String insertDataSql = String.format(INSERT_TABLE_DATA_SQL, table,
superTable, "'" + formatStringValue(instance) + "'", sqlBuffer);
if (log.isDebugEnabled()) {
log.debug(insertDataSql);
@@ -325,7 +331,12 @@ public class TdEngineDataStorage extends
AbstractHistoryDataStorage {
.replace("[", "_")
.replace("]", "_");
}
- return app + "_" + metrics + "_" + instance;
+ return app + "_" + metrics + "_" + instance + SUPER_TABLE_VERSION;
+ }
+
+ @NotNull
+ private static String getSuperTable(String app, String metrics) {
+ return app + "_" + metrics + "_super" + SUPER_TABLE_VERSION;
}
private String formatStringValue(String value) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]