{"record":{"id":"a42326fce685a7dc","repo":"apache/seatunnel","slug":"unsupported-data-type-a42326","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/converter/InfluxDBRowConverter.java","lineNumber":60,"sourceCode":"            SqlType fieldSqlType = seaTunnelDataType.getSqlType();\n            if (null == values.get(columnIndex)) {\n                seaTunnelField = null;\n            } else if (SqlType.BOOLEAN.equals(fieldSqlType)) {\n                seaTunnelField = Boolean.parseBoolean(values.get(columnIndex).toString());\n            } else if (SqlType.SMALLINT.equals(fieldSqlType)) {\n                seaTunnelField = Short.valueOf(values.get(columnIndex).toString());\n            } else if (SqlType.INT.equals(fieldSqlType)) {\n                seaTunnelField = Integer.valueOf(values.get(columnIndex).toString());\n            } else if (SqlType.BIGINT.equals(fieldSqlType)) {\n                seaTunnelField = Long.valueOf(values.get(columnIndex).toString());\n            } else if (SqlType.FLOAT.equals(fieldSqlType)) {\n                seaTunnelField = ((Double) values.get(columnIndex)).floatValue();\n            } else if (SqlType.DOUBLE.equals(fieldSqlType)) {\n                seaTunnelField = values.get(columnIndex);\n            } else if (SqlType.STRING.equals(fieldSqlType)) {\n                seaTunnelField = values.get(columnIndex);\n            } else {\n                throw new InfluxdbConnectorException(\n                        CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE,\n                        \"Unsupported data type: \" + seaTunnelDataType);\n            }\n\n            fields.add(seaTunnelField);\n        }\n\n        return new SeaTunnelRow(fields.toArray());\n    }\n}\n","sourceCodeStart":42,"sourceCodeEnd":71,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-influxdb/src/main/java/org/apache/seatunnel/connectors/seatunnel/influxdb/converter/InfluxDBRowConverter.java#L42-L71","documentation":"InfluxDBRowConverter.convert maps an InfluxDB query result field value to a SeaTunnel field based on the declared SeaTunnel SqlType. The branch chain only handles supported types (numeric types like FLOAT/DOUBLE/INT/BIGINT, BOOLEAN, STRING); a target SeaTunnel data type outside the supported set throws InfluxdbConnectorException with code UNSUPPORTED_DATA_TYPE naming the SeaTunnelDataType.","triggerScenarios":"Declaring an InfluxDB source schema column with a SeaTunnel type (e.g. ARRAY, MAP, ROW, BYTES, DATE/TIME variants) that the converter's if/else chain never handles, then reading a record whose field lands on that column.","commonSituations":"Schema config lists a complex type for an InfluxDB field; users expect Decimal/BigDecimal mapping that isn't implemented; schema drift after someone edited the schema option in the HOCON config.","solutions":["Restrict the declared source schema types to what InfluxDB returns and the converter supports (numeric types, boolean, string)","Change unsupported column types (e.g. ARRAY/MAP) to STRING and parse downstream","Check the full supported-type chain in InfluxDBRowConverter and align your schema option with it","Extend convert() with the missing SqlType branch if the type is legitimately representable"],"exampleFix":"// before\nschema = { fields = { tag_map = \"map<string,string>\" } }\n// after\nschema = { fields = { tag_map = \"string\" } }","handlingStrategy":"validation","validationCode":"java.util.Set<SqlType> ok = Set.of(SqlType.FLOAT, SqlType.DOUBLE, SqlType.STRING,\n    SqlType.INT, SqlType.BIGINT, SqlType.BOOLEAN);\nschemaFields.values().forEach(t -> {\n    if (!ok.contains(t.getSqlType())) throw new IllegalArgumentException(\"Unsupported InfluxDB source type: \" + t);\n});","typeGuard":"boolean isConvertible(SeaTunnelType<?> t) {\n    SqlType s = t.getSqlType();\n    return s == SqlType.FLOAT || s == SqlType.DOUBLE || s == SqlType.STRING\n        || s == SqlType.INT || s == SqlType.BIGINT || s == SqlType.BOOLEAN;\n}","tryCatchPattern":"try {\n    row = InfluxDBRowConverter.convert(...);\n} catch (InfluxdbConnectorException e) {\n    if (\"UNSUPPORTED_DATA_TYPE\".equals(String.valueOf(e.getCode()))) {\n        log.error(\"Schema field type not supported: {}\", e.getMessage());\n    }\n    throw e;\n}","preventionTips":["Keep source schema options limited to numeric/boolean/string types","Treat complex InfluxDB data as STRING and parse downstream","Re-validate schema options after editing connector configs","Cross-check your schema against the converter's branch chain before upgrades"],"tags":["influxdb","data-type","converter","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"}