apache/seatunnel · error · SeaTunnelRuntimeException

COMMON-19

COMMON-19

Error message

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

What it means

XuGu JDBC dialect type converter's reconvert() throws this when a SeaTunnel column's SQL type has no mapping to a XuGu connector column type. It is thrown from the switch's default branch, meaning the SeaTunnel SqlType (e.g. TIME or another unmapped type) cannot be represented in XuGu DDL. This guards against silently generating an invalid column type.

Solutions

  1. Check the source schema and exclude or transform unsupported columns (e.g. cast TIME to TIMESTAMP) before table creation
  2. Add or extend the type mapping case in XuguTypeConverter.reconvert() for the missing SqlType
  3. Log/inspect column.getDataType().getSqlType() to identify which type is unmapped

Example fix

// before
default:
    throw CommonError.convertToConnectorTypeError(DatabaseIdentifier.XUGU, column.getDataType().getSqlType().name(), column.getName());
// after
// transform the field upstream, e.g. in the source config cast TIME to TIMESTAMP,
// or add a case:
case TIME:
    builder.columnType("TIME");
    builder.dataType(LocalTimeType.LOCAL_TIME_TYPE);
    break;
Defensive patterns

Strategy: try-catch

Try / catch

try {
    CatalogTable converted = xuguTypeConverter.reconvert(column);
} catch (SeaTunnelConvertException e) {
    LOG.warn("Skipping column unsupported by XuGu: {}", e.getMessage());
    // fall back: cast the column upstream or exclude it from table creation
}

Prevention

When it happens

Trigger: Calling XuguTypeConverter.reconvert() on a CatalogColumn whose SeaTunnel data type falls into the switch's default branch — e.g. SeaTunnel TIME, ROW, MAP or other types without an explicit XuGu case.

Common situations: Catalog auto table creation against XuGu where the source table contains TIME or complex types; schema evolution bringing in a type the XuGu dialect does not map.

Related errors


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

Appendix: source

Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/xugu/XuguTypeConverter.java:408

                    if (column.getScale() > MAX_TIMESTAMP_SCALE) {
                        timestampTzScale = MAX_TIMESTAMP_SCALE;
                        log.warn(
                                "The timestamp_tz column {} type timestamp_tz({}) is out of"
                                        + " range, which exceeds the maximum scale of {}, "
                                        + "it will be converted to timestamp_tz({})",
                                column.getName(),
                                column.getScale(),
                                MAX_TIMESTAMP_SCALE,
                                timestampTzScale);
                    }
                    builder.columnType(
                            String.format("TIMESTAMP(%s) WITH TIME ZONE", timestampTzScale));
                    builder.scale(timestampTzScale);
                }
                builder.dataType(XUGU_TIMESTAMP_WITH_TIME_ZONE);
                break;
            default:
                throw CommonError.convertToConnectorTypeError(
                        DatabaseIdentifier.XUGU,
                        column.getDataType().getSqlType().name(),
                        column.getName());
        }

        return builder.build();
    }
}

View on GitHub (pinned to cf67b549a7)