You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by xi...@apache.org on 2021/12/24 02:34:39 UTC
[iotdb] 01/01: Support double star ** in group by level
This is an automated email from the ASF dual-hosted git repository.
xiangweiwei pushed a commit to branch groupbylevelstar
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 911c335a119817a438e69e56f63e06a2d15669d7
Author: Alima777 <wx...@gmail.com>
AuthorDate: Fri Dec 24 10:33:44 2021 +0800
Support double star ** in group by level
---
.../integration/aggregation/IoTDBAggregationByLevelIT.java | 12 +++++++++++-
.../integration/aligned/IoTDBAggregationGroupByLevelIT.java | 12 ++++++++++--
.../apache/iotdb/db/engine/memtable/AbstractMemTable.java | 1 +
.../iotdb/db/query/expression/unary/FunctionExpression.java | 3 ++-
4 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationByLevelIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationByLevelIT.java
index 1b5b40c..a2a3697 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationByLevelIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationByLevelIT.java
@@ -276,7 +276,7 @@ public class IoTDBAggregationByLevelIT {
@Test
public void countStarGroupByLevelTest() throws Exception {
- String[] retArray = new String[] {"17", "8"};
+ String[] retArray = new String[] {"17", "17", "8"};
try (Connection connection = EnvFactory.getEnv().getConnection();
Statement statement = connection.createStatement()) {
statement.execute("select count(*) from root.*.* GROUP BY level=0");
@@ -290,6 +290,16 @@ public class IoTDBAggregationByLevelIT {
}
}
+ statement.execute("select count(**) from root GROUP BY level=0");
+
+ try (ResultSet resultSet = statement.getResultSet()) {
+ while (resultSet.next()) {
+ String ans = resultSet.getString(TestConstant.count("root.*.*.*"));
+ Assert.assertEquals(retArray[cnt], ans);
+ cnt++;
+ }
+ }
+
statement.execute("select count(status) from root.*.* GROUP BY level=0");
try (ResultSet resultSet = statement.getResultSet()) {
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBAggregationGroupByLevelIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBAggregationGroupByLevelIT.java
index a510beb..5c8d743 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBAggregationGroupByLevelIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBAggregationGroupByLevelIT.java
@@ -31,14 +31,22 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;
-import java.sql.*;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
@Category({LocalStandaloneTest.class})
public class IoTDBAggregationGroupByLevelIT {
+
private static final double DELTA = 1e-6;
private static final double NULL = Double.MIN_VALUE;
protected static boolean enableSeqSpaceCompaction;
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java b/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java
index ac70f07..9b45ed3 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java
@@ -44,6 +44,7 @@ import java.util.Map.Entry;
public abstract class AbstractMemTable implements IMemTable {
+ /** DeviceId -> chunkGroup(MeasurementId -> chunk) */
private final Map<String, IWritableMemChunkGroup> memTableMap;
/**
* The initial value is true because we want calculate the text data size when recover memTable!!
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/FunctionExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/FunctionExpression.java
index cb18570..39c1267 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/FunctionExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/FunctionExpression.java
@@ -125,7 +125,8 @@ public class FunctionExpression extends Expression {
public boolean isCountStar() {
return getPaths().size() == 1
- && paths.get(0).getTailNode().equals(IoTDBConstant.ONE_LEVEL_PATH_WILDCARD)
+ && (paths.get(0).getTailNode().equals(IoTDBConstant.ONE_LEVEL_PATH_WILDCARD)
+ || paths.get(0).getTailNode().equals(IoTDBConstant.MULTI_LEVEL_PATH_WILDCARD))
&& functionName.equals(IoTDBConstant.COLUMN_COUNT);
}