apache/seatunnel · error · QdrantConnectorException
COMMON-07
COMMON-07
Error message
Unexpected value: <sqlType>
What it means
QdrantSourceReader.convertToSeaTunnelRow maps each retrieved Qdrant point field into the SeaTunnel row schema. The switch over SqlType handles the supported types (including VECTOR -> float buffer); any other SQL type in the declared schema hits the default branch and throws QdrantConnectorException with CommonErrorCode.UNSUPPORTED_DATA_TYPE and message 'Unexpected value: <sqlType>'.
Solutions
- Restrict the declared schema columns to types supported by the Qdrant reader (numeric, string, boolean, vector types)
- Remove or remap unsupported columns (e.g. cast DATE to STRING, flatten MAP) before conversion
- Update the connector's convertToSeaTunnelRow to handle the needed SqlType if it is a legitimate requirement
- Compare the schema in the config against what buildPayload/the sink wrote to ensure round-trip type compatibility
Example fix
// before // schema column: create_time : DATE -> throws 'Unexpected value: DATE' // after // schema column: create_time : STRING (store ISO-8601 string, convert downstream)
Defensive patterns
Strategy: validation
Validate before calling
// verify every declared schema column is a type the Qdrant reader supports
Set<SqlType> supported = Set.of(SqlType.INT, SqlType.BIGINT, SqlType.DOUBLE,
SqlType.FLOAT, SqlType.STRING, SqlType.BOOLEAN);
for (SeaTunnelDataType<?> t : schema.getDataType().getFieldTypes()) {
if (!supported.contains(t.getSqlType())) {
throw new IllegalArgumentException(
"Unsupported schema type for Qdrant source: " + t.getSqlType());
}
} Type guard
boolean isReaderSupportedType(SeaTunnelDataType<?> t) {
switch (t.getSqlType()) {
case INT: case BIGINT: case DOUBLE: case FLOAT:
case STRING: case BOOLEAN:
return true;
default:
return false;
}
} Try / catch
try {
row = reader.seaTunnelRow(point);
} catch (QdrantConnectorException e) {
if (e.getErrorCode() == CommonErrorCode.UNSUPPORTED_DATA_TYPE
&& e.getMessage().startsWith("Unexpected value:")) {
LOG.error("schema column type not convertible by Qdrant reader: {}", e.getMessage());
}
throw e;
} Prevention
- Align the source schema with types the reader actually converts (numerics, string, boolean, vector)
- Avoid DATE/TIMESTAMP/MAP/ARRAY columns in the Qdrant source schema; cast them to STRING upstream
- Round-trip test: write with the sink then read back with the source using the same schema
- Update convertToSeaTunnelRow if a new type is a legitimate requirement
When it happens
Trigger: The declared SeaTunnel schema for the Qdrant source contains a column whose SqlType is not handled by the switch in convertToSeaTunnelRow (e.g. MAP, ARRAY, DATE), hit while converting each fetched point.
Common situations: Schema defined in the source config includes types Qdrant reader does not support converting (complex or temporal types); payload fields stored in Qdrant with JSON types that cannot map to the declared schema; copy-pasted schema from another connector with richer type support.
Related errors
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/3b54d590c0eda432.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-connectors-v2/connector-qdrant/src/main/java/org/apache/seatunnel/connectors/seatunnel/qdrant/source/QdrantSourceReader.java:170
case BIGINT:
fields[fieldIndex] = value.getIntegerValue();
break;
case FLOAT:
case DECIMAL:
case DOUBLE:
fields[fieldIndex] = value.getDoubleValue();
break;
case BINARY_VECTOR:
case FLOAT_VECTOR:
case FLOAT16_VECTOR:
case BFLOAT16_VECTOR:
List<Float> list = vector.getDataList();
Float[] vectorArray = new Float[list.size()];
list.toArray(vectorArray);
fields[fieldIndex] = VectorUtils.toByteBuffer(vectorArray);
break;
default:
throw new QdrantConnectorException(
CommonErrorCode.UNSUPPORTED_DATA_TYPE,
"Unexpected value: " + seaTunnelDataType.getSqlType().name());
}
}
SeaTunnelRow seaTunnelRow = new SeaTunnelRow(fields);
seaTunnelRow.setTableId(tablePath.getFullName());
seaTunnelRow.setRowKind(RowKind.INSERT);
return seaTunnelRow;
}
}
View on GitHub (pinned to cf67b549a7)