apache/seatunnel · error · SeaTunnelRuntimeException

COMMON-17

COMMON-17

Error message

'${identifier}' unsupported convert type '${dataType}' of '${field}' to SeaTunnel data type.

What it means

StarRocks catalog converter's toSeaTunnelType() throws this when a StarRocks (MySQL-protocol) column type has no SeaTunnel mapping. SET and YEAR are explicitly unsupported (TODO), and any other unmapped MysqlType reaches the default throw.

Solutions

  1. Change the table schema or query to avoid SET/YEAR columns (e.g. cast SET to VARCHAR via group_concat, YEAR to INT)
  2. Exclude those columns from the read/catalog sync
  3. Add mapping cases for SET/YEAR in StarRocksDataTypeConvertor.toSeaTunnelType()

Example fix

-- before: SELECT y_col FROM t -- y_col YEAR
-- after
SELECT CAST(y_col AS INT) AS y_col FROM t
Defensive patterns

Strategy: try-catch

Try / catch

try {
    SeaTunnelDataType<?> t = converter.toSeaTunnelType(field, mysqlType, props);
} catch (SeaTunnelConvertException e) {
    LOG.warn("Unmapped StarRocks type {} for {}", mysqlType, field);
    // fallback: skip column or cast to VARCHAR upstream
}

Prevention

When it happens

Trigger: toSeaTunnelType() is called for a StarRocks column whose MysqlType is SET, YEAR, or another type without a switch case — typically when reading StarRocks catalogs or schema sync.

Common situations: Tables using StarRocks SET or YEAR columns; catalog-based source ingestion of such tables; type list changes between StarRocks versions.

Related errors


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/21457cb7cfff51fb. Report an issue: GitHub.

Appendix: source

Thrown at seatunnel-connectors-v2/connector-starrocks/src/main/java/org/apache/seatunnel/connectors/seatunnel/starrocks/catalog/StarRocksDataTypeConvertor.java:149

                return BasicType.STRING_TYPE;
            case BINARY:
            case VARBINARY:
            case TINYBLOB:
            case BLOB:
            case MEDIUMBLOB:
            case LONGBLOB:
            case GEOMETRY:
                return PrimitiveByteArrayType.INSTANCE;
            case BIGINT_UNSIGNED:
            case DECIMAL:
            case DECIMAL_UNSIGNED:
                Integer precision =
                        MapUtils.getInteger(dataTypeProperties, PRECISION, DEFAULT_PRECISION);
                Integer scale = MapUtils.getInteger(dataTypeProperties, SCALE, DEFAULT_SCALE);
                return new DecimalType(precision, scale);
                // TODO: support 'SET' & 'YEAR' type
            default:
                throw CommonError.convertToSeaTunnelTypeError(
                        "StarRocks", mysqlType.toString(), field);
        }
    }

    @Override
    public MysqlType toConnectorType(
            String field,
            SeaTunnelDataType<?> seaTunnelDataType,
            Map<String, Object> dataTypeProperties) {
        SqlType sqlType = seaTunnelDataType.getSqlType();
        // todo: verify
        switch (sqlType) {
            case ARRAY:
            case MAP:
            case ROW:
            case STRING:
                return MysqlType.VARCHAR;
            case BOOLEAN:

View on GitHub (pinned to cf67b549a7)