influxdata / influxdata/influxdb-client-java

Wrong column type when use wildcard with @Measurement

Aperta
#609 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Java
Stelle
477
Fork
129
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

__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**

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia riproducendo il problema con l’esempio di @Measurement, @Column, InfluxDbDefaultPoint e InfluxDbTemperaturePoint tramite writeMeasurement. Traccia come viene classificato il valore del campo generico wildcard prima della serializzazione, quindi verifica che 30.0 venga scritto come campo numerico anziché come stringa, senza compromettere il caso non-wildcard.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
databases
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.