influxdata / influxdata/influxdb-client-java

Wrong column type when use wildcard with @Measurement

Abierto
#609 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Java
Estrellas
477
Forks
129
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza reproduciendo el problema con el ejemplo de @Measurement, @Column, InfluxDbDefaultPoint e InfluxDbTemperaturePoint mediante writeMeasurement. Rastrea cómo se clasifica el valor del campo genérico wildcard antes de la serialización y, a continuación, verifica que 30.0 se escriba como un campo numérico en lugar de como una cadena, sin romper el caso sin wildcard.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
databases
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.