{"record":{"id":"c720e711ca27a4fb","repo":"apache/seatunnel","slug":"unsupported-type-c720e7","errorCode":null,"errorMessage":"Unsupported type: ","messagePattern":"Unsupported type: ","errorType":"exception","errorClass":"java.lang.UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-cdc/connector-cdc-base/src/main/java/org/apache/seatunnel/connectors/cdc/debezium/row/SeaTunnelRowDebeziumDeserializationConverters.java","lineNumber":187,"sourceCode":"                return convertToTimestampTz(serverTimeZone);\n            case FLOAT:\n                return wrapNumericConverter(convertToFloat());\n            case DOUBLE:\n                return wrapNumericConverter(convertToDouble());\n            case STRING:\n                return convertToString();\n            case BYTES:\n                return convertToBinary();\n            case DECIMAL:\n                return wrapNumericConverter(createDecimalConverter());\n            case ROW:\n                return createRowConverter(\n                        (SeaTunnelRowType) type, serverTimeZone, userDefinedConverterFactory);\n            case ARRAY:\n                return createArrayConverter(type);\n            case MAP:\n            default:\n                throw new UnsupportedOperationException(\"Unsupported type: \" + type);\n        }\n    }\n\n    @VisibleForTesting\n    protected static DebeziumDeserializationConverter createArrayConverter(\n            SeaTunnelDataType<?> type) {\n        SeaTunnelDataType elementType = ((ArrayType) type).getElementType();\n        switch (elementType.getSqlType()) {\n            case BOOLEAN:\n                return (dbzObj, schema) ->\n                        convertListToArray((List<Boolean>) dbzObj, Boolean.class);\n            case SMALLINT:\n                return (dbzObj, schema) -> convertListToArray((List<Short>) dbzObj, Short.class);\n            case INT:\n                return (dbzObj, schema) ->\n                        convertListToArray((List<Integer>) dbzObj, Integer.class);\n            case BIGINT:\n                return (dbzObj, schema) -> convertListToArray((List<Long>) dbzObj, Long.class);","sourceCodeStart":169,"sourceCodeEnd":205,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-cdc/connector-cdc-base/src/main/java/org/apache/seatunnel/connectors/cdc/debezium/row/SeaTunnelRowDebeziumDeserializationConverters.java#L169-L205","documentation":"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.","triggerScenarios":"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.","commonSituations":"Defining a table schema for a CDC source that includes MAP or unsupported complex types, e.g. hand-written schema or catalog mapping gap.","solutions":["Remove or replace the MAP column (and any other unsupported type) in the source schema; use STRING/BYTES/ROW instead.","Check SeaTunnel CDC docs for the list of supported column types for your database and adjust table_path/schema.","If the type should be supported, file/patch SeaTunnel to add a converter branch in createNotNullConverter."],"exampleFix":"// before\nfields { MAP<STRING,STRING> { ... } } // throws Unsupported type: MAP\n// after\nfields { STRING metadata_json }","handlingStrategy":"validation","validationCode":"// Java\nstatic boolean isSupportedCdcType(SeaTunnelDataType<?> t) {\n    switch (t.getSqlType()) {\n        case STRING: case BOOLEAN: case TINYINT: case SMALLINT: case INT: case BIGINT:\n        case FLOAT: case DOUBLE: case DECIMAL: case DATE: case TIME: case TIMESTAMP:\n        case TIMESTAMP_TZ: case BYTES: case ROW: case ARRAY:\n            return true;\n        default:\n            return false; // e.g. MAP is not supported\n    }\n}","typeGuard":"if (type.getSqlType() == SqlType.MAP) {\n    throw new IllegalArgumentException(\"MAP columns are not supported in CDC sources; use STRING/BYTES/ROW\");\n}","tryCatchPattern":"try {\n    converter = createConverter(type, timeZone, factory);\n} catch (UnsupportedOperationException e) {\n    log.error(\"schema contains unsupported CDC type: {}\", type, e);\n    throw new IllegalArgumentException(\"Fix table schema: \" + e.getMessage(), e);\n}","preventionTips":["Check the CDC connector's supported-type list before designing the schema","Avoid MAP and other complex types in CDC table definitions","Keep catalog type mappings in sync with the connector version"],"tags":["cdc","unsupported-type","deserialization","schema"],"backgroundTag":"unsupported-dtype","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}