{"record":{"id":"7127430bb968c460","repo":"apache/seatunnel","slug":"common-error-code-17-712743","errorCode":"COMMON_ERROR_CODE-17","errorMessage":"Unsupported data type: %s","messagePattern":"Unsupported data type: (.+?)","errorType":"exception","errorClass":"FileConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/XmlReadStrategy.java","lineNumber":306,"sourceCode":"                return new BigDecimal(fieldValue);\n            case BOOLEAN:\n                return Boolean.parseBoolean(fieldValue);\n            case BYTES:\n                return fieldValue.getBytes(StandardCharsets.UTF_8);\n            case NULL:\n                return \"\";\n            case ROW:\n                String[] context = fieldValue.split(delimiter);\n                SeaTunnelRowType ft = (SeaTunnelRowType) fieldType;\n                SeaTunnelRow row = new SeaTunnelRow(context.length);\n                IntStream.range(0, context.length)\n                        .forEach(i -> row.setField(i, convert(context[i], ft.getFieldTypes()[i])));\n                return row;\n            case MAP:\n            case ARRAY:\n                return objectMapper.readValue(fieldValue, fieldType.getTypeClass());\n            default:\n                throw new FileConnectorException(\n                        CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE,\n                        String.format(\"Unsupported data type: %s\", sqlType));\n        }\n    }\n\n    private String getXPathExpression(String tableRowIdentification) {\n        return String.format(\"//%s\", tableRowIdentification);\n    }\n\n    /** Performs pre-checks and initialization of the configuration for reading XML files. */\n    private void preCheckAndInitializeConfiguration() {\n        ReadonlyConfig readonlyConfig = ReadonlyConfig.fromConfig(pluginConfig);\n        this.tableRowName = readonlyConfig.get(FileBaseSourceOptions.XML_ROW_TAG);\n        this.useAttrFormat = readonlyConfig.get(FileBaseSourceOptions.XML_USE_ATTR_FORMAT);\n\n        // Check mandatory configurations\n        if (StringUtils.isEmpty(tableRowName) || useAttrFormat == null) {\n            throw new FileConnectorException(","sourceCodeStart":288,"sourceCodeEnd":324,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/XmlReadStrategy.java#L288-L324","documentation":"During XML row parsing, convert() maps each field's SeaTunnelType to a deserialization strategy. Types outside the handled SQL types (primitives, MAP, ARRAY) hit the default branch and throw UNSUPPORTED_DATA_TYPE.","triggerScenarios":"readProcess reads an XML row whose declared schema contains a field type not handled by convert (e.g. ROW/struct or other complex types), or a nested convert call hits the same default branch.","commonSituations":"Declaring nested row/struct columns in the schema for an XML source, or using decimal/datetime types not supported by this strategy version.","solutions":["Remove or flatten unsupported complex field types (e.g. ROW) from the schema; use MAP or ARRAY or primitives.","Convert unsupported types to strings in the schema and post-process in a transform.","Upgrade SeaTunnel to a version with broader XML type support."],"exampleFix":"// before\nschema = { fields { address = { city = string } } }\n// after\nschema = { fields { address = string } }","handlingStrategy":"type-guard","validationCode":"for (CatalogTable.Field f : schema.getFields()) {\n  SqlType t = f.getType().getSqlType();\n  if (t == SqlType.ROW) throw new IllegalArgumentException(\"XML source does not support ROW type: \" + f.getName());\n}","typeGuard":"boolean isXmlSupportedType(SeaTunnelDataType<?> t) {\n  switch (t.getSqlType()) {\n    case STRING: case INT: case BIGINT: case DOUBLE: case BOOLEAN:\n    case MAP: case ARRAY: return true;\n    default: return false;\n  }\n}","tryCatchPattern":"try {\n  rows = reader.read();\n} catch (FileConnectorException e) {\n  if (e.getMessage().startsWith(\"Unsupported data type:\")) {\n    LOG.error(\"Flatten schema; unsupported XML type: {}\", e.getMessage());\n  }\n  throw e;\n}","preventionTips":["Restrict XML source schemas to primitives plus MAP/ARRAY.","Avoid nested struct definitions for XML reading.","Test schemas against the connector version in CI."],"tags":["file-connector","xml","unsupported-datatype"],"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"}