{"record":{"id":"52775e56319818d2","repo":"apache/seatunnel","slug":"unsupported-data-type-52775e","errorCode":"UNSUPPORTED_DATA_TYPE","errorMessage":"SeaTunnel array not support this data type [${sqlType}]","messagePattern":"SeaTunnel array not support this data type \\[(.+?)\\]","errorType":"error_code","errorClass":"SeaTunnelCsvFormatException","httpStatus":null,"severity":"error","filePath":"seatunnel-formats/seatunnel-format-csv/src/main/java/org/apache/seatunnel/format/csv/CsvDeserializationSchema.java","lineNumber":272,"sourceCode":"                        return objectArrayList.toArray(new Integer[0]);\n                    case BIGINT:\n                        return objectArrayList.toArray(new Long[0]);\n                    case FLOAT:\n                        return objectArrayList.toArray(new Float[0]);\n                    case DOUBLE:\n                        return objectArrayList.toArray(new Double[0]);\n                    case DECIMAL:\n                        return objectArrayList.toArray(new BigDecimal[0]);\n                    case DATE:\n                        return objectArrayList.toArray(new LocalDate[0]);\n                    case TIME:\n                        return objectArrayList.toArray(new LocalTime[0]);\n                    case TIMESTAMP:\n                        return objectArrayList.toArray(new LocalDateTime[0]);\n                    case TIMESTAMP_TZ:\n                        return objectArrayList.toArray(new OffsetDateTime[0]);\n                    default:\n                        throw new SeaTunnelCsvFormatException(\n                                CommonErrorCode.UNSUPPORTED_DATA_TYPE,\n                                String.format(\n                                        \"SeaTunnel array not support this data type [%s]\",\n                                        elementType.getSqlType()));\n                }\n            case MAP:\n                SeaTunnelDataType<?> keyType = ((MapType<?, ?>) fieldType).getKeyType();\n                SeaTunnelDataType<?> valueType = ((MapType<?, ?>) fieldType).getValueType();\n                LinkedHashMap<Object, Object> objectMap = new LinkedHashMap<>();\n                String[] kvs = field.split(separators[level + 1]);\n                for (String kv : kvs) {\n                    String[] splits = kv.split(separators[level + 2]);\n                    if (splits.length < 2) {\n                        objectMap.put(convert(splits[0], keyType, level + 1, fieldName), null);\n                    } else {\n                        objectMap.put(\n                                convert(splits[0], keyType, level + 1, fieldName),\n                                convert(splits[1], valueType, level + 1, fieldName));","sourceCodeStart":254,"sourceCodeEnd":290,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-formats/seatunnel-format-csv/src/main/java/org/apache/seatunnel/format/csv/CsvDeserializationSchema.java#L254-L290","documentation":"When converting a CSV array column, CsvDeserializationSchema maps each element to the declared SeaTunnel element type. If the element SqlType has no array-conversion branch (e.g. MAP, nested ARRAY, ROW), it throws SeaTunnelCsvFormatException with UNSUPPORTED_DATA_TYPE because element-wise conversion is only implemented for primitive types.","triggerScenarios":"Declaring a CSV column as array<MAP<...>>, array<array<...>>, or another non-primitive element type in the source schema; schema in config lists an element SqlType not in the supported set (INT, STRING, DATE, TIME, TIMESTAMP, etc.).","commonSituations":"Copy-pasting schema definitions from JSON/Parquet sources into a CSV source; trying to model nested data in flat CSV files.","solutions":["Change the array element type in the schema to a supported primitive (INT, BIGINT, STRING, BOOLEAN, DOUBLE, DATE, TIME, TIMESTAMP).","Flatten nested structures: encode MAP/ROW fields as JSON strings and parse downstream.","Switch the source format to JSON/Parquet if nested types are genuinely required."],"exampleFix":"// before\nfield = {name = \"tags\", type = \"array<map<string,string>>\"}\n// after\nfield = {name = \"tags\", type = \"array<string>\"}","handlingStrategy":"validation","validationCode":"Arrays.stream(rowType.getFieldTypes())\n  .filter(t -> t instanceof ArrayType)\n  .map(t -> ((ArrayType) t).getElementType().getSqlType())\n  .forEach(t -> checkSupported(t)); // only primitives allowed","typeGuard":null,"tryCatchPattern":"try { deserialize(record); } catch (SeaTunnelCsvFormatException e) { if (e.getCode() == UNSUPPORTED_DATA_TYPE) { /* fix schema or skip row */ } }","preventionTips":["Keep array element types primitive in CSV schemas","Validate schema before job submission","Use JSON/Parquet for nested data"],"tags":["csv","deserialization","unsupported-type","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-14T05:17:10.506Z"}