{"record":{"id":"ea4425ac83dae4f8","repo":"apache/seatunnel","slug":"unsupported-data-type-ea4425","errorCode":"UNSUPPORTED_DATA_TYPE","errorMessage":"Unsupported data type: ","messagePattern":"Unsupported data type: ","errorType":"error_code","errorClass":"InfluxdbConnectorException","httpStatus":null,"severity":"error","filePath":"seatunnel-connectors-v2/connector-influxdb/src/main/java/org/apache/seatunnel/connectors/seatunnel/influxdb/serialize/DefaultSerializer.java","lineNumber":106,"sourceCode":"                        break;\n                    case INT:\n                        builder.addField(field, ((Number) val).intValue());\n                        break;\n                    case BIGINT:\n                        // Only timstamp support be bigint,however it is processed in specicalField\n                        builder.addField(field, ((Number) val).longValue());\n                        break;\n                    case FLOAT:\n                        builder.addField(field, ((Number) val).floatValue());\n                        break;\n                    case DOUBLE:\n                        builder.addField(field, ((Number) val).doubleValue());\n                        break;\n                    case STRING:\n                        builder.addField(field, val.toString());\n                        break;\n                    default:\n                        throw new InfluxdbConnectorException(\n                                CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE,\n                                \"Unsupported data type: \" + dataType);\n                }\n            }\n        };\n    }\n\n    private BiConsumer<SeaTunnelRow, Point.Builder> createTimestampExtractor(\n            SeaTunnelRowType seaTunnelRowType, String timeKey) {\n        // not config timeKey, use processing time\n        if (Strings.isNullOrEmpty(timeKey)) {\n            return (row, builder) -> builder.time(System.currentTimeMillis(), precision);\n        }\n\n        int timeFieldIndex = seaTunnelRowType.indexOf(timeKey);\n        return (row, builder) -> {\n            Object time = row.getField(timeFieldIndex);\n            if (time == null) {","sourceCodeStart":88,"sourceCodeEnd":124,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-influxdb/src/main/java/org/apache/seatunnel/connectors/seatunnel/influxdb/serialize/DefaultSerializer.java#L88-L124","documentation":"DefaultSerializer.createFieldExtractor builds a per-field extractor that writes SeaTunnel row values into InfluxDB Point fields. Its switch over the field's SeaTunnelDataType handles only the numeric and STRING cases; any other data type hits the default branch and throws InfluxdbConnectorException with code UNSUPPORTED_DATA_TYPE naming the dataType.","triggerScenarios":"Configuring an InfluxDB sink with a schema field whose SeaTunnelDataType is BOOLEAN, DATE, TIME, ARRAY, MAP, ROW, BYTES, etc. — anything outside the numeric/STRING cases — and writing a row through DefaultSerializer.","commonSituations":"Sink schema mirrors a complex upstream source (e.g. a JDBC source with DATE/TIMESTAMP columns) and the user didn't cast those columns to supported types; BOOLEAN fields assumed supported but missing from the switch.","solutions":["Cast unsupported fields to supported types in an upstream SQL/transform step (e.g. BOOLEAN to INT, DATE to STRING or BIGINT epoch)","Align the sink schema with supported types: integers, bigints, doubles/floats, strings","Remove or split out non-scalar columns before writing to InfluxDB","If the type should be supported (e.g. BOOLEAN as a field), add a case to the switch that calls builder.addField appropriately"],"exampleFix":"// before\nschema = { fields = { active = \"boolean\" } }\n// after (cast to supported type upstream via Sql transform)\nSQL = \"SELECT CAST(active AS INT) AS active FROM src\"","handlingStrategy":"validation","validationCode":"java.util.Set<SeaTunnelDataType<?>> ok = Set.of(BasicType.INT_TYPE, BasicType.LONG_TYPE,\n    BasicType.DOUBLE_TYPE, BasicType.FLOAT_TYPE, BasicType.STRING_TYPE);\nsinkSchema.getTableSchema().toPhysicalRowDataType().getFieldTypes()\n    .forEach(t -> { if (!ok.contains(t)) throw new IllegalArgumentException(\"Sink field type unsupported: \" + t); });","typeGuard":"boolean isWritable(SeaTunnelDataType<?> t) {\n    return t.equals(BasicType.INT_TYPE) || t.equals(BasicType.LONG_TYPE)\n        || t.equals(BasicType.DOUBLE_TYPE) || t.equals(BasicType.FLOAT_TYPE)\n        || t.equals(BasicType.STRING_TYPE);\n}","tryCatchPattern":"try {\n    serializer.serialize(row);\n} catch (InfluxdbConnectorException e) {\n    if (String.valueOf(e.getCode()).contains(\"UNSUPPORTED_DATA_TYPE\")) {\n        log.error(\"Non-numeric/string field in sink schema: {}\", e.getMessage());\n    }\n    throw e;\n}","preventionTips":["Cast BOOLEAN/DATE/TIME columns to supported types in an upstream Sql transform","Never pass complex types (arrays/maps/rows) directly to the InfluxDB sink schema","Validate the sink schema types at config load time","Review schema after upstream source changes to catch new column types"],"tags":["influxdb","serialization","data-type","sink"],"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"}