{"record":{"id":"5f37c95202d4c328","repo":"apache/seatunnel","slug":"common-19-5f37c9","errorCode":"COMMON-19","errorMessage":"'${identifier}' unsupported convert SeaTunnel data type '${dataType}' of '${field}' to connector data type.","messagePattern":"'(.+?)' unsupported convert SeaTunnel data type '(.+?)' of '(.+?)' to connector data type\\.","errorType":"error_code","errorClass":"SeaTunnelRuntimeException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oracle/OracleTypeConverter.java","lineNumber":453,"sourceCode":"                    if (timestampTzScale > MAX_TIMESTAMP_SCALE) {\n                        log.warn(\n                                \"The timestamp_tz column {} type timestamp({}) is out of range, \"\n                                        + \"which exceeds the maximum scale of {}, \"\n                                        + \"it will be converted to timestamp({})\",\n                                column.getName(),\n                                timestampTzScale,\n                                MAX_TIMESTAMP_SCALE,\n                                MAX_TIMESTAMP_SCALE);\n                        timestampTzScale = MAX_TIMESTAMP_SCALE;\n                    }\n                    builder.columnType(\n                            String.format(\"TIMESTAMP(%s) WITH LOCAL TIME ZONE\", timestampTzScale));\n                    builder.scale(timestampTzScale);\n                }\n                builder.dataType(ORACLE_TIMESTAMP_WITH_LOCAL_TIME_ZONE);\n                break;\n            default:\n                throw CommonError.convertToConnectorTypeError(\n                        DatabaseIdentifier.ORACLE,\n                        column.getDataType().getSqlType().name(),\n                        column.getName());\n        }\n        return builder.build();\n    }\n}\n","sourceCodeStart":435,"sourceCodeEnd":461,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/oracle/OracleTypeConverter.java#L435-L461","documentation":"Thrown by OracleTypeConverter.reconvert() when a SeaTunnel data type cannot be mapped back to an Oracle column type for sink writes or table creation. The switch covers TIMESTAMP WITH [LOCAL] TIME ZONE variants and others; the default branch fires for unsupported SeaTunnel SqlTypes. It fails during sink schema preparation.","triggerScenarios":"reconvert(Column) on OracleTypeConverter where column.getDataType().getSqlType() falls to the default branch at OracleTypeConverter.java:453 — e.g. MAP/ARRAY/VECTOR types or SeaTunnel types without an Oracle mapping in this dialect.","commonSituations":"Auto-creating an Oracle sink table from sources with complex types (nested documents, arrays, vectors); cross-database pipelines whose SeaTunnel types (e.g. from MySQL TIMESTAMP or PostgreSQL arrays) lack Oracle equivalents in the converter.","solutions":["Identify the unsupported SeaTunnel SqlType from '<dataType>' in the message.","Pre-create the Oracle table and disable sink auto-create so reconvert DDL mapping is bypassed.","Add a cast Transform to convert unsupported columns to supported types (STRING, NUMBER, TIMESTAMP) before the sink.","Extend OracleTypeConverter.reconvert() with the missing mapping and contribute it upstream."],"exampleFix":"// before\nARRAY column -> Oracle sink auto-create: error\n// after\ntransform: Sql { sql = \"SELECT id, to_json(tags) AS tags FROM source\" }","handlingStrategy":"validation","validationCode":"// Validate the sink schema maps to Oracle types before table creation\nfor (Column col : sinkSchema.getColumns()) {\n    try { new OracleTypeConverter().reconvert(col); }\n    catch (SeaTunnelRuntimeException e) {\n        throw new IllegalStateException(\"Oracle sink cannot map column \" + col.getName() + \" of \" + col.getDataType());\n    }\n}","typeGuard":"boolean isOracleSinkColumnValid(Column col) {\n    try { new OracleTypeConverter().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(\"Cast column \" + column.getName() + \" to a scalar type before the Oracle sink\");\n    }\n    throw e;\n}","preventionTips":["Pre-create the Oracle table with explicit DDL and disable auto-create.","Flatten arrays/maps/nested structures to scalar or STRING columns upstream.","Check timezone-aware timestamp mappings (TIME ZONE variants) in the schema design.","Run a schema conversion dry-run before production pipelines."],"tags":["jdbc","type-conversion","oracle","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"}