{"record":{"id":"3b4609ad8ee53dbd","repo":"apache/seatunnel","slug":"unsupported-data-type-3b4609","errorCode":"UNSUPPORTED_DATA_TYPE","errorMessage":"Unsupported data type: ","messagePattern":"Unsupported data type: ","errorType":"error_code","errorClass":"IotdbConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-iotdb-v2/src/main/java/org/apache/seatunnel/connectors/seatunnel/iotdbv2/sink/relational/IoTDBv2RelationalSinkWriter.java","lineNumber":164,"sourceCode":"                return TSDataType.BOOLEAN;\n            case TINYINT:\n            case SMALLINT:\n            case INT:\n                return TSDataType.INT32;\n            case BIGINT:\n                return TSDataType.INT64;\n            case FLOAT:\n                return TSDataType.FLOAT;\n            case DOUBLE:\n                return TSDataType.DOUBLE;\n            case STRING:\n                return TSDataType.STRING;\n            case TIMESTAMP:\n                return TSDataType.TIMESTAMP;\n            case DATE:\n                return TSDataType.DATE;\n            default:\n                throw new IotdbConnectorException(\n                        CommonErrorCode.UNSUPPORTED_DATA_TYPE,\n                        \"Unsupported data type: \" + dataType);\n        }\n    }\n}\n","sourceCodeStart":146,"sourceCodeEnd":170,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-iotdb-v2/src/main/java/org/apache/seatunnel/connectors/seatunnel/iotdbv2/sink/relational/IoTDBv2RelationalSinkWriter.java#L146-L170","documentation":"Thrown by convert() in IoTDBv2SourceSinkWriter when mapping a SeaTunnel data type to a TSDataType for IoTDB and the type falls to the default branch. The writer cannot represent the SeaTunnel column type as an IoTDB type. This happens at type-conversion time when preparing the tablet field types, before any write.","triggerScenarios":"A SeaTunnel row type column (e.g. MAP, ARRAY, ROW, BYTES, or a newly added type) reaches convert() and no case matches, throwing with 'Unsupported data type: <type>'.","commonSituations":"Upstream source emits complex/nested types; table schema includes an exotic type not in IoTDB's supported set; SeaTunnel version upgrade introduced new types not yet mapped in this sink.","solutions":["Cast/convert the unsupported column to a supported scalar (STRING/INT64/DOUBLE etc.) via a transform before the sink","Drop the offending column from the sink schema","Check IoTDB-v2 sink docs for the supported type mapping table","Upgrade SeaTunnel in case newer versions map additional types"],"exampleFix":"// before\n// schema: id INT64, payload MAP<STRING,STRING>\n// after\n// transform to stringify payload, schema: id INT64, payload STRING","handlingStrategy":"validation","validationCode":"Set<String> mappable = Set.of(\"STRING\",\"BOOLEAN\",\"INT32\",\"INT64\",\"FLOAT\",\"DOUBLE\",\"TIMESTAMP\",\"DATE\");\nrowType.getFieldTypes().stream()\n    .map(t -> t.getSqlType().name())\n    .filter(n -> !mappable.contains(n))\n    .forEach(n -> { throw new IllegalArgumentException(\"Cannot map \" + n + \" to TSDataType\"); });","typeGuard":null,"tryCatchPattern":"try {\n    TSDataType tsType = writer.convert(dataType);\n} catch (IotdbConnectorException e) {\n    if (CommonErrorCode.UNSUPPORTED_DATA_TYPE.equals(e.getSeaTunnelErrorCode())) {\n        // fallback: stringify the column or skip it\n    }\n}","preventionTips":["Restrict source schema columns to IoTDB-mappable types","Add Cast transforms for anything exotic before the sink","Validate schema compatibility in CI with the type mapping table","Review release notes for new SeaTunnel types after upgrades"],"tags":["iotdb","type-mapping","schema","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-14T11:17:12.474Z"}