This is an automated email from the ASF dual-hosted git repository.

hui pushed a commit to branch lmh/RefactorAnalyzer
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 7bed3966034a0b10f1645cac46d86d483b20bc31
Author: Minghui Liu <[email protected]>
AuthorDate: Mon Sep 26 16:32:00 2022 +0800

    add AnalyzeTest
---
 .../iotdb/db/mpp/plan/analyze/AnalyzeTest.java     | 90 +++++++++++++++++++++-
 1 file changed, 88 insertions(+), 2 deletions(-)

diff --git 
a/server/src/test/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeTest.java 
b/server/src/test/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeTest.java
index d081b194f3..061ef9bb19 100644
--- a/server/src/test/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeTest.java
@@ -23,7 +23,10 @@ import 
org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.mpp.common.MPPQueryContext;
 import org.apache.iotdb.db.mpp.common.QueryId;
+import org.apache.iotdb.db.mpp.common.header.ColumnHeader;
+import org.apache.iotdb.db.mpp.common.header.DatasetHeader;
 import org.apache.iotdb.db.mpp.plan.expression.Expression;
+import org.apache.iotdb.db.mpp.plan.expression.binary.AdditionExpression;
 import org.apache.iotdb.db.mpp.plan.expression.binary.GreaterThanExpression;
 import org.apache.iotdb.db.mpp.plan.expression.binary.LessThanExpression;
 import org.apache.iotdb.db.mpp.plan.expression.binary.LogicAndExpression;
@@ -36,18 +39,57 @@ import org.apache.iotdb.db.mpp.plan.statement.Statement;
 import org.apache.iotdb.db.mpp.plan.statement.crud.QueryStatement;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import org.apache.ratis.thirdparty.com.google.common.collect.Sets;
 import org.junit.Assert;
 import org.junit.Test;
 
 import java.time.ZonedDateTime;
+import java.util.Arrays;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.fail;
 
 public class AnalyzeTest {
 
   @Test
   public void testRawDataQuery() {
-    // TODO: @lmh add UTs
+    String sql = "select s1, status, s1 + 1 as t from root.sg.d1 where s2 > 
10;";
+    try {
+      Analysis actualAnalysis = analyzeSQL(sql);
+
+      Analysis expectedAnalysis = new Analysis();
+      expectedAnalysis.setSelectExpressions(
+          Sets.newHashSet(
+              new TimeSeriesOperand(new PartialPath("root.sg.d1.s1")),
+              new AdditionExpression(
+                  new TimeSeriesOperand(new PartialPath("root.sg.d1.s1")),
+                  new ConstantOperand(TSDataType.INT64, "1"))));
+      expectedAnalysis.setWhereExpression(
+          new GreaterThanExpression(
+              new TimeSeriesOperand(new PartialPath("root.sg.d1.s2")),
+              new ConstantOperand(TSDataType.INT64, "10")));
+      expectedAnalysis.setSourceTransformExpressions(
+          Sets.newHashSet(
+              new TimeSeriesOperand(new PartialPath("root.sg.d1.s1")),
+              new AdditionExpression(
+                  new TimeSeriesOperand(new PartialPath("root.sg.d1.s1")),
+                  new ConstantOperand(TSDataType.INT64, "1"))));
+      expectedAnalysis.setSourceExpressions(
+          Sets.newHashSet(
+              new TimeSeriesOperand(new PartialPath("root.sg.d1.s1")),
+              new TimeSeriesOperand(new PartialPath("root.sg.d1.s2"))));
+      expectedAnalysis.setRespDatasetHeader(
+          new DatasetHeader(
+              Arrays.asList(
+                  new ColumnHeader("root.sg.d1.s1", TSDataType.INT32),
+                  new ColumnHeader("root.sg.d1.s1", TSDataType.INT32, 
"status"),
+                  new ColumnHeader("root.sg.d1.s1 + 1", TSDataType.INT32, 
"t")),
+              false));
+      alignByTimeAnalysisEqualTest(actualAnalysis, expectedAnalysis);
+    } catch (Exception e) {
+      e.printStackTrace();
+      fail(e.getMessage());
+    }
   }
 
   @Test
@@ -135,7 +177,7 @@ public class AnalyzeTest {
       if (predicates[i] == null) {
         Assert.assertNull(queryStatement.getWhereCondition());
       } else {
-        Assert.assertEquals(predicates[i], 
queryStatement.getWhereCondition().getPredicate());
+        assertEquals(predicates[i], 
queryStatement.getWhereCondition().getPredicate());
       }
     }
   }
@@ -155,4 +197,48 @@ public class AnalyzeTest {
     fail();
     return null;
   }
+
+  private void alignByTimeAnalysisEqualTest(Analysis actualAnalysis, Analysis 
expectedAnalysis) {
+    commonAnalysisEqualTest(actualAnalysis, expectedAnalysis);
+    assertEquals(actualAnalysis.getSourceExpressions(), 
expectedAnalysis.getSourceExpressions());
+    assertEquals(
+        actualAnalysis.getSourceTransformExpressions(),
+        expectedAnalysis.getSourceTransformExpressions());
+    assertEquals(actualAnalysis.getWhereExpression(), 
expectedAnalysis.getWhereExpression());
+    assertEquals(
+        actualAnalysis.getAggregationExpressions(), 
expectedAnalysis.getAggregationExpressions());
+    assertEquals(
+        actualAnalysis.getGroupByLevelExpressions(), 
expectedAnalysis.getGroupByLevelExpressions());
+  }
+
+  private void alignByDeviceAnalysisEqualTest(Analysis actualAnalysis, 
Analysis expectedAnalysis) {
+    commonAnalysisEqualTest(actualAnalysis, expectedAnalysis);
+    assertEquals(
+        actualAnalysis.getDeviceToSourceExpressions(),
+        expectedAnalysis.getDeviceToSourceExpressions());
+    assertEquals(
+        actualAnalysis.getDeviceToSourceTransformExpressions(),
+        expectedAnalysis.getDeviceToSourceTransformExpressions());
+    assertEquals(
+        actualAnalysis.getDeviceToWhereExpression(), 
expectedAnalysis.getDeviceToWhereExpression());
+    assertEquals(
+        actualAnalysis.getDeviceToAggregationExpressions(),
+        expectedAnalysis.getDeviceToWhereExpression());
+    assertEquals(
+        actualAnalysis.getDeviceToSelectExpressions(),
+        expectedAnalysis.getDeviceToSelectExpressions());
+    assertEquals(
+        actualAnalysis.getDeviceToMeasurementIndexesMap(),
+        expectedAnalysis.getDeviceToMeasurementIndexesMap());
+    assertEquals(
+        actualAnalysis.getDeviceViewOutputExpressions(),
+        actualAnalysis.getDeviceViewOutputExpressions());
+  }
+
+  private void commonAnalysisEqualTest(Analysis actualAnalysis, Analysis 
expectedAnalysis) {
+    assertEquals(expectedAnalysis.getSelectExpressions(), 
actualAnalysis.getSelectExpressions());
+    assertEquals(expectedAnalysis.getHavingExpression(), 
actualAnalysis.getHavingExpression());
+    assertEquals(expectedAnalysis.getRespDatasetHeader(), 
actualAnalysis.getRespDatasetHeader());
+    assertEquals(expectedAnalysis.getGlobalTimeFilter(), 
actualAnalysis.getGlobalTimeFilter());
+  }
 }

Reply via email to