apache/seatunnel · error · IllegalArgumentException
Vitess CDC bootstrap schema does not support catalog SQL typ
Error message
Vitess CDC bootstrap schema does not support catalog SQL type '%s' for column '%s'.
What it means
Vitess CDC's bootstrap schema builder maps each column's SeaTunnel catalog data type to a java.sql.Types constant. When a column's type falls outside the supported set (VARCHAR, INT, TIME, TIMESTAMP, etc.), resolveJdbcType throws this IllegalArgumentException. It means the Vitess connector cannot represent that column type in its bootstrap schema, so the table schema cannot be constructed.
Source
Thrown at seatunnel-connectors-v2/connector-cdc/connector-cdc-vitess/src/main/java/org/apache/seatunnel/connectors/seatunnel/cdc/vitess/source/split/VitessTableSchemaState.java:193
case BIGINT:
return Types.BIGINT;
case FLOAT:
return Types.FLOAT;
case DOUBLE:
return Types.DOUBLE;
case DECIMAL:
return Types.DECIMAL;
case BYTES:
return Types.BINARY;
case DATE:
return Types.DATE;
case TIME:
return Types.TIME;
case TIMESTAMP:
case TIMESTAMP_TZ:
return Types.TIMESTAMP;
default:
throw new IllegalArgumentException(
String.format(
"Vitess CDC bootstrap schema does not support catalog SQL type '%s' for column '%s'.",
column.getDataType().getSqlType(), column.getName()));
}
}
private static String defaultTypeName(SqlType sqlType) {
switch (sqlType) {
case STRING:
return "VARCHAR";
case BOOLEAN:
return "BOOLEAN";
case TINYINT:
return "TINYINT";
case SMALLINT:
return "SMALLINT";
case INT:
return "INT";View on GitHub (pinned to cf67b549a7)
Solutions
- Identify the column named in the message and alter its Vitess type to a supported equivalent (e.g. change to a supported numeric/string/datetime type) or exclude the column from the catalog table
- Add the missing case to resolveJdbcType's switch in VitessTableSchemaState.java mapping the new ColumnDataType to an appropriate java.sql.Types constant and rebuild
- Upgrade SeaTunnel to a version that maps the column's type, checking the connector's type-mapping code for newly supported cases
Example fix
// before
case TIME:
return Types.TIME;
default:
throw new IllegalArgumentException(...);
// after
case TIME:
return Types.TIME;
case JSON:
return Types.VARCHAR;
default:
throw new IllegalArgumentException(...); Defensive patterns
Strategy: validation
Validate before calling
Set<ColumnDataType> supported = Set.of(ColumnDataType.STRING, ColumnDataType.INT, ColumnDataType.BIGINT, ColumnDataType.DOUBLE, ColumnDataType.TIME, ColumnDataType.TIMESTAMP, ColumnDataType.TIMESTAMP_TZ);
for (Column column : tableColumns) {
if (!supported.contains(column.getDataType())) {
throw new IllegalArgumentException("Column '" + column.getName() + "' type " + column.getDataType().getSqlType() + " is not supported by Vitess CDC bootstrap");
}
} Type guard
boolean isSupportedVitessType(Column c) {
return c != null && c.getDataType() != null && SUPPORTED_SQL_TYPES.contains(c.getDataType().getSqlType());
} Try / catch
try {
CatalogTable table = catalog.getTable(tablePath);
} catch (IllegalArgumentException e) {
if (e.getMessage().contains("does not support catalog SQL type")) {
logger.error("Unsupported column type during Vitess bootstrap: {}", e.getMessage());
throw new ConfigurationException("Exclude or change the unsupported column", e);
}
throw e;
} Prevention
- Review Vitess table DDL before enabling CDC and keep bootstrap columns to well-supported types
- Keep the connector's type-mapping switch covered by unit tests for every ColumnDataType
- Pin SeaTunnel and Vitess versions known to have matching type maps
When it happens
Trigger: Calling columnEditor -> resolveJdbcType during bootstrap (snapshot) schema building when a Vitess column's ColumnDataType maps to a SeaTunnel SqlType not handled by the switch, e.g. exotic types like BIT, JSON, UUID, ENUM/SET variants, or newly added Vitess types.
Common situations: Bootstrapping a Vitess table that contains newer or unusual column types (JSON, BIT, custom typed columns) not yet mapped by the connector; running a SeaTunnel version whose Vitess type-mapping table lags behind the Vitess server schema.
Related errors
- Unsupported type:
- Unsupported SQL type:
- Unsupported Vitess catalog SQL type:
- Unsupported alter table event:
- Unsupported alter table event:
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/21ae00686cf30cc5.
Report an issue: GitHub.