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

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

commit 48c6f0a7879dba882083a72f54d3e072f5ff989e
Author: Minghui Liu <[email protected]>
AuthorDate: Tue Jul 26 20:58:25 2022 +0800

    add IT & bug fix
---
 .../org/apache/iotdb/db/it/query/IoTDBAliasIT.java | 27 ++++++++++++++++++++++
 .../iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java  | 10 +++++++-
 2 files changed, 36 insertions(+), 1 deletion(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/query/IoTDBAliasIT.java 
b/integration-test/src/test/java/org/apache/iotdb/db/it/query/IoTDBAliasIT.java
index 8ef5fc7181..68b988c11c 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/query/IoTDBAliasIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/query/IoTDBAliasIT.java
@@ -381,4 +381,31 @@ public class IoTDBAliasIT {
       resultSetEqualTest(sqls.get(i), expectHeaders.get(i), retArrays.get(i));
     }
   }
+
+  // ------------------------------------ Function name 
--------------------------------------
+
+  @Test
+  public void aggregationFuncNameTest() {
+    String expectedHeader =
+        "count(root.sg.d1.temperature),count(root.sg.d2.temperature),"
+            + "COUNT(root.sg.d1.temperature),COUNT(root.sg.d2.temperature),"
+            + "CoUnT(root.sg.d1.temperature),CoUnT(root.sg.d2.temperature),";
+    String[] retArray = new String[] {"4,4,4,4,4,4,"};
+
+    resultSetEqualTest(
+        "select count(temperature),COUNT(temperature),CoUnT(temperature) from 
root.sg.*",
+        expectedHeader,
+        retArray);
+  }
+
+  @Test
+  public void groupByLevelFuncNameTest() {
+    String expectedHeader = 
"count(root.sg.*.s2),COUNT(root.sg.*.s2),CoUnT(root.sg.*.s2),";
+    String[] retArray = new String[] {"8,8,8,"};
+
+    resultSetEqualTest(
+        "select count(s2),COUNT(s2),CoUnT(s2) from root.sg.* group by level = 
1",
+        expectedHeader,
+        retArray);
+  }
 }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
index c36085b9f5..412c920162 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java
@@ -684,10 +684,18 @@ public class AnalyzeVisitor extends 
StatementVisitor<Analysis, MPPQueryContext>
                 groupedExpression,
                 
groupByLevelController.getAlias(groupedExpression.getExpressionString()));
         Expression groupedExpressionWithoutAlias = outputExpression.left;
+
+        Set<Expression> rawExpressions = 
rawGroupByLevelExpressions.get(groupedExpression);
+        rawExpressions.forEach(
+            expression -> ExpressionAnalyzer.updateTypeProvider(expression, 
typeProvider));
+        rawExpressions.forEach(expression -> 
expression.inferTypes(typeProvider));
+
         Set<Expression> rawExpressionsWithoutAlias =
-            rawGroupByLevelExpressions.get(groupedExpression).stream()
+            rawExpressions.stream()
                 .map(ExpressionAnalyzer::removeAliasFromExpression)
                 .collect(Collectors.toSet());
+        rawExpressionsWithoutAlias.forEach(
+            expression -> ExpressionAnalyzer.updateTypeProvider(expression, 
typeProvider));
         rawExpressionsWithoutAlias.forEach(expression -> 
expression.inferTypes(typeProvider));
 
         groupByLevelExpressions.put(groupedExpressionWithoutAlias, 
rawExpressionsWithoutAlias);

Reply via email to