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

  1. Change the Doris column type to one supported by the converter (e.g. STRING, INT, DATETIMEV2)
  2. Cast the column in the source query/view to a supported type
  3. 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

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)