apache/seatunnel · error · SeaTunnelRuntimeException
COMMON-17
COMMON-17
Error message
'${identifier}' unsupported convert type '${dataType}' of '${field}' to SeaTunnel data type. What it means
StarRocks catalog converter's toSeaTunnelType() throws this when a StarRocks (MySQL-protocol) column type has no SeaTunnel mapping. SET and YEAR are explicitly unsupported (TODO), and any other unmapped MysqlType reaches the default throw.
Solutions
- Change the table schema or query to avoid SET/YEAR columns (e.g. cast SET to VARCHAR via group_concat, YEAR to INT)
- Exclude those columns from the read/catalog sync
- Add mapping cases for SET/YEAR in StarRocksDataTypeConvertor.toSeaTunnelType()
Example fix
-- before: SELECT y_col FROM t -- y_col YEAR -- after SELECT CAST(y_col AS INT) AS y_col FROM t
Defensive patterns
Strategy: try-catch
Try / catch
try {
SeaTunnelDataType<?> t = converter.toSeaTunnelType(field, mysqlType, props);
} catch (SeaTunnelConvertException e) {
LOG.warn("Unmapped StarRocks type {} for {}", mysqlType, field);
// fallback: skip column or cast to VARCHAR upstream
} Prevention
- Report all unmapped columns in one pass instead of failing on the first one
When it happens
Trigger: toSeaTunnelType() is called for a StarRocks column whose MysqlType is SET, YEAR, or another type without a switch case — typically when reading StarRocks catalogs or schema sync.
Common situations: Tables using StarRocks SET or YEAR columns; catalog-based source ingestion of such tables; type list changes between StarRocks versions.
Related errors
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/21457cb7cfff51fb.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/StarRocksDataTypeConvertor.java:149
return BasicType.STRING_TYPE;
case BINARY:
case VARBINARY:
case TINYBLOB:
case BLOB:
case MEDIUMBLOB:
case LONGBLOB:
case GEOMETRY:
return PrimitiveByteArrayType.INSTANCE;
case BIGINT_UNSIGNED:
case DECIMAL:
case DECIMAL_UNSIGNED:
Integer precision =
MapUtils.getInteger(dataTypeProperties, PRECISION, DEFAULT_PRECISION);
Integer scale = MapUtils.getInteger(dataTypeProperties, SCALE, DEFAULT_SCALE);
return new DecimalType(precision, scale);
// TODO: support 'SET' & 'YEAR' type
default:
throw CommonError.convertToSeaTunnelTypeError(
"StarRocks", mysqlType.toString(), field);
}
}
@Override
public MysqlType toConnectorType(
String field,
SeaTunnelDataType<?> seaTunnelDataType,
Map<String, Object> dataTypeProperties) {
SqlType sqlType = seaTunnelDataType.getSqlType();
// todo: verify
switch (sqlType) {
case ARRAY:
case MAP:
case ROW:
case STRING:
return MysqlType.VARCHAR;
case BOOLEAN:View on GitHub (pinned to cf67b549a7)