apache/seatunnel · error · InfluxdbConnectorException
UNSUPPORTED_DATA_TYPE
UNSUPPORTED_DATA_TYPE
Error message
Unsupported data type:
What it means
InfluxDBRowConverter.convert maps an InfluxDB query result field value to a SeaTunnel field based on the declared SeaTunnel SqlType. The branch chain only handles supported types (numeric types like FLOAT/DOUBLE/INT/BIGINT, BOOLEAN, STRING); a target SeaTunnel data type outside the supported set throws InfluxdbConnectorException with code UNSUPPORTED_DATA_TYPE naming the SeaTunnelDataType.
Source
Thrown at seatunnel-connectors-v2/connector-influxdb/src/main/java/org/apache/seatunnel/connectors/seatunnel/influxdb/converter/InfluxDBRowConverter.java:60
SqlType fieldSqlType = seaTunnelDataType.getSqlType();
if (null == values.get(columnIndex)) {
seaTunnelField = null;
} else if (SqlType.BOOLEAN.equals(fieldSqlType)) {
seaTunnelField = Boolean.parseBoolean(values.get(columnIndex).toString());
} else if (SqlType.SMALLINT.equals(fieldSqlType)) {
seaTunnelField = Short.valueOf(values.get(columnIndex).toString());
} else if (SqlType.INT.equals(fieldSqlType)) {
seaTunnelField = Integer.valueOf(values.get(columnIndex).toString());
} else if (SqlType.BIGINT.equals(fieldSqlType)) {
seaTunnelField = Long.valueOf(values.get(columnIndex).toString());
} else if (SqlType.FLOAT.equals(fieldSqlType)) {
seaTunnelField = ((Double) values.get(columnIndex)).floatValue();
} else if (SqlType.DOUBLE.equals(fieldSqlType)) {
seaTunnelField = values.get(columnIndex);
} else if (SqlType.STRING.equals(fieldSqlType)) {
seaTunnelField = values.get(columnIndex);
} else {
throw new InfluxdbConnectorException(
CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE,
"Unsupported data type: " + seaTunnelDataType);
}
fields.add(seaTunnelField);
}
return new SeaTunnelRow(fields.toArray());
}
}
View on GitHub (pinned to cf67b549a7)
Solutions
- Restrict the declared source schema types to what InfluxDB returns and the converter supports (numeric types, boolean, string)
- Change unsupported column types (e.g. ARRAY/MAP) to STRING and parse downstream
- Check the full supported-type chain in InfluxDBRowConverter and align your schema option with it
- Extend convert() with the missing SqlType branch if the type is legitimately representable
Example fix
// before
schema = { fields = { tag_map = "map<string,string>" } }
// after
schema = { fields = { tag_map = "string" } } Defensive patterns
Strategy: validation
Validate before calling
java.util.Set<SqlType> ok = Set.of(SqlType.FLOAT, SqlType.DOUBLE, SqlType.STRING,
SqlType.INT, SqlType.BIGINT, SqlType.BOOLEAN);
schemaFields.values().forEach(t -> {
if (!ok.contains(t.getSqlType())) throw new IllegalArgumentException("Unsupported InfluxDB source type: " + t);
}); Type guard
boolean isConvertible(SeaTunnelType<?> t) {
SqlType s = t.getSqlType();
return s == SqlType.FLOAT || s == SqlType.DOUBLE || s == SqlType.STRING
|| s == SqlType.INT || s == SqlType.BIGINT || s == SqlType.BOOLEAN;
} Try / catch
try {
row = InfluxDBRowConverter.convert(...);
} catch (InfluxdbConnectorException e) {
if ("UNSUPPORTED_DATA_TYPE".equals(String.valueOf(e.getCode()))) {
log.error("Schema field type not supported: {}", e.getMessage());
}
throw e;
} Prevention
- Keep source schema options limited to numeric/boolean/string types
- Treat complex InfluxDB data as STRING and parse downstream
- Re-validate schema options after editing connector configs
- Cross-check your schema against the converter's branch chain before upgrades
When it happens
Trigger: Declaring an InfluxDB source schema column with a SeaTunnel type (e.g. ARRAY, MAP, ROW, BYTES, DATE/TIME variants) that the converter's if/else chain never handles, then reading a record whose field lands on that column.
Common situations: Schema config lists a complex type for an InfluxDB field; users expect Decimal/BigDecimal mapping that isn't implemented; schema drift after someone edited the schema option in the HOCON config.
Related errors
- COMMON_UNSUPPORTED_DATA_TYPE
- UNSUPPORTED_DATA_TYPE
- GET_COLUMN_INDEX_FAILED
- UNSUPPORTED_DATA_TYPE
- Operator %s requires a compareOption (cross-field comparison
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/a42326fce685a7dc.
Report an issue: GitHub.