{"record":{"id":"bcdcd9a318d2b549","repo":"apache/seatunnel","slug":"common-17-bcdcd9","errorCode":"COMMON-17","errorMessage":"'${identifier}' unsupported convert type '${dataType}' of '${field}' to SeaTunnel data type.","messagePattern":"'(.+?)' unsupported convert type '(.+?)' of '(.+?)' to SeaTunnel data type\\.","errorType":"error_code","errorClass":"SeaTunnelRuntimeException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/catalog/MaxComputeDataTypeConvertor.java","lineNumber":84,"sourceCode":"            switch (seaTunnelType.getSqlType()) {\n                case STRING:\n                    return ArrayType.STRING_ARRAY_TYPE;\n                case BOOLEAN:\n                    return ArrayType.BOOLEAN_ARRAY_TYPE;\n                case BYTES:\n                    return ArrayType.BYTE_ARRAY_TYPE;\n                case SMALLINT:\n                    return ArrayType.SHORT_ARRAY_TYPE;\n                case INT:\n                    return ArrayType.INT_ARRAY_TYPE;\n                case BIGINT:\n                    return ArrayType.LONG_ARRAY_TYPE;\n                case FLOAT:\n                    return ArrayType.FLOAT_ARRAY_TYPE;\n                case DOUBLE:\n                    return ArrayType.DOUBLE_ARRAY_TYPE;\n                default:\n                    throw CommonError.convertToSeaTunnelTypeError(\n                            MaxcomputeBaseOptions.PLUGIN_NAME, connectorDataType, field);\n            }\n        }\n        if (connectorDataType.startsWith(\"STRUCT\")) {\n            // STRUCT<field1:type1,field2:type2...>\n            // todo: support struct type\n            String substring = connectorDataType.substring(7, connectorDataType.length() - 1);\n            String[] entryArray = substring.split(\",\");\n            String[] fieldNames = new String[entryArray.length];\n            SeaTunnelDataType<?>[] fieldTypes = new SeaTunnelDataType<?>[entryArray.length];\n            for (int i = 0; i < entryArray.length; i++) {\n                String[] fieldNameAndType = entryArray[i].split(\":\");\n                fieldNames[i] = fieldNameAndType[0];\n                fieldTypes[i] = toSeaTunnelType(fieldNameAndType[0], fieldNameAndType[1]);\n            }\n            return new SeaTunnelRowType(fieldNames, fieldTypes);\n        }\n        if (connectorDataType.startsWith(\"DECIMAL\")) {","sourceCodeStart":66,"sourceCodeEnd":102,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/catalog/MaxComputeDataTypeConvertor.java#L66-L102","documentation":"MaxCompute catalog converter's toSeaTunnelType() throws this when an ARRAY element type in a MaxCompute column definition is not one of the supported primitive element types. MaxCompute ARRAY<T> columns are only mapped for a fixed set of element types; others hit the default throw.","triggerScenarios":"toSeaTunnelType() is given a MaxCompute type starting with ARRAY whose inner element type (connectorDataType) is not STRING/INT/BIGINT/FLOAT/DOUBLE etc. — e.g. ARRAY<DECIMAL> or ARRAY<MAP<...>>.","commonSituations":"Reading MaxCompute tables with arrays of complex elements (struct/decimal/map); auto catalog sync of tables using advanced MaxCompute types.","solutions":["Cast the array column to an array of a supported element type in the source query (e.g. TRANSFORM/CAST elements to BIGINT or STRING)","Flatten or drop the column from the table read","Extend the ARRAY element-type switch in MaxComputeDataTypeConvertor.toSeaTunnelType()"],"exampleFix":"-- before: SELECT arr_col FROM t  -- arr_col is ARRAY<DECIMAL(10,2)>\n-- after\nSELECT TRANSFORM(arr_col, x -> CAST(x AS DOUBLE)) AS arr_col FROM t","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    SeaTunnelDataType<?> t = converter.toSeaTunnelType(field, connectorDataType);\n} catch (SeaTunnelConvertException e) {\n    LOG.warn(\"Unmapped MaxCompute array type {} for {}\", connectorDataType, field);\n    // fallback: treat as STRING array or skip column\n}","preventionTips":["Prefer explicit casts in MaxCompute SQL over runtime fallbacks"],"tags":["maxcompute","type-conversion","catalog"],"backgroundTag":"unsupported-dtype","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}