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/29 08:19:51 UTC
[incubator-iotdb] branch master updated: [IOTDB-298] Refactor the
"last" and "first" aggregators (#594)
This is an automated email from the ASF dual-hosted git repository.
qiaojialin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 2785bd1 [IOTDB-298] Refactor the "last" and "first" aggregators (#594)
2785bd1 is described below
commit 2785bd157597cca70f201b4bb64aa32f146f776c
Author: Yi Tao <th...@163.com>
AuthorDate: Fri Nov 29 16:19:43 2019 +0800
[IOTDB-298] Refactor the "last" and "first" aggregators (#594)
* IOTDB-298 refactor: change aggregation function's name:last to last_value, first to first_value
---
.../5-Operation Manual/4-SQL Reference.md | 14 +++-
.../5-Operation Manual/4-SQL Reference.md | 18 +++--
...{FirstAggrFunc.java => FirstValueAggrFunc.java} | 4 +-
.../{LastAggrFunc.java => LastValueAggrFunc.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, 134 insertions(+), 114 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 f45bf35..a8f74b3 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,11 +495,19 @@ 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
+* 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>
+```
+* LAST_VALUE
+原有的 `LAST` 方法在 `v0.10.0` 版本更名为 `LAST_VALUE`。
```
-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
+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
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 88982f1..ff98ea6 100644
--- a/docs/Documentation/UserGuide/5-Operation Manual/4-SQL Reference.md
+++ b/docs/Documentation/UserGuide/5-Operation Manual/4-SQL Reference.md
@@ -579,13 +579,23 @@ 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
+* FIRST_VALUE(Rename from `FIRST` at `V0.10.0`)
-The FIRST function returns the first point value of the choosen timeseries(one or more).
+The FIRST_VALUE function returns the first point value of the choosen timeseries(one or more).
```
-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
+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
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/FirstAggrFunc.java b/server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/FirstValueAggrFunc.java
similarity index 97%
rename from server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/FirstAggrFunc.java
rename to server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/FirstValueAggrFunc.java
index 58b6069..25288ef 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/FirstAggrFunc.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/FirstValueAggrFunc.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 FirstAggrFunc extends AggregateFunction {
+public class FirstValueAggrFunc extends AggregateFunction {
- public FirstAggrFunc(TSDataType dataType) {
+ public FirstValueAggrFunc(TSDataType dataType) {
super(dataType);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/LastAggrFunc.java b/server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/LastValueAggrFunc.java
similarity index 97%
rename from server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/LastAggrFunc.java
rename to server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/LastValueAggrFunc.java
index 7a4687b..ac51f37 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/LastAggrFunc.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/aggregation/impl/LastValueAggrFunc.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 LastAggrFunc extends AggregateFunction {
+public class LastValueAggrFunc extends AggregateFunction {
- public LastAggrFunc(TSDataType dataType) {
+ public LastValueAggrFunc(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 8978cdc..e9e4bca 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.LastAggrFunc;
+import org.apache.iotdb.db.query.aggregation.impl.LastValueAggrFunc;
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 LastAggrFunc) {
+ if (function instanceof MaxTimeAggrFunc || function instanceof LastValueAggrFunc) {
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 LastAggrFunc) {
+ if (function instanceof MaxTimeAggrFunc || function instanceof LastValueAggrFunc) {
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 aecb9a1..24f893a 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.FirstAggrFunc;
-import org.apache.iotdb.db.query.aggregation.impl.LastAggrFunc;
+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.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:
- return new FirstAggrFunc(dataType);
+ case StatisticConstant.FIRST_VALUE:
+ return new FirstValueAggrFunc(dataType);
case StatisticConstant.SUM:
return new SumAggrFunc(dataType);
- case StatisticConstant.LAST:
- return new LastAggrFunc(dataType);
+ case StatisticConstant.LAST_VALUE:
+ return new LastValueAggrFunc(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 b8a6583..1f113d8 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:
- case StatisticConstant.FIRST:
+ case StatisticConstant.LAST_VALUE:
+ case StatisticConstant.FIRST_VALUE:
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 da2b08a..c606d68 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(String path) {
- return String.format("first(%s)", path);
+ public static String first_value(String path) {
+ return String.format("first_value(%s)", path);
}
- public static String last(String path) {
- return String.format("last(%s)", path);
+ public static String last_value(String path) {
+ return String.format("last_value(%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 6755b52..d54a1e0 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;
-import static org.apache.iotdb.db.integration.Constant.last;
+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.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(temperature), first(temperature) from root.ln.wf01.wt01 where time > 3 "
+ "select last_value(temperature), first_value(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("root.ln.wf01.wt01.temperature"))
- + "," + resultSet.getString(first("root.ln.wf01.wt01.temperature"));
+ .getString(last_value("root.ln.wf01.wt01.temperature"))
+ + "," + resultSet.getString(first_value("root.ln.wf01.wt01.temperature"));
Assert.assertEquals(retArray1[cnt], ans);
cnt++;
}
@@ -324,7 +324,7 @@ public class IOTDBGroupByIT {
}
hasResultSet = statement.execute(
- "select first(temperature), last(temperature) from root.ln.wf01.wt01 "
+ "select first_value(temperature), last_value(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("root.ln.wf01.wt01.temperature"))
- + "," + resultSet.getString(first("root.ln.wf01.wt01.temperature"));
+ .getString(last_value("root.ln.wf01.wt01.temperature"))
+ + "," + resultSet.getString(first_value("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(temperature), first(temperature), sum(temperature) from "
+ "select last_value(temperature), first_value(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("root.ln.wf01.wt01.temperature"))
- + "," + resultSet.getString(first("root.ln.wf01.wt01.temperature")) + ","
+ .getString(last_value("root.ln.wf01.wt01.temperature"))
+ + "," + resultSet.getString(first_value("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(temperature), last(temperature), sum(temperature) from "
+ "select first_value(temperature), last_value(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("root.ln.wf01.wt01.temperature"))
- + "," + resultSet.getString(first("root.ln.wf01.wt01.temperature")) + ","
+ .getString(last_value("root.ln.wf01.wt01.temperature"))
+ + "," + resultSet.getString(first_value("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 f9e0efa..6db444c 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(s0),first(s1),first(s2),first(s3) " +
+ 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);
@@ -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(d0s0))
- + "," + resultSet.getString(first(d0s1)) + "," + resultSet.getString(first(d0s2))
- + "," + resultSet.getString(first(d0s3));
+ 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));
Assert.assertEquals(retArray[cnt], ans);
cnt++;
}
Assert.assertEquals(1, cnt);
}
- hasResultSet = statement.execute("select first(s0),first(s1),first(s2),first(s3) " +
+ hasResultSet = statement.execute("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()) {
while (resultSet.next()) {
- String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(first(d0s0))
- + "," + resultSet.getString(first(d0s1)) + "," + resultSet.getString(first(d0s2))
- + "," + resultSet.getString(first(d0s3));
+ 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));
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(s0),last(s2) " +
+ boolean hasResultSet = statement.execute("select last_value(s0),last_value(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(d0s0))
- + "," + resultSet.getString(last(d0s2));
+ String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last_value(d0s0))
+ + "," + resultSet.getString(last_value(d0s2));
Assert.assertEquals(retArray[cnt], ans);
cnt++;
}
Assert.assertEquals(1, cnt);
}
- hasResultSet = statement.execute("select last(s0),last(s2) " +
+ 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()) {
while (resultSet.next()) {
- String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last(d0s0))
- + "," + resultSet.getString(last(d0s2));
+ String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last_value(d0s0))
+ + "," + resultSet.getString(last_value(d0s2));
Assert.assertEquals(retArray[cnt], ans);
cnt++;
}
Assert.assertEquals(2, cnt);
}
- hasResultSet = statement.execute("select last(s0),last(s2) " +
+ 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()) {
while (resultSet.next()) {
- String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last(d0s0))
- + "," + resultSet.getString(last(d0s2));
+ String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last_value(d0s0))
+ + "," + resultSet.getString(last_value(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 badb1ee..e96dcbc 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,9 +21,11 @@ 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;
+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.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;
@@ -131,7 +133,7 @@ public class IoTDBAggregationLargeDataIT {
try (Connection connection = DriverManager.
getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");) {
- lastAggreWithSingleFilterTest();
+ lastValueAggreWithSingleFilterTest();
avgAggreWithSingleFilterTest();
sumAggreWithSingleFilterTest();
firstAggreWithSingleFilterTest();
@@ -140,7 +142,7 @@ public class IoTDBAggregationLargeDataIT {
minValueAggreWithSingleFilterTest();
maxValueAggreWithSingleFilterTest();
- lastAggreWithMultiFilterTest();
+ lastValueAggreWithMultiFilterTest();
countAggreWithMultiFilterTest();
minTimeAggreWithMultiFilterTest();
maxTimeAggreWithMultiFilterTest();
@@ -152,7 +154,7 @@ public class IoTDBAggregationLargeDataIT {
}
}
- private void lastAggreWithMultiFilterTest() throws SQLException {
+ private void lastValueAggreWithMultiFilterTest() throws SQLException {
String[] retArray = new String[]{
"0,9,39,63.0,E,true"
};
@@ -161,18 +163,18 @@ public class IoTDBAggregationLargeDataIT {
getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
Statement statement = connection.createStatement()) {
boolean hasResultSet = statement.execute(
- "select last(s0),last(s1),last(s2),last(s3),last(s4)" +
+ "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()) {
int cnt = 0;
while (resultSet.next()) {
String ans = resultSet.getString(TIMESTAMP_STR) + "," +
- 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));
+ 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));
// System.out.println("============ " + ans);
Assert.assertEquals(ans, retArray[cnt]);
cnt++;
@@ -185,7 +187,7 @@ public class IoTDBAggregationLargeDataIT {
}
}
- private void lastAggreWithSingleFilterTest() throws SQLException {
+ private void lastValueAggreWithSingleFilterTest() throws SQLException {
String[] retArray = new String[]{
"0,9,39,63.0"
};
@@ -193,16 +195,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(s0),last(s1),last(s2)" +
+ boolean hasResultSet = statement.execute("select last_value(s0),last_value(s1),last_value(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(Constant.last(d0s0)) + ","
- + resultSet.getString(Constant.last(d0s1)) + "," +
- resultSet.getString(Constant.last(d0s2));
+ resultSet.getString(last_value(d0s0)) + ","
+ + resultSet.getString(last_value(d0s1)) + "," +
+ resultSet.getString(last_value(d0s2));
Assert.assertEquals(retArray[cnt], ans);
cnt++;
}
@@ -231,7 +233,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(Constant.sum(d0s2)));
+ .round(resultSet.getDouble(sum(d0s2)));
Assert.assertEquals(ans, retArray[cnt]);
cnt++;
}
@@ -252,18 +254,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(s0),first(s1),first(s2),first(s3),"
- + "first(s4) from root.vehicle.d0 where s1 >= 0");
+ 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");
Assert.assertTrue(hasResultSet);
try (ResultSet resultSet = statement.getResultSet()) {
int cnt = 0;
while (resultSet.next()) {
String ans = resultSet.getString(TIMESTAMP_STR) + "," +
- 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));
+ 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));
Assert.assertEquals(ans, retArray[cnt]);
cnt++;
}
@@ -352,11 +354,11 @@ Statement statement = connection.createStatement()) {
int cnt = 0;
while (resultSet.next()) {
String ans = resultSet.getString(TIMESTAMP_STR) + "," +
- 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));
+ 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));
Assert.assertEquals(ans, retArray[cnt]);
cnt++;
}
@@ -532,16 +534,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(s0),first(s1),first(s2),first(s3),"
- + "first(s4) from root.vehicle.d0 where s1 >= 0 or s2 < 10");
+ 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);
ResultSet resultSet = statement.getResultSet();
int cnt = 0;
while (resultSet.next()) {
- 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));
+ 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));
//System.out.println("!!!!!============ " + ans);
Assert.assertEquals(retArray[cnt], ans);
cnt++;
@@ -601,11 +603,11 @@ Statement statement = connection.createStatement()) {
int cnt = 0;
while (resultSet.next()) {
String ans = resultSet.getString(TIMESTAMP_STR) + "," +
- 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));
+ 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));
// 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 3b6a453..959af04 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;
-import static org.apache.iotdb.db.integration.Constant.last;
+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.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(d0.s0),first(d1.s1),first(d0.s3) from root.vehicle
+ //select first_value(d0.s0),first_value(d1.s1),first_value(d0.s3) from root.vehicle
hasResultSet = statement.execute(
- "select first(d0.s0),first(d1.s1),first(d0.s3) from root.vehicle");
+ "select first_value(d0.s0),first_value(d1.s1),first_value(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(d0s0))
- + "," + resultSet.getString(first(d1s1)) + "," + resultSet.getString(first(d0s3));
+ String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(first_value(d0s0))
+ + "," + resultSet.getString(first_value(d1s1)) + "," + resultSet.getString(first_value(d0s3));
Assert.assertEquals(retArray[cnt], ans);
cnt++;
}
Assert.assertEquals(3, cnt);
}
- //select last(d0.s0),last(d1.s1),last(d0.s3) from root.vehicle
+ //select last_value(d0.s0),last_value(d1.s1),last_value(d0.s3) from root.vehicle
hasResultSet = statement.execute(
- "select last(d0.s0),last(d1.s1),last(d0.s3) from root.vehicle");
+ "select last_value(d0.s0),last_value(d1.s1),last_value(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(d0s0))
- + "," + resultSet.getString(last(d1s1)) + "," + resultSet.getString(last(d0s3));
+ String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last_value(d0s0))
+ + "," + resultSet.getString(last_value(d1s1)) + "," + resultSet.getString(last_value(d0s3));
Assert.assertEquals(retArray[cnt], ans);
cnt++;
}
@@ -276,14 +276,14 @@ public class IoTDBAggregationSmallDataIT {
Statement statement = connection.createStatement()) {
boolean hasResultSet = statement.execute(
- "select last(s0),last(s1) from root.vehicle.d0 where s2 >= 3.33");
+ "select last_value(s0),last_value(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(d0s0)) + ","
- + resultSet.getString(last(d0s1));
+ resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(last_value(d0s0)) + ","
+ + resultSet.getString(last_value(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(s0),first(s1) from root.vehicle.d0 where s2 >= 3.33");
+ "select first_value(s0),first_value(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(d0s0)) + ","
- + resultSet.getString(first(d0s1));
+ resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(first_value(d0s0)) + ","
+ + resultSet.getString(first_value(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 fb1c02a..f41cca4 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 = "first";
+ public static final String FIRST_VALUE = "first_value";
public static final String AVG = "avg";
public static final String SUM = "sum";
- public static final String LAST = "last";
+ public static final String LAST_VALUE = "last_value";
private StatisticConstant(){}
}