{"record":{"id":"441b5e777e3446c8","repo":"apache/seatunnel","slug":"common-17-441b5e","errorCode":"COMMON-17","errorMessage":"'${identifier}' unsupported convert type '${dataType}' of '${field}' to SeaTunnel data type.","messagePattern":"'(.+?)' unsupported convert type '(.+?)' of '(.+?)' to SeaTunnel 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/phoenix/PhoenixTypeConverter.java","lineNumber":163,"sourceCode":"                break;\n            case PHOENIX_DATE:\n            case PHOENIX_DATE_UNSIGNED:\n                builder.dataType(LocalTimeType.LOCAL_DATE_TYPE);\n                break;\n            case PHOENIX_TIME:\n            case PHOENIX_TIME_UNSIGNED:\n                builder.dataType(LocalTimeType.LOCAL_TIME_TYPE);\n                break;\n            case PHOENIX_TIMESTAMP:\n            case PHOENIX_TIMESTAMP_UNSIGNED:\n                builder.dataType(LocalTimeType.LOCAL_DATE_TIME_TYPE);\n                break;\n            case PHOENIX_BINARY:\n            case PHOENIX_VARBINARY:\n                builder.dataType(PrimitiveByteArrayType.INSTANCE);\n                break;\n            default:\n                throw CommonError.convertToSeaTunnelTypeError(\n                        PHOENIX, typeDefine.getDataType(), 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(PHOENIX_BOOLEAN);\n                builder.dataType(PHOENIX_BOOLEAN);\n                break;","sourceCodeStart":145,"sourceCodeEnd":181,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-jdbc/src/main/java/org/apache/seatunnel/connectors/seatunnel/jdbc/internal/dialect/phoenix/PhoenixTypeConverter.java#L145-L181","documentation":"PhoenixTypeConverter.convert() throws this when a Phoenix column's JDBC type cannot be mapped to a SeaTunnel data type. The switch over the column's data type hits the default branch, meaning the type is outside the supported Phoenix→SeaTunnel mapping. It is raised via CommonError.convertToSeaTunnelTypeError with identifier PHOENIX, embedding the field name and unsupported type in the message.","triggerScenarios":"Reading a Phoenix table whose column has an unsupported SQL type (e.g. unsupported numeric/date variants not covered by the switch cases) during catalog table construction — specifically in PhoenixTypeConverter.convert when theColumnType falls into default.","commonSituations":"Syncing Phoenix tables containing exotic types like arrays of unsupported element types, user-defined types, or types introduced in newer Phoenix versions not yet handled by the converter; auto table creation / schema inference on such tables fails at job startup.","solutions":["Identify the unsupported column type from the error message and drop, cast, or exclude that column in the SeaTunnel config (use query/table-list filtering to avoid it)","Add a mapping case for the type in PhoenixTypeConverter.convert and rebuild the connector","Pin/upgrade SeaTunnel to a version that supports the Phoenix type"],"exampleFix":"// before: column 'bin_extra' of unsupported type breaks convert\n// after: exclude or cast in SQL source\nString query = \"SELECT id, name, CAST(unsupported_col AS VARCHAR) FROM phoenix_table\";","handlingStrategy":"validation","validationCode":"// Before job run, verify all Phoenix column types are supported:\nResultSet cols = meta.getColumns(null, schema, table, null);\nwhile (cols.next()) {\n    String type = cols.getString(\"TYPE_NAME\");\n    Set<String> supported = Set.of(\"INTEGER\",\"UNSIGNED_INT\",\"BIGINT\",\"UNSIGNED_LONG\",\"VARCHAR\",\"CHAR\",\"FLOAT\",\"DOUBLE\",\"DECIMAL\",\"BOOLEAN\",\"TIME\",\"DATE\",\"TIMESTAMP\",\"BINARY\",\"VARBINARY\");\n    if (!supported.contains(type.toUpperCase())) throw new IllegalStateException(\"Unsupported Phoenix type: \" + type);\n}","typeGuard":null,"tryCatchPattern":"try {\n    catalogTable = converter.convert(typeDefinition);\n} catch (SeaTunnelRuntimeException e) {\n    LOG.warn(\"Skipping unsupported Phoenix column: {}\", e.getMessage());\n    // exclude column and continue\n}","preventionTips":["Review Phoenix table schemas before configuring the source and avoid/cast unsupported types","Pin driver and SeaTunnel versions known to support your schema","Use explicit column lists in queries instead of SELECT *"],"tags":["jdbc","phoenix","type-conversion","sea-tunnel"],"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"}