apache/seatunnel · error · SeaTunnelRuntimeException
COMMON-19
COMMON-19
Error message
'${identifier}' unsupported convert SeaTunnel data type '${dataType}' of '${field}' to connector data type. What it means
MaxCompute runtime type converter's reconvert() throws this when a SeaTunnel data type has no MaxCompute representation. TIME (and any other unlisted SqlType) is rejected in the switch default because MaxCompute ODPS types cannot express a TIME-only column.
Solutions
- Cast TIME columns to TIMESTAMP or STRING before the MaxCompute sink via a transform
- Drop TIME columns from the sink schema
- Extend reconvert() with a mapping (e.g. TIME -> STRING 'HH:mm:ss')
Example fix
// before query = "SELECT id, t FROM src" // t is TIME // after query = "SELECT id, CAST(t AS TIMESTAMP) AS t FROM src"
Defensive patterns
Strategy: try-catch
Try / catch
try {
CatalogColumn col = maxComputeConverter.reconvert(column);
} catch (SeaTunnelConvertException e) {
LOG.warn("SeaTunnel type {} cannot map to MaxCompute for {}", column.getDataType().getSqlType(), column.getName());
// fallback: cast TIME to TIMESTAMP in a transform before the sink
} Prevention
- Validate the entire sink schema before enabling auto table creation
When it happens
Trigger: reconvert() is called on a CatalogColumn with SeaTunnel SqlType TIME (explicitly rejected) or another unmapped type during sink catalog table creation or schema sync.
Common situations: Auto-creating MaxCompute tables from sources with TIME columns; schema evolution carrying TIME or complex types into the MaxCompute sink.
Related errors
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/35afe22aa780163a.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/datatype/MaxComputeTypeConverter.java:535
reconvert(
new PhysicalColumn(
"element",
elementType,
null,
null,
true,
null,
null,
null,
null));
builder.nativeType(TypeInfoFactory.getArrayTypeInfo(elementDefine.getNativeType()));
builder.columnType(String.format("ARRAY<%s>", elementDefine.getColumnType()));
builder.dataType(ARRAY);
break;
case TIME:
default:
throw CommonError.convertToConnectorTypeError(
MaxcomputeBaseOptions.PLUGIN_NAME,
column.getDataType().getSqlType().name(),
column.getName());
}
return builder.build();
}
}
View on GitHub (pinned to cf67b549a7)