You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ka...@apache.org on 2021/05/15 11:06:21 UTC
[iotdb] branch f_index_dev updated: SQL: add index name in query.
Zeppelin change
This is an automated email from the ASF dual-hosted git repository.
kangrong pushed a commit to branch f_index_dev
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/f_index_dev by this push:
new d9c63b9 SQL: add index name in query. Zeppelin change
d9c63b9 is described below
commit d9c63b9bc7e37e083664361b1451586eb927a1b3
Author: kr11 <3095717866.com>
AuthorDate: Sat May 15 19:05:26 2021 +0800
SQL: add index name in query. Zeppelin change
---
.../antlr4/org/apache/iotdb/db/qp/sql/SqlBase.g4 | 2 +-
.../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java | 7 +++-
.../apache/iotdb/db/index/it/DemoMMHHWindIT.java | 2 +-
.../apache/iotdb/db/index/it/DemoRTreeWindIT.java | 2 +-
.../apache/iotdb/db/index/it/MMHHIndexReadIT.java | 2 +-
.../iotdb/db/index/it/MMHHNoIndexReadIT.java | 2 +-
.../apache/iotdb/db/index/it/RTreeIndexReadIT.java | 2 +-
.../iotdb/db/index/it/RTreeNoIndexReadIT.java | 2 +-
.../db/index/router/ProtoIndexRouterTest.java | 25 ++++++--------
.../iotdb/db/qp/logical/IndexLogicalPlanTest.java | 38 ++++++++++++++++++++++
.../apache/zeppelin/iotdb/IoTDBInterpreter.java | 34 ++++++++++++++-----
.../zeppelin/iotdb/IoTDBInterpreterTest.java | 30 ++++++++++++++---
12 files changed, 112 insertions(+), 36 deletions(-)
diff --git a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlBase.g4 b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlBase.g4
index 140e8b6..7e109d3 100644
--- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlBase.g4
+++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/SqlBase.g4
@@ -356,7 +356,7 @@ topClause
;
indexPredicateClause
- : (suffixPath | fullPath) LIKE sequenceClause
+ : (suffixPath | fullPath) (indexName=ID)? LIKE sequenceClause
| (suffixPath | fullPath) CONTAIN sequenceClause WITH TOLERANCE constant (CONCAT sequenceClause WITH TOLERANCE constant)*
;
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
index 67ff535..d422ac5 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
@@ -1308,7 +1308,12 @@ public class IoTDBSqlVisitor extends SqlBaseBaseVisitor<Operator> {
props = new HashMap<>();
}
props.put(PATTERN, parseSequence(ctx.sequenceClause(0)));
- queryOp.setIndexType(IndexType.ANY_FOR_QUERY);
+ if (ctx.indexName != null) {
+ IndexType indexType = IndexType.valueOf(ctx.indexName.getText());
+ queryOp.setIndexType(indexType);
+ } else {
+ queryOp.setIndexType(IndexType.ANY_FOR_QUERY);
+ }
} else if (ctx.CONTAIN() != null) {
// subsequence matching case
List<double[]> compositePattern = new ArrayList<>();
diff --git a/server/src/test/java/org/apache/iotdb/db/index/it/DemoMMHHWindIT.java b/server/src/test/java/org/apache/iotdb/db/index/it/DemoMMHHWindIT.java
index aa2815e..1e5d493 100644
--- a/server/src/test/java/org/apache/iotdb/db/index/it/DemoMMHHWindIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/index/it/DemoMMHHWindIT.java
@@ -222,7 +222,7 @@ public class DemoMMHHWindIT {
}
private void checkReads(boolean assertResult) throws ClassNotFoundException {
- String template = "SELECT TOP 3 speed FROM root.wind2.* WHERE speed LIKE (%s)";
+ String template = "SELECT TOP 3 speed FROM root.wind2.* WHERE speed MMHH LIKE (%s)";
String q1Line =
"20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,"
+ "20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,"
diff --git a/server/src/test/java/org/apache/iotdb/db/index/it/DemoRTreeWindIT.java b/server/src/test/java/org/apache/iotdb/db/index/it/DemoRTreeWindIT.java
index d5bd877..6395c80 100644
--- a/server/src/test/java/org/apache/iotdb/db/index/it/DemoRTreeWindIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/index/it/DemoRTreeWindIT.java
@@ -195,7 +195,7 @@ public class DemoRTreeWindIT {
}
private void checkReads(boolean assertResult) throws ClassNotFoundException {
- String template = "SELECT TOP 3 speed FROM root.wind2.* WHERE speed LIKE (%s)";
+ String template = "SELECT TOP 3 speed FROM root.wind2.* WHERE speed RTREE_PAA LIKE (%s)";
String q1Line =
"20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,"
+ "20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,"
diff --git a/server/src/test/java/org/apache/iotdb/db/index/it/MMHHIndexReadIT.java b/server/src/test/java/org/apache/iotdb/db/index/it/MMHHIndexReadIT.java
index b5bb460..8e9f63c 100644
--- a/server/src/test/java/org/apache/iotdb/db/index/it/MMHHIndexReadIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/index/it/MMHHIndexReadIT.java
@@ -153,7 +153,7 @@ public class MMHHIndexReadIT {
String querySQL =
String.format(
- "SELECT TOP 2 direction FROM root.wind2.* WHERE direction LIKE (%s)",
+ "SELECT TOP 2 direction FROM root.wind2.* WHERE direction MMHH LIKE (%s)",
getArrayRange(121, 121 + wholeDim));
System.out.println(querySQL);
diff --git a/server/src/test/java/org/apache/iotdb/db/index/it/MMHHNoIndexReadIT.java b/server/src/test/java/org/apache/iotdb/db/index/it/MMHHNoIndexReadIT.java
index d9ec8a8..f911f2b 100644
--- a/server/src/test/java/org/apache/iotdb/db/index/it/MMHHNoIndexReadIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/index/it/MMHHNoIndexReadIT.java
@@ -141,7 +141,7 @@ public class MMHHNoIndexReadIT {
String querySQL =
String.format(
- "SELECT TOP 5 direction FROM root.wind2.* WHERE direction LIKE (%s)",
+ "SELECT TOP 5 direction FROM root.wind2.* WHERE direction MMHH LIKE (%s)",
getArrayRange(121, 121 + wholeDim));
System.out.println(querySQL);
diff --git a/server/src/test/java/org/apache/iotdb/db/index/it/RTreeIndexReadIT.java b/server/src/test/java/org/apache/iotdb/db/index/it/RTreeIndexReadIT.java
index c1ada01..3ca9524 100644
--- a/server/src/test/java/org/apache/iotdb/db/index/it/RTreeIndexReadIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/index/it/RTreeIndexReadIT.java
@@ -139,7 +139,7 @@ public class RTreeIndexReadIT {
String querySQL =
String.format(
- "SELECT TOP 5 direction FROM root.wind2.* WHERE direction LIKE (%s)",
+ "SELECT TOP 5 direction FROM root.wind2.* WHERE direction RTREE_PAA LIKE (%s)",
getArrayRange(121, 121 + wholeDim));
System.out.println(querySQL);
diff --git a/server/src/test/java/org/apache/iotdb/db/index/it/RTreeNoIndexReadIT.java b/server/src/test/java/org/apache/iotdb/db/index/it/RTreeNoIndexReadIT.java
index 0e06e7e..749100b 100644
--- a/server/src/test/java/org/apache/iotdb/db/index/it/RTreeNoIndexReadIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/index/it/RTreeNoIndexReadIT.java
@@ -126,7 +126,7 @@ public class RTreeNoIndexReadIT {
String querySQL =
String.format(
- "SELECT TOP 5 direction FROM root.wind2.* WHERE direction LIKE (%s)",
+ "SELECT TOP 5 direction FROM root.wind2.* WHERE direction RTREE_PAA LIKE (%s)",
getArrayRange(121, 121 + wholeDim));
System.out.println(querySQL);
diff --git a/server/src/test/java/org/apache/iotdb/db/index/router/ProtoIndexRouterTest.java b/server/src/test/java/org/apache/iotdb/db/index/router/ProtoIndexRouterTest.java
index 5322e33..86b577b 100644
--- a/server/src/test/java/org/apache/iotdb/db/index/router/ProtoIndexRouterTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/index/router/ProtoIndexRouterTest.java
@@ -138,9 +138,8 @@ public class ProtoIndexRouterTest {
// System.out.println(router.toString());
Assert.assertEquals(
"<{NO_INDEX=[type: NO_INDEX, time: 10, props: {PAA_DIM=10}], RTREE_PAA=[type: RTREE_PAA, time: 5, props: {PAA_DIM=5}]}\n"
- + "root.wind2.*.direction: {NO_INDEX=NO_INDEX, RTREE_PAA=nMax:50,nMin:2,dim:4,seedsPicker:LINEAR\n"
- + "RNode{LB=[3.4028235E38, 3.4028235E38, 3.4028235E38, 3.4028235E38], UB=[-3.4028235E38, -3.4028235E38, -3.4028235E38, -3.4028235E38], leaf=true}\n"
- + "}>\n"
+ + "root.wind2.*.direction: {NO_INDEX=NO_INDEX, RTREE_PAA=nMax:50,nMin:2,dim:4,seedsPicker:LINEARinner:0,leaf:1,item:0;\n"
+ + " calc size: 52=4*3+2+(#inner(0)+#leaf(1)) * (2*dim(4)*4+2+4) + #item(0) * (dim(4)*4 + 2 + 8)}>\n"
+ "<{ELB_INDEX=[type: ELB_INDEX, time: 0, props: {INDEX_SLIDE_STEP=8, INDEX_WINDOW_RANGE=4}]}\n"
+ "root.wind1.azq01.speed: {ELB_INDEX=[]}>\n",
router.toString());
@@ -149,9 +148,8 @@ public class ProtoIndexRouterTest {
(ProtoIndexRouter) router.getRouterByStorageGroup(storageGroupFull);
Assert.assertEquals(
"<{NO_INDEX=[type: NO_INDEX, time: 10, props: {PAA_DIM=10}], RTREE_PAA=[type: RTREE_PAA, time: 5, props: {PAA_DIM=5}]}\n"
- + "root.wind2.*.direction: {NO_INDEX=NO_INDEX, RTREE_PAA=nMax:50,nMin:2,dim:4,seedsPicker:LINEAR\n"
- + "RNode{LB=[3.4028235E38, 3.4028235E38, 3.4028235E38, 3.4028235E38], UB=[-3.4028235E38, -3.4028235E38, -3.4028235E38, -3.4028235E38], leaf=true}\n"
- + "}>\n",
+ + "root.wind2.*.direction: {NO_INDEX=NO_INDEX, RTREE_PAA=nMax:50,nMin:2,dim:4,seedsPicker:LINEARinner:0,leaf:1,item:0;\n"
+ + " calc size: 52=4*3+2+(#inner(0)+#leaf(1)) * (2*dim(4)*4+2+4) + #item(0) * (dim(4)*4 + 2 + 8)}>\n",
sgRouters.toString());
// System.out.println(sgRouters.toString());
@@ -160,9 +158,8 @@ public class ProtoIndexRouterTest {
// System.out.println(router.toString());
Assert.assertEquals(
"<{NO_INDEX=[type: NO_INDEX, time: 10, props: {PAA_DIM=10}], RTREE_PAA=[type: RTREE_PAA, time: 5, props: {PAA_DIM=5}]}\n"
- + "root.wind2.*.direction: {NO_INDEX=NO_INDEX, RTREE_PAA=nMax:50,nMin:2,dim:4,seedsPicker:LINEAR\n"
- + "RNode{LB=[3.4028235E38, 3.4028235E38, 3.4028235E38, 3.4028235E38], UB=[-3.4028235E38, -3.4028235E38, -3.4028235E38, -3.4028235E38], leaf=true}\n"
- + "}>\n"
+ + "root.wind2.*.direction: {NO_INDEX=NO_INDEX, RTREE_PAA=nMax:50,nMin:2,dim:4,seedsPicker:LINEARinner:0,leaf:1,item:0;\n"
+ + " calc size: 52=4*3+2+(#inner(0)+#leaf(1)) * (2*dim(4)*4+2+4) + #item(0) * (dim(4)*4 + 2 + 8)}>\n"
+ "<{ELB_INDEX=[type: ELB_INDEX, time: 0, props: {INDEX_SLIDE_STEP=8, INDEX_WINDOW_RANGE=4}]}\n"
+ "root.wind1.azq01.speed: {ELB_INDEX=[]}>\n",
router.toString());
@@ -173,9 +170,8 @@ public class ProtoIndexRouterTest {
newRouter.deserializeAndReload(fakeCreateFunc);
Assert.assertEquals(
"<{NO_INDEX=[type: NO_INDEX, time: 10, props: {PAA_DIM=10}], RTREE_PAA=[type: RTREE_PAA, time: 5, props: {PAA_DIM=5}]}\n"
- + "root.wind2.*.direction: {NO_INDEX=NO_INDEX, RTREE_PAA=nMax:50,nMin:2,dim:4,seedsPicker:LINEAR\n"
- + "RNode{LB=[3.4028235E38, 3.4028235E38, 3.4028235E38, 3.4028235E38], UB=[-3.4028235E38, -3.4028235E38, -3.4028235E38, -3.4028235E38], leaf=true}\n"
- + "}>\n"
+ + "root.wind2.*.direction: {NO_INDEX=NO_INDEX, RTREE_PAA=nMax:50,nMin:2,dim:4,seedsPicker:LINEARinner:0,leaf:1,item:0;\n"
+ + " calc size: 52=4*3+2+(#inner(0)+#leaf(1)) * (2*dim(4)*4+2+4) + #item(0) * (dim(4)*4 + 2 + 8)}>\n"
+ "<{ELB_INDEX=[type: ELB_INDEX, time: 0, props: {INDEX_SLIDE_STEP=8, INDEX_WINDOW_RANGE=4}]}\n"
+ "root.wind1.azq01.speed: {ELB_INDEX=[]}>\n",
newRouter.toString());
@@ -184,9 +180,8 @@ public class ProtoIndexRouterTest {
newRouter.removeIndexFromRouter(new PartialPath(index_full), NO_INDEX);
Assert.assertEquals(
"<{RTREE_PAA=[type: RTREE_PAA, time: 5, props: {PAA_DIM=5}]}\n"
- + "root.wind2.*.direction: {RTREE_PAA=nMax:50,nMin:2,dim:4,seedsPicker:LINEAR\n"
- + "RNode{LB=[3.4028235E38, 3.4028235E38, 3.4028235E38, 3.4028235E38], UB=[-3.4028235E38, -3.4028235E38, -3.4028235E38, -3.4028235E38], leaf=true}\n"
- + "}>\n"
+ + "root.wind2.*.direction: {RTREE_PAA=nMax:50,nMin:2,dim:4,seedsPicker:LINEARinner:0,leaf:1,item:0;\n"
+ + " calc size: 52=4*3+2+(#inner(0)+#leaf(1)) * (2*dim(4)*4+2+4) + #item(0) * (dim(4)*4 + 2 + 8)}>\n"
+ "<{ELB_INDEX=[type: ELB_INDEX, time: 0, props: {INDEX_SLIDE_STEP=8, INDEX_WINDOW_RANGE=4}]}\n"
+ "root.wind1.azq01.speed: {ELB_INDEX=[]}>\n",
newRouter.toString());
diff --git a/server/src/test/java/org/apache/iotdb/db/qp/logical/IndexLogicalPlanTest.java b/server/src/test/java/org/apache/iotdb/db/qp/logical/IndexLogicalPlanTest.java
index 1e09934..87ae2e8 100644
--- a/server/src/test/java/org/apache/iotdb/db/qp/logical/IndexLogicalPlanTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/qp/logical/IndexLogicalPlanTest.java
@@ -119,6 +119,44 @@ public class IndexLogicalPlanTest {
Assert.assertEquals("Glu", queryOperator.getSelectedPaths().get(0).getFullPath());
Assert.assertEquals(
"root.Ery.*", queryOperator.getFromOperator().getPrefixPaths().get(0).getFullPath());
+ Assert.assertEquals(IndexType.ANY_FOR_QUERY, queryOperator.getIndexType());
+ Assert.assertEquals(2, queryOperator.getProps().size());
+ Assert.assertEquals(2, (int) queryOperator.getProps().get(TOP_K));
+ Assert.assertEquals(
+ "[0.0, 120.0, 20.0, 80.0, 120.0, 100.0, 80.0, 0.0]",
+ Arrays.toString((double[]) queryOperator.getProps().get(PATTERN)));
+ }
+
+ @Test
+ public void testParseQueryIndexWholeMatching2() {
+ String sqlStr =
+ "SELECT TOP 2 Glu FROM root.Ery.* WHERE Glu MMHH LIKE (0, 120, 20, 80, 120, 100, 80, 0)";
+ Operator op = generator.generate(sqlStr, ZoneId.systemDefault());
+ Assert.assertEquals(QueryOperator.class, op.getClass());
+ QueryOperator queryOperator = (QueryOperator) op;
+ Assert.assertEquals(OperatorType.QUERY, queryOperator.getType());
+ Assert.assertEquals("Glu", queryOperator.getSelectedPaths().get(0).getFullPath());
+ Assert.assertEquals(
+ "root.Ery.*", queryOperator.getFromOperator().getPrefixPaths().get(0).getFullPath());
+ Assert.assertEquals(IndexType.MMHH, queryOperator.getIndexType());
+ Assert.assertEquals(2, queryOperator.getProps().size());
+ Assert.assertEquals(2, (int) queryOperator.getProps().get(TOP_K));
+ Assert.assertEquals(
+ "[0.0, 120.0, 20.0, 80.0, 120.0, 100.0, 80.0, 0.0]",
+ Arrays.toString((double[]) queryOperator.getProps().get(PATTERN)));
+ }
+
+ @Test
+ public void testParseQueryIndexWholeMatching3() {
+ String sqlStr =
+ "SELECT TOP 2 Glu FROM root.Ery.* WHERE Glu RTREE_PAA LIKE (0, 120, 20, 80, 120, 100, 80, 0)";
+ Operator op = generator.generate(sqlStr, ZoneId.systemDefault());
+ Assert.assertEquals(QueryOperator.class, op.getClass());
+ QueryOperator queryOperator = (QueryOperator) op;
+ Assert.assertEquals(OperatorType.QUERY, queryOperator.getType());
+ Assert.assertEquals("Glu", queryOperator.getSelectedPaths().get(0).getFullPath());
+ Assert.assertEquals(
+ "root.Ery.*", queryOperator.getFromOperator().getPrefixPaths().get(0).getFullPath());
Assert.assertEquals(IndexType.RTREE_PAA, queryOperator.getIndexType());
Assert.assertEquals(2, queryOperator.getProps().size());
Assert.assertEquals(2, (int) queryOperator.getProps().get(TOP_K));
diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/iotdb/IoTDBInterpreter.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/iotdb/IoTDBInterpreter.java
index 6c3cbd2..bf3e55e 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/iotdb/IoTDBInterpreter.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/iotdb/IoTDBInterpreter.java
@@ -90,9 +90,9 @@ public class IoTDBInterpreter extends AbstractInterpreter {
private static final String HELP = "help";
private static final String IMPORT_CMD = "import";
private static final String LOAD = "load";
- private static final String SELECT_SERIES = "select series";
+ private static final String DRAW_SERIES = "draw series";
static final String SET_TIMESTAMP_DISPLAY = "set time_display_type";
- static final String SET_QUERY_TIMEOUT = "set query_time_timeout";
+ static final String SET_QUERY_TIMEOUT = "set query_timeout";
private static final String SET_MAX_DISPLAY_NUM = "set max_display_num";
private static final String SHOW_TIMESTAMP_DISPLAY = "show time_display_type";
private static final String SET_TIME_ZONE = "set time_zone";
@@ -234,17 +234,33 @@ public class IoTDBInterpreter extends AbstractInterpreter {
if (nonSupportCommandSet.contains(specialCmd)) {
return new InterpreterResult(Code.ERROR, "Not supported in Zeppelin: " + specialCmd);
}
- if (specialCmd.startsWith(SELECT_SERIES.toLowerCase())) {
+ if (specialCmd.startsWith(DRAW_SERIES.toLowerCase())) {
// no query db. draw and return
- String line = cmd.substring(SELECT_SERIES.length(), cmd.length() - 1).trim();
- String[] series = line.substring(1, line.length() - 1).split(",");
+ InterpreterResult interpreterResult = new InterpreterResult(Code.SUCCESS);
+ String line = cmd.substring(DRAW_SERIES.length(), cmd.length() - 1).trim();
+ String[] segments = line.substring(1, line.length() - 1).split("-");
StringBuilder stringBuilder = new StringBuilder();
- stringBuilder.append("Time").append(TAB).append("Value");
+ stringBuilder.append("Time");
+ for (int i = 0; i < segments.length; i++) {
+ stringBuilder.append(TAB).append("Segment-").append(i);
+ }
stringBuilder.append(NEWLINE);
- for (int i = 0; i < series.length; i++) {
- stringBuilder.append(i).append(TAB).append(series[i].trim()).append(NEWLINE);
+ int idx = 0;
+ for (int segIdx = 0; segIdx < segments.length; segIdx++) {
+ String[] series = segments[segIdx].split(",");
+ for (String s : series) {
+ // insert time
+ stringBuilder.append(idx++);
+ for (int pre = 0; pre < segIdx; pre++) {
+ stringBuilder.append(TAB).append(NULL_ITEM);
+ }
+ stringBuilder.append(TAB).append(s.trim());
+ for (int after = segIdx + 1; after < segments.length; after++) {
+ stringBuilder.append(TAB).append(NULL_ITEM);
+ }
+ stringBuilder.append(NEWLINE);
+ }
}
- InterpreterResult interpreterResult = new InterpreterResult(Code.SUCCESS);
interpreterResult.add(Type.TABLE, stringBuilder.toString());
return interpreterResult;
}
diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/iotdb/IoTDBInterpreterTest.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/iotdb/IoTDBInterpreterTest.java
index 7330e47..2c904b6 100644
--- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/iotdb/IoTDBInterpreterTest.java
+++ b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/iotdb/IoTDBInterpreterTest.java
@@ -468,14 +468,36 @@ public class IoTDBInterpreterTest {
}
@Test
- public void testSelectSeries() {
+ public void testDrawSeries() {
InterpreterResult actual =
- interpreter.internalInterpret("SELECT SERIES (1.2,3.2, 18239. ,3.3))", null);
- String gt = "user\n" + "root\n" + "user1";
+ interpreter.internalInterpret("DRAW SERIES (1.2,3.2, 18239. ,3.3))", null);
System.out.println(actual.message().get(0).getData());
Assert.assertNotNull(actual);
Assert.assertEquals(Code.SUCCESS, actual.code());
- // Assert.assertEquals(gt, actual.message().get(0).getData());
+ Assert.assertEquals(
+ "Time\tSegment-0\n" + "0\t1.2\n" + "1\t3.2\n" + "2\t18239.\n" + "3\t3.3\n",
+ actual.message().get(0).getData());
+
+ actual =
+ interpreter.internalInterpret(
+ "DRAW SERIES (1.2,3.2, 18239. -3.3,2,0.12,1 - 95,8,1.0))", null);
+ System.out.println(actual.message().get(0).getData());
+ Assert.assertNotNull(actual);
+ Assert.assertEquals(Code.SUCCESS, actual.code());
+
+ Assert.assertEquals(
+ "Time\tSegment-0\tSegment-1\tSegment-2\n"
+ + "0\t1.2\tnull\tnull\n"
+ + "1\t3.2\tnull\tnull\n"
+ + "2\t18239.\tnull\tnull\n"
+ + "3\tnull\t3.3\tnull\n"
+ + "4\tnull\t2\tnull\n"
+ + "5\tnull\t0.12\tnull\n"
+ + "6\tnull\t1\tnull\n"
+ + "7\tnull\tnull\t95\n"
+ + "8\tnull\tnull\t8\n"
+ + "9\tnull\tnull\t1.0\n",
+ actual.message().get(0).getData());
}
}