Skip to content

Commit cf375aa

Browse files
refactor: remove setTimestamp function
1 parent a3408c0 commit cf375aa

File tree

2 files changed

+16
-52
lines changed

2 files changed

+16
-52
lines changed

src/main/java/com/influxdb/v3/client/internal/InfluxDBClientImpl.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -185,52 +185,48 @@ public Stream<Object[]> query(@Nonnull final String query,
185185
return queryData(query, parameters, options)
186186
.flatMap(vector -> {
187187
List<FieldVector> fieldVectors = vector.getFieldVectors();
188+
var fields = vector.getSchema().getFields();
188189
return IntStream.range(0, vector.getRowCount())
189190
.mapToObj(rowNumber -> {
190191
ArrayList<Object> row = new ArrayList<>();
191192
for (int i = 0; i < fieldVectors.size(); i++) {
192-
var schema = vector.getSchema().getFields().get(i);
193+
var schema = fields.get(i);
193194
var metaType = schema.getMetadata().get("iox::column::type");
194195
String valueType = metaType != null ? metaType.split("::")[2] : null;
195196

197+
Object value = fieldVectors.get(i).getObject(rowNumber);
196198
if ("field".equals(valueType)) {
197199
switch (metaType) {
198200
case "iox::column_type::field::integer":
199201
case "iox::column_type::field::uinteger":
200-
var intValue = (Long) fieldVectors.get(i)
201-
.getObject(rowNumber);
202+
var intValue = (Long) value;
202203
row.add(intValue);
203204
break;
204205
case "iox::column_type::field::float":
205-
var doubleValue = (Double) fieldVectors.get(i)
206-
.getObject(rowNumber);
206+
var doubleValue = (Double) value;
207207
row.add(doubleValue);
208208
break;
209209
case "iox::column_type::field::string":
210-
var textValue = (Text) fieldVectors.get(i)
211-
.getObject(rowNumber);
210+
var textValue = (Text) value;
212211
row.add(textValue.toString());
213212
break;
214213
case "iox::column_type::field::boolean":
215-
var boolValue = (Boolean) fieldVectors.get(i)
216-
.getObject(rowNumber);
214+
var boolValue = (Boolean) value;
217215
row.add(boolValue);
218216
break;
219217
default:
220218
}
221219
} else if ("timestamp".equals(valueType)
222220
|| Objects.equals(schema.getName(), "time")) {
223-
var timestamp = fieldVectors.get(i).getObject(rowNumber);
224-
BigInteger time = NanosecondConverter.getTimestampNano(timestamp, schema);
221+
BigInteger time = NanosecondConverter.getTimestampNano(value, schema);
225222
row.add(time);
226223
} else {
227-
Object value = fieldVectors.get(i).getObject(rowNumber);
228224
row.add(value);
229225
}
230226
}
231227

232228
return row.toArray();
233-
});
229+
});
234230
});
235231
}
236232

src/main/java/com/influxdb/v3/client/internal/VectorSchemaRootConverter.java

Lines changed: 7 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,18 @@
2121
*/
2222
package com.influxdb.v3.client.internal;
2323

24-
import java.time.Instant;
2524
import java.time.LocalDateTime;
26-
import java.time.ZoneOffset;
2725
import java.util.List;
2826
import java.util.Objects;
29-
import java.util.concurrent.TimeUnit;
3027
import javax.annotation.Nonnull;
3128
import javax.annotation.concurrent.ThreadSafe;
3229

3330
import org.apache.arrow.vector.FieldVector;
3431
import org.apache.arrow.vector.VectorSchemaRoot;
35-
import org.apache.arrow.vector.types.pojo.ArrowType;
36-
import org.apache.arrow.vector.types.pojo.Field;
3732
import org.apache.arrow.vector.util.Text;
3833

3934
import com.influxdb.v3.client.PointValues;
35+
import com.influxdb.v3.client.write.WritePrecision;
4036

4137

4238
/**
@@ -82,7 +78,8 @@ PointValues toPointValues(final int rowNumber,
8278

8379
if (metaType == null) {
8480
if (Objects.equals(name, "time") && (value instanceof Long || value instanceof LocalDateTime)) {
85-
setTimestamp(value, schema, p);
81+
var timeNano = NanosecondConverter.getTimestampNano(value, schema);
82+
p.setTimestamp(timeNano, WritePrecision.NS);
8683
} else {
8784
// just push as field If you don't know what type is it
8885
p.setField(name, value);
@@ -99,7 +96,8 @@ PointValues toPointValues(final int rowNumber,
9996
} else if ("tag".equals(valueType) && value instanceof String) {
10097
p.setTag(name, (String) value);
10198
} else if ("timestamp".equals(valueType)) {
102-
setTimestamp(value, schema, p);
99+
var timeNano = NanosecondConverter.getTimestampNano(value, schema);
100+
p.setTimestamp(timeNano, WritePrecision.NS);
103101
}
104102
}
105103
return p;
@@ -128,38 +126,8 @@ private void setFieldWithMetaType(final PointValues p,
128126
p.setBooleanField(name, (Boolean) value);
129127
break;
130128
default:
131-
}
132-
}
133-
134-
private void setTimestamp(@Nonnull final Object value,
135-
@Nonnull final Field schema,
136-
@Nonnull final PointValues pointValues) {
137-
if (value instanceof Long) {
138-
if (schema.getFieldType().getType() instanceof ArrowType.Timestamp) {
139-
ArrowType.Timestamp type = (ArrowType.Timestamp) schema.getFieldType().getType();
140-
TimeUnit timeUnit;
141-
switch (type.getUnit()) {
142-
case SECOND:
143-
timeUnit = TimeUnit.SECONDS;
144-
break;
145-
case MILLISECOND:
146-
timeUnit = TimeUnit.MILLISECONDS;
147-
break;
148-
case MICROSECOND:
149-
timeUnit = TimeUnit.MICROSECONDS;
150-
break;
151-
default:
152-
case NANOSECOND:
153-
timeUnit = TimeUnit.NANOSECONDS;
154-
break;
155-
}
156-
long nanoseconds = TimeUnit.NANOSECONDS.convert((Long) value, timeUnit);
157-
pointValues.setTimestamp(Instant.ofEpochSecond(0, nanoseconds));
158-
} else {
159-
pointValues.setTimestamp(Instant.ofEpochMilli((Long) value));
160-
}
161-
} else if (value instanceof LocalDateTime) {
162-
pointValues.setTimestamp(((LocalDateTime) value).toInstant(ZoneOffset.UTC));
129+
p.setField(name, value);
130+
break;
163131
}
164132
}
165133
}

0 commit comments

Comments
 (0)