apache/seatunnel · error · IllegalArgumentException
Unsupported parse SeaTunnel Type from '%s'.
Error message
Unsupported parse SeaTunnel Type from '%s'.
What it means
Within parseRowType, each field's declared type must resolve to a parseable SeaTunnel type; value types like LIST, NUMBER, BOOLEAN or NULL at a field-type position are not valid row field types, so the converter throws IllegalArgumentException with the offending value.
Source
Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/table/catalog/SeaTunnelDataTypeConvertorUtil.java:182
switch (typeVal.valueType()) {
case STRING:
{
fieldTypes[idx] =
deserializeSeaTunnelDataType(
fieldNames[idx], (String) typeVal.unwrapped());
}
break;
case OBJECT:
{
fieldTypes[idx] = parseRowType((ConfigObject) typeVal);
}
break;
case LIST:
case NUMBER:
case BOOLEAN:
case NULL:
default:
throw new IllegalArgumentException(
String.format(
"Unsupported parse SeaTunnel Type from '%s'.",
typeVal.unwrapped()));
}
}
return new SeaTunnelRowType(fieldNames, fieldTypes);
}
private static SeaTunnelDataType<?> parseMapType(String field, String columnStr) {
String genericType = getGenericType(columnStr).trim();
int index =
genericType.toUpperCase().startsWith(SqlType.DECIMAL.name())
?
// if map key is decimal, we should find the index of second ','
genericType.indexOf(",", genericType.indexOf(",") + 1)
:
// if map key is not decimal, we should find the index of first ','
genericType.indexOf(",");View on GitHub (pinned to cf67b549a7)
Solutions
- Correct the field type names to supported SeaTunnel types (string, int, bigint, double, map<...>, array<...>, row<...>)
- For containers, always include the element/value type parameters
- Check the connector's supported data type docs for the exact syntax
Example fix
// before row<name list> // incomplete/unsupported // after row<name array<string>>
Defensive patterns
Strategy: validation
Validate before calling
String[] supported = {"string","boolean","tinyint","smallint","int","bigint","float","double","decimal","date","time","timestamp","bytes","array","map","row"};
// ensure each field type token is one of these (with required params) Try / catch
try { type = SeaTunnelDataTypeConvertorUtil.parseRowType(s); } catch (IllegalArgumentException e) { /* fix offending token shown in message */ } Prevention
- Use exact supported type names; avoid typos
- Always parameterize array/map/row types
- Cross-check against connector type-mapping docs
When it happens
Trigger: A field in a ROW type declaration uses an unsupported/unknown type token (e.g. 'row<a list>' where 'list' lacks element type, or any unrecognized name falling into the default switch case).
Common situations: Typos in type names (STRINGG, INTEGR), using container types without required parameters, or strings produced by another system using different type naming conventions.
Understand the failure class
Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.
Related errors
- HOCON Config parse from %s failed.
- Cannot get split '%s' to get databaseName and tableName
- Unsupported datetime format:
- Source offset '" + key + "' parameter value " + obj + " coul
- The server id range should be syntax like '5400-5500', but g
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/cc0855d59338b130.
Report an issue: GitHub.