{"record":{"id":"8290243603ca019f","repo":"apache/seatunnel","slug":"common-17-829024","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/iris/IrisTypeConverter.java","lineNumber":259,"sourceCode":"                builder.dataType(LocalTimeType.LOCAL_DATE_TIME_TYPE);\n                break;\n            case IRIS_BINARY:\n            case IRIS_BINARY_VARYING:\n            case IRIS_RAW:\n            case IRIS_VARBINARY:\n                builder.dataType(PrimitiveByteArrayType.INSTANCE);\n                builder.columnLength(charOrBinaryLength);\n                break;\n            case IRIS_LONGVARBINARY:\n            case IRIS_BLOB:\n            case IRIS_IMAGE:\n            case IRIS_LONG_BINARY:\n            case IRIS_LONG_RAW:\n                builder.dataType(PrimitiveByteArrayType.INSTANCE);\n                builder.columnLength(Long.valueOf(Integer.MAX_VALUE));\n                break;\n            default:\n                throw CommonError.convertToSeaTunnelTypeError(\n                        DatabaseIdentifier.IRIS, irisDataType, 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                        .precision(column.getColumnLength())\n                        .length(column.getColumnLength())\n                        .nullable(column.isNullable())\n                        .comment(column.getComment())\n                        .scale(column.getScale())\n                        .defaultValue(column.getDefaultValue());\n        switch (column.getDataType().getSqlType()) {\n            case NULL:","sourceCodeStart":241,"sourceCodeEnd":277,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/iris/IrisTypeConverter.java#L241-L277","documentation":"This error is thrown by the IRIS JDBC dialect's type converter when a source column type (IRIS data type) cannot be mapped to any supported SeaTunnel data type. SeaTunnel reads the database metadata / column definitions and maps each type; the default branch of the switch in IrisTypeConverter.convert() fires when the type has no mapping. It means schema conversion failed before any data was read or written.","triggerScenarios":"Calling convert(BasicTypeDefine) on IrisTypeConverter with a typeDefine whose data type falls through to the default switch branch in IrisTypeConverter.java:259 — e.g. unusual IRIS types like %Library.FilemanDate, custom user-defined types, or type names not in the supported list (IRIS_LONG_BINARY/IRIS_LONG_RAW etc. are handled, everything else is not).","commonSituations":"Reading from an InterSystems IRIS table containing exotic or user-defined column types; catalog/table-auto-parse mode where SeaTunnel discovers the schema automatically; IRIS version differences introducing new type names the converter doesn't know.","solutions":["Identify the offending column from the error message field '<field>' and check its IRIS data type.","Use a catalog 'table-names' config with explicit table_path/schema instead of auto-discovery, or exclude the offending column via query projection (SELECT only supported columns).","Cast the column in a custom SQL query to a supported type (e.g. CAST to VARCHAR or BLOB) so the converter sees a mappable type.","If the type is a legitimate new IRIS type, add a mapping case in IrisTypeConverter.convert() and contribute it upstream."],"exampleFix":"// before\nSELECT * FROM mytable;\n// after\nSELECT id, name, CAST(unusual_col AS VARCHAR(200)) AS unusual_col FROM mytable;","handlingStrategy":"try-catch","validationCode":"// Pre-check column types against IRIS converter support before running the job\nList<BasicTypeDefine> cols = catalog.getTableColumn(...).getColumns();\nSet<String> supported = Set.of(\"VARCHAR\",\"CHAR\",\"INT\",\"BIGINT\",\"DECIMAL\",\"DOUBLE\",\"TIMESTAMP\",\"DATE\",\"TIME\",\"BIT\",\"IRIS_LONG_BINARY\",\"IRIS_LONG_RAW\");\nfor (BasicTypeDefine c : cols) {\n  if (!supported.contains(c.getDataType().toUpperCase())) {\n    throw new IllegalStateException(\"Column \" + c.getName() + \" type \" + c.getDataType() + \" not supported by IRIS converter\");\n  }\n}","typeGuard":"boolean isSupportedIrisType(BasicTypeDefine td) {\n    try { new IrisTypeConverter().convert(td); return true; }\n    catch (SeaTunnelRuntimeException e) { return false; }\n}","tryCatchPattern":"try {\n    SeaTunnelDataType<?> dt = new IrisTypeConverter().convert(typeDefine);\n} catch (SeaTunnelRuntimeException e) {\n    if (e.getMessage().contains(\"unsupported convert type\")) {\n        LOG.warn(\"Skipping unsupported IRIS column: {}\", e.getMessage());\n    } else { throw e; }\n}","preventionTips":["Inspect table DDL before running the job and avoid tables with proprietary IRIS types.","Use explicit SELECT projections over SELECT *.","Pin schema discovery to known-supported tables in catalog config.","Keep SeaTunnel updated for widened IRIS dialect coverage."],"tags":["jdbc","type-conversion","iris","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"}