You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hu...@apache.org on 2022/07/26 14:33:13 UTC
[iotdb] 02/02: add IT & bug fix
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 <li...@foxmail.com>
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() {