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

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


The following commit(s) were added to refs/heads/master by this push:
     new 5aa0fe612e [IOTDB-3436] Add aggregation IT without value filter (#6338)
5aa0fe612e is described below

commit 5aa0fe612e3f41e010cf60d1a8b5e1d3b7acc27f
Author: Xiangwei Wei <[email protected]>
AuthorDate: Wed Jun 22 14:33:05 2022 +0800

    [IOTDB-3436] Add aggregation IT without value filter (#6338)
---
 .../org/apache/iotdb/itbase/env/BaseConfig.java    |   4 +
 .../it}/aggregation/IoTDBAggregationByLevelIT.java | 323 +++++++-------
 .../it}/aggregation/IoTDBAggregationDeleteIT.java  |  23 +-
 .../db/it}/aggregation/IoTDBAggregationIT.java     | 494 +++++++++------------
 .../aggregation/IoTDBAggregationLargeDataIT.java   | 431 ++++++++----------
 .../aggregation/IoTDBAggregationSmallDataIT.java   | 241 +++++-----
 .../iotdb/db/it/env/StandaloneEnvConfig.java       |   5 +
 .../apache/iotdb/db/mpp/plan/analyze/Analyzer.java |  19 +-
 .../db/mpp/plan/analyze/ExpressionAnalyzer.java    |   1 +
 .../mpp/plan/analyze/GroupByLevelController.java   |  13 +-
 .../statement/component/GroupByLevelComponent.java |  13 +
 11 files changed, 728 insertions(+), 839 deletions(-)

diff --git 
a/integration-test/src/main/java/org/apache/iotdb/itbase/env/BaseConfig.java 
b/integration-test/src/main/java/org/apache/iotdb/itbase/env/BaseConfig.java
index aa8f888f82..10cb4f365a 100644
--- a/integration-test/src/main/java/org/apache/iotdb/itbase/env/BaseConfig.java
+++ b/integration-test/src/main/java/org/apache/iotdb/itbase/env/BaseConfig.java
@@ -58,6 +58,10 @@ public interface BaseConfig {
     return this;
   }
 
+  default long getPartitionInterval() {
+    return 604800;
+  }
+
   default BaseConfig setCompressor(String compressor) {
     return this;
   }
diff --git 
a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationByLevelIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/aggregation/IoTDBAggregationByLevelIT.java
similarity index 61%
rename from 
integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationByLevelIT.java
rename to 
integration-test/src/test/java/org/apache/iotdb/db/it/aggregation/IoTDBAggregationByLevelIT.java
index badd79a9af..54c657a8ec 100644
--- 
a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationByLevelIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/aggregation/IoTDBAggregationByLevelIT.java
@@ -16,17 +16,16 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.iotdb.db.integration.aggregation;
+package org.apache.iotdb.db.it.aggregation;
 
-import org.apache.iotdb.db.constant.TestConstant;
-import org.apache.iotdb.db.qp.Planner;
-import org.apache.iotdb.db.qp.logical.crud.AggregationQueryOperator;
-import org.apache.iotdb.integration.env.EnvFactory;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
+import org.apache.iotdb.it.env.EnvFactory;
+import org.apache.iotdb.itbase.category.ClusterIT;
+import org.apache.iotdb.itbase.category.LocalStandaloneIT;
 
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -34,12 +33,19 @@ import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.Statement;
 
+import static org.apache.iotdb.itbase.constant.TestConstant.TIMESTAMP_STR;
+import static org.apache.iotdb.itbase.constant.TestConstant.avg;
+import static org.apache.iotdb.itbase.constant.TestConstant.count;
+import static org.apache.iotdb.itbase.constant.TestConstant.lastValue;
+import static org.apache.iotdb.itbase.constant.TestConstant.maxTime;
+import static org.apache.iotdb.itbase.constant.TestConstant.maxValue;
+import static org.apache.iotdb.itbase.constant.TestConstant.minTime;
+import static org.apache.iotdb.itbase.constant.TestConstant.sum;
 import static org.junit.Assert.fail;
 
