apache/seatunnel · error · SeaTunnelRuntimeException
COMMON-17
COMMON-17
Error message
'<identifier>' unsupported convert type '<dataType>' of '<field>' to SeaTunnel data type.
What it means
The Doris type converter could not map a Doris column type to a SeaTunnel data type. The sampled column type falls through all supported cases in the converter's switch, so conversion is refused with the connector identifier, the Doris type, and the field name.
Solutions
- Change the Doris column type to one supported by the converter (e.g. STRING, INT, DATETIMEV2)
- Cast the column in the source query/view to a supported type
- Upgrade SeaTunnel to a version whose Doris converter supports the type
Example fix
// before: Doris column type AGG_STATE unsupported // after: alter table to a supported type ALTER TABLE t MODIFY COLUMN agg_col STRING;
Defensive patterns
Strategy: validation
Validate before calling
Set<String> supported = Set.of("BOOLEAN","TINYINT","SMALLINT","INT","BIGINT","LARGEINT","FLOAT","DOUBLE","DECIMAL","DATE","DATETIMEV2","CHAR","VARCHAR","STRING","JSON","VARIANT","ARRAY"); if (!supported.contains(dorisType.toUpperCase())) throw new IllegalStateException("unsupported Doris type: " + dorisType); Prevention
- Pre-check Doris table DDL for types outside the converter's supported set
- Prefer STRING casts in views for exotic Doris types
- Pin Doris and SeaTunnel versions known compatible
When it happens
Trigger: sampleTypeConverter encounters a Doris column type not in its supported set (e.g. an exotic or newer Doris type like a unsupported complex type) during schema reading/table discovery.
Common situations: Reading a Doris table created with a type added in newer Doris versions than the connector supports; using AGG_STATE or custom types; copy-pasting tables between clusters with different Doris versions.
Related errors
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/4ccccc7eba19026c.
Report an issue: GitHub.
Appendix: source
Thrown at seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/datatype/AbstractDorisTypeConverter.java:196
builder.columnLength(typeDefine.getLength());
}
builder.dataType(BasicType.STRING_TYPE);
break;
case DORIS_LARGEINT:
DecimalType decimalType;
decimalType = new DecimalType(20, 0);
builder.dataType(decimalType);
builder.columnLength(20L);
builder.scale(0);
break;
case DORIS_STRING:
case DORIS_JSON:
case DORIS_VARIANT:
builder.dataType(BasicType.STRING_TYPE);
builder.columnLength(MAX_STRING_LENGTH);
break;
default:
throw CommonError.convertToSeaTunnelTypeError(
IDENTIFIER, dorisColumnType, typeDefine.getName());
}
}
protected void sampleReconvertString(
Column column, BasicTypeDefine.BasicTypeDefineBuilder builder) {
if (column.getColumnLength() == null || column.getColumnLength() <= 0) {
builder.columnType(DORIS_STRING);
builder.dataType(DORIS_STRING);
return;
}
if (column.getColumnLength() < POWER_2_8) {
if (column.getSourceType() != null
&& column.getSourceType().toUpperCase(Locale.ROOT).startsWith(DORIS_VARCHAR)) {
builder.columnType(
String.format("%s(%s)", DORIS_VARCHAR, column.getColumnLength()));
builder.dataType(DORIS_VARCHAR);View on GitHub (pinned to cf67b549a7)