apache/seatunnel · error · java.lang.UnsupportedOperationException

Unsupported type:

Error message

Unsupported type: 

What it means

SeaTunnelRowDebeziumDeserializationConverters.createNotNullConverter() builds a converter per SeaTunnel SQL type. Only the defined SQL types are handled; anything falling through (including MAP, and the default case) throws UnsupportedOperationException 'Unsupported type'. The CDC row deserializer simply has no mapping for that SeaTunnel type.

Source

Thrown at seatunnel-connectors-v2/connector-cdc/connector-cdc-base/src/main/java/org/apache/seatunnel/connectors/cdc/debezium/row/SeaTunnelRowDebeziumDeserializationConverters.java:187

                return convertToTimestampTz(serverTimeZone);
            case FLOAT:
                return wrapNumericConverter(convertToFloat());
            case DOUBLE:
                return wrapNumericConverter(convertToDouble());
            case STRING:
                return convertToString();
            case BYTES:
                return convertToBinary();
            case DECIMAL:
                return wrapNumericConverter(createDecimalConverter());
            case ROW:
                return createRowConverter(
                        (SeaTunnelRowType) type, serverTimeZone, userDefinedConverterFactory);
            case ARRAY:
                return createArrayConverter(type);
            case MAP:
            default:
                throw new UnsupportedOperationException("Unsupported type: " + type);
        }
    }

    @VisibleForTesting
    protected static DebeziumDeserializationConverter createArrayConverter(
            SeaTunnelDataType<?> type) {
        SeaTunnelDataType elementType = ((ArrayType) type).getElementType();
        switch (elementType.getSqlType()) {
            case BOOLEAN:
                return (dbzObj, schema) ->
                        convertListToArray((List<Boolean>) dbzObj, Boolean.class);
            case SMALLINT:
                return (dbzObj, schema) -> convertListToArray((List<Short>) dbzObj, Short.class);
            case INT:
                return (dbzObj, schema) ->
                        convertListToArray((List<Integer>) dbzObj, Integer.class);
            case BIGINT:
                return (dbzObj, schema) -> convertListToArray((List<Long>) dbzObj, Long.class);

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Remove or replace the MAP column (and any other unsupported type) in the source schema; use STRING/BYTES/ROW instead.
  2. Check SeaTunnel CDC docs for the list of supported column types for your database and adjust table_path/schema.
  3. If the type should be supported, file/patch SeaTunnel to add a converter branch in createNotNullConverter.

Example fix

// before
fields { MAP<STRING,STRING> { ... } } // throws Unsupported type: MAP
// after
fields { STRING metadata_json }
Defensive patterns

Strategy: validation

Validate before calling

// Java
static boolean isSupportedCdcType(SeaTunnelDataType<?> t) {
    switch (t.getSqlType()) {
        case STRING: case BOOLEAN: case TINYINT: case SMALLINT: case INT: case BIGINT:
        case FLOAT: case DOUBLE: case DECIMAL: case DATE: case TIME: case TIMESTAMP:
        case TIMESTAMP_TZ: case BYTES: case ROW: case ARRAY:
            return true;
        default:
            return false; // e.g. MAP is not supported
    }
}

Type guard

if (type.getSqlType() == SqlType.MAP) {
    throw new IllegalArgumentException("MAP columns are not supported in CDC sources; use STRING/BYTES/ROW");
}

Try / catch

try {
    converter = createConverter(type, timeZone, factory);
} catch (UnsupportedOperationException e) {
    log.error("schema contains unsupported CDC type: {}", type, e);
    throw new IllegalArgumentException("Fix table schema: " + e.getMessage(), e);
}

Prevention

When it happens

Trigger: A CDC source whose SeaTunnel schema contains a MAP column (or another type not handled) reaching converter creation, since CDC row values cannot be mapped into that type.

Common situations: Defining a table schema for a CDC source that includes MAP or unsupported complex types, e.g. hand-written schema or catalog mapping gap.

Related errors


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