influxdata / influxdata/influxdb-client-java

Wrong column type when use wildcard with @Measurement

Offen
#609 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Java
Sterne
477
Forks
129
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

__Steps to reproduce:__

```java
@Getter
public abstract class InfluxDbDefaultPoint {

@Column(timestamp = true)
private final Instant time;
@Column(tag = true)
private final Long deviceId;
@Column
private final T value;

public InfluxDbDefaultPoint(final Long deviceId, final T value) {
this.time = Instant.now();
this.deviceId = deviceId;
this.value = value;
}
}

@Measurement(name = "temperature")
public class InfluxDbTemperaturePoint extends InfluxDbDefaultPoint {

public InfluxDbTemperaturePoint(Long deviceId, Double value) {
super(deviceId, value);
}
}

public static void main(String[] args) {
final InfluxDBClient database = InfluxDBClientFactory.create("http://localhost:8200","".toCharArray(),"","");
database.getWriteApiBlocking().writeMeasurement(WritePrecision.S, new InfluxDbTemperaturePoint(0L,30.0));
}
```
When I try to send such a prepared model to influxdb, I get an error: `HTTP status code: 422; Message: failure writing points to database: partial write: field type conflict: input field "value" on measurement "temperature" is type string, already exists as type float dropped=1`.

Previously I had an `InfluxDbTemperaturePoint` object without wildcard and it worked fine - it saved double

__Expected behavior:__
It should save the value 30.0 as float/dobule.

__Actual behavior:__
It tries to save the value 30.0 as a string.

__Specifications:__
- Client Version: **6.9.0**
- InfluxDB Version: **v2.7.1**
- JDK Version: **Java(TM) SE Runtime Environment (build 19.0.2+7-44)**
- Platform: **Windows**

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, das Problem mit dem Beispiel für @Measurement, @Column, InfluxDbDefaultPoint und InfluxDbTemperaturePoint über writeMeasurement zu reproduzieren. Verfolge, wie der Feldwert des Wildcard-Generics vor der Serialisierung klassifiziert wird, und überprüfe anschließend, dass 30.0 als numerisches Feld und nicht als String geschrieben wird, ohne den Nicht-Wildcard-Fall zu beeinträchtigen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
databases
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.