From 0b75c69f2d16cf5c9b75bff22f70b9a463429542 Mon Sep 17 00:00:00 2001 From: MachaelLee <690585471@qq.com> Date: Mon, 13 Mar 2023 20:05:05 +0800 Subject: [PATCH 1/2] fix query result same value --- ceresdb-protocol/src/main/java/io/ceresdb/util/Utils.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ceresdb-protocol/src/main/java/io/ceresdb/util/Utils.java b/ceresdb-protocol/src/main/java/io/ceresdb/util/Utils.java index 274c829..5da6748 100644 --- a/ceresdb-protocol/src/main/java/io/ceresdb/util/Utils.java +++ b/ceresdb-protocol/src/main/java/io/ceresdb/util/Utils.java @@ -7,6 +7,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; @@ -467,8 +468,11 @@ private static List parseArrowBatch(ByteString batch, Storage.ArrowPayload. } private static List parseArrowRecord(Schema schema, VectorSchemaRoot root) { - List builders = Collections.nCopies(root.getRowCount(), - Row.newRowBuilder(schema.getFields().size())); + // init row builders + List builders = new ArrayList<>(root.getRowCount()); + for (int i = 0; i < root.getRowCount(); i++) { + builders.add(Row.newRowBuilder(schema.getFields().size())); + } String[] fields = new String[schema.getFields().size()]; for (int fieldIdx = 0; fieldIdx < schema.getFields().size(); fieldIdx++) { From 2511ccad7308344392b2af951bde0f835f449f09 Mon Sep 17 00:00:00 2001 From: MachaelLee <690585471@qq.com> Date: Mon, 13 Mar 2023 20:13:12 +0800 Subject: [PATCH 2/2] update readme test --- ceresdb-example/src/test/java/io/ceresdb/ReadmeTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ceresdb-example/src/test/java/io/ceresdb/ReadmeTest.java b/ceresdb-example/src/test/java/io/ceresdb/ReadmeTest.java index 86e42c9..524fa14 100644 --- a/ceresdb-example/src/test/java/io/ceresdb/ReadmeTest.java +++ b/ceresdb-example/src/test/java/io/ceresdb/ReadmeTest.java @@ -88,7 +88,7 @@ public void readmeTest() throws ExecutionException, InterruptedException { final SqlQueryRequest queryRequest = SqlQueryRequest.newBuilder() .forTables("machine_table") // table name is optional. If not provided, SQL parser will parse the `sql` to get the table name and do the routing automaticly - .sql("select * from machine_table where ts = %d", timestamp) // + .sql("select * from machine_table where ts >= %d", timestamp) // .build(); final CompletableFuture> qf = client.sqlQuery(queryRequest); // here the `future.get` is just for demonstration, a better async programming practice would be using the CompletableFuture API @@ -97,7 +97,7 @@ public void readmeTest() throws ExecutionException, InterruptedException { Assert.assertTrue(queryResult.isOk()); final SqlQueryOk queryOk = queryResult.getOk(); - Assert.assertEquals(1, queryOk.getRowCount()); + Assert.assertEquals(3, queryOk.getRowCount()); // get rows as list final List rows = queryOk.getRowList();