{"record":{"id":"9d1ff2260d423cf0","repo":"apache/seatunnel","slug":"common-17-9d1ff2","errorCode":"COMMON-17","errorMessage":"'<identifier>' unsupported convert type '<dataType>' of '<field>' to SeaTunnel data type.","messagePattern":"'<identifier>' unsupported convert type '<dataType>' of '<field>' to SeaTunnel data type\\.","errorType":"error_code","errorClass":"org.apache.seatunnel.common.exception.SeaTunnelRuntimeException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oceanbase/OceanBaseMySqlTypeConverter.java","lineNumber":313,"sourceCode":"                builder.scale(typeDefine.getScale());\n                break;\n            case MYSQL_TIMESTAMP:\n                builder.dataType(LocalTimeType.OFFSET_DATE_TIME_TYPE);\n                builder.scale(typeDefine.getScale());\n                break;\n            case VECTOR_NAME:\n                String columnType = typeDefine.getColumnType().toUpperCase();\n                if (columnType.startsWith(\"VECTOR(\") && columnType.endsWith(\")\")) {\n                    Integer number =\n                            Integer.parseInt(\n                                    columnType.substring(\n                                            columnType.indexOf(\"(\") + 1, columnType.indexOf(\")\")));\n                    builder.dataType(VectorType.VECTOR_FLOAT_TYPE);\n                    builder.scale(number);\n                }\n                break;\n            default:\n                throw CommonError.convertToSeaTunnelTypeError(\n                        DatabaseIdentifier.OCEANBASE, mysqlDataType, typeDefine.getName());\n        }\n        return builder.build();\n    }\n\n    @Override\n    public BasicTypeDefine<OceanBaseMysqlType> reconvert(Column column) {\n        BasicTypeDefine.BasicTypeDefineBuilder builder =\n                BasicTypeDefine.<OceanBaseMysqlType>builder()\n                        .name(column.getName())\n                        .nullable(column.isNullable())\n                        .comment(column.getComment())\n                        .defaultValue(column.getDefaultValue());\n        switch (column.getDataType().getSqlType()) {\n            case NULL:\n                builder.nativeType(OceanBaseMysqlType.NULL);\n                builder.columnType(MYSQL_NULL);\n                builder.dataType(MYSQL_NULL);","sourceCodeStart":295,"sourceCodeEnd":331,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oceanbase/OceanBaseMySqlTypeConverter.java#L295-L331","documentation":"Thrown by OceanBaseMySqlTypeConverter.convert() when an OceanBase (MySQL mode) column type has no mapping to a SeaTunnel data type. The converter handles standard MySQL types plus OceanBase vector types (e.g. VECTOR<FLOAT> parsed from the column string); the default branch fires for anything unrecognized. Schema conversion of the OceanBase source fails before reading data.","triggerScenarios":"convert(BasicTypeDefine) on OceanBaseMySqlTypeConverter with a mysqlDataType outside the supported switch at OceanBaseMySqlTypeConverter.java:313 — e.g. OceanBase-proprietary types, unsupported vector element kinds (only VECTOR_FLOAT handled), or spatial/other types not present in the mapping table.","commonSituations":"Reading OceanBase tables with vector columns of unsupported element type (VECTOR<i8>/VECTOR<f64>), spatial columns, or tenant-mode differences reporting unusual type metadata; OceanBase versions introducing new types not yet in the converter.","solutions":["Identify the failing column from '<field>'/'<dataType>' in the message.","Project only supported columns or cast the column (CAST(col AS CHAR) / vec_to_text for vectors) in a custom query.","Restrict auto schema discovery to tables with fully supported types; split out tables with exotic columns.","Upgrade SeaTunnel for extended OceanBase vector/type support, or add a mapping case in OceanBaseMySqlTypeConverter.convert()."],"exampleFix":"// before\nSELECT * FROM embeddings; -- VECTOR<f64> unsupported\n// after\nSELECT id, vec_to_text(v) AS v FROM embeddings;","handlingStrategy":"validation","validationCode":"// Pre-validate OceanBase columns against the dialect converter\nfor (BasicTypeDefine c : obTableColumns) {\n    try { new OceanBaseMySqlTypeConverter().convert(c); }\n    catch (SeaTunnelRuntimeException e) {\n        throw new IllegalStateException(\"Unsupported OceanBase type \" + c.getDataType() + \" on \" + c.getName());\n    }\n}","typeGuard":"boolean isOceanBaseTypeSupported(BasicTypeDefine td) {\n    try { new OceanBaseMySqlTypeConverter().convert(td); return true; }\n    catch (SeaTunnelRuntimeException e) { return false; }\n}","tryCatchPattern":"try {\n    converter.convert(typeDefine);\n} catch (SeaTunnelRuntimeException e) {\n    if (e.getMessage().contains(\"unsupported convert type\")) {\n        LOG.error(\"OceanBase column {} type {} unsupported; project/cast it\", typeDefine.getName(), typeDefine.getDataType());\n    }\n    throw e;\n}","preventionTips":["Only use VECTOR<float> columns directly; text-cast other vector kinds.","Check OceanBase tenant/version-specific type metadata before ingestion.","Use explicit SELECT projections on tables with exotic types.","Upgrade SeaTunnel for newer OceanBase vector support."],"tags":["jdbc","type-conversion","oceanbase","schema"],"backgroundTag":"unsupported-dtype","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"}