{"record":{"id":"50b8281c191a5d48","repo":"apache/seatunnel","slug":"common-17-50b828","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/db2/DB2TypeConverter.java","lineNumber":223,"sourceCode":"                builder.sourceType(String.format(\"%s(%d)\", DB2_BLOB, typeDefine.getLength()));\n                builder.columnLength(typeDefine.getLength());\n                builder.dataType(PrimitiveByteArrayType.INSTANCE);\n                break;\n            case DB2_DATE:\n                builder.sourceType(DB2_DATE);\n                builder.dataType(LocalTimeType.LOCAL_DATE_TYPE);\n                break;\n            case DB2_TIME:\n                builder.sourceType(DB2_TIME);\n                builder.dataType(LocalTimeType.LOCAL_TIME_TYPE);\n                break;\n            case DB2_TIMESTAMP:\n                builder.sourceType(String.format(\"%s(%d)\", DB2_TIMESTAMP, typeDefine.getScale()));\n                builder.dataType(LocalTimeType.LOCAL_DATE_TIME_TYPE);\n                builder.scale(typeDefine.getScale());\n                break;\n            default:\n                throw CommonError.convertToSeaTunnelTypeError(\n                        DatabaseIdentifier.DB_2, db2Type, typeDefine.getName());\n        }\n        return builder.build();\n    }\n\n    @Override\n    public BasicTypeDefine reconvert(Column column) {\n        BasicTypeDefine.BasicTypeDefineBuilder builder =\n                BasicTypeDefine.builder()\n                        .name(column.getName())\n                        .nullable(column.isNullable())\n                        .comment(column.getComment())\n                        .defaultValue(column.getDefaultValue());\n        switch (column.getDataType().getSqlType()) {\n            case BOOLEAN:\n                builder.columnType(DB2_BOOLEAN);\n                builder.dataType(DB2_BOOLEAN);\n                break;","sourceCodeStart":205,"sourceCodeEnd":241,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/db2/DB2TypeConverter.java#L205-L241","documentation":"DB2 JDBC dialect failed to map a DB2 column type to a SeaTunnel data type. DB2TypeConverter.convert switches on the DB2 type name; when the type is not in its supported set it throws CommonError.convertToSeaTunnelTypeError with dialect DB_2, the raw db2Type string, and the column name from typeDefine.","triggerScenarios":"Calling DB2TypeConverter.convert(Column) (via JdbcTypeConverter) for a table whose column type string matches no case (e.g. XML, DECFLOAT, BLOB/CLOB in some versions, user-defined types).","commonSituations":"Reading DB2 tables containing LOB/XML/spatial columns; DB2 version upgrades introducing new built-in types; catalogs listing system tables with unusual column types.","solutions":["Cast or exclude the unsupported column in your source SQL (e.g. CAST(xml_col AS VARCHAR(...)))","Upgrade SeaTunnel to a version whose DB2 converter supports the type","Add a case for the missing DB2 type in DB2TypeConverter.convert and rebuild"],"exampleFix":"// before\nSELECT id, doc FROM db2admin.t; -- doc is XML\n// after\nSELECT id, CAST(doc AS VARCHAR(32000)) AS doc FROM db2admin.t;","handlingStrategy":"validation","validationCode":"Set<String> supported = Set.of(\"SMALLINT\",\"INTEGER\",\"BIGINT\",\"DECIMAL\",\"REAL\",\"DOUBLE\",\"CHAR\",\"VARCHAR\",\"DATE\",\"TIME\",\"TIMESTAMP\");\nfor (Column c : tableColumns) {\n    if (!supported.contains(c.getTypeName().toUpperCase())) {\n        log.warn(\"DB2 column {} type {} unsupported - cast or exclude\", c.getName(), c.getTypeName());\n    }\n}","typeGuard":null,"tryCatchPattern":"try {\n    return db2Converter.convert(column);\n} catch (SeaTunnelRuntimeException e) {\n    if (CommonErrorCode.CONVERT_TO_SEATUNNEL_TYPE_ERROR_SIMPLE.equals(e.getSeaTunnelErrorCode())) {\n        log.warn(\"Falling back to STRING for DB2 column {}\", column.getName());\n        return StringType.STRING_TYPE;\n    }\n    throw e;\n}","preventionTips":["Inspect DB2 table DDL for LOB/XML/DECFLOAT/user-defined columns and CAST them in the source SQL","Query explicit column lists rather than SELECT * to control types","Check the DB2TypeConverter switch for the supported type list before onboarding a table"],"tags":["jdbc","db2","type-conversion","dialect"],"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"}