{"record":{"id":"eddc2088b9a3c3e0","repo":"apache/seatunnel","slug":"common-19-eddc20","errorCode":"COMMON-19","errorMessage":"'<identifier>' unsupported convert SeaTunnel data type '<dataType>' of '<field>' to connector data type.","messagePattern":"'<identifier>' unsupported convert SeaTunnel data type '<dataType>' of '<field>' to connector 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":552,"sourceCode":"                                        + \"it will be converted to timestamp({})\",\n                                column.getName(),\n                                column.getScale(),\n                                MAX_TIMESTAMP_SCALE,\n                                timestampTzScale);\n                    }\n                    builder.columnType(String.format(\"%s(%s)\", MYSQL_TIMESTAMP, timestampTzScale));\n                    builder.scale(timestampTzScale);\n                } else {\n                    builder.columnType(MYSQL_TIMESTAMP);\n                }\n                break;\n            case FLOAT_VECTOR:\n                builder.nativeType(VECTOR_NAME);\n                builder.columnType(String.format(\"%s(%s)\", VECTOR_NAME, column.getScale()));\n                builder.dataType(VECTOR_NAME);\n                break;\n            default:\n                throw CommonError.convertToConnectorTypeError(\n                        DatabaseIdentifier.OCEANBASE,\n                        column.getDataType().getSqlType().name(),\n                        column.getName());\n        }\n\n        return builder.build();\n    }\n}\n","sourceCodeStart":534,"sourceCodeEnd":561,"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#L534-L561","documentation":"Thrown by OceanBaseMySqlTypeConverter.reconvert() when a SeaTunnel data type cannot be mapped back to an OceanBase (MySQL mode) column type for sink writes or table creation. Supported cases include FLOAT_VECTOR (mapped to the OceanBase VECTOR native type); everything else hits the default branch. It fails during sink schema preparation before any write.","triggerScenarios":"reconvert(Column) on OceanBaseMySqlTypeConverter where column.getDataType().getSqlType() is not handled at OceanBaseMySqlTypeConverter.java:552 — e.g. SeaTunnel Vector types other than FLOAT (VECTOR<i8>/VECTOR<f64>), or complex types (MAP/ARRAY) without an OceanBase mapping.","commonSituations":"Auto-creating OceanBase sink tables from vector sources with non-float element types; writing general nested/complex data into OceanBase MySQL-mode sinks; cross-database pipelines (e.g. PostgreSQL source types) whose SqlTypes lack OceanBase equivalents.","solutions":["Read '<dataType>' from the message to identify the unsupported SeaTunnel SqlType.","Pre-create the OceanBase table with correct VECTOR(...) DDL and disable sink auto-create.","Add a Transform to convert unsupported columns (e.g. non-float vectors to float, arrays to JSON string) before the sink.","Extend OceanBaseMySqlTypeConverter.reconvert() with the missing mapping and contribute upstream."],"exampleFix":"// before\nVector<i8> column -> OceanBase sink: error\n// after\ntransform: cast i8 vector to FLOAT_VECTOR before sink","handlingStrategy":"validation","validationCode":"// Verify every sink column converts to an OceanBase type before DDL\nfor (Column col : sinkSchema.getColumns()) {\n    try { new OceanBaseMySqlTypeConverter().reconvert(col); }\n    catch (SeaTunnelRuntimeException e) {\n        throw new IllegalStateException(\"OceanBase sink cannot map column \" + col.getName() + \" of \" + col.getDataType());\n    }\n}","typeGuard":"boolean isOceanBaseSinkColumnValid(Column col) {\n    try { new OceanBaseMySqlTypeConverter().reconvert(col); return true; }\n    catch (SeaTunnelRuntimeException e) { return false; }\n}","tryCatchPattern":"try {\n    converter.reconvert(column);\n} catch (SeaTunnelRuntimeException e) {\n    if (e.getMessage().contains(\"unsupported convert SeaTunnel data type\")) {\n        throw new IllegalArgumentException(\"Only FLOAT_VECTOR and scalar types are supported for OceanBase sink: \" + column.getName());\n    }\n    throw e;\n}","preventionTips":["Pre-create OceanBase tables with exact VECTOR(N) DDL; disable auto-create.","Convert non-float vectors to FLOAT_VECTOR (or strings) with a Transform.","Avoid writing MAP/ARRAY types to OceanBase MySQL-mode sinks.","Validate the schema in a staging run first."],"tags":["jdbc","type-conversion","oceanbase","sink"],"backgroundTag":"unsupported-dtype","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}