{"record":{"id":"4bee8caafff3fa65","repo":"apache/seatunnel","slug":"unsupported-data-type-4bee8c","errorCode":"UNSUPPORTED_DATA_TYPE","errorMessage":"Unsupported data type {}","messagePattern":"Unsupported data type (.+?)","errorType":"error_code","errorClass":"HbaseConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-hbase/src/main/java/org/apache/seatunnel/connectors/seatunnel/hbase/format/HBaseDeserializationFormat.java","lineNumber":96,"sourceCode":"                }\n            case DOUBLE:\n                return Bytes.toDouble(cell);\n            case BYTES:\n                return cell;\n            case DATE:\n                return LocalDate.parse(\n                        Bytes.toString(cell), DateTimeFormatter.ofPattern(dateFormat.getValue()));\n            case TIME:\n                return LocalTime.parse(\n                        Bytes.toString(cell), DateTimeFormatter.ofPattern(timeFormat.getValue()));\n            case TIMESTAMP:\n                return LocalDateTime.parse(\n                        Bytes.toString(cell),\n                        DateTimeFormatter.ofPattern(datetimeFormat.getValue()));\n            case STRING:\n                return Bytes.toString(cell);\n            default:\n                throw new HbaseConnectorException(\n                        CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE,\n                        \"Unsupported data type \" + typeInfo.getSqlType());\n        }\n    }\n}\n","sourceCodeStart":78,"sourceCodeEnd":102,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-hbase/src/main/java/org/apache/seatunnel/connectors/seatunnel/hbase/format/HBaseDeserializationFormat.java#L78-L102","documentation":"During HBase deserialization, a SeaTunnel column whose SqlType has no case in HBaseDeserializationFormat.deserializeValue hits the default branch and throws HbaseConnectorException with UNSUPPORTED_DATA_TYPE and message 'Unsupported data type {sqlType}'. The format layer only maps a fixed set of HBase cell bytes to SeaTunnel types; anything else cannot be converted.","triggerScenarios":"A catalog/table schema containing a column type not handled by the switch in deserializeValue (e.g. MAP, ARRAY, or other complex types) is deserialized from HBase cells via deserialize -> deserializeValue.","commonSituations":"Declaring an HBase column family:qualifier as a complex type in the schema; schema drift after upstream table change; copying a schema from another connector that supports more types.","solutions":["Restrict the schema to types supported by the chosen HBase deserialization format (string, int, long, double, float, boolean, decimal, date, time, timestamp, bytes)","Use the 'bytes'/STRING mapping for the column and convert downstream in a transform","Check which deserialization format is configured and its supported type list"],"exampleFix":"// before\nschema = { fields { cf:sq = MAP<STRING,STRING> } }\n// after\nschema = { fields { cf:sq = string } }","handlingStrategy":"validation","validationCode":"Set<SqlType> supported = Set.of(STRING, INT, BIGINT, DOUBLE, FLOAT, BOOLEAN, DECIMAL, DATE, TIME, TIMESTAMP, BYTES);\nfor (SeaTunnelRowType.Field f : rowType.getFields()) {\n    if (!supported.contains(((PrimitiveByteArrayType) ...).getSqlType())) { /* fail fast or cast */ }\n}","typeGuard":"static boolean isSupportedHbaseType(CatalogTableColumn c) {\n    return c.getColumnType() instanceof BasicType || c.getColumnType() instanceof LocalTimeType || c.getColumnType() instanceof DecimalType || c.getColumnType() instanceof PrimitiveByteArrayType;\n}","tryCatchPattern":"try { row = format.deserialize(rowBytes); }\ncatch (HbaseConnectorException e) {\n    if (e.getSeaTunnelErrorCode() == CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE) {\n        // fall back to bytes / cast column\n    } else throw e;\n}","preventionTips":["Keep the HBase schema limited to supported primitive types","Cast complex columns to string before HBase read","Pin the schema to avoid upstream drift introducing new types"],"tags":["hbase","deserialization","type-mapping","unsupported-type"],"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"}