{"record":{"id":"91236e7299c17878","repo":"apache/seatunnel","slug":"unsupported-data-type-91236e","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/IoTDBv2RelationalSinkClient.java","lineNumber":189,"sourceCode":"                    break;\n                case FLOAT:\n                    tablet.addValue(rowIndex, columnIndex++, (Float) fieldValue);\n                    break;\n                case DOUBLE:\n                    tablet.addValue(rowIndex, columnIndex++, (Double) fieldValue);\n                    break;\n                case BOOLEAN:\n                    tablet.addValue(rowIndex, columnIndex++, (Boolean) fieldValue);\n                    break;\n                case TEXT:\n                case STRING:\n                    tablet.addValue(rowIndex, columnIndex++, (String) fieldValue);\n                    break;\n                case DATE:\n                    tablet.addValue(rowIndex, columnIndex++, LocalDate.parse((String) fieldValue));\n                    break;\n                default:\n                    throw new IotdbConnectorException(\n                            CommonErrorCode.UNSUPPORTED_DATA_TYPE,\n                            \"Unsupported data type: \" + columnDataTypes.get(tagNAttributeSize + i));\n            }\n        }\n    }\n\n    public synchronized void close() throws IOException {\n        try {\n            flush();\n        } finally {\n            try {\n                if (tableSession != null) {\n                    tableSession.close();\n                }\n            } catch (IoTDBConnectionException e) {\n                log.error(\"Close IoTDB client failed.\", e);\n            }\n        }","sourceCodeStart":171,"sourceCodeEnd":207,"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/IoTDBv2RelationalSinkClient.java#L171-L207","documentation":"Thrown by addValuesToTablet when a SeaTunnel column's data type is not one of the IoTDB tablet-supported types handled by the switch (e.g. MAP, ARRAY, or an unexpected SeaTunnelType). The sink cannot map the SeaTunnel type to an IoTDB data type, so the batch write aborts. This is a schema incompatibility between the upstream catalog/table and IoTDB.","triggerScenarios":"The SeaTunnel table row contains a column whose SeaTunnelType falls into the default branch — typically complex types (MAP/ARRAY/ROW) or an unmapped type — while building the Tablet for insert.","commonSituations":"Source table includes JSON/array/map columns that were passed through unconverted; a catalog version bump added a new type the IoTDB sink doesn't handle; schema drift upstream added a new column type.","solutions":["Cast or drop unsupported columns before the IoTDB sink (use a transform: replace/map complex types to STRING)","Check the column type list printed in the error and align the sink's schema with supported IoTDB types","Upgrade SeaTunnel if a newer version added mappings for that type","File/patch a case in addValuesToTablet if the type is representable (e.g. serialize ROW to JSON string)"],"exampleFix":"// before\n// passing MAP column \"tags\" straight into the IoTDB sink\n// after\n// add a transform to serialize:\n// Transform: Jsonify fields=[\"tags\"]  (or Cast tags -> STRING)","handlingStrategy":"validation","validationCode":"Set<String> supported = Set.of(\"STRING\",\"BOOLEAN\",\"TINYINT\",\"SMALLINT\",\"INT\",\"BIGINT\",\"FLOAT\",\"DOUBLE\",\"TIMESTAMP\",\"DATE\");\nfor (SeaTunnelDataType<?> t : rowType.getFieldTypes()) {\n    if (!supported.contains(t.getSqlType().name())) {\n        throw new IllegalArgumentException(\"Cast/drop column of type \" + t.getSqlType() + \" before IoTDB sink\");\n    }\n}","typeGuard":null,"tryCatchPattern":"try {\n    sinkClient.write(records);\n} catch (IotdbConnectorException e) {\n    if (CommonErrorCode.UNSUPPORTED_DATA_TYPE.equals(e.getSeaTunnelErrorCode())) {\n        // transform or drop offending column, then restart pipeline\n    }\n    throw e;\n}","preventionTips":["Define an explicit sink schema with only IoTDB-supported scalar types","Insert a transform (Cast/Jsonify) for complex types before the sink","Pin and review schema contracts between source and sink in CI","Re-check type mapping docs after SeaTunnel 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"}