You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2019/11/30 01:47:45 UTC

[incubator-iotdb] branch revert-594-last_to_lastvalue created (now e1fa4fb)

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

qiaojialin pushed a change to branch revert-594-last_to_lastvalue
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git.


      at e1fa4fb  Revert "[IOTDB-298] Refactor the "last" and "first" aggregators (#594)"

This branch includes the following new commits:

     new e1fa4fb  Revert "[IOTDB-298] Refactor the "last" and "first" aggregators (#594)"

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[incubator-iotdb] 01/01: Revert "[IOTDB-298] Refactor the "last" and "first" aggregators (#594)"

Posted by qi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

qiaojialin pushed a commit to branch revert-594-last_to_lastvalue
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit e1fa4fb4315538e4b280c9a1e9724eddf8f991d4
Author: Jialin Qiao <qj...@mails.tsinghua.edu.cn>
AuthorDate: Sat Nov 30 09:47:36 2019 +0800

    Revert "[IOTDB-298] Refactor the "last" and "first" aggregators (#594)"
    
    This reverts commit 2785bd157597cca70f201b4bb64aa32f146f776c.
---
 .../5-Operation Manual/4-SQL Reference.md          | 14 +---
 .../5-Operation Manual/4-SQL Reference.md          | 18 ++---
 ...{FirstValueAggrFunc.java => FirstAggrFunc.java} |  4 +-
 .../{LastValueAggrFunc.java => LastAggrFunc.java}  |  4 +-
 .../db/query/executor/AggregateEngineExecutor.java |  6 +-
 .../iotdb/db/query/factory/AggreFuncFactory.java   | 12 ++--
 .../org/apache/iotdb/db/service/TSServiceImpl.java |  4 +-
 .../org/apache/iotdb/db/integration/Constant.java  |  8 +--
 .../iotdb/db/integration/IOTDBGroupByIT.java       | 28 ++++----
 .../iotdb/db/integration/IoTDBAggregationIT.java   | 34 ++++-----
 .../integration/IoTDBAggregationLargeDataIT.java   | 80 +++++++++++-----------
 .../integration/IoTDBAggregationSmallDataIT.java   | 32 ++++-----
 .../tsfile/common/constant/StatisticConstant.java  |  4 +-
 13 files changed, 114 insertions(+), 134 deletions(-)

