apache/seatunnel · error · org.apache.seatunnel.connectors.seatunnel.maxcompute.exception.MaxcomputeConnectorException
CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE
CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE
Error message
SeaTunnel type not support this type [%s] now
What it means
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').
Source
Thrown at seatunnel-connectors-v2/connector-maxcompute/src/main/java/org/apache/seatunnel/connectors/seatunnel/maxcompute/util/MaxcomputeTypeMapper.java:142
case ARRAY:
ArrayList<Object> origArray = new ArrayList<>();
((ArrayList) field).iterator().forEachRemaining(origArray::add);
SeaTunnelDataType<?> elementType = ((ArrayType<?, ?>) fieldType).getElementType();
switch (elementType.getSqlType()) {
case STRING:
return origArray.toArray(new String[0]);
case BOOLEAN:
return origArray.toArray(new Boolean[0]);
case INT:
return origArray.toArray(new Integer[0]);
case BIGINT:
return origArray.toArray(new Long[0]);
case FLOAT:
return origArray.toArray(new Float[0]);
case DOUBLE:
return origArray.toArray(new Double[0]);
default:
throw new MaxcomputeConnectorException(
CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE,
String.format(
"SeaTunnel type not support this type [%s] now",
fieldType.getSqlType().name()));
}
case MAP:
HashMap<Object, Object> dataMap = new HashMap<>();
SeaTunnelDataType<?> keyType = ((MapType<?, ?>) fieldType).getKeyType();
SeaTunnelDataType<?> valueType = ((MapType<?, ?>) fieldType).getValueType();
HashMap<Object, Object> origDataMap = (HashMap<Object, Object>) field;
origDataMap.forEach(
(key, value) ->
dataMap.put(
resolveObject2SeaTunnel(key, keyType),
resolveObject2SeaTunnel(value, valueType)));
return dataMap;
case ROW:
SeaTunnelDataType<?>[] fieldTypes = ((SeaTunnelRowType) fieldType).getFieldTypes();View on GitHub (pinned to cf67b549a7)
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
Example fix
// before SELECT cast(arr_col AS ARRAY<DECIMAL(38,10)>) AS arr_col FROM t // after SELECT transform(arr_col, x -> CAST(x AS DOUBLE)) AS arr_col FROM t
Defensive patterns
Strategy: type-guard
Validate before calling
if (fieldType.getSqlType() == SqlType.ARRAY) {
SqlType elem = ((SeaTunnelArrayType) fieldType).getElementType().getSqlType();
Set<SqlType> ok = EnumSet.of(SqlType.TINYINT, SqlType.SMALLINT, SqlType.INT, SqlType.BIGINT, SqlType.FLOAT, SqlType.DOUBLE);
if (!ok.contains(elem)) throw new IllegalStateException("unsupported array element type: " + elem);
} Type guard
static boolean isArrayElementSupported(SeaTunnelType<?> t) {
if (!(t instanceof SeaTunnelArrayType)) return true;
SqlType e = ((SeaTunnelArrayType<?>) t).getElementType().getSqlType();
return e == SqlType.INT || e == SqlType.BIGINT || e == SqlType.FLOAT || e == SqlType.DOUBLE;
} Try / catch
try { object(fieldType, value); }
catch (MaxcomputeConnectorException e) {
if (e.getSeaTunnelErrorCode() == CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE)
throw new MappingException("cast column to a supported type in source SQL", e);
throw e;
} Prevention
- 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
When it happens
Trigger: 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.
Common situations: 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.
Related errors
- Unsupported type in LocalTimeArrayType: ${eleSqlType}
- UNSUPPORTED_DATA_TYPE
- Unsupported SQL type:
- array inject error, unsupported data type: " + type
- UNSUPPORTED_DATA_TYPE
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/69981d33782d79d1.
Report an issue: GitHub.