{"record":{"id":"6bb29da0ce70108e","repo":"apache/seatunnel","slug":"unsupported-type-6bb29d","errorCode":null,"errorMessage":"Unsupported type: ","messagePattern":"Unsupported type: ","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-iceberg/src/main/java/org/apache/seatunnel/connectors/seatunnel/iceberg/data/RowConverter.java","lineNumber":214,"sourceCode":"            case DECIMAL:\n                return convertDecimal(value, (Types.DecimalType) type);\n            case BOOLEAN:\n                return convertBoolean(value);\n            case STRING:\n                return convertString(value);\n            case UUID:\n                return convertUUID(value);\n            case BINARY:\n            case FIXED:\n                return convertBase64Binary(value);\n            case DATE:\n                return convertDateValue(value);\n            case TIME:\n                return convertTimeValue(value);\n            case TIMESTAMP:\n                return convertTimestampValue(value, (Types.TimestampType) type);\n        }\n        throw new UnsupportedOperationException(\"Unsupported type: \" + type.typeId());\n    }\n\n    private Types.NestedField lookupStructField(\n            String fieldName, Types.StructType schema, int structFieldId) {\n        if (nameMapping == null) {\n            return config.isCaseSensitive()\n                    ? schema.caseInsensitiveField(fieldName)\n                    : schema.field(fieldName);\n        }\n\n        return structNames\n                .computeIfAbsent(structFieldId, notUsed -> createStructNameMap(schema))\n                .get(fieldName);\n    }\n\n    private Map<String, Types.NestedField> createStructNameMap(Types.StructType schema) {\n        Map<String, Types.NestedField> map = Maps.newHashMap();\n        schema.fields()","sourceCodeStart":196,"sourceCodeEnd":232,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-iceberg/src/main/java/org/apache/seatunnel/connectors/seatunnel/iceberg/data/RowConverter.java#L196-L232","documentation":"convertValue switches on the SeaTunnel SqlType to produce an Iceberg-compatible value; a SqlType with no case in the switch (e.g. ARRAY/MAP/ROW variants or newer types depending on version) falls through to the final throw of UnsupportedOperationException.","triggerScenarios":"Writing a SeaTunnel field whose SqlType is not handled by convertValue (reaches convertToStruct/convertListValue/convertMapValue paths or a raw unsupported SqlType) into an Iceberg table.","commonSituations":"New SeaTunnel SQL types not yet mapped in the connector, complex nested schemas whose branches are missing, schema mismatch between the declared SeaTunnelRowType and handled cases.","solutions":["Use a supported SeaTunnel type for the field or cast/flatten it in a transform before the sink.","Upgrade the connector to a version covering the type.","Align the Iceberg table schema and SeaTunnelRowType so every field maps to a handled SqlType.","Catch UnsupportedOperationException per record and route to error handling."],"exampleFix":"// before\nSeaTunnelRowType with unhandled SqlType (e.g. NULL_TYPE) field\n// after\nCast the field to STRING/BIGINT etc. via SQL transform before the Iceberg sink","handlingStrategy":"validation","validationCode":"Set<SqlType> handled = Set.of(BYTE,SHORT,INT,LONG,FLOAT,DOUBLE,DECIMAL,BOOLEAN,STRING,DATE,TIME,TIMESTAMP,ROW,ARRAY,MAP...); // keep in sync with RowConverter\nrowType.getFieldTypes().forEach(t -> check(handled.contains(t.getSqlType())));","typeGuard":null,"tryCatchPattern":"try { record = converter.convert(row, fromType, schema); } catch (UnsupportedOperationException e) { log.error(\"Unsupported SqlType: {}\", e.getMessage()); }","preventionTips":["Restrict sink schemas to supported SqlTypes","Cast unsupported types in a transform before the Iceberg sink","Upgrade the connector when new SeaTunnel types are used"],"tags":["iceberg","type-mapping","unsupported-type"],"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"}