diff --git a/docs/Documentation-CHN/UserGuide/5-Operation Manual/4-SQL Reference.md b/docs/Documentation-CHN/UserGuide/5-Operation Manual/4-SQL Reference.md
index a8f74b3..f45bf35 100644
--- a/docs/Documentation-CHN/UserGuide/5-Operation Manual/4-SQL Reference.md	
+++ b/docs/Documentation-CHN/UserGuide/5-Operation Manual/4-SQL Reference.md	
@@ -495,19 +495,11 @@ Eg. SELECT COUNT(status), COUNT(temperature) FROM root.ln.wf01.wt01 WHERE root.l
 Note: the statement needs to satisfy this constraint: <PrefixPath> + <Path> = <Timeseries>
 ```
 
-* FIRST_VALUE
-原有的 `FIRST` 方法在 `v0.10.0` 版本更名为 `FIRST_VALUE`。
-```
-SELECT FIRST_VALUE (Path) (COMMA FIRST_VALUE (Path))* FROM <FromClause> [WHERE <WhereClause>]?
-Eg. SELECT FIRST_VALUE (status), FIRST_VALUE (temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature < 24
-Note: the statement needs to satisfy this constraint: <PrefixPath> + <Path> = <Timeseries>
-```
+* FIRST
 
-* LAST_VALUE
-原有的 `LAST` 方法在 `v0.10.0` 版本更名为 `LAST_VALUE`。
 ```
-SELECT LAST_VALUE (Path) (COMMA LAST_VALUE (Path))* FROM <FromClause> [WHERE <WhereClause>]?
-Eg. SELECT LAST_VALUE (status), LAST_VALUE (temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature < 24
+SELECT FIRST (Path) (COMMA FIRST (Path))* FROM <FromClause> [WHERE <WhereClause>]?
+Eg. SELECT FIRST (status), FIRST (temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature < 24
 Note: the statement needs to satisfy this constraint: <PrefixPath> + <Path> = <Timeseries>
 ```
 
diff --git a/docs/Documentation/UserGuide/5-Operation Manual/4-SQL Reference.md b/docs/Documentation/UserGuide/5-Operation Manual/4-SQL Reference.md
index ff98ea6..88982f1 100644
--- a/docs/Documentation/UserGuide/5-Operation Manual/4-SQL Reference.md	
+++ b/docs/Documentation/UserGuide/5-Operation Manual/4-SQL Reference.md	
@@ -579,23 +579,13 @@ Eg. SELECT COUNT(status), COUNT(temperature) FROM root.ln.wf01.wt01 WHERE root.l
 Note: the statement needs to satisfy this constraint: <PrefixPath> + <Path> = <Timeseries>
 ```
 
-* FIRST_VALUE(Rename from `FIRST` at `V0.10.0`)
+* FIRST
 
-The FIRST_VALUE function returns the first point value of the choosen timeseries(one or more).
+The FIRST function returns the first point value of the choosen timeseries(one or more).
 
 ```
-SELECT FIRST_VALUE (Path) (COMMA FIRST_VALUE (Path))* FROM <FromClause> [WHERE <WhereClause>]?
-Eg. SELECT FIRST_VALUE (status), FIRST_VALUE (temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature < 24
-Note: the statement needs to satisfy this constraint: <PrefixPath> + <Path> = <Timeseries>
-```
-
-* LAST_VALUE(Rename from `LAST` at `V0.10.0`)
-
-The LAST_VALUE function returns the last point value of the choosen timeseries(one or more).
-
-```
-SELECT LAST_VALUE (Path) (COMMA LAST_VALUE (Path))* FROM <FromClause> [WHERE <WhereClause>]?
-Eg. SELECT LAST_VALUE (status), LAST_VALUE (temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature < 24
+SELECT FIRST (Path) (COMMA FIRST (Path))* FROM <FromClause> [WHERE <WhereClause>]?
+Eg. SELECT FIRST (status), FIRST (temperature) FROM root.ln.wf01.wt01 WHERE root.ln.wf01.wt01.temperature < 24
 Note: the statement needs to satisfy this constraint: <PrefixPath> + <Path> = <Timeseries>
 ```
 
diff --git a/server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/FirstValueAggrFunc.java b/server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/FirstAggrFunc.java
similarity index 97%
rename from server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/FirstValueAggrFunc.java
rename to server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/FirstAggrFunc.java
index 25288ef..58b6069 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/FirstValueAggrFunc.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/FirstAggrFunc.java
@@ -29,9 +29,9 @@ import org.apache.iotdb.tsfile.file.header.PageHeader;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.read.common.BatchData;
 
-public class FirstValueAggrFunc extends AggregateFunction {
+public class FirstAggrFunc extends AggregateFunction {
 
-  public FirstValueAggrFunc(TSDataType dataType) {
+  public FirstAggrFunc(TSDataType dataType) {
     super(dataType);
   }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/LastValueAggrFunc.java b/server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/LastAggrFunc.java
similarity index 97%
rename from server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/LastValueAggrFunc.java
rename to server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/LastAggrFunc.java
index ac51f37..7a4687b 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/LastValueAggrFunc.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/LastAggrFunc.java
@@ -29,9 +29,9 @@ import org.apache.iotdb.tsfile.file.header.PageHeader;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.read.common.BatchData;
 
-public class LastValueAggrFunc extends AggregateFunction {
+public class LastAggrFunc extends AggregateFunction {
 
-  public LastValueAggrFunc(TSDataType dataType) {
+  public LastAggrFunc(TSDataType dataType) {
     super(dataType);
   }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/query/executor/AggregateEngineExecutor.java b/server/src/main/java/org/apache/iotdb/db/query/executor/AggregateEngineExecutor.java
index e9e4bca..8978cdc 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/executor/AggregateEngineExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/executor/AggregateEngineExecutor.java
@@ -30,7 +30,7 @@ import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.metadata.MManager;
 import org.apache.iotdb.db.query.aggregation.AggreResultData;
 import org.apache.iotdb.db.query.aggregation.AggregateFunction;
-import org.apache.iotdb.db.query.aggregation.impl.LastValueAggrFunc;
+import org.apache.iotdb.db.query.aggregation.impl.LastAggrFunc;
 import org.apache.iotdb.db.query.aggregation.impl.MaxTimeAggrFunc;
 import org.apache.iotdb.db.query.context.QueryContext;
 import org.apache.iotdb.db.query.control.QueryResourceManager;
@@ -105,7 +105,7 @@ public class AggregateEngineExecutor {
 
       // sequence reader for sealed tsfile, unsealed tsfile, memory
       IAggregateReader seqResourceIterateReader;
-      if (function instanceof MaxTimeAggrFunc || function instanceof LastValueAggrFunc) {
+      if (function instanceof MaxTimeAggrFunc || function instanceof LastAggrFunc) {
         seqResourceIterateReader = new SeqResourceIterateReader(queryDataSource.getSeriesPath(),
             queryDataSource.getSeqResources(), timeFilter, context, true);
       } else {
@@ -143,7 +143,7 @@ public class AggregateEngineExecutor {
   private AggreResultData aggregateWithoutValueFilter(AggregateFunction function,
       IAggregateReader sequenceReader, IPointReader unSequenceReader, Filter filter)
       throws IOException, QueryProcessException {
-    if (function instanceof MaxTimeAggrFunc || function instanceof LastValueAggrFunc) {
+    if (function instanceof MaxTimeAggrFunc || function instanceof LastAggrFunc) {
       return handleLastMaxTimeWithOutTimeGenerator(function, sequenceReader, unSequenceReader,
           filter);
     }
diff --git a/server/src/main/java/org/apache/iotdb/db/query/factory/AggreFuncFactory.java b/server/src/main/java/org/apache/iotdb/db/query/factory/AggreFuncFactory.java
index 24f893a..aecb9a1 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/factory/AggreFuncFactory.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/factory/AggreFuncFactory.java
@@ -23,8 +23,8 @@ import org.apache.iotdb.db.exception.path.PathException;
 import org.apache.iotdb.db.query.aggregation.AggregateFunction;
 import org.apache.iotdb.db.query.aggregation.impl.AvgAggrFunc;
 import org.apache.iotdb.db.query.aggregation.impl.CountAggrFunc;
-import org.apache.iotdb.db.query.aggregation.impl.FirstValueAggrFunc;
-import org.apache.iotdb.db.query.aggregation.impl.LastValueAggrFunc;
+import org.apache.iotdb.db.query.aggregation.impl.FirstAggrFunc;
+import org.apache.iotdb.db.query.aggregation.impl.LastAggrFunc;
 import org.apache.iotdb.db.query.aggregation.impl.MaxTimeAggrFunc;
 import org.apache.iotdb.db.query.aggregation.impl.MaxValueAggrFunc;
 import org.apache.iotdb.db.query.aggregation.impl.MinTimeAggrFunc;
@@ -66,12 +66,12 @@ public class AggreFuncFactory {
         return new CountAggrFunc();
       case StatisticConstant.AVG:
         return new AvgAggrFunc(dataType);
-      case StatisticConstant.FIRST_VALUE:
-        return new FirstValueAggrFunc(dataType);
+      case StatisticConstant.FIRST:
+        return new FirstAggrFunc(dataType);
       case StatisticConstant.SUM:
         return new SumAggrFunc(dataType);
-      case StatisticConstant.LAST_VALUE:
-        return new LastValueAggrFunc(dataType);
+      case StatisticConstant.LAST:
+        return new LastAggrFunc(dataType);
       default:
         throw new PathException(
             "aggregate does not support " + aggrFuncName + " function.");
diff --git a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
index 1f113d8..b8a6583 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
@@ -182,8 +182,8 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
         case StatisticConstant.MAX_TIME:
         case StatisticConstant.COUNT:
           return TSDataType.INT64;
-        case StatisticConstant.LAST_VALUE:
-        case StatisticConstant.FIRST_VALUE:
+        case StatisticConstant.LAST:
+        case StatisticConstant.FIRST:
         case StatisticConstant.MIN_VALUE:
         case StatisticConstant.MAX_VALUE:
           return getSeriesType(innerPath);
diff --git a/server/src/test/java/org/apache/iotdb/db/integration/Constant.java b/server/src/test/java/org/apache/iotdb/db/integration/Constant.java
index c606d68..da2b08a 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/Constant.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/Constant.java
@@ -51,12 +51,12 @@ public class Constant {
 
   public static String insertTemplate = "insert into %s(timestamp%s) values(%d%s)";
 
-  public static String first_value(String path) {
-    return String.format("first_value(%s)", path);
+  public static String first(String path) {
+    return String.format("first(%s)", path);
   }
 
-  public static String last_value(String path) {
-    return String.format("last_value(%s)", path);
+  public static String last(String path) {
+    return String.format("last(%s)", path);
   }
 
   public static String sum(String path) {
diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IOTDBGroupByIT.java b/server/src/test/java/org/apache/iotdb/db/integration/IOTDBGroupByIT.java
index d54a1e0..6755b52 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/IOTDBGroupByIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IOTDBGroupByIT.java
@@ -21,8 +21,8 @@ package org.apache.iotdb.db.integration;
 
 import static org.apache.iotdb.db.integration.Constant.avg;
 import static org.apache.iotdb.db.integration.Constant.count;
-import static org.apache.iotdb.db.integration.Constant.first_value;
-import static org.apache.iotdb.db.integration.Constant.last_value;
+import static org.apache.iotdb.db.integration.Constant.first;
+import static org.apache.iotdb.db.integration.Constant.last;
 import static org.apache.iotdb.db.integration.Constant.max_time;
 import static org.apache.iotdb.db.integration.Constant.max_value;
 import static org.apache.iotdb.db.integration.Constant.min_time;
@@ -306,7 +306,7 @@ public class IOTDBGroupByIT {
         getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
         Statement statement = connection.createStatement()) {
       boolean hasResultSet = statement.execute(
-          "select last_value(temperature), first_value(temperature) from root.ln.wf01.wt01 where time > 3 "
+          "select last(temperature), first(temperature) from root.ln.wf01.wt01 where time > 3 "
               + "GROUP BY (20ms, 5,[2,30], [35,37], [50, 160], [310, 314])");
 
       Assert.assertTrue(hasResultSet);
@@ -315,8 +315,8 @@ public class IOTDBGroupByIT {
         cnt = 0;
         while (resultSet.next()) {
           String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet
-              .getString(last_value("root.ln.wf01.wt01.temperature"))
-              + "," + resultSet.getString(first_value("root.ln.wf01.wt01.temperature"));
+              .getString(last("root.ln.wf01.wt01.temperature"))
+              + "," + resultSet.getString(first("root.ln.wf01.wt01.temperature"));
           Assert.assertEquals(retArray1[cnt], ans);
           cnt++;
         }
@@ -324,7 +324,7 @@ public class IOTDBGroupByIT {
       }
 
       hasResultSet = statement.execute(
-          "select first_value(temperature), last_value(temperature) from root.ln.wf01.wt01 "
+          "select first(temperature), last(temperature) from root.ln.wf01.wt01 "
               + "where temperature > 3 "
               + "GROUP BY (20ms, 5,[2,30], [35,37], [50, 160], [310, 314])");
 
@@ -333,8 +333,8 @@ public class IOTDBGroupByIT {
         cnt = 0;
         while (resultSet.next()) {
           String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet
-              .getString(last_value("root.ln.wf01.wt01.temperature"))
-              + "," + resultSet.getString(first_value("root.ln.wf01.wt01.temperature"));
+              .getString(last("root.ln.wf01.wt01.temperature"))
+              + "," + resultSet.getString(first("root.ln.wf01.wt01.temperature"));
           Assert.assertEquals(retArray2[cnt], ans);
           cnt++;
         }
@@ -427,7 +427,7 @@ public class IOTDBGroupByIT {
         Statement statement = connection.createStatement()) {
 
       boolean hasResultSet = statement.execute(
-          "select last_value(temperature), first_value(temperature), sum(temperature) from "
+          "select last(temperature), first(temperature), sum(temperature) from "
               + "root.ln.wf01.wt01 where time > 3 "
               + "GROUP BY (80ms, 30,[50,100], [615, 650])");
 
@@ -436,8 +436,8 @@ public class IOTDBGroupByIT {
       try (ResultSet resultSet = statement.getResultSet()) {
         while (resultSet.next()) {
           String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet
-              .getString(last_value("root.ln.wf01.wt01.temperature"))
-              + "," + resultSet.getString(first_value("root.ln.wf01.wt01.temperature")) + ","
+              .getString(last("root.ln.wf01.wt01.temperature"))
+              + "," + resultSet.getString(first("root.ln.wf01.wt01.temperature")) + ","
               + resultSet.getString(sum("root.ln.wf01.wt01.temperature"));
           Assert.assertEquals(retArray1[cnt], ans);
           cnt++;
@@ -446,7 +446,7 @@ public class IOTDBGroupByIT {
       }
 
       hasResultSet = statement.execute(
-          "select first_value(temperature), last_value(temperature), sum(temperature) from "
+          "select first(temperature), last(temperature), sum(temperature) from "
               + "root.ln.wf01.wt01 where temperature > 3 "
               + "GROUP BY (80ms, 30,[50,100], [585,590], [615, 650])");
 
@@ -455,8 +455,8 @@ public class IOTDBGroupByIT {
         cnt = 0;
         while (resultSet.next()) {
           String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet
-              .getString(last_value("root.ln.wf01.wt01.temperature"))
-              + "," + resultSet.getString(first_value("root.ln.wf01.wt01.temperature")) + ","
+              .getString(last("root.ln.wf01.wt01.temperature"))
+              + "," + resultSet.getString(first("root.ln.wf01.wt01.temperature")) + ","
               + resultSet.getString(sum("root.ln.wf01.wt01.temperature"));
           Assert.assertEquals(retArray2[cnt], ans);
           cnt++;
diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAggregationIT.java b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAggregationIT.java
index 6db444c..f9e0efa 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAggregationIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAggregationIT.java
@@ -210,7 +210,7 @@ public class IoTDBAggregationIT {
         getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet = statement.execute("select first_value(s0),first_value(s1),first_value(s2),first_value(s3) " +
+      boolean hasResultSet = statement.execute("select first(s0),first(s1),first(s2),first(s3) " +
           "from root.vehicle.d0 where time >= 1500 and time <= 9000");
 
       Assert.assertTrue(hasResultSet);
@@ -219,24 +219,24 @@ public class IoTDBAggregationIT {
       try (ResultSet resultSet = statement.getResultSet()) {
         cnt = 0;
         while (resultSet.next()) {
-          String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(first_value(d0s0))
-              + "," + resultSet.getString(first_value(d0s1)) + "," + resultSet.getString(first_value(d0s2))
-              + "," + resultSet.getString(first_value(d0s3));
+          String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(first(d0s0))
+              + "," + resultSet.getString(first(d0s1)) + "," + resultSet.getString(first(d0s2))
+              + "," + resultSet.getString(first(d0s3));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet = statement.execute("select first_value(s0),first_value(s1),first_value(s2),first_value(s3) " +
+      hasResultSet = statement.execute("select first(s0),first(s1),first(s2),first(s3) " +
           "from root.vehicle.d0");
 
       Assert.assertTrue(hasResultSet);
       try (ResultSet resultSet = statement.getResultSet()) {
         while (resultSet.next()) {
-          String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(first_value(d0s0))
-              + "," + resultSet.getString(first_value(d0s1)) + "," + resultSet.getString(first_value(d0s2))
-              + "," + resultSet.getString(first_value(d0s3));
+          String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(first(d0s0))
+              + "," + resultSet.getString(first(d0s1)) + "," + resultSet.getString(first(d0s2))
+              + "," + resultSet.getString(first(d0s3));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
@@ -259,7 +259,7 @@ public class IoTDBAggregationIT {
         getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
         Statement statement = connection.createStatement()) {
 
-      boolean hasResultSet = statement.execute("select last_value(s0),last_value(s2) " +
+      boolean hasResultSet = statement.execute("select last(s0),last(s2) " +
           "from root.vehicle.d0 where time >= 1500 and time < 9000");
 
       Assert.assertTrue(hasResultSet);
@@ -267,36 +267,36 @@ public class IoTDBAggregationIT {
       try (ResultSet resultSet = statement.getResultSet()) {
         cnt = 0;
         while (resultSet.next()) {
-          String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last_value(d0s0))
-              + "," + resultSet.getString(last_value(d0s2));
+          String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last(d0s0))
+              + "," + resultSet.getString(last(d0s2));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
         Assert.assertEquals(1, cnt);
       }
 
-      hasResultSet = statement.execute("select last_value(s0),last_value(s2) " +
+      hasResultSet = statement.execute("select last(s0),last(s2) " +
           "from root.vehicle.d0 where time <= 1600");
 
       Assert.assertTrue(hasResultSet);
       try (ResultSet resultSet = statement.getResultSet()) {
         while (resultSet.next()) {
-          String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last_value(d0s0))
-              + "," + resultSet.getString(last_value(d0s2));
+          String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last(d0s0))
+              + "," + resultSet.getString(last(d0s2));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
         Assert.assertEquals(2, cnt);
       }
 
-      hasResultSet = statement.execute("select last_value(s0),last_value(s2) " +
+      hasResultSet = statement.execute("select last(s0),last(s2) " +
           "from root.vehicle.d0 where time <= 2200");
 
       Assert.assertTrue(hasResultSet);
       try (ResultSet resultSet = statement.getResultSet()) {
         while (resultSet.next()) {
-          String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last_value(d0s0))
-              + "," + resultSet.getString(last_value(d0s2));
+          String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last(d0s0))
+              + "," + resultSet.getString(last(d0s2));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAggregationLargeDataIT.java b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAggregationLargeDataIT.java
index e96dcbc..badb1ee 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAggregationLargeDataIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAggregationLargeDataIT.java
@@ -21,11 +21,9 @@ package org.apache.iotdb.db.integration;
 
 import static org.apache.iotdb.db.integration.Constant.avg;
 import static org.apache.iotdb.db.integration.Constant.count;
-import static org.apache.iotdb.db.integration.Constant.first_value;
-import static org.apache.iotdb.db.integration.Constant.last_value;
+import static org.apache.iotdb.db.integration.Constant.first;
 import static org.apache.iotdb.db.integration.Constant.max_time;
 import static org.apache.iotdb.db.integration.Constant.max_value;
-import static org.apache.iotdb.db.integration.Constant.min_time;
 import static org.apache.iotdb.db.integration.Constant.min_value;
 import static org.apache.iotdb.db.integration.Constant.sum;
 import static org.junit.Assert.fail;
@@ -133,7 +131,7 @@ public class IoTDBAggregationLargeDataIT {
 
     try (Connection connection = DriverManager.
         getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");) {
-      lastValueAggreWithSingleFilterTest();
+      lastAggreWithSingleFilterTest();
       avgAggreWithSingleFilterTest();
       sumAggreWithSingleFilterTest();
       firstAggreWithSingleFilterTest();
@@ -142,7 +140,7 @@ public class IoTDBAggregationLargeDataIT {
       minValueAggreWithSingleFilterTest();
       maxValueAggreWithSingleFilterTest();
 
-      lastValueAggreWithMultiFilterTest();
+      lastAggreWithMultiFilterTest();
       countAggreWithMultiFilterTest();
       minTimeAggreWithMultiFilterTest();
       maxTimeAggreWithMultiFilterTest();
@@ -154,7 +152,7 @@ public class IoTDBAggregationLargeDataIT {
     }
   }
 
-  private void lastValueAggreWithMultiFilterTest() throws SQLException {
+  private void lastAggreWithMultiFilterTest() throws SQLException {
     String[] retArray = new String[]{
         "0,9,39,63.0,E,true"
     };
@@ -163,18 +161,18 @@ public class IoTDBAggregationLargeDataIT {
         getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
         Statement statement = connection.createStatement()) {
       boolean hasResultSet = statement.execute(
-          "select last_value(s0),last_value(s1),last_value(s2),last_value(s3),last_value(s4)" +
+          "select last(s0),last(s1),last(s2),last(s3),last(s4)" +
               " from root.vehicle.d0 where s1 >= 0");
       Assert.assertTrue(hasResultSet);
       try (ResultSet resultSet = statement.getResultSet()) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans = resultSet.getString(TIMESTAMP_STR) + "," +
-              resultSet.getString(last_value(d0s0)) + "," + resultSet
-              .getString(last_value(d0s1))
-              + "," + resultSet.getString(last_value(d0s2)) + "," +
-              resultSet.getString(last_value(d0s3)) + "," + resultSet
-              .getString(last_value(d0s4));
+              resultSet.getString(Constant.last(d0s0)) + "," + resultSet
+              .getString(Constant.last(d0s1))
+              + "," + resultSet.getString(Constant.last(d0s2)) + "," +
+              resultSet.getString(Constant.last(d0s3)) + "," + resultSet
+              .getString(Constant.last(d0s4));
           // System.out.println("============ " + ans);
           Assert.assertEquals(ans, retArray[cnt]);
           cnt++;
@@ -187,7 +185,7 @@ public class IoTDBAggregationLargeDataIT {
     }
   }
 
-  private void lastValueAggreWithSingleFilterTest() throws SQLException {
+  private void lastAggreWithSingleFilterTest() throws SQLException {
     String[] retArray = new String[]{
         "0,9,39,63.0"
     };
@@ -195,16 +193,16 @@ public class IoTDBAggregationLargeDataIT {
     try (Connection connection = DriverManager.
         getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
         Statement statement = connection.createStatement()) {
-      boolean hasResultSet = statement.execute("select last_value(s0),last_value(s1),last_value(s2)" +
+      boolean hasResultSet = statement.execute("select last(s0),last(s1),last(s2)" +
           " from root.vehicle.d0 where s1 >= 0");
       Assert.assertTrue(hasResultSet);
       try (ResultSet resultSet = statement.getResultSet()) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans = resultSet.getString(TIMESTAMP_STR) + "," +
-              resultSet.getString(last_value(d0s0)) + ","
-              + resultSet.getString(last_value(d0s1)) + "," +
-              resultSet.getString(last_value(d0s2));
+              resultSet.getString(Constant.last(d0s0)) + ","
+              + resultSet.getString(Constant.last(d0s1)) + "," +
+              resultSet.getString(Constant.last(d0s2));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
@@ -233,7 +231,7 @@ Statement statement = connection.createStatement()) {
         while (resultSet.next()) {
           String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(sum(d0s0)) + ","
               + resultSet.getString(sum(d0s1)) + "," + Math
-              .round(resultSet.getDouble(sum(d0s2)));
+              .round(resultSet.getDouble(Constant.sum(d0s2)));
           Assert.assertEquals(ans, retArray[cnt]);
           cnt++;
         }
@@ -254,18 +252,18 @@ Statement statement = connection.createStatement()) {
         getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
         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");
+      boolean hasResultSet = statement.execute("select first(s0),first(s1),first(s2),first(s3),"
+          + "first(s4) from root.vehicle.d0 where s1 >= 0");
       Assert.assertTrue(hasResultSet);
       try (ResultSet resultSet = statement.getResultSet()) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans = resultSet.getString(TIMESTAMP_STR) + "," +
-              resultSet.getString(first_value(d0s0)) + ","
-              + resultSet.getString(first_value(d0s1)) + "," +
-              resultSet.getString(first_value(d0s2))
-              + "," + resultSet.getString(first_value(d0s3)) + "," +
-              resultSet.getString(first_value(d0s4));
+              resultSet.getString(Constant.first(d0s0)) + ","
+              + resultSet.getString(Constant.first(d0s1)) + "," +
+              resultSet.getString(Constant.first(d0s2))
+              + "," + resultSet.getString(Constant.first(d0s3)) + "," +
+              resultSet.getString(Constant.first(d0s4));
           Assert.assertEquals(ans, retArray[cnt]);
           cnt++;
         }
@@ -354,11 +352,11 @@ Statement statement = connection.createStatement()) {
       int cnt = 0;
       while (resultSet.next()) {
         String ans = resultSet.getString(TIMESTAMP_STR) + "," +
-            resultSet.getString(min_time(d0s0)) + "," +
-            resultSet.getString(min_time(d0s1)) + "," +
-            resultSet.getString(min_time(d0s2)) +
-            "," + resultSet.getString(min_time(d0s3)) +
-            "," + resultSet.getString(min_time(d0s4));
+            resultSet.getString(Constant.min_time(d0s0)) + "," +
+            resultSet.getString(Constant.min_time(d0s1)) + "," +
+            resultSet.getString(Constant.min_time(d0s2)) +
+            "," + resultSet.getString(Constant.min_time(d0s3)) +
+            "," + resultSet.getString(Constant.min_time(d0s4));
         Assert.assertEquals(ans, retArray[cnt]);
         cnt++;
       }
@@ -534,16 +532,16 @@ Statement statement = connection.createStatement()) {
         getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
 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");
+      boolean hasResultSet = statement.execute("select first(s0),first(s1),first(s2),first(s3),"
+          + "first(s4) from root.vehicle.d0 where s1 >= 0 or s2 < 10");
       Assert.assertTrue(hasResultSet);
       ResultSet resultSet = statement.getResultSet();
       int cnt = 0;
       while (resultSet.next()) {
-        String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(first_value(d0s0))
-            + "," + resultSet.getString(first_value(d0s1)) + "," + resultSet.getString(first_value(d0s2))
-            + "," + resultSet.getString(first_value(d0s3)) + "," + resultSet.getString(first_value(d0s4));
-        //String ans = resultSet.getString(first_value(d0s3));
+        String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(first(d0s0))
+            + "," + resultSet.getString(first(d0s1)) + "," + resultSet.getString(first(d0s2))
+            + "," + resultSet.getString(first(d0s3)) + "," + resultSet.getString(first(d0s4));
+        //String ans = resultSet.getString(first(d0s3));
         //System.out.println("!!!!!============ " + ans);
         Assert.assertEquals(retArray[cnt], ans);
         cnt++;
@@ -603,11 +601,11 @@ Statement statement = connection.createStatement()) {
       int cnt = 0;
       while (resultSet.next()) {
         String ans = resultSet.getString(TIMESTAMP_STR) + "," +
-            resultSet.getString(min_time(d0s0)) + "," +
-            resultSet.getString(min_time(d0s1)) + "," +
-            resultSet.getString(min_time(d0s2)) + "," +
-            resultSet.getString(min_time(d0s3)) + "," +
-            resultSet.getString(min_time(d0s4));
+            resultSet.getString(Constant.min_time(d0s0)) + "," +
+            resultSet.getString(Constant.min_time(d0s1)) + "," +
+            resultSet.getString(Constant.min_time(d0s2)) + "," +
+            resultSet.getString(Constant.min_time(d0s3)) + "," +
+            resultSet.getString(Constant.min_time(d0s4));
         // System.out.println("============ " + ans);
         Assert.assertEquals(ans, retArray[cnt]);
         cnt++;
diff --git a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAggregationSmallDataIT.java b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAggregationSmallDataIT.java
index 959af04..3b6a453 100644
--- a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAggregationSmallDataIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAggregationSmallDataIT.java
@@ -21,8 +21,8 @@ package org.apache.iotdb.db.integration;
 
 import static org.apache.iotdb.db.integration.Constant.avg;
 import static org.apache.iotdb.db.integration.Constant.count;
-import static org.apache.iotdb.db.integration.Constant.first_value;
-import static org.apache.iotdb.db.integration.Constant.last_value;
+import static org.apache.iotdb.db.integration.Constant.first;
+import static org.apache.iotdb.db.integration.Constant.last;
 import static org.apache.iotdb.db.integration.Constant.max_time;
 import static org.apache.iotdb.db.integration.Constant.max_value;
 import static org.apache.iotdb.db.integration.Constant.min_time;
@@ -218,28 +218,28 @@ public class IoTDBAggregationSmallDataIT {
         Assert.assertEquals(2, cnt);
       }
 
-      //select first_value(d0.s0),first_value(d1.s1),first_value(d0.s3) from root.vehicle
+      //select first(d0.s0),first(d1.s1),first(d0.s3) from root.vehicle
       hasResultSet = statement.execute(
-          "select first_value(d0.s0),first_value(d1.s1),first_value(d0.s3) from root.vehicle");
+          "select first(d0.s0),first(d1.s1),first(d0.s3) from root.vehicle");
       Assert.assertTrue(hasResultSet);
       try (ResultSet resultSet = statement.getResultSet()) {
         while (resultSet.next()) {
-          String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(first_value(d0s0))
-              + "," + resultSet.getString(first_value(d1s1)) + "," + resultSet.getString(first_value(d0s3));
+          String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(first(d0s0))
+              + "," + resultSet.getString(first(d1s1)) + "," + resultSet.getString(first(d0s3));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
         Assert.assertEquals(3, cnt);
       }
 
-      //select last_value(d0.s0),last_value(d1.s1),last_value(d0.s3) from root.vehicle
+      //select last(d0.s0),last(d1.s1),last(d0.s3) from root.vehicle
       hasResultSet = statement.execute(
-          "select last_value(d0.s0),last_value(d1.s1),last_value(d0.s3) from root.vehicle");
+          "select last(d0.s0),last(d1.s1),last(d0.s3) from root.vehicle");
       Assert.assertTrue(hasResultSet);
       try (ResultSet resultSet = statement.getResultSet()) {
         while (resultSet.next()) {
-          String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last_value(d0s0))
-              + "," + resultSet.getString(last_value(d1s1)) + "," + resultSet.getString(last_value(d0s3));
+          String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last(d0s0))
+              + "," + resultSet.getString(last(d1s1)) + "," + resultSet.getString(last(d0s3));
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
         }
@@ -276,14 +276,14 @@ public class IoTDBAggregationSmallDataIT {
         Statement statement = connection.createStatement()) {
 
       boolean hasResultSet = statement.execute(
-          "select last_value(s0),last_value(s1) from root.vehicle.d0 where s2 >= 3.33");
+          "select last(s0),last(s1) from root.vehicle.d0 where s2 >= 3.33");
       Assert.assertTrue(hasResultSet);
       try (ResultSet resultSet = statement.getResultSet()) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
-              resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last_value(d0s0)) + ","
-                  + resultSet.getString(last_value(d0s1));
+              resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last(d0s0)) + ","
+                  + resultSet.getString(last(d0s1));
           //System.out.println("!!!!!============ " + ans);
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
@@ -307,14 +307,14 @@ public class IoTDBAggregationSmallDataIT {
         Statement statement = connection.createStatement();) {
 
       boolean hasResultSet = statement.execute(
-          "select first_value(s0),first_value(s1) from root.vehicle.d0 where s2 >= 3.33");
+          "select first(s0),first(s1) from root.vehicle.d0 where s2 >= 3.33");
       Assert.assertTrue(hasResultSet);
       try (ResultSet resultSet = statement.getResultSet()) {
         int cnt = 0;
         while (resultSet.next()) {
           String ans =
-              resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(first_value(d0s0)) + ","
-                  + resultSet.getString(first_value(d0s1));
+              resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(first(d0s0)) + ","
+                  + resultSet.getString(first(d0s1));
           //System.out.println("!!!!!============ " + ans);
           Assert.assertEquals(retArray[cnt], ans);
           cnt++;
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/common/constant/StatisticConstant.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/common/constant/StatisticConstant.java
index f41cca4..fb1c02a 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/common/constant/StatisticConstant.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/common/constant/StatisticConstant.java
@@ -29,13 +29,13 @@ public class StatisticConstant {
 
   public static final String COUNT = "count";
 
-  public static final String FIRST_VALUE = "first_value";
+  public static final String FIRST = "first";
 
   public static final String AVG = "avg";
 
   public static final String SUM = "sum";
 
-  public static final String LAST_VALUE = "last_value";
+  public static final String LAST = "last";
 
   private StatisticConstant(){}
 }