{"record":{"id":"21ae00686cf30cc5","repo":"apache/seatunnel","slug":"vitess-cdc-bootstrap-schema-does-not-support-catal","errorCode":null,"errorMessage":"Vitess CDC bootstrap schema does not support catalog SQL type '%s' for column '%s'.","messagePattern":"Vitess CDC bootstrap schema does not support catalog SQL type '(.+?)' for column '(.+?)'\\.","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-cdc/connector-cdc-vitess/src/main/java/org/apache/seatunnel/connectors/seatunnel/cdc/vitess/source/split/VitessTableSchemaState.java","lineNumber":193,"sourceCode":"            case BIGINT:\n                return Types.BIGINT;\n            case FLOAT:\n                return Types.FLOAT;\n            case DOUBLE:\n                return Types.DOUBLE;\n            case DECIMAL:\n                return Types.DECIMAL;\n            case BYTES:\n                return Types.BINARY;\n            case DATE:\n                return Types.DATE;\n            case TIME:\n                return Types.TIME;\n            case TIMESTAMP:\n            case TIMESTAMP_TZ:\n                return Types.TIMESTAMP;\n            default:\n                throw new IllegalArgumentException(\n                        String.format(\n                                \"Vitess CDC bootstrap schema does not support catalog SQL type '%s' for column '%s'.\",\n                                column.getDataType().getSqlType(), column.getName()));\n        }\n    }\n\n    private static String defaultTypeName(SqlType sqlType) {\n        switch (sqlType) {\n            case STRING:\n                return \"VARCHAR\";\n            case BOOLEAN:\n                return \"BOOLEAN\";\n            case TINYINT:\n                return \"TINYINT\";\n            case SMALLINT:\n                return \"SMALLINT\";\n            case INT:\n                return \"INT\";","sourceCodeStart":175,"sourceCodeEnd":211,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-cdc/connector-cdc-vitess/src/main/java/org/apache/seatunnel/connectors/seatunnel/cdc/vitess/source/split/VitessTableSchemaState.java#L175-L211","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"// before\ncase TIME:\n    return Types.TIME;\ndefault:\n    throw new IllegalArgumentException(...);\n// after\ncase TIME:\n    return Types.TIME;\ncase JSON:\n    return Types.VARCHAR;\ndefault:\n    throw new IllegalArgumentException(...);","handlingStrategy":"validation","validationCode":"Set<ColumnDataType> supported = Set.of(ColumnDataType.STRING, ColumnDataType.INT, ColumnDataType.BIGINT, ColumnDataType.DOUBLE, ColumnDataType.TIME, ColumnDataType.TIMESTAMP, ColumnDataType.TIMESTAMP_TZ);\nfor (Column column : tableColumns) {\n    if (!supported.contains(column.getDataType())) {\n        throw new IllegalArgumentException(\"Column '\" + column.getName() + \"' type \" + column.getDataType().getSqlType() + \" is not supported by Vitess CDC bootstrap\");\n    }\n}","typeGuard":"boolean isSupportedVitessType(Column c) {\n    return c != null && c.getDataType() != null && SUPPORTED_SQL_TYPES.contains(c.getDataType().getSqlType());\n}","tryCatchPattern":"try {\n    CatalogTable table = catalog.getTable(tablePath);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().contains(\"does not support catalog SQL type\")) {\n        logger.error(\"Unsupported column type during Vitess bootstrap: {}\", e.getMessage());\n        throw new ConfigurationException(\"Exclude or change the unsupported column\", e);\n    }\n    throw e;\n}","preventionTips":["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"],"tags":["cdc","vitess","schema","unsupported-type"],"backgroundTag":"unsupported-enum-value","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}