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

hxd pushed a commit to branch change-doc
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 2e7194bc66f4bb1c2b7151466906611a7b7c0fbf
Merge: a93a8b7 a7ac8c1
Author: xiangdong huang <[email protected]>
AuthorDate: Wed Jun 10 15:36:46 2020 +0800

    merge master

 docs/SystemDesign/DataQuery/AggregationQuery.md    |  22 +
 docs/SystemDesign/DataQuery/AlignByDeviceQuery.md  |   4 +-
 docs/SystemDesign/DataQuery/GroupByQuery.md        |  25 +-
 .../DML Data Manipulation Language.md              |  82 ++++
 docs/UserGuide/Operation Manual/SQL Reference.md   |   5 +-
 docs/zh/SystemDesign/DataQuery/AggregationQuery.md |  20 +
 .../SystemDesign/DataQuery/AlignByDeviceQuery.md   |   4 +-
 docs/zh/SystemDesign/DataQuery/GroupByQuery.md     |  24 +-
 .../DML Data Manipulation Language.md              |  85 +++-
 .../zh/UserGuide/Operation Manual/SQL Reference.md |   5 +-
 .../iotdb/flink/tsfile/RowRowRecordParser.java     |   2 +-
 .../org/apache/iotdb/jdbc/IoTDBConnection.java     |   7 +-
 .../java/org/apache/iotdb/jdbc/IoTDBStatement.java |   9 +-
 server/pom.xml                                     |  10 +
 .../org/apache/iotdb/db/qp/strategy/SqlBase.g4     |  22 +-
 .../org/apache/iotdb/db/auth/AuthorityChecker.java |   2 +-
 .../iotdb/db/auth/authorizer/BasicAuthorizer.java  |  73 ++-
 .../iotdb/db/auth/authorizer/IAuthorizer.java      | 186 ++++----
 .../apache/iotdb/db/auth/entity/PathPrivilege.java |  26 +-
 .../java/org/apache/iotdb/db/auth/entity/Role.java |  35 +-
 .../java/org/apache/iotdb/db/auth/entity/User.java |  51 ++-
 .../iotdb/db/auth/role/BasicRoleManager.java       |  18 +
 .../apache/iotdb/db/auth/role/IRoleManager.java    |  30 +-
 .../iotdb/db/auth/user/BasicUserManager.java       |  20 +
 .../apache/iotdb/db/auth/user/IUserManager.java    |  96 ++--
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java |  15 +-
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |  37 +-
 .../db/conf/adapter/IoTDBConfigDynamicAdapter.java |   2 +-
 .../org/apache/iotdb/db/engine/StorageEngine.java  |  82 +++-
 .../iotdb/db/engine/merge/task/MergeFileTask.java  |   8 +-
 .../iotdb/db/engine/merge/task/MergeTask.java      |   4 +-
 .../db/engine/modification/ModificationFile.java   |  40 +-
 .../engine/storagegroup/StorageGroupProcessor.java | 187 ++++++--
 .../iotdb/db/engine/storagegroup/TsFileLock.java   | 111 +++++
 .../db/engine/storagegroup/TsFileResource.java     | 112 ++++-
 .../iotdb/db/engine/upgrade/UpgradeTask.java       |   8 +-
 .../version/SimpleFileVersionController.java       |   1 -
 .../iotdb/db/engine/version/VersionController.java |   1 +
 .../org/apache/iotdb/db/metadata/MManager.java     | 202 +++++++--
 .../java/org/apache/iotdb/db/metadata/MTree.java   | 111 +++--
 .../org/apache/iotdb/db/metadata/MetaUtils.java    |   2 +-
 .../iotdb/db/metadata/mnode/InternalMNode.java     |   2 +-
 .../{LeafMNode.java => MeasurementMNode.java}      |  57 +--
 .../apache/iotdb/db/qp/constant/SQLConstant.java   |   3 +
 .../apache/iotdb/db/qp/executor/IPlanExecutor.java |   3 +-
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  | 190 +++++---
 .../org/apache/iotdb/db/qp/logical/Operator.java   |   2 +-
 .../iotdb/db/qp/logical/crud/QueryOperator.java    |  27 +-
 .../qp/logical/sys/LoadConfigurationOperator.java  |  13 +-
 .../apache/iotdb/db/qp/physical/PhysicalPlan.java  | 127 +++++-
 .../iotdb/db/qp/physical/crud/AggregationPlan.java |  10 +
 .../db/qp/physical/crud/AlignByDevicePlan.java     |  15 +-
 .../iotdb/db/qp/physical/crud/DeletePlan.java      |  21 +-
 ...oupByFillPlan.java => GroupByTimeFillPlan.java} |   4 +-
 .../{GroupByPlan.java => GroupByTimePlan.java}     |   7 +-
 .../iotdb/db/qp/physical/crud/InsertPlan.java      |  28 +-
 .../db/qp/physical/crud/InsertTabletPlan.java      |   6 +-
 .../iotdb/db/qp/physical/sys/AuthorPlan.java       | 189 +++++++-
 .../db/qp/physical/sys/CreateTimeSeriesPlan.java   |   8 +-
 .../iotdb/db/qp/physical/sys/DataAuthPlan.java     |  53 ++-
 .../db/qp/physical/sys/DeleteStorageGroupPlan.java |  36 ++
 .../db/qp/physical/sys/DeleteTimeSeriesPlan.java   |  48 +-
 .../db/qp/physical/sys/LoadConfigurationPlan.java  | 102 ++++-
 .../db/qp/physical/sys/SetStorageGroupPlan.java    |   4 +-
 .../iotdb/db/qp/physical/sys/SetTTLPlan.java       |  29 ++
 .../db/qp/physical/sys/ShowChildPathsPlan.java     |   2 +-
 .../db/qp/physical/sys/ShowTimeSeriesPlan.java     |  31 ++
 .../iotdb/db/qp/strategy/LogicalGenerator.java     |  39 +-
 .../iotdb/db/qp/strategy/PhysicalGenerator.java    |  91 ++--
 .../db/query/aggregation/AggregateResult.java      |   7 +-
 .../iotdb/db/query/control/FileReaderManager.java  |   4 +-
 .../db/query/dataset/AlignByDeviceDataSet.java     |  42 +-
 .../db/query/dataset/ShowTimeSeriesResult.java     |  79 +++-
 .../iotdb/db/query/dataset/SingleDataSet.java      |   4 +-
 .../dataset/groupby/GroupByEngineDataSet.java      |  16 +-
 .../query/dataset/groupby/GroupByFillDataSet.java  |  10 +-
 .../query/dataset/groupby/GroupByTimeDataSet.java  |  96 ++++
 .../groupby/GroupByWithValueFilterDataSet.java     |  26 +-
 .../groupby/GroupByWithoutValueFilterDataSet.java  |  16 +-
 .../dataset/groupby/LocalGroupByExecutor.java      |  11 +-
 .../db/query/executor/AggregationExecutor.java     |  30 +-
 .../iotdb/db/query/executor/FillQueryExecutor.java |   9 +-
 .../iotdb/db/query/executor/IQueryRouter.java      |   4 +-
 .../iotdb/db/query/executor/LastQueryExecutor.java |   6 +-
 .../iotdb/db/query/executor/QueryRouter.java       |  78 +++-
 .../apache/iotdb/db/query/executor/fill/IFill.java |  15 +-
 .../db/query/executor/fill/LastPointReader.java    |  17 +-
 .../iotdb/db/query/executor/fill/LinearFill.java   |  39 +-
 .../iotdb/db/query/reader/series/SeriesReader.java |   8 +-
 .../org/apache/iotdb/db/service/JMXService.java    |   2 +-
 .../org/apache/iotdb/db/service/RPCService.java    |   2 +
 .../org/apache/iotdb/db/service/TSServiceImpl.java |  37 +-
 .../org/apache/iotdb/db/utils/FilePathUtils.java   |  87 ++++
 .../org/apache/iotdb/db/utils/OpenFileNumUtil.java |   2 +-
 .../org/apache/iotdb/db/utils/SerializeUtils.java  | 497 +++++++++++++++++++++
 .../org/apache/iotdb/db/utils/UpgradeUtils.java    |   4 +-
 .../writelog/manager/MultiFileLogNodeManager.java  |   4 +-
 .../db/writelog/node/ExclusiveWriteLogNode.java    |   4 +-
 .../iotdb/db/engine/storagegroup/TTLTest.java      |   3 +-
 .../iotdb/db/integration/IoTDBAddSubDeviceIT.java  | 203 +++++++++
 .../apache/iotdb/db/integration/IoTDBLastIT.java   |  12 +-
 .../iotdb/db/metadata/MManagerAdvancedTest.java    |  62 ++-
 .../iotdb/db/metadata/MManagerImproveTest.java     |   4 +-
 .../org/apache/iotdb/db/metadata/MTreeTest.java    |  77 ++--
 .../java/org/apache/iotdb/db/qp/PlannerTest.java   |   2 +-
 .../apache/iotdb/db/qp/plan/PhysicalPlanTest.java  | 120 +++--
 .../db/query/dataset/GroupByLevelDataSetTest.java  | 169 +++++++
 .../db/query/dataset/GroupByTimeDataSetTest.java   | 186 ++++++++
 .../query/executor/GroupByEngineDataSetTest.java   |  62 +--
 .../org/apache/iotdb/db/tools/WalCheckerTest.java  |   4 +-
 .../iotdb/db/writelog/io/LogWriterReaderTest.java  |   2 +-
 .../db/writelog/io/MultiFileLogReaderTest.java     |   2 +-
 .../java/org/apache/iotdb/rpc/TSStatusCode.java    |   9 +
 service-rpc/src/main/thrift/cluster.thrift         | 387 ++++++++++++++++
 .../java/org/apache/iotdb/session/Session.java     |   9 +-
 .../apache/iotdb/tsfile/common/cache/LRUCache.java |  10 +-
 .../apache/iotdb/tsfile/read/TimeValuePair.java    |   1 -
 .../apache/iotdb/tsfile/read/common/RowRecord.java |   8 +
 .../iotdb/tsfile/utils/ReadWriteIOUtils.java       |   9 +
 119 files changed, 4523 insertions(+), 907 deletions(-)

