apache/seatunnel · error · org.apache.seatunnel.common.exception.SeaTunnelRuntimeException
COMMON-17
COMMON-17
Error message
'<identifier>' unsupported convert type '<dataType>' of '<field>' to SeaTunnel data type.
What it means
This error is thrown by the IRIS JDBC dialect's type converter when a source column type (IRIS data type) cannot be mapped to any supported SeaTunnel data type. SeaTunnel reads the database metadata / column definitions and maps each type; the default branch of the switch in IrisTypeConverter.convert() fires when the type has no mapping. It means schema conversion failed before any data was read or written.
Source
Thrown at seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/iris/IrisTypeConverter.java:259
builder.dataType(LocalTimeType.LOCAL_DATE_TIME_TYPE);
break;
case IRIS_BINARY:
case IRIS_BINARY_VARYING:
case IRIS_RAW:
case IRIS_VARBINARY:
builder.dataType(PrimitiveByteArrayType.INSTANCE);
builder.columnLength(charOrBinaryLength);
break;
case IRIS_LONGVARBINARY:
case IRIS_BLOB:
case IRIS_IMAGE:
case IRIS_LONG_BINARY:
case IRIS_LONG_RAW:
builder.dataType(PrimitiveByteArrayType.INSTANCE);
builder.columnLength(Long.valueOf(Integer.MAX_VALUE));
break;
default:
throw CommonError.convertToSeaTunnelTypeError(
DatabaseIdentifier.IRIS, irisDataType, typeDefine.getName());
}
return builder.build();
}
@Override
public BasicTypeDefine reconvert(Column column) {
BasicTypeDefine.BasicTypeDefineBuilder builder =
BasicTypeDefine.builder()
.name(column.getName())
.precision(column.getColumnLength())
.length(column.getColumnLength())
.nullable(column.isNullable())
.comment(column.getComment())
.scale(column.getScale())
.defaultValue(column.getDefaultValue());
switch (column.getDataType().getSqlType()) {
case NULL:View on GitHub (pinned to cf67b549a7)
Solutions
- Identify the offending column from the error message field '<field>' and check its IRIS data type.
- Use a catalog 'table-names' config with explicit table_path/schema instead of auto-discovery, or exclude the offending column via query projection (SELECT only supported columns).
- Cast the column in a custom SQL query to a supported type (e.g. CAST to VARCHAR or BLOB) so the converter sees a mappable type.
- If the type is a legitimate new IRIS type, add a mapping case in IrisTypeConverter.convert() and contribute it upstream.
Example fix
// before SELECT * FROM mytable; // after SELECT id, name, CAST(unusual_col AS VARCHAR(200)) AS unusual_col FROM mytable;
Defensive patterns
Strategy: try-catch
Validate before calling
// Pre-check column types against IRIS converter support before running the job
List<BasicTypeDefine> cols = catalog.getTableColumn(...).getColumns();
Set<String> supported = Set.of("VARCHAR","CHAR","INT","BIGINT","DECIMAL","DOUBLE","TIMESTAMP","DATE","TIME","BIT","IRIS_LONG_BINARY","IRIS_LONG_RAW");
for (BasicTypeDefine c : cols) {
if (!supported.contains(c.getDataType().toUpperCase())) {
throw new IllegalStateException("Column " + c.getName() + " type " + c.getDataType() + " not supported by IRIS converter");
}
} Type guard
boolean isSupportedIrisType(BasicTypeDefine td) {
try { new IrisTypeConverter().convert(td); return true; }
catch (SeaTunnelRuntimeException e) { return false; }
} Try / catch
try {
SeaTunnelDataType<?> dt = new IrisTypeConverter().convert(typeDefine);
} catch (SeaTunnelRuntimeException e) {
if (e.getMessage().contains("unsupported convert type")) {
LOG.warn("Skipping unsupported IRIS column: {}", e.getMessage());
} else { throw e; }
} Prevention
- Inspect table DDL before running the job and avoid tables with proprietary IRIS types.
- Use explicit SELECT projections over SELECT *.
- Pin schema discovery to known-supported tables in catalog config.
- Keep SeaTunnel updated for widened IRIS dialect coverage.
When it happens
Trigger: Calling convert(BasicTypeDefine) on IrisTypeConverter with a typeDefine whose data type falls through to the default switch branch in IrisTypeConverter.java:259 — e.g. unusual IRIS types like %Library.FilemanDate, custom user-defined types, or type names not in the supported list (IRIS_LONG_BINARY/IRIS_LONG_RAW etc. are handled, everything else is not).
Common situations: Reading from an InterSystems IRIS table containing exotic or user-defined column types; catalog/table-auto-parse mode where SeaTunnel discovers the schema automatically; IRIS version differences introducing new type names the converter doesn't know.
Related errors
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/8290243603ca019f.
Report an issue: GitHub.