Skip to content

Commit 536e75c

Browse files
wip
1 parent eb33725 commit 536e75c

File tree

2 files changed

+55
-4
lines changed

2 files changed

+55
-4
lines changed

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import io.netty.handler.codec.http.HttpMethod;
4343
import org.apache.arrow.vector.FieldVector;
4444
import org.apache.arrow.vector.VectorSchemaRoot;
45+
import org.apache.arrow.vector.util.Text;
4546

4647
import com.influxdb.v3.client.InfluxDBApiException;
4748
import com.influxdb.v3.client.InfluxDBClient;
@@ -206,9 +207,9 @@ public Stream<Object[]> query(@Nonnull final String query,
206207
row.add(doubleValue);
207208
break;
208209
case "iox::column_type::field::string":
209-
var stringValue = (String) fieldVectors.get(i)
210-
.getObject(rowNumber);
211-
row.add(stringValue);
210+
var textValue = (Text) fieldVectors.get(i)
211+
.getObject(rowNumber);
212+
row.add(textValue.toString());
212213
break;
213214
case "iox::column_type::field::boolean":
214215
var boolValue = (Boolean) fieldVectors.get(i)
@@ -222,7 +223,9 @@ public Stream<Object[]> query(@Nonnull final String query,
222223
BigInteger time = NanosecondConverter.getTimestamp(timestamp, schema);
223224
row.add(time);
224225
} else {
225-
row.add(fieldVectors.get(i).getObject(rowNumber));
226+
Text textValue = (Text) fieldVectors.get(i)
227+
.getObject(rowNumber);
228+
row.add(textValue.toString());
226229
}
227230
}
228231

src/test/java/com/influxdb/v3/client/InfluxDBClientTest.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,19 @@
2121
*/
2222
package com.influxdb.v3.client;
2323

24+
import java.math.BigInteger;
25+
import java.time.Instant;
2426
import java.util.Map;
2527
import java.util.Properties;
28+
import java.util.UUID;
29+
import java.util.stream.Stream;
2630

2731
import org.assertj.core.api.Assertions;
2832
import org.junit.jupiter.api.Test;
33+
import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
34+
35+
import com.influxdb.v3.client.write.WriteOptions;
36+
import com.influxdb.v3.client.write.WritePrecision;
2937

3038
class InfluxDBClientTest {
3139

@@ -116,4 +124,44 @@ public void unsupportedQueryParams() throws Exception {
116124
+ "class com.influxdb.v3.client.internal.InfluxDBClientImpl");
117125
}
118126
}
127+
128+
@EnabledIfEnvironmentVariable(named = "TESTING_INFLUXDB_URL", matches = ".*")
129+
@EnabledIfEnvironmentVariable(named = "TESTING_INFLUXDB_TOKEN", matches = ".*")
130+
@EnabledIfEnvironmentVariable(named = "TESTING_INFLUXDB_DATABASE", matches = ".*")
131+
@Test
132+
public void testQuery() throws Exception {
133+
try (InfluxDBClient client = InfluxDBClient.getInstance(
134+
System.getenv("TESTING_INFLUXDB_URL"),
135+
System.getenv("TESTING_INFLUXDB_TOKEN").toCharArray(),
136+
System.getenv("TESTING_INFLUXDB_DATABASE"),
137+
null)) {
138+
String uuid = UUID.randomUUID().toString();
139+
long timestamp = Instant.now().getEpochSecond();
140+
String record = String.format(
141+
"host9,tag=empty name=\"intel\",mem_total=2048,disk_free=100,temperature=100.86,isActive=true,testId=\"%s\" %d",
142+
uuid,
143+
timestamp
144+
);
145+
client.writeRecord(record, new WriteOptions(null, WritePrecision.S, null));
146+
147+
Map<String, Object> parameters = Map.of("testId", uuid);
148+
String sql = "Select * from host9 where \"testId\"=$testId";
149+
try (Stream<Object[]> stream = client.query(sql, parameters)) {
150+
stream.findFirst()
151+
.ifPresent(objects -> {
152+
Assertions.assertThat(objects[0].getClass()).isEqualTo(Double.class);
153+
Assertions.assertThat(objects[0]).isEqualTo(100.0);
154+
155+
Assertions.assertThat(objects[1].getClass()).isEqualTo(Boolean.class);
156+
Assertions.assertThat(objects[1]).isEqualTo(true);
157+
158+
Assertions.assertThat(objects[3].getClass()).isEqualTo(String.class);
159+
Assertions.assertThat(objects[3]).isEqualTo("intel");
160+
161+
Assertions.assertThat(objects[7].getClass()).isEqualTo(BigInteger.class);
162+
Assertions.assertThat(objects[7]).isEqualTo(BigInteger.valueOf(timestamp * 1_000_000_000));
163+
});
164+
}
165+
}
166+
}
119167
}

0 commit comments

Comments
 (0)