influxdata / influxdata/influxdb-client-java
Wrong column type when use wildcard with @Measurement
Personne n'a encore pris cette issue.
- Langage dominant
- Java
- Étoiles
- 477
- Forks
- 129
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
Steps to reproduce:
@Getter
public abstract class InfluxDbDefaultPoint<T> {
@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<Double> {
public InfluxDbTemperaturePoint(Long deviceId, Double value) {
super(deviceId, value);
}
}
public static void main(String[] args) {
final InfluxDBClient database = InfluxDBClientFactory.create("http://localhost:8200","<token>".toCharArray(),"<org>","<bucket>");
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
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire le problème avec l’exemple de @Measurement, @Column, InfluxDbDefaultPoint et InfluxDbTemperaturePoint via writeMeasurement. Suivez la manière dont la valeur du champ générique wildcard est classifiée avant la sérialisation, puis vérifiez que 30.0 est écrit comme un champ numérique plutôt que comme une chaîne, sans casser le cas non-wildcard.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- java
- Domaine
- databases
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100