{"record":{"id":"99e4a8393c4c83d5","repo":"apache/seatunnel","slug":"unsupported-type-s","errorCode":null,"errorMessage":"Unsupported type: %s","messagePattern":"Unsupported type: (.+?)","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"seatunnel-formats/seatunnel-format-json/src/main/java/org/apache/seatunnel/format/json/debezium/DebeziumRowConverter.java","lineNumber":224,"sourceCode":"                            getValue(null, ((MapType) dataType).getValueType(), entry.getValue()));\n                }\n                return mapValue;\n            case ROW:\n                SeaTunnelRowType rowType = (SeaTunnelRowType) dataType;\n                SeaTunnelRow row = new SeaTunnelRow(rowType.getTotalFields());\n                for (int i = 0; i < rowType.getTotalFields(); i++) {\n                    row.setField(\n                            i,\n                            getValue(\n                                    rowType.getFieldName(i),\n                                    rowType.getFieldType(i),\n                                    value.has(rowType.getFieldName(i))\n                                            ? value.get(rowType.getFieldName(i))\n                                            : null));\n                }\n                return row;\n            default:\n                throw new UnsupportedOperationException(\"Unsupported type: \" + sqlType);\n        }\n    }\n}\n","sourceCodeStart":206,"sourceCodeEnd":228,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-formats/seatunnel-format-json/src/main/java/org/apache/seatunnel/format/json/debezium/DebeziumRowConverter.java#L206-L228","documentation":"DebeziumRowConverter.convert (called from getValue/parse) switches over the SeaTunnel SqlType of the target row field; any type not handled by the converter's cases reaches the default branch and throws UnsupportedOperationException 'Unsupported type'. This signals the JSON Debezium format does not implement conversion for that SeaTunnel data type.","triggerScenarios":"A SeaTunnel table schema for the Debezium JSON source declares a field type (e.g. ARRAY, MAP, ROW, or another type absent from the switch) that DebeziumRowConverter's convert method has no case for; the row is converted column by column via value(...) and hits the default branch.","commonSituations":"Users adding complex columns (arrays/maps/nested rows) to a CDC table read with format=debezium-json; schema evolution after upgrading SeaTunnel where a new column type is unsupported; typos in connector config producing unexpected SqlType mapping.","solutions":["Change the offending column to a supported primitive type (STRING/INT/...) in the table schema","Drop or exclude the unsupported column from the CDC schema","Use a different format/connector that supports the type, or add a custom converter extending DebeziumRowConverter","Check SeaTunnel version — newer releases may have added support; upgrade"],"exampleFix":"// before: schema declares ARRAY<STRING> column tags\n// SeaTunnelRowType with ARRAY field fed to DebeziumJsonDeserializationSchema\n// after: cast/simplify to STRING in source query or transform\n// SELECT CAST(tags AS STRING) AS tags FROM ...","handlingStrategy":"validation","validationCode":"// ensure every field type is converter-supported before use\nfor (SeaTunnelType<?> t : rowType.getFieldTypes()) {\n    switch (t.getSqlType()) {\n        case STRING: case INT: case BIGINT: case BOOLEAN:\n        case DOUBLE: case DECIMAL: case DATE: case TIME: case TIMESTAMP:\n            break;\n        default:\n            throw new IllegalArgumentException(\"Type not supported by Debezium JSON format: \" + t);\n    }\n}","typeGuard":null,"tryCatchPattern":"try {\n    return converter.convert(value);\n} catch (UnsupportedOperationException e) {\n    throw new IllegalStateException(\"Schema contains type unsupported by debezium-json format: \" + e.getMessage(), e);\n}","preventionTips":["Avoid ARRAY/MAP/ROW columns with format=debezium-json unless your version supports them","Simplify CDC schemas to primitives or cast complex columns to STRING upstream","Check release notes for newly supported types before schema changes"],"tags":["json","cdc","type-mismatch","debezium"],"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"}