-@Category({LocalStandaloneTest.class})
+@Category({LocalStandaloneIT.class, ClusterIT.class})
 public class IoTDBAggregationByLevelIT {
 
-  private Planner planner = new Planner();
   private static final String[] dataSet =
       new String[] {
         "SET STORAGE GROUP TO root.sg1",
@@ -83,41 +89,41 @@ public class IoTDBAggregationByLevelIT {
         Statement statement = connection.createStatement()) {
       // Here we duplicate the column to test the bug
       // https://issues.apache.org/jira/browse/IOTDB-2088
-      statement.execute(
-          "select sum(temperature), sum(temperature) from root.sg1.* GROUP BY 
level=1");
 
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select sum(temperature), sum(temperature) from root.sg1.* GROUP 
BY level=1")) {
         while (resultSet.next()) {
-          String ans = 
resultSet.getString(TestConstant.sum("root.sg1.*.temperature"));
+          String ans = resultSet.getString(sum("root.sg1.*.temperature"));
           Assert.assertEquals(retArray[cnt], Double.parseDouble(ans), 
DOUBLE_PRECISION);
           cnt++;
         }
       }
 
-      statement.execute("select sum(temperature) from root.sg2.* GROUP BY 
level=1");
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery("select sum(temperature) from root.sg2.* 
GROUP BY level=1")) {
         while (resultSet.next()) {
-          String ans = 
resultSet.getString(TestConstant.sum("root.sg2.*.temperature"));
+          String ans = resultSet.getString(sum("root.sg2.*.temperature"));
           Assert.assertEquals(retArray[cnt], Double.parseDouble(ans), 
DOUBLE_PRECISION);
           cnt++;
         }
       }
 
-      statement.execute("select sum(temperature) from root.*.* GROUP BY 
level=0");
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery("select sum(temperature) from root.*.* GROUP 
BY level=0")) {
         while (resultSet.next()) {
-          String ans = 
resultSet.getString(TestConstant.sum("root.*.*.temperature"));
+          String ans = resultSet.getString(sum("root.*.*.temperature"));
           Assert.assertEquals(retArray[cnt], Double.parseDouble(ans), 
DOUBLE_PRECISION);
           cnt++;
         }
       }
 
-      statement.execute("select sum(temperature) from root.sg1.* GROUP BY 
level=1,2");
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery("select sum(temperature) from root.sg1.* 
GROUP BY level=1,2")) {
         while (resultSet.next()) {
-          String ans1 = 
resultSet.getString(TestConstant.sum("root.sg1.d1.temperature"));
-          String ans2 = 
resultSet.getString(TestConstant.sum("root.sg1.d2.temperature"));
+          String ans1 = resultSet.getString(sum("root.sg1.d1.temperature"));
+          String ans2 = resultSet.getString(sum("root.sg1.d2.temperature"));
           Assert.assertEquals(retArray[cnt++], Double.parseDouble(ans1), 
DOUBLE_PRECISION);
           Assert.assertEquals(retArray[cnt++], Double.parseDouble(ans2), 
DOUBLE_PRECISION);
         }
@@ -131,40 +137,40 @@ public class IoTDBAggregationByLevelIT {
     double[] retArray = new double[] {48.682d, 95.115d, 69.319d, 45.915d, 
50.527d};
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      statement.execute("select avg(temperature) from root.sg1.* GROUP BY 
level=1");
 
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery("select avg(temperature) from root.sg1.* 
GROUP BY level=1")) {
         while (resultSet.next()) {
-          String ans = 
resultSet.getString(TestConstant.avg("root.sg1.*.temperature"));
+          String ans = resultSet.getString(avg("root.sg1.*.temperature"));
           Assert.assertEquals(retArray[cnt], Double.parseDouble(ans), 
DOUBLE_PRECISION);
           cnt++;
         }
       }
 
-      statement.execute("select avg(temperature) from root.sg2.* GROUP BY 
level=1");
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery("select avg(temperature) from root.sg2.* 
GROUP BY level=1")) {
         while (resultSet.next()) {
-          String ans = 
resultSet.getString(TestConstant.avg("root.sg2.*.temperature"));
+          String ans = resultSet.getString(avg("root.sg2.*.temperature"));
           Assert.assertEquals(retArray[cnt], Double.parseDouble(ans), 
DOUBLE_PRECISION);
           cnt++;
         }
       }
 
-      statement.execute("select avg(temperature) from root.*.* GROUP BY 
level=0");
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery("select avg(temperature) from root.*.* GROUP 
BY level=0")) {
         while (resultSet.next()) {
-          String ans = 
resultSet.getString(TestConstant.avg("root.*.*.temperature"));
+          String ans = resultSet.getString(avg("root.*.*.temperature"));
           Assert.assertEquals(retArray[cnt], Double.parseDouble(ans), 
DOUBLE_PRECISION);
           cnt++;
         }
       }
 
-      statement.execute("select avg(temperature) from root.sg1.* GROUP BY 
level=1, 2");
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery("select avg(temperature) from root.sg1.* 
GROUP BY level=1, 2")) {
         while (resultSet.next()) {
-          String ans1 = 
resultSet.getString(TestConstant.avg("root.sg1.d1.temperature"));
-          String ans2 = 
resultSet.getString(TestConstant.avg("root.sg1.d2.temperature"));
+          String ans1 = resultSet.getString(avg("root.sg1.d1.temperature"));
+          String ans2 = resultSet.getString(avg("root.sg1.d2.temperature"));
           Assert.assertEquals(retArray[cnt++], Double.parseDouble(ans1), 
DOUBLE_PRECISION);
           Assert.assertEquals(retArray[cnt++], Double.parseDouble(ans2), 
DOUBLE_PRECISION);
         }
@@ -178,51 +184,51 @@ public class IoTDBAggregationByLevelIT {
     String[] retArray = new String[] {"5,3,100,200", "600,700,2,3", 
"600,700,500"};
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      statement.execute(
-          "select count(status), min_time(temperature) from root.*.* GROUP BY 
level=2");
 
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select count(status), min_time(temperature) from root.*.* GROUP 
BY level=2")) {
         while (resultSet.next()) {
           String ans =
-              resultSet.getString(TestConstant.count("root.*.d1.status"))
+              resultSet.getString(count("root.*.d1.status"))
                   + ","
-                  + resultSet.getString(TestConstant.count("root.*.d2.status"))
+                  + resultSet.getString(count("root.*.d2.status"))
                   + ","
-                  + 
resultSet.getString(TestConstant.minTime("root.*.d1.temperature"))
+                  + resultSet.getString(minTime("root.*.d1.temperature"))
                   + ","
-                  + 
resultSet.getString(TestConstant.minTime("root.*.d2.temperature"));
+                  + resultSet.getString(minTime("root.*.d2.temperature"));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
       }
 
-      statement.execute(
-          "select max_time(status), count(temperature) from root.sg1.* GROUP 
BY level=2");
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select max_time(status), count(temperature) from root.sg1.* 
GROUP BY level=2")) {
         while (resultSet.next()) {
           String ans =
-              resultSet.getString(TestConstant.maxTime("root.*.d1.status"))
+              resultSet.getString(maxTime("root.*.d1.status"))
                   + ","
-                  + 
resultSet.getString(TestConstant.maxTime("root.*.d2.status"))
+                  + resultSet.getString(maxTime("root.*.d2.status"))
                   + ","
-                  + 
resultSet.getString(TestConstant.count("root.*.d1.temperature"))
+                  + resultSet.getString(count("root.*.d1.temperature"))
                   + ","
-                  + 
resultSet.getString(TestConstant.count("root.*.d2.temperature"));
+                  + resultSet.getString(count("root.*.d2.temperature"));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
       }
 
-      statement.execute("select max_time(status) from root.*.* GROUP BY 
level=1, 2");
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery("select max_time(status) from root.*.* GROUP 
BY level=1, 2")) {
         while (resultSet.next()) {
           String ans =
-              resultSet.getString(TestConstant.maxTime("root.sg1.d1.status"))
+              resultSet.getString(maxTime("root.sg1.d1.status"))
                   + ","
-                  + 
resultSet.getString(TestConstant.maxTime("root.sg1.d2.status"))
+                  + resultSet.getString(maxTime("root.sg1.d2.status"))
                   + ","
-                  + 
resultSet.getString(TestConstant.maxTime("root.sg2.d1.status"));
+                  + resultSet.getString(maxTime("root.sg2.d1.status"));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
@@ -239,33 +245,33 @@ public class IoTDBAggregationByLevelIT {
         };
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      statement.execute(
-          "select last_value(temperature), max_value(temperature) from 
root.*.* GROUP BY level=0");
 
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select last_value(temperature), max_value(temperature) from 
root.*.* GROUP BY level=0")) {
         while (resultSet.next()) {
           String ans =
-              
resultSet.getString(TestConstant.lastValue("root.*.*.temperature"))
+              resultSet.getString(lastValue("root.*.*.temperature"))
                   + ","
-                  + 
resultSet.getString(TestConstant.maxValue("root.*.*.temperature"));
+                  + resultSet.getString(maxValue("root.*.*.temperature"));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
       }
 
-      statement.execute(
-          "select last_value(temperature), max_value(temperature) from 
root.sg1.* GROUP BY level=2");
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select last_value(temperature), max_value(temperature) from 
root.sg1.* GROUP BY level=2")) {
         while (resultSet.next()) {
           String ans =
-              
resultSet.getString(TestConstant.lastValue("root.*.d1.temperature"))
+              resultSet.getString(lastValue("root.*.d1.temperature"))
                   + ","
-                  + 
resultSet.getString(TestConstant.lastValue("root.*.d2.temperature"))
+                  + resultSet.getString(lastValue("root.*.d2.temperature"))
                   + ","
-                  + 
resultSet.getString(TestConstant.maxValue("root.*.d1.temperature"))
+                  + resultSet.getString(maxValue("root.*.d1.temperature"))
                   + ","
-                  + 
resultSet.getString(TestConstant.maxValue("root.*.d2.temperature"));
+                  + resultSet.getString(maxValue("root.*.d2.temperature"));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
@@ -279,32 +285,30 @@ public class IoTDBAggregationByLevelIT {
     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");
 
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery("select count(*) from root.*.* GROUP BY 
level=0")) {
         while (resultSet.next()) {
-          String ans = resultSet.getString(TestConstant.count("root.*.*.*"));
+          String ans = resultSet.getString(count("root.*.*.*"));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
       }
 
-      statement.execute("select count(**) from root GROUP BY level=0");
-
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery("select count(**) from root GROUP BY 
level=0")) {
         while (resultSet.next()) {
-          String ans = resultSet.getString(TestConstant.count("root.*.*.*"));
+          String ans = resultSet.getString(count("root.*.*.*"));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
       }
 
-      statement.execute("select count(status) from root.*.* GROUP BY level=0");
-
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery("select count(status) from root.*.* GROUP BY 
level=0")) {
         while (resultSet.next()) {
-          String ans = 
resultSet.getString(TestConstant.count("root.*.*.status"));
+          String ans = resultSet.getString(count("root.*.*.status"));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
@@ -322,11 +326,11 @@ public class IoTDBAggregationByLevelIT {
     String[] retArray = new String[] {"5", "5", "5"};
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      statement.execute(
-          "select count(temperature) as ct from root.sg1.d1, root.sg1.d2 GROUP 
BY level=1");
 
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select count(temperature) as ct from root.sg1.d1, root.sg1.d2 
GROUP BY level=1")) {
         while (resultSet.next()) {
           String ans = resultSet.getString("ct");
           Assert.assertEquals(retArray[cnt], ans);
@@ -334,9 +338,10 @@ public class IoTDBAggregationByLevelIT {
         }
       }
 
-      statement.execute("select count(temperature) as ct from root.sg1.* GROUP 
BY level=1");
       cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select count(temperature) as ct from root.sg1.* GROUP BY 
level=1")) {
         while (resultSet.next()) {
           String ans = resultSet.getString("ct");
           Assert.assertEquals(retArray[cnt], ans);
@@ -345,8 +350,8 @@ public class IoTDBAggregationByLevelIT {
       }
 
       // root.sg1.d1.* -> [root.sg1.d1.status, root.sg1.d1.temperature] -> 
root.*.*.* -> ct
-      statement.execute("select count(*) as ct from root.sg1.d1 GROUP BY 
level=0");
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery("select count(*) as ct from root.sg1.d1 GROUP 
BY level=0")) {
         while (resultSet.next()) {
           String ans = resultSet.getString("ct");
           Assert.assertEquals(retArray[cnt], ans);
@@ -365,7 +370,7 @@ public class IoTDBAggregationByLevelIT {
   public void groupByLevelWithAliasFailTest() throws Exception {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      statement.execute("select count(temperature) as ct from root.sg1.* GROUP 
BY level=2");
+      statement.executeQuery("select count(temperature) as ct from root.sg1.* 
GROUP BY level=2");
       fail("No exception thrown");
     } catch (Exception e) {
       Assert.assertTrue(e.getMessage().contains("can only be matched with 
one"));
@@ -377,10 +382,11 @@ public class IoTDBAggregationByLevelIT {
   public void groupByLevelWithAliasFailTest2() throws Exception {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      statement.execute(
+      statement.executeQuery(
           "select count(temperature) as ct from root.sg1.d1, root.sg2.d2 GROUP 
BY level=2");
       fail("No exception thrown");
     } catch (Exception e) {
+      System.out.println(e.getMessage());
       Assert.assertTrue(e.getMessage().contains("can only be matched with 
one"));
     }
   }
@@ -390,7 +396,7 @@ public class IoTDBAggregationByLevelIT {
   public void groupByLevelWithAliasFailTest3() throws Exception {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      statement.execute(
+      statement.executeQuery(
           "select count(temperature) as ct, count(temperature) as ct2 from 
root.sg1.d1 GROUP BY level=2");
       fail("No exception thrown");
     } catch (Exception e) {
@@ -404,11 +410,11 @@ public class IoTDBAggregationByLevelIT {
     String[] retArray2 = new String[] {"0,0", "100,1", "200,2", "300,0", 
"400,0", "500,0"};
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      statement.execute(
-          "select count(temperature) as ct from root.sg1.d1, root.sg1.d2 GROUP 
BY ([0, 600), 100ms), level=1");
 
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select count(temperature) as ct from root.sg1.d1, root.sg1.d2 
GROUP BY ([0, 600), 100ms), level=1")) {
         while (resultSet.next()) {
           String ans = resultSet.getString("Time") + "," + 
resultSet.getString("ct");
           Assert.assertEquals(retArray[cnt], ans);
@@ -416,11 +422,10 @@ public class IoTDBAggregationByLevelIT {
         }
       }
 
-      statement.execute(
-          "select count(temperature) as ct from root.sg1.* GROUP BY ([0, 600), 
100ms), level=1");
-
       cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select count(temperature) as ct from root.sg1.* GROUP BY ([0, 
600), 100ms), level=1")) {
         while (resultSet.next()) {
           String ans = resultSet.getString("Time") + "," + 
resultSet.getString("ct");
           Assert.assertEquals(retArray[cnt], ans);
@@ -430,9 +435,9 @@ public class IoTDBAggregationByLevelIT {
 
       cnt = 0;
       // root.sg1.d1.* -> [root.sg1.d1.status, root.sg1.d1.temperature] -> 
root.*.*.* -> ct
-      statement.execute(
-          "select count(*) as ct from root.sg1.d1 GROUP BY ([0, 600), 100ms), 
level=1");
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select count(*) as ct from root.sg1.d1 GROUP BY ([0, 600), 
100ms), level=1")) {
         while (resultSet.next()) {
           String ans = resultSet.getString("Time") + "," + 
resultSet.getString("ct");
           Assert.assertEquals(retArray2[cnt], ans);
@@ -451,7 +456,7 @@ public class IoTDBAggregationByLevelIT {
   public void groupByLevelWithAliasWithTimeIntervalFailTest() throws Exception 
{
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      statement.execute(
+      statement.executeQuery(
           "select count(temperature) as ct from root.sg1.* GROUP BY ([0, 600), 
100ms), level=2");
       fail();
     } catch (Exception e) {
@@ -464,7 +469,7 @@ public class IoTDBAggregationByLevelIT {
   public void groupByLevelWithAliasWithTimeIntervalFailTest2() throws 
Exception {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      statement.execute(
+      statement.executeQuery(
           "select count(temperature) as ct from root.sg1.d1, root.sg1.d2 GROUP 
BY ([0, 600), 100ms), level=2");
       fail();
     } catch (Exception e) {
@@ -477,41 +482,39 @@ public class IoTDBAggregationByLevelIT {
     String[] retArray = new String[] {"5,4", "4,6", "3"};
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      statement.execute(
-          "select count(temperature), count(status) from root.*.* GROUP BY 
level=1 slimit 2");
 
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select count(temperature), count(status) from root.*.* GROUP BY 
level=1 slimit 2")) {
         while (resultSet.next()) {
           String ans =
-              resultSet.getString(TestConstant.count("root.sg1.*.temperature"))
+              resultSet.getString(count("root.sg1.*.temperature"))
                   + ","
-                  + 
resultSet.getString(TestConstant.count("root.sg2.*.temperature"));
+                  + resultSet.getString(count("root.sg2.*.temperature"));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
       }
 
-      statement.execute(
-          "select count(temperature), count(status) from root.*.* GROUP BY 
level=1 slimit 2 soffset 1");
-
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select count(temperature), count(status) from root.*.* GROUP BY 
level=1 slimit 2 soffset 1")) {
         while (resultSet.next()) {
           String ans =
-              resultSet.getString(TestConstant.count("root.sg2.*.temperature"))
+              resultSet.getString(count("root.sg2.*.temperature"))
                   + ","
-                  + 
resultSet.getString(TestConstant.count("root.sg1.*.status"));
+                  + resultSet.getString(count("root.sg1.*.status"));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
       }
 
-      statement.execute(
-          "select count(temperature), count(status) from root.*.* GROUP BY 
level=1,2 slimit 1 soffset 4");
-
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select count(temperature), count(status) from root.*.* GROUP BY 
level=1,2 slimit 1 soffset 4")) {
         while (resultSet.next()) {
-          String ans = 
resultSet.getString(TestConstant.count("root.sg1.d1.status"));
+          String ans = resultSet.getString(count("root.sg1.d1.status"));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
@@ -537,30 +540,30 @@ public class IoTDBAggregationByLevelIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      statement.execute(
-          "select sum(temperature) from root.sg2.* GROUP BY ([0, 600), 100ms), 
level=1");
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select sum(temperature) from root.sg2.* GROUP BY ([0, 600), 
100ms), level=1")) {
         while (resultSet.next()) {
-          String ans = "" + 
resultSet.getString(TestConstant.sum("root.sg2.*.temperature"));
+          String ans = "" + resultSet.getString(sum("root.sg2.*.temperature"));
           Assert.assertEquals(retArray1[cnt], ans);
           cnt++;
         }
       }
 
       cnt = 0;
-      statement.execute(
-          "select max_time(temperature), avg(temperature) from root.*.* GROUP 
BY ([0, 600), 100ms), level=1");
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select max_time(temperature), avg(temperature) from root.*.* 
GROUP BY ([0, 600), 100ms), level=1")) {
         while (resultSet.next()) {
           String ans =
-              
resultSet.getString(TestConstant.maxTime("root.sg1.*.temperature"))
+              resultSet.getString(maxTime("root.sg1.*.temperature"))
                   + ","
-                  + 
resultSet.getString(TestConstant.maxTime("root.sg2.*.temperature"))
+                  + resultSet.getString(maxTime("root.sg2.*.temperature"))
                   + ","
-                  + 
resultSet.getString(TestConstant.avg("root.sg1.*.temperature"))
+                  + resultSet.getString(avg("root.sg1.*.temperature"))
                   + ","
-                  + 
resultSet.getString(TestConstant.avg("root.sg2.*.temperature"));
+                  + resultSet.getString(avg("root.sg2.*.temperature"));
           Assert.assertEquals(retArray2[cnt], ans);
           cnt++;
         }
@@ -577,16 +580,17 @@ public class IoTDBAggregationByLevelIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      statement.execute(
-          "select sum(temperature) from root.sg2.* GROUP BY ([0, 600), 100ms), 
level=0,1");
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select sum(temperature) from root.sg2.* GROUP BY ([0, 600), 
100ms), level=0,1")) {
         while (resultSet.next()) {
-          String ans = "" + 
resultSet.getString(TestConstant.sum("root.sg2.*.temperature"));
+          String ans = "" + resultSet.getString(sum("root.sg2.*.temperature"));
           Assert.assertEquals(retArray1[cnt], ans);
           cnt++;
         }
       }
+      Assert.assertEquals(6, cnt);
     }
   }
 
@@ -600,33 +604,33 @@ public class IoTDBAggregationByLevelIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      statement.execute(
-          "select count(temperature) from root.*.* GROUP BY ([0, 600), 100ms), 
level=1 slimit 2");
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select count(temperature) from root.*.* GROUP BY ([0, 600), 
100ms), level=1 slimit 2")) {
         while (resultSet.next()) {
           String ans =
-              resultSet.getString(TestConstant.TIMESTAMP_STR)
+              resultSet.getString(TIMESTAMP_STR)
                   + ","
-                  + 
resultSet.getString(TestConstant.count("root.sg1.*.temperature"))
+                  + resultSet.getString(count("root.sg1.*.temperature"))
                   + ","
-                  + 
resultSet.getString(TestConstant.count("root.sg2.*.temperature"));
+                  + resultSet.getString(count("root.sg2.*.temperature"));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
       }
 
-      statement.execute(
-          "select count(temperature), count(status) from root.*.* GROUP BY 
([0, 600), 100ms), level=1 slimit 2 soffset 1");
       cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select count(temperature), count(status) from root.*.* GROUP BY 
([0, 600), 100ms), level=1 slimit 2 soffset 1")) {
         while (resultSet.next()) {
           String ans =
-              resultSet.getString(TestConstant.TIMESTAMP_STR)
+              resultSet.getString(TIMESTAMP_STR)
                   + ","
-                  + 
resultSet.getString(TestConstant.count("root.sg2.*.temperature"))
+                  + resultSet.getString(count("root.sg2.*.temperature"))
                   + ","
-                  + 
resultSet.getString(TestConstant.count("root.sg1.*.status"));
+                  + resultSet.getString(count("root.sg1.*.status"));
           Assert.assertEquals(retArray2[cnt], ans);
           cnt++;
         }
@@ -634,30 +638,15 @@ public class IoTDBAggregationByLevelIT {
     }
   }
 
+  @Ignore
   @Test
   public void mismatchedFuncGroupByLevelTest() throws Exception {
-    String[] retArray =
-        new String[] {
-          "true", "3",
-        };
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      statement.execute("select last_value(status) from root.*.* GROUP BY 
level=0");
-
-      int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        while (resultSet.next()) {
-          String ans = resultSet.getString(1);
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-      }
-
-      try {
-        planner.parseSQLToPhysicalPlan("select avg(status) from root.sg2.* 
GROUP BY level=1");
-      } catch (Exception e) {
-        Assert.assertEquals("Aggregate among unmatched data types", 
e.getMessage());
-      }
+      statement.executeQuery("select last_value(status) from root.*.* GROUP BY 
level=0");
+      fail();
+    } catch (Exception e) {
+      Assert.assertTrue(e.getMessage().contains("the data types of the same 
output column"));
     }
   }
 
@@ -665,16 +654,20 @@ public class IoTDBAggregationByLevelIT {
    * Test group by level without aggregation function used in select clause. 
The expected situation
    * is throwing an exception.
    */
+  // TODO
+  @Ignore
   @Test
   public void TestGroupByLevelWithoutAggregationFunc() {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      statement.execute("select temperature from root.sg1.* group by level = 
2");
-
+      statement.executeQuery("select temperature from root.sg1.* group by 
level = 2");
       fail("No expected exception thrown");
     } catch (Exception e) {
-      
Assert.assertTrue(e.getMessage().contains(AggregationQueryOperator.ERROR_MESSAGE1));
+      Assert.assertTrue(
+          e.getMessage()
+              .contains(
+                  "Common queries and aggregated queries are not allowed to 
appear at the same time"));
     }
   }
 
diff --git 
a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationDeleteIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/aggregation/IoTDBAggregationDeleteIT.java
similarity index 79%
rename from 
integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationDeleteIT.java
rename to 
integration-test/src/test/java/org/apache/iotdb/db/it/aggregation/IoTDBAggregationDeleteIT.java
index 8862251e1a..3335e22f7f 100644
--- 
a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationDeleteIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/aggregation/IoTDBAggregationDeleteIT.java
@@ -16,13 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.iotdb.db.integration.aggregation;
+package org.apache.iotdb.db.it.aggregation;
 
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.integration.env.ConfigFactory;
-import org.apache.iotdb.integration.env.EnvFactory;
-import org.apache.iotdb.itbase.category.ClusterTest;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
+import org.apache.iotdb.it.env.ConfigFactory;
+import org.apache.iotdb.it.env.EnvFactory;
+import org.apache.iotdb.itbase.category.ClusterIT;
+import org.apache.iotdb.itbase.category.LocalStandaloneIT;
 
 import org.junit.After;
 import org.junit.Before;
@@ -36,9 +35,8 @@ import java.sql.Statement;
 
 import static org.apache.iotdb.db.constant.TestConstant.count;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
 
-@Category({LocalStandaloneTest.class, ClusterTest.class})
+@Category({LocalStandaloneIT.class, ClusterIT.class})
 public class IoTDBAggregationDeleteIT {
 
   private static String[] dataSet =
@@ -55,7 +53,7 @@ public class IoTDBAggregationDeleteIT {
 
   @Before
   public void setUp() throws Exception {
-    prevPartitionInterval = 
IoTDBDescriptor.getInstance().getConfig().getPartitionInterval();
+    prevPartitionInterval = ConfigFactory.getConfig().getPartitionInterval();
     ConfigFactory.getConfig().setPartitionInterval(1000);
     EnvFactory.getEnv().initBeforeTest();
     prepareData();
@@ -71,13 +69,14 @@ public class IoTDBAggregationDeleteIT {
   public void countAfterDeleteTest() throws SQLException {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      boolean hasResultSet = statement.execute("select count(*) from root");
 
-      assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      int cnt = 0;
+      try (ResultSet resultSet = statement.executeQuery("select count(**) from 
root")) {
         while (resultSet.next()) {
           assertEquals("3", resultSet.getString(count("root.turbine.d1.s1")));
+          cnt++;
         }
+        assertEquals(1, cnt);
       }
     }
   }
diff --git 
a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/aggregation/IoTDBAggregationIT.java
similarity index 72%
rename from 
integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationIT.java
rename to 
integration-test/src/test/java/org/apache/iotdb/db/it/aggregation/IoTDBAggregationIT.java
index bb2c8a7124..007ce9c4c2 100644
--- 
a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/aggregation/IoTDBAggregationIT.java
@@ -17,17 +17,16 @@
  * under the License.
  */
 
-package org.apache.iotdb.db.integration.aggregation;
+package org.apache.iotdb.db.it.aggregation;
 
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.integration.env.ConfigFactory;
-import org.apache.iotdb.integration.env.EnvFactory;
-import org.apache.iotdb.itbase.category.ClusterTest;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
+import org.apache.iotdb.it.env.EnvFactory;
+import org.apache.iotdb.itbase.category.ClusterIT;
+import org.apache.iotdb.itbase.category.LocalStandaloneIT;
 
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -51,14 +50,14 @@ import static org.apache.iotdb.db.constant.TestConstant.sum;
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.fail;
 
-@Category({LocalStandaloneTest.class, ClusterTest.class})
+@Category({LocalStandaloneIT.class, ClusterIT.class})
 public class IoTDBAggregationIT {
 
   private static final double DETLA = 1e-6;
   private static final String TIMESTAMP_STR = "Time";
   private static final String TEMPERATURE_STR = 
"root.ln.wf01.wt01.temperature";
 
-  private static String[] creationSqls =
+  private static final String[] creationSqls =
       new String[] {
         "SET STORAGE GROUP TO root.vehicle.d0",
         "SET STORAGE GROUP TO root.vehicle.d1",
@@ -68,7 +67,7 @@ public class IoTDBAggregationIT {
         "CREATE TIMESERIES root.vehicle.d0.s3 WITH DATATYPE=TEXT, 
ENCODING=PLAIN",
         "CREATE TIMESERIES root.vehicle.d0.s4 WITH DATATYPE=BOOLEAN, 
ENCODING=PLAIN"
       };
-  private static String[] dataSet2 =
+  private static final String[] dataSet2 =
       new String[] {
         "SET STORAGE GROUP TO root.ln.wf01.wt01",
         "CREATE TIMESERIES root.ln.wf01.wt01.status WITH DATATYPE=BOOLEAN, 
ENCODING=PLAIN",
@@ -85,7 +84,7 @@ public class IoTDBAggregationIT {
         "INSERT INTO root.ln.wf01.wt01(timestamp,temperature,status, hardware) 
"
             + "values(5, 5.5, false, 55)"
       };
-  private static String[] dataSet3 =
+  private static final String[] dataSet3 =
       new String[] {
         "SET STORAGE GROUP TO root.sg",
         "CREATE TIMESERIES root.sg.d1.s1 WITH DATATYPE=INT32, ENCODING=RLE",
@@ -97,7 +96,7 @@ public class IoTDBAggregationIT {
         "flush",
         "insert into root.sg.d1(timestamp,s1) values(1,111)",
         "insert into root.sg.d1(timestamp,s1) values(20,200)",
-        "flush"
+        "flush",
       };
   private final String d0s0 = "root.vehicle.d0.s0";
   private final String d0s1 = "root.vehicle.d0.s1";
@@ -109,9 +108,6 @@ public class IoTDBAggregationIT {
 
   @BeforeClass
   public static void setUp() throws Exception {
-
-    prevPartitionInterval = 
IoTDBDescriptor.getInstance().getConfig().getPartitionInterval();
-    ConfigFactory.getConfig().setPartitionInterval(1000);
     EnvFactory.getEnv().initBeforeClass();
     prepareData();
   }
@@ -119,23 +115,22 @@ public class IoTDBAggregationIT {
   @AfterClass
   public static void tearDown() throws Exception {
     EnvFactory.getEnv().cleanAfterClass();
-    ConfigFactory.getConfig().setPartitionInterval(prevPartitionInterval);
   }
 
   // add test for part of points in page don't satisfy filter
   // details in: https://issues.apache.org/jira/projects/IOTDB/issues/IOTDB-54
+  // TODO: remove ignore after supporting value filter
+  @Ignore
   @Test
   public void test() {
     String[] retArray = new String[] {"0,2", "0,4", "0,3"};
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute("SELECT count(temperature) FROM root.ln.wf01.wt01 
WHERE time > 3");
-
-      Assert.assertTrue(hasResultSet);
       int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT count(temperature) FROM root.ln.wf01.wt01 WHERE time > 
3")) {
         cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -148,11 +143,9 @@ public class IoTDBAggregationIT {
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
-              "SELECT count(temperature) FROM root.ln.wf01.wt01 WHERE time > 3 
order by time desc");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT count(temperature) FROM root.ln.wf01.wt01 WHERE time > 3 
order by time desc")) {
         cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -165,11 +158,9 @@ public class IoTDBAggregationIT {
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute("SELECT min_time(temperature) FROM 
root.ln.wf01.wt01 WHERE time > 3");
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT min_time(temperature) FROM root.ln.wf01.wt01 WHERE time 
> 3")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -181,12 +172,9 @@ public class IoTDBAggregationIT {
         Assert.assertEquals(2, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
-              "SELECT min_time(temperature) FROM root.ln.wf01.wt01 WHERE 
temperature > 3");
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT min_time(temperature) FROM root.ln.wf01.wt01 WHERE 
temperature > 3")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -199,7 +187,7 @@ public class IoTDBAggregationIT {
       }
 
       try {
-        statement.execute("SELECT max(root.temperature) from 
root.ln.wf01.wt01");
+        statement.executeQuery("SELECT max(root.temperature) from 
root.ln.wf01.wt01");
         fail();
       } catch (Exception ignored) {
       }
@@ -214,14 +202,12 @@ public class IoTDBAggregationIT {
     String[] retArray = new String[] {"0,2001,2001,2001,2001", 
"0,7500,7500,7500,7500"};
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT count(s0),count(s1),count(s2),count(s3) "
-                  + "FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 
9000");
 
-      Assert.assertTrue(hasResultSet);
       int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT count(s0),count(s1),count(s2),count(s3) "
+                  + "FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 
9000")) {
         cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -240,12 +226,9 @@ public class IoTDBAggregationIT {
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
-              "SELECT count(s0),count(s1),count(s2),count(s3) " + "FROM 
root.vehicle.d0");
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT count(s0),count(s1),count(s2),count(s3) " + "FROM 
root.vehicle.d0")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -264,12 +247,10 @@ public class IoTDBAggregationIT {
       }
 
       // keep the correctness of `order by time desc`
-      hasResultSet =
-          statement.execute(
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "SELECT count(s0),count(s1),count(s2),count(s3) "
-                  + "FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 9000 
order by time desc");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 9000 
order by time desc")) {
         cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -288,12 +269,10 @@ public class IoTDBAggregationIT {
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "SELECT count(s0),count(s1),count(s2),count(s3) "
-                  + "FROM root.vehicle.d0 order by time desc");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "FROM root.vehicle.d0 order by time desc")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -322,13 +301,11 @@ public class IoTDBAggregationIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT 
first_value(s0),first_value(s1),first_value(s2),first_value(s3) "
-                  + "FROM root.vehicle.d0 WHERE time >= 1500 AND time <= 
9000");
-      Assert.assertTrue(hasResultSet);
       int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT 
first_value(s0),first_value(s1),first_value(s2),first_value(s3) "
+                  + "FROM root.vehicle.d0 WHERE time >= 1500 AND time <= 
9000")) {
         cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -347,12 +324,10 @@ public class IoTDBAggregationIT {
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "SELECT 
first_value(s0),first_value(s1),first_value(s2),first_value(s3) "
-                  + "FROM root.vehicle.d0");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "FROM root.vehicle.d0")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -371,12 +346,10 @@ public class IoTDBAggregationIT {
       }
 
       // keep the correctness of `order by time desc`
-      hasResultSet =
-          statement.execute(
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "SELECT 
first_value(s0),first_value(s1),first_value(s2),first_value(s3) "
-                  + "FROM root.vehicle.d0 WHERE time >= 1500 AND time <= 9000 
order by time desc");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "FROM root.vehicle.d0 WHERE time >= 1500 AND time <= 9000 
order by time desc")) {
         cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -406,13 +379,11 @@ public class IoTDBAggregationIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT last_value(s0),last_value(s2) "
-                  + "FROM root.vehicle.d0 WHERE time >= 1500 AND time < 9000");
-      Assert.assertTrue(hasResultSet);
       int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT last_value(s0),last_value(s2) "
+                  + "FROM root.vehicle.d0 WHERE time >= 1500 AND time < 
9000")) {
         cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -427,11 +398,10 @@ public class IoTDBAggregationIT {
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
-              "SELECT last_value(s0),last_value(s2) " + "FROM root.vehicle.d0 
WHERE time <= 1600");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT last_value(s0),last_value(s2) "
+                  + "FROM root.vehicle.d0 WHERE time <= 1600")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -445,12 +415,10 @@ public class IoTDBAggregationIT {
         Assert.assertEquals(2, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
-              "SELECT last_value(s0),last_value(s2) " + "FROM root.vehicle.d0 
WHERE time <= 2200");
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT last_value(s0),last_value(s2) "
+                  + "FROM root.vehicle.d0 WHERE time <= 2200")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -464,13 +432,10 @@ public class IoTDBAggregationIT {
         Assert.assertEquals(3, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "SELECT last_value(s0),last_value(s2) "
-                  + "FROM root.vehicle.d0 WHERE time <= 2200 order by time 
desc");
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "FROM root.vehicle.d0 WHERE time <= 2200 order by time 
desc")) {
         cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -486,12 +451,10 @@ public class IoTDBAggregationIT {
       }
 
       // keep the correctness of `order by time desc`
-      hasResultSet =
-          statement.execute(
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "SELECT last_value(s0),last_value(s2) "
-                  + "FROM root.vehicle.d0 WHERE time >= 1500 AND time < 9000 
order by time desc");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "FROM root.vehicle.d0 WHERE time >= 1500 AND time < 9000 
order by time desc")) {
         cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -517,13 +480,11 @@ public class IoTDBAggregationIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT max_time(s0),min_time(s2) "
-                  + "FROM root.vehicle.d0 WHERE time >= 100 AND time < 9000");
-      Assert.assertTrue(hasResultSet);
       int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT max_time(s0),min_time(s2) "
+                  + "FROM root.vehicle.d0 WHERE time >= 100 AND time < 9000")) 
{
         cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -538,12 +499,10 @@ public class IoTDBAggregationIT {
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "SELECT max_time(s0),min_time(s2) "
-                  + "FROM root.vehicle.d0 WHERE time <= 2500 AND time > 1800");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "FROM root.vehicle.d0 WHERE time <= 2500 AND time > 
1800")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -558,12 +517,10 @@ public class IoTDBAggregationIT {
       }
 
       // keep the correctness of `order by time desc`
-      hasResultSet =
-          statement.execute(
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "SELECT max_time(s0),min_time(s2) "
-                  + "FROM root.vehicle.d0 WHERE time >= 100 AND time < 9000 
order by time desc");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "FROM root.vehicle.d0 WHERE time >= 100 AND time < 9000 
order by time desc")) {
         cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -592,13 +549,11 @@ public class IoTDBAggregationIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT first_value(temperature),last_value(temperature) "
-                  + "FROM root.ln.wf01.wt01 WHERE time > 1 AND time < 5");
-      Assert.assertTrue(hasResultSet);
       int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT first_value(temperature),last_value(temperature) "
+                  + "FROM root.ln.wf01.wt01 WHERE time > 1 AND time < 5")) {
         cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -621,14 +576,11 @@ public class IoTDBAggregationIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT max_value(s0),min_value(s2) "
-                  + "FROM root.vehicle.d0 WHERE time >= 100 AND time < 9000");
-
-      Assert.assertTrue(hasResultSet);
       int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT max_value(s0),min_value(s2) "
+                  + "FROM root.vehicle.d0 WHERE time >= 100 AND time < 9000")) 
{
         cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -643,12 +595,9 @@ public class IoTDBAggregationIT {
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
-              "SELECT max_value(s0),min_value(s2) " + "FROM root.vehicle.d0 
WHERE time < 2500");
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT max_value(s0),min_value(s2) " + "FROM root.vehicle.d0 
WHERE time < 2500")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -663,14 +612,11 @@ public class IoTDBAggregationIT {
       }
 
       // keep the correctness of `order by time desc`
-      hasResultSet =
-          statement.execute(
-              "SELECT max_value(s0),min_value(s2) "
-                  + "FROM root.vehicle.d0 WHERE time >= 100 AND time < 9000 
order by time desc");
-
-      Assert.assertTrue(hasResultSet);
       cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT max_value(s0),min_value(s2) "
+                  + "FROM root.vehicle.d0 WHERE time >= 100 AND time < 9000 
order by time desc")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -699,37 +645,31 @@ public class IoTDBAggregationIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT sum(s0),avg(s2)"
-                  + "FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 
9000");
-
-      Assert.assertTrue(hasResultSet);
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT sum(s0),avg(s2)"
+                  + "FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 
9000")) {
         while (resultSet.next()) {
           double[] ans = new double[3];
-          ans[0] = Double.valueOf(resultSet.getString(TIMESTAMP_STR));
-          ans[1] = Double.valueOf(resultSet.getString(sum(d0s0)));
-          ans[2] = Double.valueOf(resultSet.getString(avg(d0s2)));
+          ans[0] = Double.parseDouble(resultSet.getString(TIMESTAMP_STR));
+          ans[1] = Double.parseDouble(resultSet.getString(sum(d0s0)));
+          ans[2] = Double.parseDouble(resultSet.getString(avg(d0s2)));
           assertArrayEquals(retArray[cnt], ans, DETLA);
           cnt++;
         }
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "SELECT sum(s0),avg(s2)"
-                  + "FROM root.vehicle.d0 WHERE time >= 1000 AND time <= 
2000");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "FROM root.vehicle.d0 WHERE time >= 1000 AND time <= 
2000")) {
         while (resultSet.next()) {
           double[] ans = new double[3];
-          ans[0] = Double.valueOf(resultSet.getString(TIMESTAMP_STR));
-          ans[1] = Double.valueOf(resultSet.getString(sum(d0s0)));
-          ans[2] = Double.valueOf(resultSet.getString(avg(d0s2)));
+          ans[0] = Double.parseDouble(resultSet.getString(TIMESTAMP_STR));
+          ans[1] = Double.parseDouble(resultSet.getString(sum(d0s0)));
+          ans[2] = Double.parseDouble(resultSet.getString(avg(d0s2)));
           assertArrayEquals(retArray[cnt], ans, DETLA);
           cnt++;
         }
@@ -737,19 +677,16 @@ public class IoTDBAggregationIT {
       }
 
       // keep the correctness of `order by time desc`
-      hasResultSet =
-          statement.execute(
-              "SELECT sum(s0),avg(s2)"
-                  + "FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 9000 
order by time desc");
-
-      Assert.assertTrue(hasResultSet);
       cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT sum(s0),avg(s2)"
+                  + "FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 9000 
order by time desc")) {
         while (resultSet.next()) {
           double[] ans = new double[3];
-          ans[0] = Double.valueOf(resultSet.getString(TIMESTAMP_STR));
-          ans[1] = Double.valueOf(resultSet.getString(sum(d0s0)));
-          ans[2] = Double.valueOf(resultSet.getString(avg(d0s2)));
+          ans[0] = Double.parseDouble(resultSet.getString(TIMESTAMP_STR));
+          ans[1] = Double.parseDouble(resultSet.getString(sum(d0s0)));
+          ans[2] = Double.parseDouble(resultSet.getString(avg(d0s2)));
           assertArrayEquals(retArray[cnt], ans, DETLA);
           cnt++;
         }
@@ -761,14 +698,15 @@ public class IoTDBAggregationIT {
     }
   }
 
+  @Ignore
   @Test
   public void avgSumErrorTest() {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
       try {
-        statement.execute(
-            "SELECT avg(s3)" + "FROM root.vehicle.d0 WHERE time >= 6000 AND 
time <= 9000");
-        try (ResultSet resultSet = statement.getResultSet()) {
+        try (ResultSet resultSet =
+            statement.executeQuery(
+                "SELECT avg(s3) FROM root.vehicle.d0 WHERE time >= 6000 AND 
time <= 9000")) {
           resultSet.next();
           fail();
         }
@@ -780,9 +718,9 @@ public class IoTDBAggregationIT {
                     "Aggregate functions [AVG, SUM, EXTREME, MIN_VALUE, 
MAX_VALUE] only support numeric data types [INT32, INT64, FLOAT, DOUBLE]"));
       }
       try {
-        statement.execute(
-            "SELECT sum(s3)" + "FROM root.vehicle.d0 WHERE time >= 6000 AND 
time <= 9000");
-        try (ResultSet resultSet = statement.getResultSet()) {
+        try (ResultSet resultSet =
+            statement.executeQuery(
+                "SELECT sum(s3)" + "FROM root.vehicle.d0 WHERE time >= 6000 
AND time <= 9000")) {
           resultSet.next();
           fail();
         }
@@ -793,9 +731,9 @@ public class IoTDBAggregationIT {
                     "Aggregate functions [AVG, SUM, EXTREME, MIN_VALUE, 
MAX_VALUE] only support numeric data types [INT32, INT64, FLOAT, DOUBLE]"));
       }
       try {
-        statement.execute(
-            "SELECT avg(s4)" + "FROM root.vehicle.d0 WHERE time >= 6000 AND 
time <= 9000");
-        try (ResultSet resultSet = statement.getResultSet()) {
+        try (ResultSet resultSet =
+            statement.executeQuery(
+                "SELECT avg(s4)" + "FROM root.vehicle.d0 WHERE time >= 6000 
AND time <= 9000")) {
           resultSet.next();
           fail();
         }
@@ -806,9 +744,9 @@ public class IoTDBAggregationIT {
                     "Aggregate functions [AVG, SUM, EXTREME, MIN_VALUE, 
MAX_VALUE] only support numeric data types [INT32, INT64, FLOAT, DOUBLE]"));
       }
       try {
-        statement.execute(
-            "SELECT sum(s4)" + "FROM root.vehicle.d0 WHERE time >= 6000 AND 
time <= 9000");
-        try (ResultSet resultSet = statement.getResultSet()) {
+        try (ResultSet resultSet =
+            statement.executeQuery(
+                "SELECT sum(s4)" + "FROM root.vehicle.d0 WHERE time >= 6000 
AND time <= 9000")) {
           resultSet.next();
           fail();
         }
@@ -820,8 +758,8 @@ public class IoTDBAggregationIT {
                     "Aggregate functions [AVG, SUM, EXTREME, MIN_VALUE, 
MAX_VALUE] only support numeric data types [INT32, INT64, FLOAT, DOUBLE]"));
       }
       try {
-        statement.execute("SELECT avg(status) FROM root.ln.wf01.wt01");
-        try (ResultSet resultSet = statement.getResultSet()) {
+        try (ResultSet resultSet =
+            statement.executeQuery("SELECT avg(status) FROM 
root.ln.wf01.wt01")) {
           resultSet.next();
           fail();
         }
@@ -851,83 +789,71 @@ public class IoTDBAggregationIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT sum(s0), avg(s2), avg(s0), sum(s2)"
-                  + "FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 
9000");
-
-      Assert.assertTrue(hasResultSet);
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT sum(s0), avg(s2), avg(s0), sum(s2)"
+                  + "FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 
9000")) {
         while (resultSet.next()) {
           double[] ans = new double[5];
-          ans[0] = Double.valueOf(resultSet.getString(TIMESTAMP_STR));
-          ans[1] = Double.valueOf(resultSet.getString(sum(d0s0)));
-          ans[2] = Double.valueOf(resultSet.getString(avg(d0s2)));
-          ans[3] = Double.valueOf(resultSet.getString(avg(d0s0)));
-          ans[4] = Double.valueOf(resultSet.getString(sum(d0s2)));
+          ans[0] = Double.parseDouble(resultSet.getString(TIMESTAMP_STR));
+          ans[1] = Double.parseDouble(resultSet.getString(sum(d0s0)));
+          ans[2] = Double.parseDouble(resultSet.getString(avg(d0s2)));
+          ans[3] = Double.parseDouble(resultSet.getString(avg(d0s0)));
+          ans[4] = Double.parseDouble(resultSet.getString(sum(d0s2)));
           assertArrayEquals(retArray[cnt], ans, DETLA);
           cnt++;
         }
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "SELECT sum(s0), avg(s2), avg(s0), sum(s2)"
-                  + "FROM root.vehicle.d0 WHERE time >= 1000 AND time <= 
2000");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "FROM root.vehicle.d0 WHERE time >= 1000 AND time <= 
2000")) {
         while (resultSet.next()) {
           double[] ans = new double[5];
-          ans[0] = Double.valueOf(resultSet.getString(TIMESTAMP_STR));
-          ans[1] = Double.valueOf(resultSet.getString(sum(d0s0)));
-          ans[2] = Double.valueOf(resultSet.getString(avg(d0s2)));
-          ans[3] = Double.valueOf(resultSet.getString(avg(d0s0)));
-          ans[4] = Double.valueOf(resultSet.getString(sum(d0s2)));
+          ans[0] = Double.parseDouble(resultSet.getString(TIMESTAMP_STR));
+          ans[1] = Double.parseDouble(resultSet.getString(sum(d0s0)));
+          ans[2] = Double.parseDouble(resultSet.getString(avg(d0s2)));
+          ans[3] = Double.parseDouble(resultSet.getString(avg(d0s0)));
+          ans[4] = Double.parseDouble(resultSet.getString(sum(d0s2)));
           assertArrayEquals(retArray[cnt], ans, DETLA);
           cnt++;
         }
         Assert.assertEquals(2, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "SELECT sum(s0), count(s0), avg(s2), avg(s0)"
-                  + "FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 
9000");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 
9000")) {
         while (resultSet.next()) {
           double[] ans = new double[5];
-          ans[0] = Double.valueOf(resultSet.getString(TIMESTAMP_STR));
-          ans[1] = Double.valueOf(resultSet.getString(sum(d0s0)));
-          ans[2] = Double.valueOf(resultSet.getString(count(d0s0)));
-          ans[3] = Double.valueOf(resultSet.getString(avg(d0s2)));
-          ans[4] = Double.valueOf(resultSet.getString(avg(d0s0)));
+          ans[0] = Double.parseDouble(resultSet.getString(TIMESTAMP_STR));
+          ans[1] = Double.parseDouble(resultSet.getString(sum(d0s0)));
+          ans[2] = Double.parseDouble(resultSet.getString(count(d0s0)));
+          ans[3] = Double.parseDouble(resultSet.getString(avg(d0s2)));
+          ans[4] = Double.parseDouble(resultSet.getString(avg(d0s0)));
           assertArrayEquals(retArray[cnt], ans, DETLA);
           cnt++;
         }
         Assert.assertEquals(3, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "SELECT sum(s2), count(s0), avg(s2), avg(s1), count(s2),sum(s0)"
-                  + "FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 
9000");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 
9000")) {
         while (resultSet.next()) {
           double[] ans = new double[7];
-          ans[0] = Double.valueOf(resultSet.getString(TIMESTAMP_STR));
-          ans[1] = Double.valueOf(resultSet.getString(sum(d0s2)));
-          ans[2] = Double.valueOf(resultSet.getString(count(d0s0)));
-          ans[3] = Double.valueOf(resultSet.getString(avg(d0s2)));
-          ans[4] = Double.valueOf(resultSet.getString(avg(d0s1)));
-          ans[5] = Double.valueOf(resultSet.getString(count(d0s2)));
-          ans[6] = Double.valueOf(resultSet.getString(sum(d0s0)));
+          ans[0] = Double.parseDouble(resultSet.getString(TIMESTAMP_STR));
+          ans[1] = Double.parseDouble(resultSet.getString(sum(d0s2)));
+          ans[2] = Double.parseDouble(resultSet.getString(count(d0s0)));
+          ans[3] = Double.parseDouble(resultSet.getString(avg(d0s2)));
+          ans[4] = Double.parseDouble(resultSet.getString(avg(d0s1)));
+          ans[5] = Double.parseDouble(resultSet.getString(count(d0s2)));
+          ans[6] = Double.parseDouble(resultSet.getString(sum(d0s0)));
           assertArrayEquals(retArray[cnt], ans, DETLA);
           cnt++;
         }
@@ -948,12 +874,9 @@ public class IoTDBAggregationIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute("SELECT max_time(s1) FROM root.sg.d1 where time < 
15");
-
-      Assert.assertTrue(hasResultSet);
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery("SELECT max_time(s1) FROM root.sg.d1 where 
time < 15")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -978,51 +901,76 @@ public class IoTDBAggregationIT {
         statement.execute(sql);
       }
 
+      // TODO: change insert to batch insert
       // prepare BufferWrite file
       for (int i = 5000; i < 7000; i++) {
-        statement.addBatch(
+        //        statement.addBatch(
+        //            String.format(
+        //                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, 
"'" + i + "'",
+        // "true"));
+        statement.execute(
             String.format(
                 Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + 
"'", "true"));
       }
-      statement.executeBatch();
-      statement.execute("FLUSH");
+      // statement.executeBatch();
+      statement.execute("flush");
+
       for (int i = 7500; i < 8500; i++) {
-        statement.addBatch(
+        statement.execute(
             String.format(
-                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + 
"'", "false"));
+                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + 
"'", "true"));
+        //        statement.addBatch(
+        //            String.format(
+        //                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, 
"'" + i + "'",
+        // "false"));
       }
-      statement.executeBatch();
-      statement.execute("FLUSH");
+      // statement.executeBatch();
+      statement.execute("flush");
       // prepare Unseq-File
       for (int i = 500; i < 1500; i++) {
-        statement.addBatch(
+        //        statement.addBatch(
+        //            String.format(
+        //                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, 
"'" + i + "'",
+        // "true"));
+        statement.execute(
             String.format(
                 Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + 
"'", "true"));
       }
-      statement.executeBatch();
-      statement.execute("FLUSH");
+      // statement.executeBatch();
+      statement.execute("flush");
       for (int i = 3000; i < 6500; i++) {
-        statement.addBatch(
+        //        statement.addBatch(
+        //            String.format(
+        //                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, 
"'" + i + "'",
+        // "false"));
+        statement.execute(
             String.format(
-                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + 
"'", "false"));
+                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + 
"'", "true"));
       }
-      statement.executeBatch();
-      statement.execute("MERGE");
+      // statement.executeBatch();
 
       // prepare BufferWrite cache
       for (int i = 9000; i < 10000; i++) {
-        statement.addBatch(
+        //        statement.addBatch(
+        //            String.format(
+        //                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, 
"'" + i + "'",
+        // "true"));
+        statement.execute(
             String.format(
                 Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + 
"'", "true"));
       }
-      statement.executeBatch();
+      // statement.executeBatch();
       // prepare Overflow cache
       for (int i = 2000; i < 2500; i++) {
-        statement.addBatch(
+        //        statement.addBatch(
+        //            String.format(
+        //                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, 
"'" + i + "'",
+        // "false"));
+        statement.execute(
             String.format(
-                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + 
"'", "false"));
+                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + 
"'", "true"));
       }
-      statement.executeBatch();
+      // statement.executeBatch();
 
       for (String sql : dataSet3) {
         statement.execute(sql);
@@ -1040,21 +988,19 @@ public class IoTDBAggregationIT {
   public void timeWasNullTest() throws Exception {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select max_value(temperature),count(status) from 
root.ln.wf01.wt01 group by ([0, 600), 100ms);");
-      Assert.assertTrue(hasResultSet);
-      ResultSet resultSet = statement.getResultSet();
-      ResultSetMetaData metaData = resultSet.getMetaData();
-      int columnCount = metaData.getColumnCount();
-      while (resultSet.next()) {
-        for (int i = 1; i <= columnCount; i++) {
-          int ct = metaData.getColumnType(i);
-          if (ct == Types.TIMESTAMP) {
-            if (resultSet.wasNull()) {
-              Assert.assertTrue(false);
-            } else {
-              Assert.assertTrue(true);
+
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select max_value(temperature),count(status) from 
root.ln.wf01.wt01 group by ([0, 600), 100ms)")) {
+        ResultSetMetaData metaData = resultSet.getMetaData();
+        int columnCount = metaData.getColumnCount();
+        while (resultSet.next()) {
+          for (int i = 1; i <= columnCount; i++) {
+            int ct = metaData.getColumnType(i);
+            if (ct == Types.TIMESTAMP) {
+              if (resultSet.wasNull()) {
+                fail();
+              }
             }
           }
         }
diff --git 
a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationLargeDataIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/aggregation/IoTDBAggregationLargeDataIT.java
similarity index 75%
rename from 
integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationLargeDataIT.java
rename to 
integration-test/src/test/java/org/apache/iotdb/db/it/aggregation/IoTDBAggregationLargeDataIT.java
index 21aa762d31..01ef6b3cd9 100644
--- 
a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationLargeDataIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/aggregation/IoTDBAggregationLargeDataIT.java
@@ -17,18 +17,17 @@
  * under the License.
  */
 
-package org.apache.iotdb.db.integration.aggregation;
+package org.apache.iotdb.db.it.aggregation;
 
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.integration.env.ConfigFactory;
-import org.apache.iotdb.integration.env.EnvFactory;
-import org.apache.iotdb.itbase.category.ClusterTest;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-import org.apache.iotdb.jdbc.Config;
+import org.apache.iotdb.it.env.ConfigFactory;
+import org.apache.iotdb.it.env.EnvFactory;
+import org.apache.iotdb.itbase.category.ClusterIT;
+import org.apache.iotdb.itbase.category.LocalStandaloneIT;
 
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -48,7 +47,9 @@ import static 
org.apache.iotdb.db.constant.TestConstant.minValue;
 import static org.apache.iotdb.db.constant.TestConstant.sum;
 import static org.junit.Assert.fail;
 
-@Category({LocalStandaloneTest.class, ClusterTest.class})
+// TODO: remove ignore after supporting value filter
+@Ignore
+@Category({LocalStandaloneIT.class, ClusterIT.class})
 public class IoTDBAggregationLargeDataIT {
 
   private static final String TIMESTAMP_STR = "Time";
@@ -118,7 +119,7 @@ public class IoTDBAggregationLargeDataIT {
 
   @BeforeClass
   public static void setUp() throws Exception {
-    prevPartitionInterval = 
IoTDBDescriptor.getInstance().getConfig().getPartitionInterval();
+    prevPartitionInterval = ConfigFactory.getConfig().getPartitionInterval();
     EnvFactory.getEnv().initBeforeClass();
     insertSQL();
   }
@@ -135,12 +136,11 @@ public class IoTDBAggregationLargeDataIT {
 
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
+
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "select 
last_value(s0),last_value(s1),last_value(s2),last_value(s3),last_value(s4)"
-                  + " from root.vehicle.d0 where s1 >= 0");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + " from root.vehicle.d0 where s1 >= 0")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -161,12 +161,10 @@ public class IoTDBAggregationLargeDataIT {
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "select 
last_value(s0),last_value(s1),last_value(s2),last_value(s3),last_value(s4)"
-                  + " from root.vehicle.d0 where s1 >= 0 order by time desc");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + " from root.vehicle.d0 where s1 >= 0 order by time desc")) 
{
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -199,11 +197,9 @@ public class IoTDBAggregationLargeDataIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
-              "select sum(s0),sum(s1),sum(s2)" + " from root.vehicle.d0 where 
s1 >= 0");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select sum(s0),sum(s1),sum(s2) from root.vehicle.d0 where s1 >= 
0")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -220,12 +216,10 @@ public class IoTDBAggregationLargeDataIT {
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "select sum(s0),sum(s1),sum(s2)"
-                  + " from root.vehicle.d0 where s1 >= 0 order by time desc");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + " from root.vehicle.d0 where s1 >= 0 order by time desc")) 
{
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -254,12 +248,10 @@ public class IoTDBAggregationLargeDataIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "select 
first_value(s0),first_value(s1),first_value(s2),first_value(s3),"
-                  + "first_value(s4) from root.vehicle.d0 where s1 >= 0");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "first_value(s4) from root.vehicle.d0 where s1 >= 0")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -281,12 +273,10 @@ public class IoTDBAggregationLargeDataIT {
       }
 
       // keep the correctness of `order by time desc`
-      hasResultSet =
-          statement.execute(
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "select 
first_value(s0),first_value(s1),first_value(s2),first_value(s3),"
-                  + "first_value(s4) from root.vehicle.d0 where s1 >= 0 order 
by time desc");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "first_value(s4) from root.vehicle.d0 where s1 >= 0 order 
by time desc")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -318,10 +308,9 @@ public class IoTDBAggregationLargeDataIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute("select avg(s0),avg(s1),avg(s2) from 
root.vehicle.d0 where s1 >= 0");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select avg(s0),avg(s1),avg(s2) from root.vehicle.d0 where s1 >= 
0")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -338,11 +327,9 @@ public class IoTDBAggregationLargeDataIT {
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
-              "select avg(s0),avg(s1),avg(s2) from root.vehicle.d0 where s1 >= 
0 order by time desc");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select avg(s0),avg(s1),avg(s2) from root.vehicle.d0 where s1 >= 
0 order by time desc")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -371,11 +358,9 @@ public class IoTDBAggregationLargeDataIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
-              "select count(s0),count(s1),count(s2) from root.vehicle.d0 where 
s1 >= 0");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select count(s0),count(s1),count(s2) from root.vehicle.d0 where 
s1 >= 0")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -392,11 +377,9 @@ public class IoTDBAggregationLargeDataIT {
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
-              "select count(s0),count(s1),count(s2) from root.vehicle.d0 where 
s1 >= 0 order by time desc");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select count(s0),count(s1),count(s2) from root.vehicle.d0 where 
s1 >= 0 order by time desc")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -425,14 +408,11 @@ public class IoTDBAggregationLargeDataIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
-              "select 
min_time(s0),min_time(s1),min_time(s2),min_time(s3),min_time(s4)"
-                  + " from root.vehicle.d0 where s1 >= 0");
-      Assert.assertTrue(hasResultSet);
       int cnt = 0;
-
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select 
min_time(s0),min_time(s1),min_time(s2),min_time(s3),min_time(s4)"
+                  + " from root.vehicle.d0 where s1 >= 0")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -453,13 +433,11 @@ public class IoTDBAggregationLargeDataIT {
       }
 
       // keep the correctness of `order by time desc`
-      hasResultSet =
-          statement.execute(
-              "select 
min_time(s0),min_time(s1),min_time(s2),min_time(s3),min_time(s4)"
-                  + " from root.vehicle.d0 where s1 >= 0 order by time desc");
-      Assert.assertTrue(hasResultSet);
       cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select 
min_time(s0),min_time(s1),min_time(s2),min_time(s3),min_time(s4)"
+                  + " from root.vehicle.d0 where s1 >= 0 order by time desc")) 
{
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -490,52 +468,45 @@ public class IoTDBAggregationLargeDataIT {
 
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select min_value(s0),min_value(s1),min_value(s2) from 
root.vehicle.d0 "
-                  + "where s1 < 50000 and s1 != 100");
 
-      if (hasResultSet) {
-        int cnt = 0;
-        try (ResultSet resultSet = statement.getResultSet()) {
-          while (resultSet.next()) {
-            String ans =
-                resultSet.getString(TIMESTAMP_STR)
-                    + ","
-                    + resultSet.getString(minValue(d0s0))
-                    + ","
-                    + resultSet.getString(minValue(d0s1))
-                    + ","
-                    + resultSet.getString(minValue(d0s2));
-            Assert.assertEquals(retArray[cnt], ans);
-            cnt++;
-          }
-          Assert.assertEquals(1, cnt);
+      int cnt = 0;
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select min_value(s0),min_value(s1),min_value(s2) from 
root.vehicle.d0 "
+                  + "where s1 < 50000 and s1 != 100")) {
+        while (resultSet.next()) {
+          String ans =
+              resultSet.getString(TIMESTAMP_STR)
+                  + ","
+                  + resultSet.getString(minValue(d0s0))
+                  + ","
+                  + resultSet.getString(minValue(d0s1))
+                  + ","
+                  + resultSet.getString(minValue(d0s2));
+          Assert.assertEquals(retArray[cnt], ans);
+          cnt++;
         }
+        Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
+      cnt = 0;
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "select min_value(s0),min_value(s1),min_value(s2) from 
root.vehicle.d0 "
-                  + "where s1 < 50000 and s1 != 100 order by time desc");
-
-      if (hasResultSet) {
-        int cnt = 0;
-        try (ResultSet resultSet = statement.getResultSet()) {
-          while (resultSet.next()) {
-            String ans =
-                resultSet.getString(TIMESTAMP_STR)
-                    + ","
-                    + resultSet.getString(minValue(d0s0))
-                    + ","
-                    + resultSet.getString(minValue(d0s1))
-                    + ","
-                    + resultSet.getString(minValue(d0s2));
-            Assert.assertEquals(retArray[cnt], ans);
-            cnt++;
-          }
-          Assert.assertEquals(1, cnt);
+                  + "where s1 < 50000 and s1 != 100 order by time desc")) {
+        while (resultSet.next()) {
+          String ans =
+              resultSet.getString(TIMESTAMP_STR)
+                  + ","
+                  + resultSet.getString(minValue(d0s0))
+                  + ","
+                  + resultSet.getString(minValue(d0s1))
+                  + ","
+                  + resultSet.getString(minValue(d0s2));
+          Assert.assertEquals(retArray[cnt], ans);
+          cnt++;
         }
+        Assert.assertEquals(1, cnt);
       }
     } catch (Exception e) {
       e.printStackTrace();
@@ -550,52 +521,44 @@ public class IoTDBAggregationLargeDataIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
+      int cnt = 0;
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "select max_value(s0),max_value(s1),max_value(s2) from 
root.vehicle.d0 "
-                  + "where s1 < 50000 and s1 != 100");
-
-      if (hasResultSet) {
-        int cnt = 0;
-        try (ResultSet resultSet = statement.getResultSet()) {
-          while (resultSet.next()) {
-            String ans =
-                resultSet.getString(TIMESTAMP_STR)
-                    + ","
-                    + resultSet.getString(maxValue(d0s0))
-                    + ","
-                    + resultSet.getString(maxValue(d0s1))
-                    + ","
-                    + resultSet.getString(maxValue(d0s2));
-            Assert.assertEquals(retArray[cnt], ans);
-            cnt++;
-          }
-          Assert.assertEquals(1, cnt);
+                  + "where s1 < 50000 and s1 != 100")) {
+        while (resultSet.next()) {
+          String ans =
+              resultSet.getString(TIMESTAMP_STR)
+                  + ","
+                  + resultSet.getString(maxValue(d0s0))
+                  + ","
+                  + resultSet.getString(maxValue(d0s1))
+                  + ","
+                  + resultSet.getString(maxValue(d0s2));
+          Assert.assertEquals(retArray[cnt], ans);
+          cnt++;
         }
+        Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
+      cnt = 0;
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "select max_value(s0),max_value(s1),max_value(s2) from 
root.vehicle.d0 "
-                  + "where s1 < 50000 and s1 != 100 order by time desc");
-
-      if (hasResultSet) {
-        int cnt = 0;
-        try (ResultSet resultSet = statement.getResultSet()) {
-          while (resultSet.next()) {
-            String ans =
-                resultSet.getString(TIMESTAMP_STR)
-                    + ","
-                    + resultSet.getString(maxValue(d0s0))
-                    + ","
-                    + resultSet.getString(maxValue(d0s1))
-                    + ","
-                    + resultSet.getString(maxValue(d0s2));
-            Assert.assertEquals(retArray[cnt], ans);
-            cnt++;
-          }
-          Assert.assertEquals(1, cnt);
+                  + "where s1 < 50000 and s1 != 100 order by time desc")) {
+        while (resultSet.next()) {
+          String ans =
+              resultSet.getString(TIMESTAMP_STR)
+                  + ","
+                  + resultSet.getString(maxValue(d0s0))
+                  + ","
+                  + resultSet.getString(maxValue(d0s1))
+                  + ","
+                  + resultSet.getString(maxValue(d0s2));
+          Assert.assertEquals(retArray[cnt], ans);
+          cnt++;
         }
+        Assert.assertEquals(1, cnt);
       }
     } catch (Exception e) {
       e.printStackTrace();
@@ -610,54 +573,46 @@ public class IoTDBAggregationLargeDataIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
+      int cnt = 0;
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "select extreme(s0),extreme(s1),extreme(s2)"
                   + " from root.vehicle.d0 "
-                  + "where s1 < 50000 and s1 != 100");
-
-      if (hasResultSet) {
-        int cnt = 0;
-        try (ResultSet resultSet = statement.getResultSet()) {
-          while (resultSet.next()) {
-            String ans =
-                resultSet.getString(TIMESTAMP_STR)
-                    + ","
-                    + resultSet.getString(extreme(d0s0))
-                    + ","
-                    + resultSet.getString(extreme(d0s1))
-                    + ","
-                    + resultSet.getString(extreme(d0s2));
-            Assert.assertEquals(retArray[cnt], ans);
-            cnt++;
-          }
-          Assert.assertEquals(1, cnt);
+                  + "where s1 < 50000 and s1 != 100")) {
+        while (resultSet.next()) {
+          String ans =
+              resultSet.getString(TIMESTAMP_STR)
+                  + ","
+                  + resultSet.getString(extreme(d0s0))
+                  + ","
+                  + resultSet.getString(extreme(d0s1))
+                  + ","
+                  + resultSet.getString(extreme(d0s2));
+          Assert.assertEquals(retArray[cnt], ans);
+          cnt++;
         }
+        Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
+      cnt = 0;
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "select extreme(s0),extreme(s1),extreme(s2)"
                   + " from root.vehicle.d0 "
-                  + "where s1 < 50000 and s1 != 100 order by time desc");
-
-      if (hasResultSet) {
-        int cnt = 0;
-        try (ResultSet resultSet = statement.getResultSet()) {
-          while (resultSet.next()) {
-            String ans =
-                resultSet.getString(TIMESTAMP_STR)
-                    + ","
-                    + resultSet.getString(extreme(d0s0))
-                    + ","
-                    + resultSet.getString(extreme(d0s1))
-                    + ","
-                    + resultSet.getString(extreme(d0s2));
-            Assert.assertEquals(retArray[cnt], ans);
-            cnt++;
-          }
-          Assert.assertEquals(1, cnt);
+                  + "where s1 < 50000 and s1 != 100 order by time desc")) {
+        while (resultSet.next()) {
+          String ans =
+              resultSet.getString(TIMESTAMP_STR)
+                  + ","
+                  + resultSet.getString(extreme(d0s0))
+                  + ","
+                  + resultSet.getString(extreme(d0s1))
+                  + ","
+                  + resultSet.getString(extreme(d0s2));
+          Assert.assertEquals(retArray[cnt], ans);
+          cnt++;
         }
+        Assert.assertEquals(1, cnt);
       }
     } catch (Exception e) {
       e.printStackTrace();
@@ -672,13 +627,11 @@ public class IoTDBAggregationLargeDataIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
-              "select sum(s0),count(s0),avg(s0),avg(s1),"
-                  + "avg(s2) from root.vehicle.d0 where s1 >= 0 or s2 < 10");
-      Assert.assertTrue(hasResultSet);
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select sum(s0),count(s0),avg(s0),avg(s1),"
+                  + "avg(s2) from root.vehicle.d0 where s1 >= 0 or s2 < 10")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -710,12 +663,10 @@ public class IoTDBAggregationLargeDataIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
-              "select sum(s0),sum(s1),sum(s2) from root.vehicle.d0 where s1 >= 
0 or s2 < 10");
-      Assert.assertTrue(hasResultSet);
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select sum(s0),sum(s1),sum(s2) from root.vehicle.d0 where s1 >= 
0 or s2 < 10")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -731,13 +682,11 @@ public class IoTDBAggregationLargeDataIT {
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
-              "select sum(s0),sum(s1),sum(s2) from root.vehicle.d0"
-                  + " where s1 >= 0 or s2 < 10 order by time desc ");
-      Assert.assertTrue(hasResultSet);
       cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select sum(s0),sum(s1),sum(s2) from root.vehicle.d0"
+                  + " where s1 >= 0 or s2 < 10 order by time desc ")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -765,13 +714,11 @@ public class IoTDBAggregationLargeDataIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
-              "select 
first_value(s0),first_value(s1),first_value(s2),first_value(s3),"
-                  + "first_value(s4) from root.vehicle.d0 where s1 >= 0 or s2 
< 10");
-      Assert.assertTrue(hasResultSet);
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select 
first_value(s0),first_value(s1),first_value(s2),first_value(s3),"
+                  + "first_value(s4) from root.vehicle.d0 where s1 >= 0 or s2 
< 10")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -792,13 +739,11 @@ public class IoTDBAggregationLargeDataIT {
       }
 
       // keep the correctness of `order by time desc`
-      hasResultSet =
-          statement.execute(
-              "select 
first_value(s0),first_value(s1),first_value(s2),first_value(s3),"
-                  + "first_value(s4) from root.vehicle.d0 where s1 >= 0 or s2 
< 10 order by time desc");
-      Assert.assertTrue(hasResultSet);
       cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select 
first_value(s0),first_value(s1),first_value(s2),first_value(s3),"
+                  + "first_value(s4) from root.vehicle.d0 where s1 >= 0 or s2 
< 10 order by time desc")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -830,13 +775,11 @@ public class IoTDBAggregationLargeDataIT {
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
-              "select count(s0),count(s1),count(s2),count(s3),"
-                  + "count(s4) from root.vehicle.d0 where s1 >= 0 or s2 < 10");
-      Assert.assertTrue(hasResultSet);
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "select count(s0),count(s1),count(s2),count(s3),"
+                  + "count(s4) from root.vehicle.d0 where s1 >= 0 or s2 < 
10")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -862,21 +805,18 @@ public class IoTDBAggregationLargeDataIT {
   }
 
   @Test
-  public void maxTimeAggreWithMultiFilterTest() throws ClassNotFoundException {
+  public void maxTimeAggreWithMultiFilterTest() {
     String[] retArray = new String[] {"0,3999,3999,3999,3599,100"};
 
-    Class.forName(Config.JDBC_DRIVER_NAME);
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
+      int cnt = 0;
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "select max_time(s0),max_time(s1),max_time(s2),"
                   + "max_time(s3),max_time(s4) from root.vehicle.d0 "
-                  + "where s1 < 50000 and s1 != 100");
-      Assert.assertTrue(hasResultSet);
-      int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "where s1 < 50000 and s1 != 100")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -896,14 +836,12 @@ public class IoTDBAggregationLargeDataIT {
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet =
-          statement.execute(
+      cnt = 0;
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "select max_time(s0),max_time(s1),max_time(s2),"
                   + "max_time(s3),max_time(s4) from root.vehicle.d0 "
-                  + "where s1 < 50000 and s1 != 100 order by time desc");
-      Assert.assertTrue(hasResultSet);
-      cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "where s1 < 50000 and s1 != 100 order by time desc")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -931,9 +869,6 @@ public class IoTDBAggregationLargeDataIT {
   private static String[] stringValue = new String[] {"A", "B", "C", "D", "E"};
 
   public static void insertSQL() throws ClassNotFoundException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    double d0s0sum = 0.0, d0s1sum = 0.0, d0s2sum = 0.0;
-    int cnt = 0;
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
@@ -964,10 +899,6 @@ public class IoTDBAggregationLargeDataIT {
                 "insert into root.vehicle.d0(timestamp,s3) values(%s,'%s')",
                 time, stringValue[time % 5]);
         statement.execute(sql);
-        cnt++;
-        d0s0sum += time % 100;
-        d0s1sum += time % 17;
-        d0s2sum += time % 22;
       }
 
       statement.execute("flush");
@@ -990,14 +921,8 @@ public class IoTDBAggregationLargeDataIT {
             String.format(
                 "insert into root.vehicle.d0(timestamp,s2) values(%s,%s)", 
time, time % 123);
         statement.execute(sql);
-
-        cnt++;
-        d0s0sum += time % 70;
-        d0s1sum += time % 40;
-        d0s2sum += time % 123;
       }
 
-      statement.execute("merge");
       for (String sql : insertSql) {
         statement.execute(sql);
       }
diff --git 
a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationSmallDataIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/aggregation/IoTDBAggregationSmallDataIT.java
similarity index 82%
rename from 
integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationSmallDataIT.java
rename to 
integration-test/src/test/java/org/apache/iotdb/db/it/aggregation/IoTDBAggregationSmallDataIT.java
index aaec4be91c..bf173d6643 100644
--- 
a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBAggregationSmallDataIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/aggregation/IoTDBAggregationSmallDataIT.java
@@ -17,16 +17,16 @@
  * under the License.
  */
 
-package org.apache.iotdb.db.integration.aggregation;
+package org.apache.iotdb.db.it.aggregation;
 
-import org.apache.iotdb.integration.env.EnvFactory;
-import org.apache.iotdb.itbase.category.ClusterTest;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-import org.apache.iotdb.jdbc.IoTDBSQLException;
+import org.apache.iotdb.it.env.EnvFactory;
+import org.apache.iotdb.itbase.category.ClusterIT;
+import org.apache.iotdb.itbase.category.LocalStandaloneIT;
 
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
@@ -47,7 +47,7 @@ import static org.apache.iotdb.db.constant.TestConstant.sum;
 import static org.junit.Assert.fail;
 
 /** Multiple aggregation with filter test. */
-@Category({LocalStandaloneTest.class, ClusterTest.class})
+@Category({LocalStandaloneIT.class, ClusterIT.class})
 public class IoTDBAggregationSmallDataIT {
 
   private static final String TIMESTAMP_STR = "Time";
@@ -131,13 +131,11 @@ public class IoTDBAggregationSmallDataIT {
 
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT count(s0),count(s1),count(s2),count(s3),count(s4) "
-                  + "FROM root.vehicle.d0 WHERE time >= 3 AND time <= 106");
 
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT count(s0),count(s1),count(s2),count(s3),count(s4) "
+                  + "FROM root.vehicle.d0 WHERE time >= 3 AND time <= 106")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -171,13 +169,10 @@ public class IoTDBAggregationSmallDataIT {
         Statement statement = connection.createStatement()) {
 
       // select count(d0.s0),count(d1.s1),count(d0.s3),count(d0.s4) from 
root.vehicle
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT count(d0.s0),count(d1.s1),count(d0.s3),count(d0.s4) FROM 
root.vehicle");
-
-      Assert.assertTrue(hasResultSet);
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT count(d0.s0),count(d1.s1),count(d0.s3),count(d0.s4) FROM 
root.vehicle")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -208,21 +203,19 @@ public class IoTDBAggregationSmallDataIT {
         Statement statement = connection.createStatement()) {
 
       try {
-        statement.execute(
+        statement.executeQuery(
             "SELECT max_value(d0.s0),max_value(d1.s1),max_value(d0.s3) FROM 
root.vehicle");
         fail();
-      } catch (IoTDBSQLException e) {
+      } catch (Exception e) {
         Assert.assertTrue(
             e.toString()
                 .contains(
                     "Aggregate functions [AVG, SUM, EXTREME, MIN_VALUE, 
MAX_VALUE] only support numeric data types [INT32, INT64, FLOAT, DOUBLE]"));
       }
 
-      boolean hasResultSet =
-          statement.execute("SELECT max_value(d0.s0),max_value(d1.s1) FROM 
root.vehicle");
-      Assert.assertTrue(hasResultSet);
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery("SELECT max_value(d0.s0),max_value(d1.s1) 
FROM root.vehicle")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -249,20 +242,19 @@ public class IoTDBAggregationSmallDataIT {
         Statement statement = connection.createStatement()) {
 
       try {
-        statement.execute("SELECT extreme(d0.s0),extreme(d1.s1),extreme(d0.s3) 
FROM root.vehicle");
+        statement.executeQuery(
+            "SELECT extreme(d0.s0),extreme(d1.s1),extreme(d0.s3) FROM 
root.vehicle");
         fail();
-      } catch (IoTDBSQLException e) {
+      } catch (Exception e) {
         Assert.assertTrue(
             e.toString()
                 .contains(
                     "Aggregate functions [AVG, SUM, EXTREME, MIN_VALUE, 
MAX_VALUE] only support numeric data types [INT32, INT64, FLOAT, DOUBLE]"));
       }
 
-      boolean hasResultSet =
-          statement.execute("SELECT extreme(d0.s0),extreme(d1.s1) FROM 
root.vehicle");
-      Assert.assertTrue(hasResultSet);
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery("SELECT extreme(d0.s0),extreme(d1.s1) FROM 
root.vehicle")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -289,12 +281,10 @@ public class IoTDBAggregationSmallDataIT {
         Statement statement = connection.createStatement()) {
 
       // select first_value(d0.s0),first_value(d1.s1),first_value(d0.s3) from 
root.vehicle
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT first_value(d0.s0),first_value(d1.s1),first_value(d0.s3) 
FROM root.vehicle");
-      Assert.assertTrue(hasResultSet);
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT first_value(d0.s0),first_value(d1.s1),first_value(d0.s3) 
FROM root.vehicle")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -323,12 +313,10 @@ public class IoTDBAggregationSmallDataIT {
         Statement statement = connection.createStatement()) {
 
       // select last_value(d0.s0),last_value(d1.s1),last_value(d0.s3) from 
root.vehicle
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT last_value(d0.s0),last_value(d1.s1),last_value(d0.s3) 
FROM root.vehicle");
-      Assert.assertTrue(hasResultSet);
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT last_value(d0.s0),last_value(d1.s1),last_value(d0.s3) 
FROM root.vehicle")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -357,10 +345,9 @@ public class IoTDBAggregationSmallDataIT {
         Statement statement = connection.createStatement()) {
 
       // select sum(d0.s0),sum(d1.s1),sum(d0.s3) from root.vehicle
-      boolean hasResultSet = statement.execute("SELECT sum(d0.s0),sum(d1.s1) 
FROM root.vehicle");
-      Assert.assertTrue(hasResultSet);
       int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery("SELECT sum(d0.s0),sum(d1.s1) FROM 
root.vehicle")) {
         while (resultSet.next()) {
           String ans =
               resultSet.getString(TIMESTAMP_STR)
@@ -379,17 +366,17 @@ public class IoTDBAggregationSmallDataIT {
     }
   }
 
+  // TODO: remove ignore after supporting value filter
+  @Ignore
   @Test
   public void lastValueWithSingleValueFilterTest() {
     String[] retArray = new String[] {"0,22222,55555"};
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT last_value(s0),last_value(s1) FROM root.vehicle.d0 WHERE 
s2 >= 3.33");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT last_value(s0),last_value(s1) FROM root.vehicle.d0 WHERE 
s2 >= 3.33")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -409,17 +396,17 @@ public class IoTDBAggregationSmallDataIT {
     }
   }
 
+  // TODO: remove ignore after supporting value filter
+  @Ignore
   @Test
   public void firstValueWithSingleValueFilterTest() {
     String[] retArray = new String[] {"0,99,180"};
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT first_value(s0),first_value(s1) FROM root.vehicle.d0 
WHERE s2 >= 3.33");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT first_value(s0),first_value(s1) FROM root.vehicle.d0 
WHERE s2 >= 3.33")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -439,15 +426,17 @@ public class IoTDBAggregationSmallDataIT {
     }
   }
 
+  // TODO: remove ignore after supporting value filter
+  @Ignore
   @Test
   public void sumWithSingleValueFilterTest() {
     String[] retArray = new String[] {"0,22321.0,55934.0,1029"};
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute("SELECT sum(s0),sum(s1),sum(s2) FROM 
root.vehicle.d0 WHERE s2 >= 3.33");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT sum(s0),sum(s1),sum(s2) FROM root.vehicle.d0 WHERE s2 >= 
3.33")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -469,15 +458,17 @@ public class IoTDBAggregationSmallDataIT {
     }
   }
 
+  // TODO: remove ignore after supporting value filter
+  @Ignore
   @Test
   public void avgWithSingleValueFilterTest() {
     String[] retArray = new String[] {"0,11160.5,18645,206"};
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute("SELECT avg(s0),avg(s1),avg(s2) FROM 
root.vehicle.d0 WHERE s2 >= 3.33");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT avg(s0),avg(s1),avg(s2) FROM root.vehicle.d0 WHERE s2 >= 
3.33")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -499,18 +490,19 @@ public class IoTDBAggregationSmallDataIT {
     }
   }
 
+  // TODO: remove ignore after supporting value filter
+  @Ignore
   @Test
   public void countWithSingleValueFilterTest() {
     String[] retArray = new String[] {"0,2,3,5,1,0"};
 
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
+
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "SELECT count(s0),count(s1),count(s2),count(s3),"
-                  + "count(s4) FROM root.vehicle.d0 WHERE s2 >= 3.33");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "count(s4) FROM root.vehicle.d0 WHERE s2 >= 3.33")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -536,19 +528,19 @@ public class IoTDBAggregationSmallDataIT {
     }
   }
 
+  // TODO: remove ignore after supporting value filter
+  @Ignore
   @Test
   public void minTimeWithMultiValueFiltersTest() {
     String[] retArray = new String[] {"0,104,1,2,101,100"};
 
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT min_time(s0),min_time(s1),min_time(s2)"
-                  + ",min_time(s3),min_time(s4) FROM root.vehicle.d0 WHERE s1 
< 50000 AND s1 != 100");
 
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT min_time(s0),min_time(s1),min_time(s2)"
+                  + ",min_time(s3),min_time(s4) FROM root.vehicle.d0 WHERE s1 
< 50000 AND s1 != 100")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -574,19 +566,19 @@ public class IoTDBAggregationSmallDataIT {
     }
   }
 
+  // TODO: remove ignore after supporting value filter
+  @Ignore
   @Test
   public void maxTimeWithMultiValueFiltersTest() {
     String[] retArray = new String[] {"0,105,105,105,102,100"};
 
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT max_time(s0),max_time(s1),max_time(s2)"
-                  + ",max_time(s3),max_time(s4) FROM root.vehicle.d0 WHERE s1 
< 50000 AND s1 != 100");
 
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT max_time(s0),max_time(s1),max_time(s2)"
+                  + ",max_time(s3),max_time(s4) FROM root.vehicle.d0 WHERE s1 
< 50000 AND s1 != 100")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -612,19 +604,19 @@ public class IoTDBAggregationSmallDataIT {
     }
   }
 
+  // TODO: remove ignore after supporting value filter
+  @Ignore
   @Test
   public void minValueWithMultiValueFiltersTest() {
     String[] retArray = new String[] {"0,90,180,2.22"};
 
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT min_value(s0),min_value(s1),min_value(s2) FROM 
root.vehicle.d0 "
-                  + "WHERE s1 < 50000 AND s1 != 100");
-      Assert.assertTrue(hasResultSet);
 
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT min_value(s0),min_value(s1),min_value(s2) FROM 
root.vehicle.d0 "
+                  + "WHERE s1 < 50000 AND s1 != 100")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -647,19 +639,19 @@ public class IoTDBAggregationSmallDataIT {
     }
   }
 
+  // TODO: remove ignore after supporting value filter
+  @Ignore
   @Test
   public void maxValueWithMultiValueFiltersTest() {
     String[] retArray = new String[] {"0,99,40000,11.11"};
 
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT max_value(s0),max_value(s1),max_value(s2) FROM 
root.vehicle.d0 "
-                  + "WHERE s1 < 50000 AND s1 != 100");
 
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+      try (ResultSet resultSet =
+          statement.executeQuery(
+              "SELECT max_value(s0),max_value(s1),max_value(s2) FROM 
root.vehicle.d0 "
+                  + "WHERE s1 < 50000 AND s1 != 100")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -681,20 +673,20 @@ public class IoTDBAggregationSmallDataIT {
     }
   }
 
+  // TODO: remove ignore after supporting value filter
+  @Ignore
   @Test
   public void extremeWithMultiValueFiltersTest() throws ClassNotFoundException 
{
     String[] retArray = new String[] {"0,99,40000,11.11"};
 
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
+
+      try (ResultSet resultSet =
+          statement.executeQuery(
               "SELECT extreme(s0),extreme(s1),extreme(s2)"
                   + " FROM root.vehicle.d0 "
-                  + "WHERE s1 < 50000 AND s1 != 100");
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
+                  + "WHERE s1 < 50000 AND s1 != 100")) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
@@ -741,42 +733,37 @@ public class IoTDBAggregationSmallDataIT {
 
     try (Connection connection = EnvFactory.getEnv().getConnection();
         Statement statement = connection.createStatement()) {
-      boolean hasResultSet = statement.execute("SELECT * FROM root.**");
-      if (hasResultSet) {
-        try (ResultSet resultSet = statement.getResultSet()) {
-          int cnt = 0;
-          while (resultSet.next()) {
-            String ans =
-                resultSet.getString(TIMESTAMP_STR)
-                    + ","
-                    + resultSet.getString(d0s0)
-                    + ","
-                    + resultSet.getString(d0s1)
-                    + ","
-                    + resultSet.getString(d0s2)
-                    + ","
-                    + resultSet.getString(d0s3)
-                    + ","
-                    + resultSet.getString(d1s0);
-            Assert.assertEquals(retArray[cnt], ans);
-            cnt++;
-          }
-          Assert.assertEquals(17, cnt);
+
+      try (ResultSet resultSet = statement.executeQuery("SELECT * FROM 
root.**")) {
+        int cnt = 0;
+        while (resultSet.next()) {
+          String ans =
+              resultSet.getString(TIMESTAMP_STR)
+                  + ","
+                  + resultSet.getString(d0s0)
+                  + ","
+                  + resultSet.getString(d0s1)
+                  + ","
+                  + resultSet.getString(d0s2)
+                  + ","
+                  + resultSet.getString(d0s3)
+                  + ","
+                  + resultSet.getString(d1s0);
+          Assert.assertEquals(retArray[cnt], ans);
+          cnt++;
         }
+        Assert.assertEquals(17, cnt);
       }
 
       retArray = new String[] {"100,true"};
-      hasResultSet = statement.execute("SELECT s4 FROM root.vehicle.d0");
-      if (hasResultSet) {
-        try (ResultSet resultSet = statement.getResultSet()) {
-          int cnt = 0;
-          while (resultSet.next()) {
-            String ans = resultSet.getString(TIMESTAMP_STR) + "," + 
resultSet.getString(d0s4);
-            Assert.assertEquals(retArray[cnt], ans);
-            cnt++;
-          }
-          Assert.assertEquals(1, cnt);
+      try (ResultSet resultSet = statement.executeQuery("SELECT s4 FROM 
root.vehicle.d0")) {
+        int cnt = 0;
+        while (resultSet.next()) {
+          String ans = resultSet.getString(TIMESTAMP_STR) + "," + 
resultSet.getString(d0s4);
+          Assert.assertEquals(retArray[cnt], ans);
+          cnt++;
         }
+        Assert.assertEquals(1, cnt);
       }
     } catch (Exception e) {
       e.printStackTrace();
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/env/StandaloneEnvConfig.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/env/StandaloneEnvConfig.java
index d6ffa8cd42..0db4c89bd4 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/env/StandaloneEnvConfig.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/env/StandaloneEnvConfig.java
@@ -61,6 +61,11 @@ public class StandaloneEnvConfig implements BaseConfig {
     return this;
   }
 
+  @Override
+  public long getPartitionInterval() {
+    return IoTDBDescriptor.getInstance().getConfig().getPartitionInterval();
+  }
+
   @Override
   public BaseConfig setCompressor(String compressor) {
     TSFileDescriptor.getInstance().getConfig().setCompressor(compressor);
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
index 4314c8faeb..07d0617b1b 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/Analyzer.java
@@ -41,6 +41,7 @@ import 
org.apache.iotdb.db.mpp.common.schematree.PathPatternTree;
 import org.apache.iotdb.db.mpp.common.schematree.SchemaTree;
 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;
 import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.FillDescriptor;
 import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.FilterNullParameter;
 import 
org.apache.iotdb.db.mpp.plan.planner.plan.parameter.GroupByTimeParameter;
@@ -442,7 +443,8 @@ public class Analyzer {
         analysis.setDataPartitionInfo(dataPartition);
       } catch (StatementAnalyzeException e) {
         logger.error("Meet error when analyzing the query statement: ", e);
-        throw new StatementAnalyzeException("Meet error when analyzing the 
query statement");
+        throw new StatementAnalyzeException(
+            "Meet error when analyzing the query statement: " + 
e.getMessage());
       }
       return analysis;
     }
@@ -460,7 +462,7 @@ public class Analyzer {
         boolean hasAlias = resultColumn.hasAlias();
         List<Expression> resultExpressions =
             
ExpressionAnalyzer.removeWildcardInExpression(resultColumn.getExpression(), 
schemaTree);
-        if (hasAlias && resultExpressions.size() > 1) {
+        if (hasAlias && !queryStatement.isGroupByLevel() && 
resultExpressions.size() > 1) {
           throw new SemanticException(
               String.format(
                   "alias '%s' can only be matched with one time series", 
resultColumn.getAlias()));
@@ -479,6 +481,12 @@ public class Analyzer {
                     : null;
             alias = hasAlias ? resultColumn.getAlias() : alias;
             outputExpressions.add(new Pair<>(expressionWithoutAlias, alias));
+            if (queryStatement.isGroupByLevel()
+                && resultColumn.getExpression() instanceof FunctionExpression) 
{
+              queryStatement
+                  .getGroupByLevelComponent()
+                  .updateIsCountStar((FunctionExpression) 
resultColumn.getExpression());
+            }
             ExpressionAnalyzer.updateTypeProvider(expressionWithoutAlias, 
typeProvider);
             expressionWithoutAlias.inferTypes(typeProvider);
             paginationController.consumeLimit();
@@ -680,8 +688,11 @@ public class Analyzer {
       GroupByLevelController groupByLevelController =
           new GroupByLevelController(
               queryStatement.getGroupByLevelComponent().getLevels(), 
typeProvider);
-      for (Pair<Expression, String> measurementWithAlias : outputExpressions) {
-        groupByLevelController.control(measurementWithAlias.left, 
measurementWithAlias.right);
+      for (int i = 0; i < outputExpressions.size(); i++) {
+        Pair<Expression, String> measurementWithAlias = 
outputExpressions.get(i);
+        boolean isCountStar = 
queryStatement.getGroupByLevelComponent().isCountStar(i);
+        groupByLevelController.control(
+            isCountStar, measurementWithAlias.left, 
measurementWithAlias.right);
       }
       Map<Expression, Set<Expression>> rawGroupByLevelExpressions =
           groupByLevelController.getGroupedPathMap();
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionAnalyzer.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionAnalyzer.java
index 1cee37386b..0f0c2b2720 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionAnalyzer.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionAnalyzer.java
@@ -289,6 +289,7 @@ public class ExpressionAnalyzer {
       // removing all wildcards. We use actualExpressions to collect them.
       List<List<Expression>> childExpressionsList = new ArrayList<>();
       cartesianProduct(extendedExpressions, childExpressionsList, 0, new 
ArrayList<>());
+
       return reconstructFunctionExpressions((FunctionExpression) expression, 
childExpressionsList);
     } else if (expression instanceof TimeSeriesOperand) {
       PartialPath path = ((TimeSeriesOperand) expression).getPath();
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 31a1715e06..a583805e33 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
@@ -74,14 +74,14 @@ public class GroupByLevelController {
     this.typeProvider = typeProvider;
   }
 
-  public void control(Expression expression, String alias) {
+  public void control(boolean isCountStar, Expression expression, String 
alias) {
     if (!(expression instanceof FunctionExpression
         && expression.isBuiltInAggregationFunctionExpression())) {
       throw new SemanticException(expression + " can't be used in group by 
level.");
     }
 
     PartialPath rawPath = ((TimeSeriesOperand) 
expression.getExpressions().get(0)).getPath();
-    PartialPath groupedPath = generatePartialPathByLevel(rawPath.getNodes(), 
levels);
+    PartialPath groupedPath = generatePartialPathByLevel(isCountStar, 
rawPath.getNodes(), levels);
 
     checkDatatypeConsistency(
         groupedPath.getFullPath(), ((FunctionExpression) 
expression).getFunctionName(), rawPath);
@@ -178,7 +178,8 @@ public class GroupByLevelController {
    *
    * @return result partial path
    */
-  public PartialPath generatePartialPathByLevel(String[] nodes, int[] 
pathLevels) {
+  public PartialPath generatePartialPathByLevel(
+      boolean isCountStar, String[] nodes, int[] pathLevels) {
     Set<Integer> levelSet = new HashSet<>();
     for (int level : pathLevels) {
       levelSet.add(level);
@@ -194,7 +195,11 @@ public class GroupByLevelController {
         transformedNodes.add(IoTDBConstant.ONE_LEVEL_PATH_WILDCARD);
       }
     }
-    transformedNodes.add(nodes[nodes.length - 1]);
+    if (isCountStar) {
+      transformedNodes.add(IoTDBConstant.ONE_LEVEL_PATH_WILDCARD);
+    } else {
+      transformedNodes.add(nodes[nodes.length - 1]);
+    }
     return new PartialPath(transformedNodes.toArray(new String[0]));
   }
 
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/GroupByLevelComponent.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/GroupByLevelComponent.java
index fa7192a0fe..33db43633b 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/GroupByLevelComponent.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/GroupByLevelComponent.java
@@ -19,12 +19,17 @@
 
 package org.apache.iotdb.db.mpp.plan.statement.component;
 
+import org.apache.iotdb.db.mpp.plan.expression.multi.FunctionExpression;
 import org.apache.iotdb.db.mpp.plan.statement.StatementNode;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /** This class maintains information of {@code GROUP BY LEVEL} clause. */
 public class GroupByLevelComponent extends StatementNode {
 
   protected int[] levels;
+  protected List<Boolean> isCountStar = new ArrayList<>();
 
   public int[] getLevels() {
     return levels;
@@ -33,4 +38,12 @@ public class GroupByLevelComponent extends StatementNode {
   public void setLevels(int[] levels) {
     this.levels = levels;
   }
+
+  public void updateIsCountStar(FunctionExpression rawExpression) {
+    isCountStar.add(rawExpression.isCountStar());
+  }
+
+  public boolean isCountStar(int i) {
+    return isCountStar.get(i);
+  }
 }

Reply via email to