{"record":{"id":"ac45b9f7320f6fed","repo":"apache/seatunnel","slug":"unsupported-data-type-ac45b9","errorCode":"UNSUPPORTED_DATA_TYPE","errorMessage":"dataType + \" is not supported ","messagePattern":"dataType \\+ \" is not supported ","errorType":"error_code","errorClass":"SelectDBConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-selectdb-cloud/src/main/java/org/apache/seatunnel/connectors/selectdb/serialize/SeaTunnelRowConverter.java","lineNumber":70,"sourceCode":"            case FLOAT:\n            case DOUBLE:\n            case DECIMAL:\n            case BOOLEAN:\n            case STRING:\n                return val;\n            case DATE:\n                return DateUtils.toString((LocalDate) val, dateFormatter);\n            case TIME:\n                return TimeUtils.toString((LocalTime) val, timeFormatter);\n            case TIMESTAMP:\n                return DateTimeUtils.toString((LocalDateTime) val, dateTimeFormatter);\n            case ARRAY:\n            case MAP:\n                return JsonUtils.toJsonString(val);\n            case BYTES:\n                return new String((byte[]) val);\n            default:\n                throw new SelectDBConnectorException(\n                        CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE,\n                        dataType + \" is not supported \");\n        }\n    }\n}\n","sourceCodeStart":52,"sourceCodeEnd":76,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-selectdb-cloud/src/main/java/org/apache/seatunnel/connectors/selectdb/serialize/SeaTunnelRowConverter.java#L52-L76","documentation":"Thrown by SeaTunnelRowConverter.convert (selectdb-cloud connector) when a SeaTunnelRow field has a SeaTunnelDataType not handled by the switch (e.g. complex types beyond ARRAY/MAP or unsupported primitives). It names the unsupported dataType in the message.","triggerScenarios":"Converting a row whose column type falls into the converter's default branch — e.g. ROW/struct nested types or types added in newer SeaTunnel API versions that the converter has no case for.","commonSituations":"Source schema containing complex types (arrays of structs, nested rows, decimals mapped oddly) that the sink converter does not support; version drift where a newer SeaTunnel type reaches an older converter.","solutions":["Flatten or cast unsupported columns in an upstream transform (e.g. convert ROW/complex types to STRING/JSON)","Remove unsupported columns from the sink schema","Upgrade the selectdb-cloud connector to a version supporting the data type","If the type should be supported, contribute a converter case and file an issue"],"exampleFix":"// before\nfield: ROW<a INT, b STRING>  // unsupported\n// after\nfield: STRING  // cast row to JSON string via transform","handlingStrategy":"validation","validationCode":"// check schema before writing\nList<SeaTunnelDataType<?>> types = rowType.getFieldTypes();\nfor (SeaTunnelDataType<?> t : types) {\n    if (!(SqlType.isBasic(t) || t.getSqlType() == SqlType.ARRAY\n            || t.getSqlType() == SqlType.MAP || t.getSqlType() == SqlType.BYTES)) {\n        throw new IllegalArgumentException(\"Unsupported by selectdb sink: \" + t);\n    }\n}","typeGuard":"boolean isConvertible(SeaTunnelDataType<?> t) {\n    SqlType s = t.getSqlType();\n    return s == SqlType.ARRAY || s == SqlType.MAP || s == SqlType.BYTES\n        || SqlType.STRING.equals(s) || SqlType.INT.equals(s)\n        || SqlType.BIGINT.equals(s) || SqlType.BOOLEAN.equals(s);\n}","tryCatchPattern":"try {\n    converter.convert(dataType, val);\n} catch (SelectDBConnectorException e) {\n    if (e.getMessage().contains(\"is not supported\")) {\n        // fallback: serialize complex value to JSON string\n        return JsonUtils.toJsonString(val);\n    }\n    throw e;\n}","preventionTips":["Flatten or cast complex/nested columns to supported types before the sink","Review the connector's supported type list when designing schemas","Keep source and sink connector versions aligned with the SeaTunnel API version","Add explicit casts in upstream transforms instead of relying on the converter"],"tags":["selectdb","serialization","data-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-14T11:17:12.474Z"}