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

YashanDB dialect type converter's reconvert() throws this when a SeaTunnel data type has no corresponding YashanDB column type. The default branch of the SqlType switch rejects SeaTunnel types (e.g. TIME, MAP, ROW) that cannot be expressed as a YashanDB column type when generating DDL.

Solutions

  1. Transform the unsupported column upstream (e.g. convert TIME to TIMESTAMP or string) before writing to YashanDB
  2. Exclude the column from the sink table creation
  3. Extend reconvert() with a mapping for the missing SqlType

Example fix

// before: sink receives SeaTunnel TIME column
// after: transform in config
transform {
  Sql {
    source_table_name = "src"
    result_table_name = "dst"
    query = "SELECT CAST(time_col AS TIMESTAMP) AS time_col, ... FROM src"
  }
}
Defensive patterns

Strategy: try-catch

Try / catch

try {
    CatalogColumn col = yashanConverter.reconvert(column);
} catch (SeaTunnelConvertException e) {
    LOG.warn("SeaTunnel type {} cannot map to YashanDB for column {}", column.getDataType().getSqlType(), column.getName());
    // fallback: pre-transform column type before reconvert
}

Prevention

When it happens

Trigger: Calling YashanDbTypeConverter.reconvert() on a CatalogColumn whose SeaTunnel SqlType hits the switch default — typically TIME, ARRAY, MAP or ROW types during sink table auto-creation.

Common situations: Auto table creation into YashanDB from a source with TIME or nested/complex types; schema evolution propagating an unmapped type to the YashanDB sink.

Related errors


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

Appendix: source

Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/yashandb/YashanDbTypeConverter.java:518

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

View on GitHub (pinned to cf67b549a7)