apache/seatunnel · warning
Unsupported SQL type: {}, fallback to STRING
Error message
Unsupported SQL type: {}, fallback to STRING What it means
DatabendTypeConverter.mapToDatabendType converts a SeaTunnel catalog type to a Databend SQL type string. When the SeaTunnelDataType does not match any known case it logs this warning and falls back to the Databend STRING type. The schema generated for a sink table (or type expression) will therefore use STRING for that column, which may not match the intended upstream types.
Source
Thrown at seatunnel-connectors-v2/connector-databend/src/main/java/org/apache/seatunnel/connectors/seatunnel/databend/util/DatabendTypeConverter.java:85
"DECIMAL(%d,%d)", decimalType.getPrecision(), decimalType.getScale());
case DATE:
return "DATE";
case TIME:
return "TIME";
case TIMESTAMP:
return "TIMESTAMP";
case BYTES:
return "VARBINARY";
case ARRAY:
return "ARRAY(STRING)";
case MAP:
return "MAP(STRING, STRING)";
case NULL:
return "NULL";
case ROW:
return "STRING";
default:
log.warn("Unsupported SQL type: {}, fallback to STRING", sqlType);
return "STRING";
}
}
}
View on GitHub (pinned to cf67b549a7)
Solutions
- Inspect the logged sqlType to see which SeaTunnel type fell through.
- Explicitly cast/restructure the column in your pipeline to a supported type (STRING, ARRAY, MAP, primitives).
- Extend the converter's switch if you own the code, adding the missing SeaTunnelType mapping.
- Verify the sink schema with a manual CREATE TABLE and adjust the upstream catalog accordingly.
Example fix
// before
// converter falls through to STRING for the unsupported type
// after
SeaTunnelRowType schema = new SeaTunnelRowType(
new String[]{"payload"},
new SeaTunnelDataType<?>[]{BasicType.STRING_TYPE}); // cast upstream ROW -> STRING Defensive patterns
Strategy: validation
Validate before calling
SeaTunnelDataType<?> t = catalogColumn.getColumnType();
if (t instanceof SeaTunnelRowType || t instanceof SeaTunnelMapType) {
// confirm the converter handles this type or cast to STRING upstream
} Type guard
if (sqlType instanceof BasicType || sqlType instanceof ArrayType || sqlType instanceof MapType) { /* handled path */ } Prevention
- Define sink catalogs with types Databend supports natively.
- Cast ROW/complex columns to STRING in upstream transforms.
- Add unit tests covering all SeaTunnel types used in your pipelines.
- Keep the converter's switch in sync with SeaTunnel API type additions.
When it happens
Trigger: A sink catalog containing a SeaTunnel type with no explicit Databend mapping (e.g. certain ARRAY/MAP element combos or ROW besides the handled NULL/ROW cases) reaches the default branch while building the CREATE TABLE or type expression via databendType().
Common situations: Schemas inferred from sources with types Databend cannot represent directly; upstream CDC or transforms producing SeaTunnel ROW/MAP types; version drift between SeaTunnel API types and the converter's switch.
Understand the failure class
Background: Type mismatch errors: IllegalArgumentException, TypeError and type guards across 150 open-source libraries — this error's family across 150 libraries.
Related errors
- Could not query table schema, using inferred schema from dat
- UNSUPPORTED_DATA_TYPE
- SCHEMA_NOT_FOUND
- RowType cannot be null
- SQL_OPERATION_FAILED
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/dc6b3ffd0dda7d03.
Report an issue: GitHub.