diff --cc 
server/src/main/java/org/apache/iotdb/db/qp/physical/crud/AlignByDevicePlan.java
index cce4b5d,5fde38f..cf1e550
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/AlignByDevicePlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/AlignByDevicePlan.java
@@@ -39,8 -39,7 +39,8 @@@ public class AlignByDevicePlan extends 
    // to record the real type of the measurement
    private Map<String, TSDataType> measurementDataTypeMap;
  
-   private GroupByPlan groupByPlan;
+   private GroupByTimePlan groupByTimePlan;
++
    private FillQueryPlan fillQueryPlan;
    private AggregationPlan aggregationPlan;
  
@@@ -98,13 -97,13 +98,14 @@@
      this.measurementDataTypeMap = measurementDataTypeMap;
    }
  
-   public GroupByPlan getGroupByPlan() {
-     return groupByPlan;
++
+   public GroupByTimePlan getGroupByTimePlan() {
+     return groupByTimePlan;
    }
  
-   public void setGroupByPlan(GroupByPlan groupByPlan) {
-     this.groupByPlan = groupByPlan;
-     this.setOperatorType(OperatorType.GROUPBY);
+   public void setGroupByTimePlan(GroupByTimePlan groupByTimePlan) {
+     this.groupByTimePlan = groupByTimePlan;
+     this.setOperatorType(OperatorType.GROUPBYTIME);
    }
  
    public FillQueryPlan getFillQueryPlan() {
diff --cc 
server/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java
index 4a78844,cff982c..7ce9df9
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java
@@@ -276,7 -281,20 +281,19 @@@ public class PhysicalGenerator 
      }
    }
  
 -
+   protected PhysicalPlan 
generateLoadConfigurationPlan(LoadConfigurationOperatorType type)
+       throws QueryProcessException {
+     switch (type) {
+       case GLOBAL:
+         return new LoadConfigurationPlan(LoadConfigurationPlanType.GLOBAL);
+       case LOCAL:
+         return new LoadConfigurationPlan(LoadConfigurationPlanType.LOCAL);
+       default:
+         throw new QueryProcessException(
+             String.format("Unrecognized load configuration operator type, 
%s", type.name()));
+     }
  
+   }
  
    /**
     * get types for path list
@@@ -325,22 -343,31 +342,32 @@@
            throw new QueryProcessException("Group By Fill only support 
last_value function");
          }
        }
-       ((GroupByFillPlan) queryPlan).setFillType(queryOperator.getFillTypes());
-     } else if (queryOperator.isGroupBy()) {
-       queryPlan = new GroupByPlan();
-       ((GroupByPlan) queryPlan).setInterval(queryOperator.getUnit());
-       ((GroupByPlan) 
queryPlan).setSlidingStep(queryOperator.getSlidingStep());
-       ((GroupByPlan) queryPlan).setLeftCRightO(queryOperator.isLeftCRightO());
+       ((GroupByTimeFillPlan) 
queryPlan).setFillType(queryOperator.getFillTypes());
+     } else if (queryOperator.isGroupByTime()) {
+       queryPlan = new GroupByTimePlan();
+       ((GroupByTimePlan) queryPlan).setInterval(queryOperator.getUnit());
+       ((GroupByTimePlan) 
queryPlan).setSlidingStep(queryOperator.getSlidingStep());
+       ((GroupByTimePlan) 
queryPlan).setLeftCRightO(queryOperator.isLeftCRightO());
        if (!queryOperator.isLeftCRightO()) {
-         ((GroupByPlan) queryPlan).setStartTime(queryOperator.getStartTime() + 
1);
-         ((GroupByPlan) queryPlan).setEndTime(queryOperator.getEndTime() + 1);
+         ((GroupByTimePlan) 
queryPlan).setStartTime(queryOperator.getStartTime() + 1);
+         ((GroupByTimePlan) queryPlan).setEndTime(queryOperator.getEndTime() + 
1);
        } else {
-         ((GroupByPlan) queryPlan).setStartTime(queryOperator.getStartTime());
-         ((GroupByPlan) queryPlan).setEndTime(queryOperator.getEndTime());
+         ((GroupByTimePlan) 
queryPlan).setStartTime(queryOperator.getStartTime());
+         ((GroupByTimePlan) queryPlan).setEndTime(queryOperator.getEndTime());
        }
-       ((GroupByPlan) queryPlan)
+       ((GroupByTimePlan) queryPlan)
            
.setAggregations(queryOperator.getSelectOperator().getAggregations());
 +
+       ((GroupByTimePlan) queryPlan).setLevel(queryOperator.getLevel());
+ 
+       if (queryOperator.getLevel() >= 0) {
+         for (int i = 0; i < 
queryOperator.getSelectOperator().getAggregations().size(); i++) {
+           if (!SQLConstant.COUNT
+               
.equals(queryOperator.getSelectOperator().getAggregations().get(i))) {
+             throw new QueryProcessException("group by level only support 
count now.");
+           }
+         }
+       }
      } else if (queryOperator.isFill()) {
        queryPlan = new FillQueryPlan();
        FilterOperator timeFilter = queryOperator.getFilterOperator();

Reply via email to