{"record":{"id":"2dafa01bc94b2b7e","repo":"apache/seatunnel","slug":"unsupported-data-type-2dafa0","errorCode":"UNSUPPORTED_DATA_TYPE","errorMessage":"SeaTunnel array not support this data type [%s]","messagePattern":"SeaTunnel array not support this data type \\[(.+?)\\]","errorType":"error_code","errorClass":"SeaTunnelTextFormatException","httpStatus":null,"severity":"error","filePath":"seatunnel-formats/seatunnel-format-text/src/main/java/org/apache/seatunnel/format/text/TextDeserializationSchema.java","lineNumber":266,"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 SeaTunnelTextFormatException(\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":248,"sourceCodeEnd":284,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-formats/seatunnel-format-text/src/main/java/org/apache/seatunnel/format/text/TextDeserializationSchema.java#L248-L284","documentation":"Thrown by TextDeserializationSchema.convert when deserializing an ARRAY column whose element type is not one of the supported primitives/temporal types. The text format splits array elements as strings and only knows how to materialize typed arrays (including typed LocalTime/LocalDateTime/OffsetDateTime arrays) for the enumerated element types.","triggerScenarios":"deserialize -> convert on a SeaTunnelRow field of SqlType ARRAY whose elementType.getSqlType() is not in the handled switch (e.g. ARRAY<MAP<...>>, ARRAY<ROW>, ARRAY<BYTES>), or nested convert recursion reaching an unsupported inner array element type.","commonSituations":"Kafka text source schema declaring arrays of complex element types; nested arrays or arrays of structs in a delimited text stream; catalog schema more expressive than the text format can parse.","solutions":["Flatten the data: change the element type to a supported primitive/temporal or parse complex arrays upstream","Switch the format to one supporting nested types (e.g. json) for ARRAY<ROW>/ARRAY<MAP> payloads","Pre-process the raw string in a custom transform and build the typed array yourself"],"exampleFix":"// before (catalog schema)\nfield_tags = array<map<string,string>>  // unsupported element type in text format\n\n// after\nfield_tags = array<string>              // store serialized maps as strings, parse later","handlingStrategy":"validation","validationCode":"SqlType et = ((ArrayType) fieldType).getElementType().getSqlType();\nSet<SqlType> ok = Set.of(SqlType.STRING, SqlType.BOOLEAN, SqlType.INT, SqlType.BIGINT,\n    SqlType.FLOAT, SqlType.DOUBLE, SqlType.DATE, SqlType.TIME,\n    SqlType.TIMESTAMP, SqlType.TIMESTAMP_TZ);\nif (!ok.contains(et)) throw new IllegalArgumentException(\"Bad array element type: \" + et);","typeGuard":"boolean isTextParsableArrayElement(SeaTunnelDataType<?> elementType) {\n    switch (elementType.getSqlType()) {\n        case STRING: case BOOLEAN: case INT: case BIGINT: case FLOAT: case DOUBLE:\n        case DATE: case TIME: case TIMESTAMP: case TIMESTAMP_TZ:\n            return true;\n        default:\n            return false;\n    }\n}","tryCatchPattern":"try {\n    SeaTunnelRow row = schema.deserialize(rawBytes);\n} catch (SeaTunnelTextFormatException e) {\n    log.warn(\"Text format cannot parse array element type; skipping record\", e);\n}","preventionTips":["Declare array columns only with primitive/temporal element types in text-format sources","Use json format for ARRAY<ROW> or ARRAY<MAP> payloads","Test schema vs sample messages before production"],"tags":["text-format","deserialization","array","data-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-14T05:17:10.506Z"}