apache/seatunnel · error · TDengineConnectorException
UNSUPPORTED_DATA_TYPE
UNSUPPORTED_DATA_TYPE
Error message
Doesn't support TDENGINE type '%s' yet.
What it means
TDengineTypeMapper.mapping() throws when converting a TDengine column type that SeaTunnel does not yet support — specifically TDENGINE_GEOMETRY, TDENGINE_UNKNOWN, or any unrecognized type string. It fails fast instead of silently losing data.
Source
Thrown at seatunnel-connectors-v2/connector-tdengine/src/main/java/org/apache/seatunnel/connectors/seatunnel/tdengine/typemapper/TDengineTypeMapper.java:150
case TDENGINE_TIME:
return LocalTimeType.LOCAL_TIME_TYPE;
case TDENGINE_DATETIME:
case TDENGINE_TIMESTAMP:
return LocalTimeType.LOCAL_DATE_TIME_TYPE;
case TDENGINE_TINYBLOB:
case TDENGINE_MEDIUMBLOB:
case TDENGINE_BLOB:
case TDENGINE_LONGBLOB:
case TDENGINE_VARBINARY:
case TDENGINE_BINARY:
return PrimitiveByteArrayType.INSTANCE;
// Doesn't support yet
case TDENGINE_GEOMETRY:
case TDENGINE_UNKNOWN:
default:
throw new TDengineConnectorException(
CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE,
String.format("Doesn't support TDENGINE type '%s' yet.", tdengineType));
}
}
}
View on GitHub (pinned to cf67b549a7)
Solutions
- Exclude GEOMETRY/unsupported columns from the query (select only supported columns).
- Convert the GEOMETRY column to a supported type in TDengine (e.g. store WKT as BINARY/VARCHAR) and read that instead.
- Upgrade SeaTunnel to a version whose TDengineTypeMapper supports the type, if available.
- Check the tdengineType value in the message to confirm which type is unhandled before changing schema.
Example fix
// before query = "SELECT id, location FROM sensors"; // location is GEOMETRY // after query = "SELECT id, CAST(location AS BINARY) AS location FROM sensors"; // or drop the column
Defensive patterns
Strategy: validation
Validate before calling
// Check column types up front
try (ResultSet rs = stmt.executeQuery("DESCRIBE " + table)) {
while (rs.next()) {
String type = rs.getString("type");
if (type.contains("GEOMETRY")) throw new IllegalStateException("Unsupported column: " + rs.getString("field"));
}
} Type guard
boolean isSupportedTdengineType(String t) {
String u = t == null ? "" : t.toUpperCase();
return u.contains("BOOL") || u.contains("TINYINT") || u.contains("SMALLINT") || u.contains("INT")
|| u.contains("BIGINT") || u.contains("FLOAT") || u.contains("DOUBLE")
|| u.contains("TIMESTAMP") || u.contains("BINARY") || u.contains("NCHAR") || u.contains("VARCHAR");
} Try / catch
try {
catalog.getTable(tablePath);
} catch (UnsupportedOperationException | IllegalArgumentException e) {
log.error("Table has unsupported TDengine types; exclude or cast them", e);
} Prevention
- Exclude or CAST GEOMETRY columns before reading
- Describe the table schema and validate types against the mapper's supported list before the job
- Upgrade TDengine/connector versions together so new types are mapped
When it happens
Trigger: Reading (schema conversion for) a table containing a GEOMETRY column, an unknown type returned by the driver, or a type added in a newer TDengine version that the mapper has no case for.
Common situations: Querying TDengine 3.x tables with GEOMETRY columns; upgrading TDengine introduces a new data type the connector doesn't map; typo'd/unsupported type strings in metadata.
Related errors
- Unsupported to derive Schema for type: ${dataType}
- UNSUPPORTED_DATA_TYPE
- UNSUPPORTED_DATA_TYPE
- UNSUPPORTED_DATA_TYPE
- Unsupported type:
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/f82d0830224f0cb9.
Report an issue: GitHub.