apache/seatunnel · error · IllegalArgumentException

Unsupported parse SeaTunnel Type from

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.

Solutions

  1. Correct the field type names to supported SeaTunnel types (string, int, bigint, double, map<...>, array<...>, row<...>)
  2. For containers, always include the element/value type parameters
  3. 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

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


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/cc0855d59338b130. Report an issue: GitHub.

Appendix: 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)