{"record":{"id":"0aa11916069b669d","repo":"apache/seatunnel","slug":"read-failed","errorCode":"READ_FAILED","errorMessage":"Unsupported data type: ","messagePattern":"Unsupported data type: ","errorType":"error_code","errorClass":"BigtableConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-google-bigtable/src/main/java/org/apache/seatunnel/connectors/seatunnel/bigtable/format/BigtableDeserializationFormat.java","lineNumber":114,"sourceCode":"                } catch (NumberFormatException e) {\n                    return new BigDecimal(ByteBuffer.wrap(bytes).getFloat());\n                }\n            case DATE:\n                return LocalDate.parse(\n                        new String(bytes, StandardCharsets.UTF_8),\n                        DateTimeFormatter.ofPattern(dateFormat.getValue()));\n            case TIME:\n                return LocalTime.parse(\n                        new String(bytes, StandardCharsets.UTF_8),\n                        DateTimeFormatter.ofPattern(timeFormat.getValue()));\n            case TIMESTAMP:\n                return LocalDateTime.parse(\n                        new String(bytes, StandardCharsets.UTF_8),\n                        DateTimeFormatter.ofPattern(datetimeFormat.getValue()));\n            case STRING:\n                return new String(bytes, StandardCharsets.UTF_8);\n            default:\n                throw new BigtableConnectorException(\n                        BigtableConnectorErrorCode.READ_FAILED,\n                        \"Unsupported data type: \" + fieldType.getSqlType());\n        }\n    }\n}\n","sourceCodeStart":96,"sourceCodeEnd":120,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-google-bigtable/src/main/java/org/apache/seatunnel/connectors/seatunnel/bigtable/format/BigtableDeserializationFormat.java#L96-L120","documentation":"BigtableDeserializationFormat.deserializeCell throws BigtableConnectorException (READ_FAILED) when a Bigtable cell's byte payload must be converted to a SeaTunnel type whose SqlType has no deserialization branch. The default case in the switch over field types is reached for an unmapped SQL type.","triggerScenarios":"deserializeCell reads a column whose configured/family-mapped fieldType.getSqlType() falls into the switch's default branch (e.g. ARRAY, MAP, ROW or other complex types not supported by the Bigtable deserializer).","commonSituations":"Sink/source schema declares complex types (arrays, maps) for columns stored in Bigtable; schema drift after table changes; user maps a Bigtable column family to an unsupported SeaTunnel data type.","solutions":["Change the column's SeaTunnel type in the schema config to a supported scalar type (STRING, INT, BIGINT, BOOLEAN, DOUBLE, TIMESTAMP, etc.)","Store complex values as serialized strings (JSON) and read them as STRING, then transform downstream","Extend deserializeCell to add a deserialization branch for the needed SqlType","Review the schema mapping so unsupported types are not mapped from Bigtable columns"],"exampleFix":"// before\nschema = {\n  tags = ARRAY<STRING>\n}\n// after\nschema = {\n  tags = STRING  // JSON-encoded array stored in Bigtable\n}","handlingStrategy":"validation","validationCode":"Set<SqlType> supported = Set.of(SqlType.STRING, SqlType.INT, SqlType.BIGINT,\n    SqlType.BOOLEAN, SqlType.DOUBLE, SqlType.FLOAT, SqlType.TIMESTAMP, SqlType.DATE);\nfor (Column c : schema.getColumns()) {\n  if (!supported.contains(c.getSqlType()))\n    throw new IllegalArgumentException(\"Bigtable column unsupported: \" + c.getName() + \" \" + c.getSqlType());\n}","typeGuard":"boolean isScalarSqlType(SqlType t) {\n  return t != SqlType.ARRAY && t != SqlType.MAP && t != SqlType.ROW;\n}","tryCatchPattern":"try {\n  Object v = format.deserializeCell(bytes, fieldType);\n} catch (BigtableConnectorException e) {\n  if (e.getErrorCode() == BigtableConnectorErrorCode.READ_FAILED)\n    LOG.error(\"Map Bigtable column to a supported scalar type: {}\", e.getMessage());\n}","preventionTips":["Map Bigtable columns only to supported scalar SeaTunnel types","Store complex data as JSON strings and decode in a transform","Keep schema definitions in sync with actual Bigtable column families"],"tags":["deserialization","bigtable","type-mismatch","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-14T11:17:12.474Z"}