apache/seatunnel · error · UnsupportedOperationException
Unsupported data type: ${dataType}
Error message
Unsupported data type: ${dataType} What it means
MilvusSourceConverter.convertColumn maps Milvus FieldSchema DataType values to SeaTunnel PhysicalColumn types. Any Milvus DataType not explicitly handled (Bool, Int8-64, Float, Double, VarChar, String, JSON, Array, and the vector types) causes a plain UnsupportedOperationException 'Unsupported data type: <dataType>'.
Source
Thrown at seatunnel-connectors-v2/connector-milvus/src/main/java/org/apache/seatunnel/connectors/seatunnel/milvus/utils/source/MilvusSourceConverter.java:351
builder.dataType(VectorType.VECTOR_FLOAT16_TYPE);
for (KeyValuePair keyValuePair : fieldSchema.getTypeParamsList()) {
if (keyValuePair.getKey().equals("dim")) {
builder.scale(Integer.valueOf(keyValuePair.getValue()));
break;
}
}
break;
case BFloat16Vector:
builder.dataType(VectorType.VECTOR_BFLOAT16_TYPE);
for (KeyValuePair keyValuePair : fieldSchema.getTypeParamsList()) {
if (keyValuePair.getKey().equals("dim")) {
builder.scale(Integer.valueOf(keyValuePair.getValue()));
break;
}
}
break;
default:
throw new UnsupportedOperationException("Unsupported data type: " + dataType);
}
return builder.build();
}
private JsonObject convertDynamicField(Map<String, Object> fieldValuesMap) {
JsonObject dynamicField = new JsonObject();
for (Map.Entry<String, Object> entry : fieldValuesMap.entrySet()) {
if (!existField.contains(entry.getKey())) {
dynamicField.add(entry.getKey(), gson.toJsonTree(entry.getValue()));
}
}
return dynamicField;
}
}
View on GitHub (pinned to cf67b549a7)
Solutions
- Identify the reported DataType and remove/transform that field, or use only supported field types in the collection.
- Upgrade SeaTunnel/connector-milvus to a version mapping that DataType.
- As a stopgap, patch convertColumn to map the DataType to the closest SeaTunnel type (e.g. STRING).
Example fix
// before
default:
throw new UnsupportedOperationException("Unsupported data type: " + dataType);
// after
case Geometry:
builder.dataType(BasicType.STRING_TYPE);
break;
default:
throw new UnsupportedOperationException("Unsupported data type: " + dataType); Defensive patterns
Strategy: try-catch
Validate before calling
// pre-check Milvus collection schema
for (FieldSchema f : describeResp.getFieldsList()) {
if (!SUPPORTED_MILVUS_DATATYPES.contains(f.getDataType())) {
throw new IllegalArgumentException("Milvus field " + f.getName() + " has unsupported type " + f.getDataType());
}
} Try / catch
try { column = MilvusSourceConverter.convertColumn(fieldSchema); } catch (UnsupportedOperationException e) { log.error("Milvus type not mapped: {}", e.getMessage()); throw new CatalogException(e.getMessage(), e); } Prevention
- Check describe_collection for unsupported DataTypes before building the SeaTunnel catalog
- Keep connector version current with the Milvus server version
- Avoid creating Milvus collections with exotic field types if the pipeline must read them
When it happens
Trigger: Calling convertColumn (schema/table discovery paths) on a Milvus field whose DataType enum is new or unmapped, e.g. newer Milvus types added after this connector was written.
Common situations: Connecting to a newer Milvus server that exposes new data types; using a feature type (e.g. SparseFloatVector variants, function-output fields) unsupported by the connector version.
Related errors
- DESC_COLLECTION_ERROR
- Not support convert to milvus type, sqlType is %s
- Unsupported type:
- Unsupported SQL type:
- Vitess CDC bootstrap schema does not support catalog SQL typ
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/a5a3f977b3f24978.
Report an issue: GitHub.