{"record":{"id":"69981d33782d79d1","repo":"apache/seatunnel","slug":"commonerrorcodedeprecated-unsupported-data-type-69981d","errorCode":"CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE","errorMessage":"SeaTunnel type not support this type [%s] now","messagePattern":"SeaTunnel type not support this type \\[(.+?)\\] now","errorType":"error_code","errorClass":"org.apache.seatunnel.connectors.seatunnel.maxcompute.exception.MaxcomputeConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/util/MaxcomputeTypeMapper.java","lineNumber":142,"sourceCode":"            case ARRAY:\n                ArrayList<Object> origArray = new ArrayList<>();\n                ((ArrayList) field).iterator().forEachRemaining(origArray::add);\n                SeaTunnelDataType<?> elementType = ((ArrayType<?, ?>) fieldType).getElementType();\n                switch (elementType.getSqlType()) {\n                    case STRING:\n                        return origArray.toArray(new String[0]);\n                    case BOOLEAN:\n                        return origArray.toArray(new Boolean[0]);\n                    case INT:\n                        return origArray.toArray(new Integer[0]);\n                    case BIGINT:\n                        return origArray.toArray(new Long[0]);\n                    case FLOAT:\n                        return origArray.toArray(new Float[0]);\n                    case DOUBLE:\n                        return origArray.toArray(new Double[0]);\n                    default:\n                        throw new MaxcomputeConnectorException(\n                                CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE,\n                                String.format(\n                                        \"SeaTunnel type not support this type [%s] now\",\n                                        fieldType.getSqlType().name()));\n                }\n            case MAP:\n                HashMap<Object, Object> dataMap = new HashMap<>();\n                SeaTunnelDataType<?> keyType = ((MapType<?, ?>) fieldType).getKeyType();\n                SeaTunnelDataType<?> valueType = ((MapType<?, ?>) fieldType).getValueType();\n                HashMap<Object, Object> origDataMap = (HashMap<Object, Object>) field;\n                origDataMap.forEach(\n                        (key, value) ->\n                                dataMap.put(\n                                        resolveObject2SeaTunnel(key, keyType),\n                                        resolveObject2SeaTunnel(value, valueType)));\n                return dataMap;\n            case ROW:\n                SeaTunnelDataType<?>[] fieldTypes = ((SeaTunnelRowType) fieldType).getFieldTypes();","sourceCodeStart":124,"sourceCodeEnd":160,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/util/MaxcomputeTypeMapper.java#L124-L160","documentation":"In resolveObject2SeaTunnel, ARRAY-typed MaxCompute values are converted element-wise; when the array's element SqlType has no mapping case in the switch, it throws MaxcomputeConnectorException(UNSUPPORTED_DATA_TYPE, 'SeaTunnel type not support this type [<SQL_TYPE>] now').","triggerScenarios":"Reading a MaxCompute ARRAY column whose element type (e.g., DECIMAL, complex/nested types) has no converter in the ARRAY branch of the type mapper.","commonSituations":"Tables with ARRAY<DECIMAL(p,s)> or other exotic element types; schema auto-discovery pulling nested types the mapper never implemented; connector version older than the table's type usage.","solutions":["Flatten or cast the column in MaxCompute SQL to a supported element type (BIGINT/STRING/DOUBLE...) before reading","Change the table schema to use a supported array element type","Implement the missing case in MaxcomputeTypeMapper.resolveObject2SeaTunnel (contribute upstream)","Upgrade to a newer connector version that may map more types"],"exampleFix":"// before\nSELECT cast(arr_col AS ARRAY<DECIMAL(38,10)>) AS arr_col FROM t\n// after\nSELECT transform(arr_col, x -> CAST(x AS DOUBLE)) AS arr_col FROM t","handlingStrategy":"type-guard","validationCode":"if (fieldType.getSqlType() == SqlType.ARRAY) {\n    SqlType elem = ((SeaTunnelArrayType) fieldType).getElementType().getSqlType();\n    Set<SqlType> ok = EnumSet.of(SqlType.TINYINT, SqlType.SMALLINT, SqlType.INT, SqlType.BIGINT, SqlType.FLOAT, SqlType.DOUBLE);\n    if (!ok.contains(elem)) throw new IllegalStateException(\"unsupported array element type: \" + elem);\n}","typeGuard":"static boolean isArrayElementSupported(SeaTunnelType<?> t) {\n    if (!(t instanceof SeaTunnelArrayType)) return true;\n    SqlType e = ((SeaTunnelArrayType<?>) t).getElementType().getSqlType();\n    return e == SqlType.INT || e == SqlType.BIGINT || e == SqlType.FLOAT || e == SqlType.DOUBLE;\n}","tryCatchPattern":"try { object(fieldType, value); }\ncatch (MaxcomputeConnectorException e) {\n    if (e.getSeaTunnelErrorCode() == CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE)\n        throw new MappingException(\"cast column to a supported type in source SQL\", e);\n    throw e;\n}","preventionTips":["Audit table schemas for ARRAY element types before reading","Cast exotic element types to STRING/DOUBLE in the source query","Track connector type-coverage notes on upgrade"],"tags":["maxcompute","type-mapping","unsupported-type","array"],"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"}