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 3e6cdaf48a0bd1191dedc1bf33e3185915bfe33b Author: Minghui Liu <[email protected]> AuthorDate: Tue Jul 26 22:32:48 2022 +0800 add IT & bug fix --- .../java/org/apache/iotdb/db/it/query/IoTDBAliasIT.java | 8 ++++---- .../db/mpp/plan/analyze/GroupByLevelController.java | 16 +++++++++++++--- 2 files changed, 17 insertions(+), 7 deletions(-) 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 68b988c11c..21bc7371bd 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 @@ -388,23 +388,23 @@ public class IoTDBAliasIT { 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.s2),COUNT(root.sg.d2.s2)," + "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.*", + "select count(temperature),COUNT(s2),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 expectedHeader = "count(root.sg.*.s2),COUNT(root.sg.*.temperature),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", + "select count(s2),COUNT(temperature),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/GroupByLevelController.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/GroupByLevelController.java index a583805e33..4f8da81f15 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/GroupByLevelController.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/GroupByLevelController.java @@ -23,6 +23,7 @@ import org.apache.iotdb.commons.conf.IoTDBConstant; import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.db.exception.sql.SemanticException; import org.apache.iotdb.db.exception.sql.StatementAnalyzeException; +import org.apache.iotdb.db.metadata.path.MeasurementPath; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.leaf.TimeSeriesOperand; import org.apache.iotdb.db.mpp.plan.expression.multi.FunctionExpression; @@ -81,7 +82,7 @@ public class GroupByLevelController { } PartialPath rawPath = ((TimeSeriesOperand) expression.getExpressions().get(0)).getPath(); - PartialPath groupedPath = generatePartialPathByLevel(isCountStar, rawPath.getNodes(), levels); + PartialPath groupedPath = generatePartialPathByLevel(isCountStar, rawPath, levels); checkDatatypeConsistency( groupedPath.getFullPath(), ((FunctionExpression) expression).getFunctionName(), rawPath); @@ -179,7 +180,8 @@ public class GroupByLevelController { * @return result partial path */ public PartialPath generatePartialPathByLevel( - boolean isCountStar, String[] nodes, int[] pathLevels) { + boolean isCountStar, PartialPath rawPath, int[] pathLevels) { + String[] nodes = rawPath.getNodes(); Set<Integer> levelSet = new HashSet<>(); for (int level : pathLevels) { levelSet.add(level); @@ -200,7 +202,15 @@ public class GroupByLevelController { } else { transformedNodes.add(nodes[nodes.length - 1]); } - return new PartialPath(transformedNodes.toArray(new String[0])); + + MeasurementPath groupedPath = + new MeasurementPath( + new PartialPath(transformedNodes.toArray(new String[0])), + ((MeasurementPath) rawPath).getMeasurementSchema()); + if (rawPath.isMeasurementAliasExists()) { + groupedPath.setMeasurementAlias(rawPath.getMeasurementAlias()); + } + return groupedPath; } public Map<Expression, Set<Expression>> getGroupedPathMap() {
