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);
