You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ro...@apache.org on 2022/05/03 10:08:11 UTC

[iotdb] branch iotdb-3050 updated (a4a8656cec -> f4e3d1cc30)

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

rong pushed a change to branch iotdb-3050
in repository https://gitbox.apache.org/repos/asf/iotdb.git


    from a4a8656cec [IOTDB-2981] Modify antlr, IoTDBSqlVisitor and ASTVisitor for new syntax convention (#5696)
     add 10ab99946a rename package of mpp and confignode (#5758)
     add b12aa03e32 [IOTDB-3075] RatisConsensus UUID bugfix (#5765)
     add 93aa5b0775 [IOTDB-2870] Unit test of spliting insert node in new cluster (#5769)
     add 0af1aede62 Add SyncThriftClientErrorHandler for proxy to clean the code (#5710)
     add 38ca619b69 [IOTDB-2993][Bugfix] Support IN, LIKE, and REGEXP expressions in Transform Operator (#5766)
     new 71fa7dff7d support time expression
     new f4e3d1cc30 fix bug

The 2 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.


Summary of changes:
 .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4   |   3 +-
 .../iotdb/confignode/client/AsyncClientPool.java   |   8 -
 .../LoadBalancer.java => manager/LoadManager.java} |   7 +-
 .../org/apache/iotdb/consensus/ratis/Utils.java    |  76 +++---
 .../iotdb/db/integration/IoTDBNestedQueryIT.java   |  34 ++-
 node-commons/pom.xml                               |   6 +
 .../apache/iotdb/commons/client/ClientManager.java |   4 +-
 .../client/sync/SyncConfigNodeIServiceClient.java  |  20 +-
 .../sync/SyncDataNodeDataBlockServiceClient.java   |  20 +-
 .../sync/SyncDataNodeInternalServiceClient.java    |  17 +-
 .../commons/client/sync/SyncThriftClient.java      |   9 +-
 .../sync/SyncThriftClientWithErrorHandler.java     |  64 +++++
 .../apache/iotdb/commons/ClientManagerTest.java    |  50 ++--
 .../org/apache/iotdb/db/auth/AuthorityChecker.java |   2 +-
 .../db/auth/authorizer/AuthorizerManager.java      |   6 +-
 .../db/auth/authorizer/ClusterAuthorizer.java      |   2 +-
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java |   2 +-
 .../consensus/statemachine/BaseStateMachine.java   |   2 +-
 .../statemachine/DataRegionStateMachine.java       |  16 +-
 .../statemachine/SchemaRegionStateMachine.java     |   6 +-
 .../apache/iotdb/db/engine/StorageEngineV2.java    |   4 +-
 .../iotdb/db/engine/memtable/AbstractMemTable.java |   4 +-
 .../apache/iotdb/db/engine/memtable/IMemTable.java |   4 +-
 .../iotdb/db/engine/storagegroup/DataRegion.java   |  10 +-
 .../db/engine/storagegroup/TsFileProcessor.java    |   4 +-
 .../exception/sql/StatementAnalyzeException.java   |   2 +-
 .../db/metadata/cache/DataNodeSchemaCache.java     |   4 +-
 .../metadata/visitor/SchemaExecutionVisitor.java   |  10 +-
 .../iotdb/db/mpp/common/MPPQueryContext.java       |   2 +-
 .../org/apache/iotdb/db/mpp/common/QueryId.java    |   2 +-
 .../iotdb/db/mpp/common/ResultNodeContext.java     |   2 +-
 .../db/mpp/common/filter/BasicFilterType.java      |   4 +-
 .../db/mpp/common/filter/BasicFunctionFilter.java  |   4 +-
 .../iotdb/db/mpp/common/filter/FunctionFilter.java |   2 +-
 .../iotdb/db/mpp/common/filter/InFilter.java       |   2 +-
 .../iotdb/db/mpp/common/filter/LikeFilter.java     |   2 +-
 .../iotdb/db/mpp/common/filter/QueryFilter.java    |   4 +-
 .../iotdb/db/mpp/common/filter/RegexpFilter.java   |   2 +-
 .../iotdb/db/mpp/execution/QueryStateMachine.java  |   1 +
 .../datatransfer}/DataBlockManager.java            |   6 +-
 .../datatransfer}/DataBlockService.java            |   4 +-
 .../datatransfer}/DataBlockServiceMBean.java       |   2 +-
 .../DataBlockServiceThriftHandler.java             |   2 +-
 .../datatransfer}/IDataBlockManager.java           |   4 +-
 .../datatransfer}/IDataBlockManagerCallback.java   |   2 +-
 .../datatransfer}/ISinkHandle.java                 |   2 +-
 .../datatransfer}/ISourceHandle.java               |   2 +-
 .../datatransfer}/LocalSinkHandle.java             |   4 +-
 .../datatransfer}/LocalSourceHandle.java           |   4 +-
 .../datatransfer}/SharedTsBlockQueue.java          |   4 +-
 .../datatransfer}/SinkHandle.java                  |  48 +---
 .../datatransfer}/SourceHandle.java                |  49 +---
 .../datatransfer}/TsBlockSerdeFactory.java         |   2 +-
 .../db/mpp/execution/{ => driver}/DataDriver.java  |   8 +-
 .../execution/{ => driver}/DataDriverContext.java  |   5 +-
 .../db/mpp/execution/{ => driver}/Driver.java      |   8 +-
 .../mpp/execution/{ => driver}/DriverContext.java  |   3 +-
 .../db/mpp/execution/{ => driver}/IDriver.java     |   4 +-
 .../mpp/execution/{ => driver}/SchemaDriver.java   |   6 +-
 .../{ => driver}/SchemaDriverContext.java          |   3 +-
 .../mpp/execution/{ => fragment}/FragmentInfo.java |   4 +-
 .../{ => fragment}/FragmentInstanceContext.java    |   7 +-
 .../{ => fragment}/FragmentInstanceExecution.java  |   9 +-
 .../FragmentInstanceFailureListener.java           |   2 +-
 .../{ => fragment}/FragmentInstanceInfo.java       |   2 +-
 .../{ => fragment}/FragmentInstanceManager.java    |  16 +-
 .../{ => fragment}/FragmentInstanceState.java      |   2 +-
 .../FragmentInstanceStateMachine.java              |  17 +-
 .../execution/{ => fragment}/FragmentState.java    |   2 +-
 .../{ => execution}/memory/LocalMemoryManager.java |   2 +-
 .../db/mpp/{ => execution}/memory/MemoryPool.java  |   2 +-
 .../db/mpp/{ => execution}/operator/Operator.java  |   2 +-
 .../{ => execution}/operator/OperatorContext.java  |   6 +-
 .../operator/process/AggregateOperator.java        |   4 +-
 .../operator/process/DeviceViewOperator.java       |   6 +-
 .../operator/process/FillOperator.java             |   4 +-
 .../operator/process/FilterNullOperator.java       |   4 +-
 .../operator/process/FilterOperator.java           |  10 +-
 .../operator/process/GroupByLevelOperator.java     |   4 +-
 .../operator/process/LimitOperator.java            |   6 +-
 .../operator/process/OffsetOperator.java           |   4 +-
 .../operator/process/ProcessOperator.java          |   4 +-
 .../operator/process/SortOperator.java             |   4 +-
 .../operator/process/TimeJoinOperator.java         |  12 +-
 .../operator/process/TransformOperator.java        |  28 ++-
 .../operator/process/merge/AscTimeComparator.java  |   2 +-
 .../operator/process/merge/ColumnMerger.java       |   2 +-
 .../operator/process/merge/DescTimeComparator.java |   2 +-
 .../operator/process/merge/MultiColumnMerger.java  |   4 +-
 .../operator/process/merge/SingleColumnMerger.java |   4 +-
 .../operator/process/merge/TimeComparator.java     |   2 +-
 .../operator/schema/CountMergeOperator.java        |  10 +-
 .../operator/schema/DevicesCountOperator.java      |  10 +-
 .../operator/schema/DevicesSchemaScanOperator.java |   8 +-
 .../schema/LevelTimeSeriesCountOperator.java       |  10 +-
 .../operator/schema/SchemaFetchOperator.java       |   8 +-
 .../operator/schema/SchemaMergeOperator.java       |  10 +-
 .../operator/schema/SchemaScanOperator.java        |   8 +-
 .../operator/schema/TimeSeriesCountOperator.java   |  10 +-
 .../schema/TimeSeriesSchemaScanOperator.java       |   8 +-
 .../operator/sink/FragmentSinkOperator.java        |   4 +-
 .../operator/sink/SinkOperator.java                |   4 +-
 .../operator/source/AlignedSeriesScanUtil.java     |   4 +-
 .../operator/source/DataSourceOperator.java        |   2 +-
 .../operator/source/ExchangeOperator.java          |   8 +-
 .../source/SeriesAggregateScanOperator.java        |   8 +-
 .../operator/source/SeriesScanOperator.java        |   6 +-
 .../operator/source/SeriesScanUtil.java            |   4 +-
 .../operator/source/SourceOperator.java            |   6 +-
 .../schedule/AbstractDriverThread.java             |   6 +-
 .../{ => execution}/schedule/DriverScheduler.java  |  20 +-
 .../{ => execution}/schedule/DriverTaskThread.java |   8 +-
 .../schedule/DriverTaskTimeoutSentinelThread.java  |   6 +-
 .../{ => execution}/schedule/ExecutionContext.java |   4 +-
 .../schedule/FragmentInstanceAbortedException.java |   4 +-
 .../{ => execution}/schedule/IDriverScheduler.java |   7 +-
 .../{ => execution}/schedule/ITaskScheduler.java   |   6 +-
 .../db/mpp/{ => execution}/schedule/queue/ID.java  |   2 +-
 .../schedule/queue/IDIndexedAccessible.java        |   2 +-
 .../schedule/queue/IndexedBlockingQueue.java       |   2 +-
 .../schedule/queue/L1PriorityQueue.java            |   2 +-
 .../schedule/queue/L2PriorityQueue.java            |   2 +-
 .../{ => execution}/schedule/task/DriverTask.java  |  14 +-
 .../schedule/task/DriverTaskID.java                |   4 +-
 .../schedule/task/DriverTaskStatus.java            |   2 +-
 .../db/mpp/{execution => plan}/Coordinator.java    |  15 +-
 .../db/mpp/{sql => plan}/analyze/Analysis.java     |   4 +-
 .../db/mpp/{sql => plan}/analyze/Analyzer.java     |  58 ++---
 .../analyze/ClusterPartitionFetcher.java           |   2 +-
 .../analyze/ClusterSchemaFetcher.java              |   8 +-
 .../analyze/FakePartitionFetcherImpl.java          |   2 +-
 .../analyze/FakeSchemaFetcherImpl.java             |   2 +-
 .../{sql => plan}/analyze/IPartitionFetcher.java   |   2 +-
 .../mpp/{sql => plan}/analyze/ISchemaFetcher.java  |   2 +-
 .../db/mpp/{sql => plan}/analyze/QueryType.java    |   2 +-
 .../mpp/{sql => plan}/analyze/SchemaValidator.java |   6 +-
 .../analyze/StandalonePartitionFetcher.java        |   2 +-
 .../analyze/StandaloneSchemaFetcher.java           |   2 +-
 .../db/mpp/{sql => plan}/analyze/TypeProvider.java |   2 +-
 .../mpp/{sql => plan}/constant/FilterConstant.java |   2 +-
 .../mpp/{sql => plan}/constant/StatementType.java  |   2 +-
 .../mpp/{ => plan}/execution/ExecutionResult.java  |   2 +-
 .../mpp/{ => plan}/execution/IQueryExecution.java  |   2 +-
 .../mpp/{ => plan}/execution/QueryExecution.java   |  37 +--
 .../execution/config/AuthorizerConfigTask.java     |   6 +-
 .../execution/config/ConfigExecution.java          |  10 +-
 .../execution/config/ConfigTaskResult.java         |   2 +-
 .../execution/config/ConfigTaskVisitor.java        |  16 +-
 .../execution/config/CountStorageGroupTask.java    |   4 +-
 .../{ => plan}/execution/config/IConfigTask.java   |   2 +-
 .../execution/config/SetStorageGroupTask.java      |   4 +-
 .../execution/config/ShowStorageGroupTask.java     |   4 +-
 .../{sql => plan}/optimization/PlanOptimizer.java  |   4 +-
 .../db/mpp/{sql => plan}/parser/ASTVisitor.java    | 124 ++++-----
 .../{sql => plan}/parser/StatementGenerator.java   |  30 +--
 .../{sql => plan}/planner/DistributionPlanner.java |  48 ++--
 .../planner/IFragmentParallelPlaner.java           |   4 +-
 .../planner/LocalExecutionPlanner.java             | 120 ++++-----
 .../{sql => plan}/planner/LogicalPlanBuilder.java  |  32 +--
 .../mpp/{sql => plan}/planner/LogicalPlanner.java  |  74 +++---
 .../planner/SimpleFragmentParallelPlanner.java     |  20 +-
 .../planner/WriteFragmentParallelPlanner.java      |  14 +-
 .../planner/plan/DistributedQueryPlan.java         |   2 +-
 .../planner/plan/FragmentInstance.java             |  10 +-
 .../planner/plan/LogicalQueryPlan.java             |   4 +-
 .../{sql => plan}/planner/plan/PlanFragment.java   |  12 +-
 .../db/mpp/{sql => plan}/planner/plan/SubPlan.java |   2 +-
 .../planner/plan/node/PlanGraphPrinter.java        |  12 +-
 .../{sql => plan}/planner/plan/node/PlanNode.java  |   2 +-
 .../planner/plan/node/PlanNodeId.java              |   2 +-
 .../planner/plan/node/PlanNodeType.java            |  70 +++---
 .../planner/plan/node/PlanNodeUtil.java            |   2 +-
 .../planner/plan/node/PlanVisitor.java             |  66 ++---
 .../planner/plan/node/SimplePlanNodeRewriter.java  |   2 +-
 .../planner/plan/node/WritePlanNode.java           |   4 +-
 .../metedata/read/AbstractSchemaMergeNode.java     |   8 +-
 .../node/metedata/read/CountSchemaMergeNode.java   |  10 +-
 .../plan/node/metedata/read/DevicesCountNode.java  |   8 +-
 .../node/metedata/read/DevicesSchemaScanNode.java  |   8 +-
 .../metedata/read/LevelTimeSeriesCountNode.java    |   8 +-
 .../plan/node/metedata/read/SchemaFetchNode.java   |  10 +-
 .../plan/node/metedata/read/SchemaScanNode.java    |  10 +-
 .../node/metedata/read/SeriesSchemaMergeNode.java  |  10 +-
 .../node/metedata/read/TimeSeriesCountNode.java    |   8 +-
 .../metedata/read/TimeSeriesSchemaScanNode.java    |   8 +-
 .../node/metedata/write/AlterTimeSeriesNode.java   |  16 +-
 .../write/CreateAlignedTimeSeriesNode.java         |  14 +-
 .../node/metedata/write/CreateTimeSeriesNode.java  |  23 +-
 .../planner/plan/node/process/AggregationNode.java |  16 +-
 .../planner/plan/node/process/DeviceMergeNode.java |  12 +-
 .../planner/plan/node/process/DeviceViewNode.java  |  12 +-
 .../planner/plan/node/process/ExchangeNode.java    |  12 +-
 .../planner/plan/node/process/FillNode.java        |  12 +-
 .../planner/plan/node/process/FilterNode.java      |  10 +-
 .../planner/plan/node/process/FilterNullNode.java  |  16 +-
 .../plan/node/process/GroupByLevelNode.java        |  16 +-
 .../planner/plan/node/process/GroupByTimeNode.java |  16 +-
 .../planner/plan/node/process/LimitNode.java       |  10 +-
 .../planner/plan/node/process/OffsetNode.java      |  10 +-
 .../planner/plan/node/process/ProcessNode.java     |   6 +-
 .../planner/plan/node/process/ProjectNode.java     |  10 +-
 .../planner/plan/node/process/SortNode.java        |  12 +-
 .../planner/plan/node/process/TimeJoinNode.java    |  12 +-
 .../planner/plan/node/sink/FragmentSinkNode.java   |  10 +-
 .../planner/plan/node/sink/SinkNode.java           |   6 +-
 .../source/AlignedSeriesAggregationScanNode.java   |  16 +-
 .../plan/node/source/AlignedSeriesScanNode.java    |  12 +-
 .../node/source/SeriesAggregationScanNode.java     |  16 +-
 .../planner/plan/node/source/SeriesScanNode.java   |  12 +-
 .../planner/plan/node/source/SourceNode.java       |   6 +-
 .../planner/plan/node/write/BatchInsertNode.java   |   2 +-
 .../plan/node/write/InsertMultiTabletsNode.java    |  12 +-
 .../planner/plan/node/write/InsertNode.java        |   6 +-
 .../planner/plan/node/write/InsertRowNode.java     |  18 +-
 .../planner/plan/node/write/InsertRowsNode.java    |  12 +-
 .../plan/node/write/InsertRowsOfOneDeviceNode.java |  12 +-
 .../planner/plan/node/write/InsertTabletNode.java  |  39 ++-
 .../plan/parameter/AggregationDescriptor.java      |   2 +-
 .../planner/plan/parameter/AggregationStep.java    |   2 +-
 .../planner/plan/parameter/FillDescriptor.java     |   4 +-
 .../plan/parameter/FilterNullParameter.java        |   4 +-
 .../plan/parameter/GroupByTimeParameter.java       |   2 +-
 .../planner/plan/parameter/InputLocation.java      |   2 +-
 .../planner/plan/parameter/OutputColumn.java       |   2 +-
 .../rewriter/ColumnPaginationController.java       |   4 +-
 .../{sql => plan}/rewriter/ConcatPathRewriter.java |   8 +-
 .../{sql => plan}/rewriter/DnfFilterOptimizer.java |   4 +-
 .../{sql => plan}/rewriter/IFilterOptimizer.java   |   2 +-
 .../rewriter/MergeSingleFilterOptimizer.java       |   2 +-
 .../{sql => plan}/rewriter/RemoveNotOptimizer.java |   6 +-
 .../{sql => plan}/rewriter/WildcardsRemover.java   |  20 +-
 .../scheduler/AbstractFragInsStateTracker.java     |  27 +-
 .../scheduler/ClusterScheduler.java                |  10 +-
 .../scheduler/FixedRateFragInsStateTracker.java    |   6 +-
 .../scheduler/FragInstanceDispatchResult.java      |   2 +-
 .../scheduler/IFragInstanceDispatcher.java         |   4 +-
 .../scheduler/IFragInstanceStateTracker.java       |   2 +-
 .../scheduler/IQueryTerminator.java                |   2 +-
 .../{execution => plan}/scheduler/IScheduler.java  |   4 +-
 .../scheduler/SimpleFragInstanceDispatcher.java    |  29 +--
 .../scheduler/SimpleQueryTerminator.java           |  20 +-
 .../scheduler/StandaloneScheduler.java             |   8 +-
 .../{sql => plan}/statement/IConfigStatement.java  |   4 +-
 .../db/mpp/{sql => plan}/statement/Statement.java  |   6 +-
 .../mpp/{sql => plan}/statement/StatementNode.java |   2 +-
 .../{sql => plan}/statement/StatementVisitor.java  |  60 ++---
 .../statement/component/FillComponent.java         |   4 +-
 .../statement/component/FillPolicy.java            |   2 +-
 .../statement/component/FilterNullComponent.java   |   4 +-
 .../statement/component/FilterNullPolicy.java      |   2 +-
 .../statement/component/FromComponent.java         |   4 +-
 .../statement/component/GroupByLevelComponent.java |   4 +-
 .../component/GroupByLevelController.java          |   6 +-
 .../statement/component/GroupByTimeComponent.java  |   4 +-
 .../{sql => plan}/statement/component/OrderBy.java |   2 +-
 .../statement/component/ResultColumn.java          |   6 +-
 .../statement/component/ResultSetFormat.java       |   2 +-
 .../statement/component/SelectComponent.java       |   4 +-
 .../statement/component/WhereCondition.java        |   4 +-
 .../statement/crud/AggregationQueryStatement.java  |  10 +-
 .../statement/crud/FillQueryStatement.java         |   8 +-
 .../statement/crud/GroupByFillQueryStatement.java  |   6 +-
 .../statement/crud/GroupByQueryStatement.java      |   6 +-
 .../statement/crud/InsertBaseStatement.java        |   4 +-
 .../crud/InsertMultiTabletsStatement.java          |   4 +-
 .../statement/crud/InsertRowStatement.java         |   6 +-
 .../crud/InsertRowsOfOneDeviceStatement.java       |   4 +-
 .../statement/crud/InsertRowsStatement.java        |   4 +-
 .../statement/crud/InsertStatement.java            |   8 +-
 .../statement/crud/InsertTabletStatement.java      |   4 +-
 .../statement/crud/LastQueryStatement.java         |   6 +-
 .../statement/crud/QueryStatement.java             |  22 +-
 .../statement/crud/UDAFQueryStatement.java         |   8 +-
 .../statement/crud/UDTFQueryStatement.java         |   4 +-
 .../metadata/AlterTimeSeriesStatement.java         |   8 +-
 .../statement/metadata/CountDevicesStatement.java  |   4 +-
 .../metadata/CountLevelTimeSeriesStatement.java    |   4 +-
 .../statement/metadata/CountNodesStatement.java    |   2 +-
 .../statement/metadata/CountStatement.java         |   4 +-
 .../metadata/CountStorageGroupStatement.java       |   8 +-
 .../metadata/CountTimeSeriesStatement.java         |   4 +-
 .../metadata/CreateAlignedTimeSeriesStatement.java |   8 +-
 .../metadata/CreateTimeSeriesStatement.java        |   8 +-
 .../statement/metadata/SchemaFetchStatement.java   |   8 +-
 .../metadata/SetStorageGroupStatement.java         |  12 +-
 .../statement/metadata/ShowDevicesStatement.java   |   4 +-
 .../statement/metadata/ShowStatement.java          |   6 +-
 .../metadata/ShowStorageGroupStatement.java        |   8 +-
 .../metadata/ShowTimeSeriesStatement.java          |   4 +-
 .../statement/sys/AuthorStatement.java             |  12 +-
 .../iotdb/db/qp/logical/crud/SelectComponent.java  |   4 +-
 .../iotdb/db/qp/physical/crud/QueryPlan.java       |   2 +-
 .../apache/iotdb/db/qp/physical/crud/UDTFPlan.java |   4 +-
 .../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java    |  50 ++--
 .../iotdb/db/query/expression/Expression.java      |   6 +-
 .../iotdb/db/query/expression/ExpressionType.java  |   4 +-
 .../query/expression/binary/BinaryExpression.java  |   2 +-
 .../db/query/expression/leaf/ConstantOperand.java  |   2 +-
 .../query/expression/leaf/TimeSeriesOperand.java   |   6 +-
 ...imeSeriesOperand.java => TimestampOperand.java} |  69 +++--
 .../query/expression/multi/FunctionExpression.java |   4 +-
 .../db/query/expression/unary/InExpression.java    |  11 +-
 .../db/query/expression/unary/UnaryExpression.java |   2 +-
 .../query/udf/core/layer/RawQueryInputLayer.java   | 137 +++++++---
 .../query/udf/core/layer/TsBlockInputDataSet.java  |   2 +-
 .../udf/core/transformer/unary/InTransformer.java  |  98 +++++++-
 .../java/org/apache/iotdb/db/service/DataNode.java |   4 +-
 .../java/org/apache/iotdb/db/service/IoTDB.java    |   4 +-
 .../thrift/impl/DataNodeTSIServiceImpl.java        |  34 +--
 .../service/thrift/impl/InternalServiceImpl.java   |  14 +-
 .../java/org/apache/iotdb/db/utils/MemUtils.java   |   2 +-
 .../apache/iotdb/db/utils/QueryDataSetUtils.java   |   2 +-
 .../org/apache/iotdb/db/wal/buffer/WALEntry.java   |   6 +-
 .../apache/iotdb/db/wal/buffer/WALEntryType.java   |   4 +-
 .../org/apache/iotdb/db/wal/node/IWALNode.java     |   4 +-
 .../org/apache/iotdb/db/wal/node/WALFakeNode.java  |   4 +-
 .../java/org/apache/iotdb/db/wal/node/WALNode.java |   4 +-
 .../db/wal/recover/file/TsFilePlanRedoer.java      |   6 +-
 .../file/UnsealedTsFileRecoverPerformer.java       |   2 +-
 .../db/engine/storagegroup/DataRegionTest.java     |   4 +-
 .../engine/storagegroup/TsFileProcessorV2Test.java |   2 +-
 .../db/mpp/execution/ConfigExecutionTest.java      |   9 +-
 .../iotdb/db/mpp/execution/DataDriverTest.java     |  28 ++-
 .../db/mpp/execution/QueryStateMachineTest.java    |   1 +
 .../datatransfer}/DataBlockManagerTest.java        |   8 +-
 .../datatransfer}/LocalSinkHandleTest.java         |  24 +-
 .../datatransfer}/LocalSourceHandleTest.java       |  10 +-
 .../datatransfer}/SharedTsBlockQueueTest.java      |   6 +-
 .../datatransfer}/SinkHandleTest.java              |   8 +-
 .../datatransfer}/SourceHandleTest.java            |   8 +-
 .../datatransfer}/StubSinkHandle.java              |   4 +-
 .../{buffer => execution/datatransfer}/Utils.java  |   4 +-
 .../mpp/{ => execution}/memory/MemoryPoolTest.java |   2 +-
 .../operator/DeviceViewOperatorTest.java           |  14 +-
 .../operator/LimitOperatorTest.java                |  24 +-
 .../operator/MultiColumnMergerTest.java            |   6 +-
 .../operator/SeriesAggregateScanOperatorTest.java  |  18 +-
 .../operator/SeriesScanOperatorTest.java           |  12 +-
 .../operator/SingleColumnMergerTest.java           |  10 +-
 .../operator/TimeJoinOperatorTest.java             |  24 +-
 .../operator/schema/CountMergeOperatorTest.java    |  14 +-
 .../operator/schema/SchemaCountOperatorTest.java   |  14 +-
 .../operator/schema/SchemaFetchOperatorTest.java   |   2 +-
 .../operator/schema/SchemaScanOperatorTest.java    |  14 +-
 .../schedule/DefaultTaskSchedulerTest.java         |  10 +-
 .../schedule/DriverSchedulerTest.java              |  12 +-
 .../DriverTaskTimeoutSentinelThreadTest.java       |  12 +-
 .../schedule/queue/L1PriorityQueueTest.java        |   2 +-
 .../schedule/queue/L2PriorityQueueTest.java        |   2 +-
 .../schedule/queue/QueueElement.java               |   2 +-
 .../db/mpp/{sql => plan}/analyze/AnalyzerTest.java |   4 +-
 .../mpp/{sql => plan}/parser/ASTVisitorTest.java   |   2 +-
 .../parser/StatementGeneratorTest.java             |   6 +-
 .../plan/DistributionPlannerTest.java              |  36 +--
 .../{sql => plan}/plan/FragmentInstanceIdTest.java |   2 +-
 .../plan/FragmentInstanceSerdeTest.java            |  26 +-
 .../mpp/{sql => plan}/plan/LogicalPlannerTest.java |  44 ++--
 .../{sql => plan}/plan/QueryLogicalPlanUtil.java   |  36 +--
 .../mpp/{sql => plan}/plan/QueryPlannerTest.java   |  16 +-
 .../plan/node/PlanNodeDeserializeHelper.java       |   6 +-
 .../read/DeviceSchemaScanNodeSerdeTest.java        |  18 +-
 .../metadata/read/SchemaCountNodeSerdeTest.java    |  16 +-
 .../read/TimeSeriesSchemaScanNodeSerdeTest.java    |  18 +-
 .../node/process/AggregationNodeSerdeTest.java     |  18 +-
 .../plan/node/process/DeviceViewNodeSerdeTest.java |  12 +-
 .../plan/node/process/ExchangeNodeSerdeTest.java   |  14 +-
 .../plan/node/process/FillNodeSerdeTest.java       |  16 +-
 .../plan/node/process/FilterNodeSerdeTest.java     |  12 +-
 .../plan/node/process/FilterNullNodeSerdeTest.java |  14 +-
 .../node/process/GroupByLevelNodeSerdeTest.java    |  18 +-
 .../plan/node/process/LimitNodeSerdeTest.java      |  14 +-
 .../plan/node/process/OffsetNodeSerdeTest.java     |  12 +-
 .../plan/node/process/SortNodeSerdeTest.java       |  12 +-
 .../plan/node/process/TimeJoinNodeSerdeTest.java   |  12 +-
 .../plan/node/sink/FragmentSinkNodeSerdeTest.java  |  10 +-
 .../source/SeriesAggregationScanNodeSerdeTest.java |  16 +-
 .../plan/node/source/SeriesScanNodeSerdeTest.java  |  10 +-
 .../write/InsertMultiTabletsNodeSerdeTest.java     |  10 +-
 .../plan/node/write/InsertRowNodeSerdeTest.java    |   8 +-
 .../plan/node/write/InsertRowsNodeSerdeTest.java   |  10 +-
 .../write/InsertRowsOfOneDeviceNodeSerdeTest.java  |  10 +-
 .../plan/node/write/InsertTabletNodeSerdeTest.java |   8 +-
 .../plan/node/write/WritePlanNodeSplitTest.java    | 278 +++++++++++++++++++++
 .../org/apache/iotdb/db/qp/sql/ASTVisitorTest.java |   2 +-
 .../iotdb/db/service/InternalServiceImplTest.java  |  12 +-
 .../org/apache/iotdb/rpc/IoTDBJDBCDataSet.java     |   3 +-
 386 files changed, 2482 insertions(+), 1945 deletions(-)
 rename confignode/src/main/java/org/apache/iotdb/confignode/{service/balancer/LoadBalancer.java => manager/LoadManager.java} (88%)
 copy server/src/main/java/org/apache/iotdb/db/mpp/execution/scheduler/IFragInstanceStateTracker.java => node-commons/src/main/java/org/apache/iotdb/commons/client/sync/SyncThriftClient.java (85%)
 create mode 100644 node-commons/src/main/java/org/apache/iotdb/commons/client/sync/SyncThriftClientWithErrorHandler.java
 rename server/src/main/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/DataBlockManager.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/DataBlockService.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/DataBlockServiceMBean.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/DataBlockServiceThriftHandler.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/IDataBlockManager.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/IDataBlockManagerCallback.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/ISinkHandle.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/ISourceHandle.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/LocalSinkHandle.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/LocalSourceHandle.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/SharedTsBlockQueue.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/SinkHandle.java (89%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/SourceHandle.java (89%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/TsBlockSerdeFactory.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/execution/{ => driver}/DataDriver.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/execution/{ => driver}/DataDriverContext.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/execution/{ => driver}/Driver.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/execution/{ => driver}/DriverContext.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/execution/{ => driver}/IDriver.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/execution/{ => driver}/SchemaDriver.java (88%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/execution/{ => driver}/SchemaDriverContext.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/execution/{ => fragment}/FragmentInfo.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/execution/{ => fragment}/FragmentInstanceContext.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/execution/{ => fragment}/FragmentInstanceExecution.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/execution/{ => fragment}/FragmentInstanceFailureListener.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/execution/{ => fragment}/FragmentInstanceInfo.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/execution/{ => fragment}/FragmentInstanceManager.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/execution/{ => fragment}/FragmentInstanceState.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/execution/{ => fragment}/FragmentInstanceStateMachine.java (89%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/execution/{ => fragment}/FragmentState.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/memory/LocalMemoryManager.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/memory/MemoryPool.java (99%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/Operator.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/OperatorContext.java (89%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/AggregateOperator.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/DeviceViewOperator.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/FillOperator.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/FilterNullOperator.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/FilterOperator.java (93%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/GroupByLevelOperator.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/LimitOperator.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/OffsetOperator.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/ProcessOperator.java (88%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/SortOperator.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/TimeJoinOperator.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/TransformOperator.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/merge/AscTimeComparator.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/merge/ColumnMerger.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/merge/DescTimeComparator.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/merge/MultiColumnMerger.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/merge/SingleColumnMerger.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/process/merge/TimeComparator.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/schema/CountMergeOperator.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/schema/DevicesCountOperator.java (88%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/schema/DevicesSchemaScanOperator.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/schema/LevelTimeSeriesCountOperator.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/schema/SchemaFetchOperator.java (93%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/schema/SchemaMergeOperator.java (88%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/schema/SchemaScanOperator.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/schema/TimeSeriesCountOperator.java (88%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/schema/TimeSeriesSchemaScanOperator.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/sink/FragmentSinkOperator.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/sink/SinkOperator.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/source/AlignedSeriesScanUtil.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/source/DataSourceOperator.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/source/ExchangeOperator.java (89%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/source/SeriesAggregateScanOperator.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/source/SeriesScanOperator.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/source/SeriesScanUtil.java (99%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/operator/source/SourceOperator.java (82%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/AbstractDriverThread.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/DriverScheduler.java (93%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/DriverTaskThread.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/DriverTaskTimeoutSentinelThread.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/ExecutionContext.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/FragmentInstanceAbortedException.java (93%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/IDriverScheduler.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/ITaskScheduler.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/queue/ID.java (93%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/queue/IDIndexedAccessible.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/queue/IndexedBlockingQueue.java (99%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/queue/L1PriorityQueue.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/queue/L2PriorityQueue.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/task/DriverTask.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/task/DriverTaskID.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/task/DriverTaskStatus.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{execution => plan}/Coordinator.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/analyze/Analysis.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/analyze/Analyzer.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/analyze/ClusterPartitionFetcher.java (99%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/analyze/ClusterSchemaFetcher.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/analyze/FakePartitionFetcherImpl.java (99%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/analyze/FakeSchemaFetcherImpl.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/analyze/IPartitionFetcher.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/analyze/ISchemaFetcher.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/analyze/QueryType.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/analyze/SchemaValidator.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/analyze/StandalonePartitionFetcher.java (99%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/analyze/StandaloneSchemaFetcher.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/analyze/TypeProvider.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/constant/FilterConstant.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/constant/StatementType.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => plan}/execution/ExecutionResult.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => plan}/execution/IQueryExecution.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => plan}/execution/QueryExecution.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => plan}/execution/config/AuthorizerConfigTask.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => plan}/execution/config/ConfigExecution.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => plan}/execution/config/ConfigTaskResult.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => plan}/execution/config/ConfigTaskVisitor.java (80%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => plan}/execution/config/CountStorageGroupTask.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => plan}/execution/config/IConfigTask.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => plan}/execution/config/SetStorageGroupTask.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{ => plan}/execution/config/ShowStorageGroupTask.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/optimization/PlanOptimizer.java (89%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/parser/ASTVisitor.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/parser/StatementGenerator.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/DistributionPlanner.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/IFragmentParallelPlaner.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/LocalExecutionPlanner.java (81%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/LogicalPlanBuilder.java (84%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/LogicalPlanner.java (83%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/SimpleFragmentParallelPlanner.java (89%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/WriteFragmentParallelPlanner.java (85%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/DistributedQueryPlan.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/FragmentInstance.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/LogicalQueryPlan.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/PlanFragment.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/SubPlan.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/PlanGraphPrinter.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/PlanNode.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/PlanNodeId.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/PlanNodeType.java (64%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/PlanNodeUtil.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/PlanVisitor.java (62%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/SimplePlanNodeRewriter.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/WritePlanNode.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/metedata/read/AbstractSchemaMergeNode.java (84%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/metedata/read/CountSchemaMergeNode.java (82%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/metedata/read/DevicesCountNode.java (89%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/metedata/read/DevicesSchemaScanNode.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/metedata/read/LevelTimeSeriesCountNode.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/metedata/read/SchemaFetchNode.java (86%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/metedata/read/SchemaScanNode.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/metedata/read/SeriesSchemaMergeNode.java (83%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/metedata/read/TimeSeriesCountNode.java (89%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/metedata/read/TimeSeriesSchemaScanNode.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/metedata/write/AlterTimeSeriesNode.java (93%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/metedata/write/CreateAlignedTimeSeriesNode.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/metedata/write/CreateTimeSeriesNode.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/process/AggregationNode.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/process/DeviceMergeNode.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/process/DeviceViewNode.java (93%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/process/ExchangeNode.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/process/FillNode.java (89%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/process/FilterNode.java (89%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/process/FilterNullNode.java (88%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/process/GroupByLevelNode.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/process/GroupByTimeNode.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/process/LimitNode.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/process/OffsetNode.java (89%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/process/ProcessNode.java (82%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/process/ProjectNode.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/process/SortNode.java (88%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/process/TimeJoinNode.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/sink/FragmentSinkNode.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/sink/SinkNode.java (83%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/source/AlignedSeriesAggregationScanNode.java (93%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/source/AlignedSeriesScanNode.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/source/SeriesAggregationScanNode.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/source/SeriesScanNode.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/source/SourceNode.java (86%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/write/BatchInsertNode.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/write/InsertMultiTabletsNode.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/write/InsertNode.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/write/InsertRowNode.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/write/InsertRowsNode.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/write/InsertRowsOfOneDeviceNode.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/node/write/InsertTabletNode.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/parameter/AggregationDescriptor.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/parameter/AggregationStep.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/parameter/FillDescriptor.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/parameter/FilterNullParameter.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/parameter/GroupByTimeParameter.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/parameter/InputLocation.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/planner/plan/parameter/OutputColumn.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/rewriter/ColumnPaginationController.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/rewriter/ConcatPathRewriter.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/rewriter/DnfFilterOptimizer.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/rewriter/IFilterOptimizer.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/rewriter/MergeSingleFilterOptimizer.java (99%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/rewriter/RemoveNotOptimizer.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/rewriter/WildcardsRemover.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{execution => plan}/scheduler/AbstractFragInsStateTracker.java (79%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{execution => plan}/scheduler/ClusterScheduler.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{execution => plan}/scheduler/FixedRateFragInsStateTracker.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{execution => plan}/scheduler/FragInstanceDispatchResult.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{execution => plan}/scheduler/IFragInstanceDispatcher.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{execution => plan}/scheduler/IFragInstanceStateTracker.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{execution => plan}/scheduler/IQueryTerminator.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{execution => plan}/scheduler/IScheduler.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{execution => plan}/scheduler/SimpleFragInstanceDispatcher.java (77%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{execution => plan}/scheduler/SimpleQueryTerminator.java (81%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{execution => plan}/scheduler/StandaloneScheduler.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/IConfigStatement.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/Statement.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/StatementNode.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/StatementVisitor.java (73%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/component/FillComponent.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/component/FillPolicy.java (93%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/component/FilterNullComponent.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/component/FilterNullPolicy.java (93%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/component/FromComponent.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/component/GroupByLevelComponent.java (93%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/component/GroupByLevelController.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/component/GroupByTimeComponent.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/component/OrderBy.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/component/ResultColumn.java (97%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/component/ResultSetFormat.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/component/SelectComponent.java (98%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/component/WhereCondition.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/crud/AggregationQueryStatement.java (93%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/crud/FillQueryStatement.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/crud/GroupByFillQueryStatement.java (88%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/crud/GroupByQueryStatement.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/crud/InsertBaseStatement.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/crud/InsertMultiTabletsStatement.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/crud/InsertRowStatement.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/crud/InsertRowsOfOneDeviceStatement.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/crud/InsertRowsStatement.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/crud/InsertStatement.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/crud/InsertTabletStatement.java (96%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/crud/LastQueryStatement.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/crud/QueryStatement.java (93%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/crud/UDAFQueryStatement.java (93%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/crud/UDTFQueryStatement.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/metadata/AlterTimeSeriesStatement.java (92%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/metadata/CountDevicesStatement.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/metadata/CountLevelTimeSeriesStatement.java (91%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/metadata/CountNodesStatement.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/metadata/CountStatement.java (93%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/metadata/CountStorageGroupStatement.java (84%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/metadata/CountTimeSeriesStatement.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/metadata/CreateAlignedTimeSeriesStatement.java (95%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/metadata/CreateTimeSeriesStatement.java (93%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/metadata/SchemaFetchStatement.java (88%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/metadata/SetStorageGroupStatement.java (83%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/metadata/ShowDevicesStatement.java (93%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/metadata/ShowStatement.java (90%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/metadata/ShowStorageGroupStatement.java (87%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/metadata/ShowTimeSeriesStatement.java (94%)
 rename server/src/main/java/org/apache/iotdb/db/mpp/{sql => plan}/statement/sys/AuthorStatement.java (93%)
 copy server/src/main/java/org/apache/iotdb/db/query/expression/leaf/{TimeSeriesOperand.java => TimestampOperand.java} (70%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/DataBlockManagerTest.java (95%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/LocalSinkHandleTest.java (90%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/LocalSourceHandleTest.java (94%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/SharedTsBlockQueueTest.java (96%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/SinkHandleTest.java (98%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/SourceHandleTest.java (99%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/StubSinkHandle.java (94%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{buffer => execution/datatransfer}/Utils.java (97%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/memory/MemoryPoolTest.java (99%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/operator/DeviceViewOperatorTest.java (93%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/operator/LimitOperatorTest.java (89%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/operator/MultiColumnMergerTest.java (97%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/operator/SeriesAggregateScanOperatorTest.java (96%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/operator/SeriesScanOperatorTest.java (92%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/operator/SingleColumnMergerTest.java (95%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/operator/TimeJoinOperatorTest.java (95%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/operator/schema/CountMergeOperatorTest.java (93%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/operator/schema/SchemaCountOperatorTest.java (94%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/operator/schema/SchemaFetchOperatorTest.java (99%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/operator/schema/SchemaScanOperatorTest.java (95%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/DefaultTaskSchedulerTest.java (98%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/DriverSchedulerTest.java (95%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/DriverTaskTimeoutSentinelThreadTest.java (97%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/queue/L1PriorityQueueTest.java (99%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/queue/L2PriorityQueueTest.java (99%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{ => execution}/schedule/queue/QueueElement.java (97%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/analyze/AnalyzerTest.java (95%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/parser/ASTVisitorTest.java (96%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/parser/StatementGeneratorTest.java (93%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/DistributionPlannerTest.java (94%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/FragmentInstanceIdTest.java (97%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/FragmentInstanceSerdeTest.java (88%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/LogicalPlannerTest.java (91%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/QueryLogicalPlanUtil.java (95%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/QueryPlannerTest.java (86%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/PlanNodeDeserializeHelper.java (87%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/metadata/read/DeviceSchemaScanNodeSerdeTest.java (80%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/metadata/read/SchemaCountNodeSerdeTest.java (86%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/metadata/read/TimeSeriesSchemaScanNodeSerdeTest.java (80%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/process/AggregationNodeSerdeTest.java (84%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/process/DeviceViewNodeSerdeTest.java (82%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/process/ExchangeNodeSerdeTest.java (82%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/process/FillNodeSerdeTest.java (77%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/process/FilterNodeSerdeTest.java (83%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/process/FilterNullNodeSerdeTest.java (79%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/process/GroupByLevelNodeSerdeTest.java (86%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/process/LimitNodeSerdeTest.java (83%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/process/OffsetNodeSerdeTest.java (84%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/process/SortNodeSerdeTest.java (85%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/process/TimeJoinNodeSerdeTest.java (87%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/sink/FragmentSinkNodeSerdeTest.java (84%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/source/SeriesAggregationScanNodeSerdeTest.java (84%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/source/SeriesScanNodeSerdeTest.java (87%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/write/InsertMultiTabletsNodeSerdeTest.java (90%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/write/InsertRowNodeSerdeTest.java (96%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/write/InsertRowsNodeSerdeTest.java (87%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/write/InsertRowsOfOneDeviceNodeSerdeTest.java (88%)
 rename server/src/test/java/org/apache/iotdb/db/mpp/{sql => plan}/plan/node/write/InsertTabletNodeSerdeTest.java (95%)
 create mode 100644 server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/node/write/WritePlanNodeSplitTest.java


[iotdb] 01/02: support time expression

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

rong pushed a commit to branch iotdb-3050
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 71fa7dff7d934995c1595587487db3fe20609bd1
Author: Steve Yurong Su <ro...@apache.org>
AuthorDate: Tue May 3 15:58:48 2022 +0800

    support time expression
---
 .../execution/operator/process/FilterOperator.java |   4 +-
 .../operator/process/TransformOperator.java        |  22 ++--
 .../iotdb/db/mpp/plan/parser/ASTVisitor.java       |   3 +-
 .../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java    |   3 +-
 .../iotdb/db/query/expression/Expression.java      |   4 +-
 .../iotdb/db/query/expression/ExpressionType.java  |   4 +-
 .../query/expression/leaf/TimeSeriesOperand.java   |   4 +-
 ...imeSeriesOperand.java => TimestampOperand.java} |  68 ++++------
 .../query/expression/multi/FunctionExpression.java |   2 +-
 .../query/udf/core/layer/RawQueryInputLayer.java   | 137 ++++++++++++++++-----
 10 files changed, 161 insertions(+), 90 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/FilterOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/FilterOperator.java
index fc9b2eaf79..f7a37068f2 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/FilterOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/FilterOperator.java
@@ -79,7 +79,7 @@ public class FilterOperator extends TransformOperator {
   }
 
   @Override
-  protected void initLayerPointReaders() throws QueryProcessException, IOException {
+  protected void readyForFirstIteration() throws QueryProcessException, IOException {
     iterateFilterReaderToNextValid();
   }
 
@@ -128,6 +128,8 @@ public class FilterOperator extends TransformOperator {
         }
 
         iterateFilterReaderToNextValid();
+
+        inputLayer.updateRowRecordListEvictionUpperBound();
       }
     } catch (Exception e) {
       throw new RuntimeException(e);
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/TransformOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/TransformOperator.java
index 010bea697b..76d1a4a0fb 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/TransformOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/process/TransformOperator.java
@@ -23,7 +23,6 @@ import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.mpp.execution.operator.Operator;
 import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
-import org.apache.iotdb.db.query.dataset.IUDFInputDataSet;
 import org.apache.iotdb.db.query.expression.Expression;
 import org.apache.iotdb.db.query.udf.core.executor.UDTFContext;
 import org.apache.iotdb.db.query.udf.core.layer.EvaluationDAGBuilder;
@@ -64,7 +63,7 @@ public class TransformOperator implements ProcessOperator {
   protected final UDTFContext udtfContext;
   protected final boolean keepNull;
 
-  protected IUDFInputDataSet inputDataset;
+  protected RawQueryInputLayer inputLayer;
   protected LayerPointReader[] transformers;
   protected TimeSelector timeHeap;
   protected List<TSDataType> outputDataTypes;
@@ -84,13 +83,17 @@ public class TransformOperator implements ProcessOperator {
     this.udtfContext = udtfContext;
     this.keepNull = keepNull;
 
-    initInputDataset(inputDataTypes);
+    initInputLayer(inputDataTypes);
     initTransformers();
-    initLayerPointReaders();
+    readyForFirstIteration();
   }
 
-  private void initInputDataset(List<TSDataType> inputDataTypes) {
-    inputDataset = new TsBlockInputDataSet(inputOperator, inputDataTypes);
+  private void initInputLayer(List<TSDataType> inputDataTypes) throws QueryProcessException {
+    inputLayer =
+        new RawQueryInputLayer(
+            operatorContext.getOperatorId(),
+            udfReaderMemoryBudgetInMB,
+            new TsBlockInputDataSet(inputOperator, inputDataTypes));
   }
 
   protected void initTransformers() throws QueryProcessException, IOException {
@@ -102,8 +105,7 @@ public class TransformOperator implements ProcessOperator {
       transformers =
           new EvaluationDAGBuilder(
                   operatorContext.getOperatorId(),
-                  new RawQueryInputLayer(
-                      operatorContext.getOperatorId(), udfReaderMemoryBudgetInMB, inputDataset),
+                  inputLayer,
                   outputExpressions,
                   udtfContext,
                   udfTransformerMemoryBudgetInMB + udfCollectorMemoryBudgetInMB)
@@ -115,7 +117,7 @@ public class TransformOperator implements ProcessOperator {
     }
   }
 
-  protected void initLayerPointReaders() throws QueryProcessException, IOException {
+  protected void readyForFirstIteration() throws QueryProcessException, IOException {
     timeHeap = new TimeSelector(transformers.length << 1, true);
     for (LayerPointReader reader : transformers) {
       iterateReaderToNextValid(reader);
@@ -174,6 +176,8 @@ public class TransformOperator implements ProcessOperator {
         }
 
         ++rowCount;
+
+        inputLayer.updateRowRecordListEvictionUpperBound();
       }
     } catch (Exception e) {
       throw new RuntimeException(e);
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
index 6326c67883..29feaf2e9d 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java
@@ -98,6 +98,7 @@ import org.apache.iotdb.db.query.expression.binary.NonEqualExpression;
 import org.apache.iotdb.db.query.expression.binary.SubtractionExpression;
 import org.apache.iotdb.db.query.expression.leaf.ConstantOperand;
 import org.apache.iotdb.db.query.expression.leaf.TimeSeriesOperand;
+import org.apache.iotdb.db.query.expression.leaf.TimestampOperand;
 import org.apache.iotdb.db.query.expression.multi.FunctionExpression;
 import org.apache.iotdb.db.query.expression.unary.InExpression;
 import org.apache.iotdb.db.query.expression.unary.LikeExpression;
@@ -1795,7 +1796,7 @@ public class ASTVisitor extends IoTDBSqlParserBaseVisitor<Statement> {
     }
 
     if (context.time != null) {
-      throw new UnsupportedOperationException();
+      return new TimestampOperand();
     }
 
     if (context.constant() != null && !context.constant().isEmpty()) {
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
index e58f1f06d0..edf84bd0db 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java
@@ -144,6 +144,7 @@ import org.apache.iotdb.db.query.expression.binary.NonEqualExpression;
 import org.apache.iotdb.db.query.expression.binary.SubtractionExpression;
 import org.apache.iotdb.db.query.expression.leaf.ConstantOperand;
 import org.apache.iotdb.db.query.expression.leaf.TimeSeriesOperand;
+import org.apache.iotdb.db.query.expression.leaf.TimestampOperand;
 import org.apache.iotdb.db.query.expression.multi.FunctionExpression;
 import org.apache.iotdb.db.query.expression.unary.InExpression;
 import org.apache.iotdb.db.query.expression.unary.LikeExpression;
@@ -2631,7 +2632,7 @@ public class IoTDBSqlVisitor extends IoTDBSqlParserBaseVisitor<Operator> {
     }
 
     if (context.time != null) {
-      throw new UnsupportedOperationException();
+      return new TimestampOperand();
     }
 
     if (context.constant() != null && !context.constant().isEmpty()) {
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/Expression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/Expression.java
index a2fc597ab8..42fcb14c68 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/Expression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/Expression.java
@@ -41,6 +41,7 @@ import org.apache.iotdb.db.query.expression.binary.NonEqualExpression;
 import org.apache.iotdb.db.query.expression.binary.SubtractionExpression;
 import org.apache.iotdb.db.query.expression.leaf.ConstantOperand;
 import org.apache.iotdb.db.query.expression.leaf.TimeSeriesOperand;
+import org.apache.iotdb.db.query.expression.leaf.TimestampOperand;
 import org.apache.iotdb.db.query.expression.multi.FunctionExpression;
 import org.apache.iotdb.db.query.expression.unary.InExpression;
 import org.apache.iotdb.db.query.expression.unary.LikeExpression;
@@ -242,7 +243,8 @@ public abstract class Expression {
         expression = new ConstantOperand(byteBuffer);
         break;
       case -3:
-        throw new UnsupportedOperationException();
+        expression = new TimestampOperand(byteBuffer);
+        break;
       case -2:
         expression = new TimeSeriesOperand(byteBuffer);
         break;
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/ExpressionType.java b/server/src/main/java/org/apache/iotdb/db/query/expression/ExpressionType.java
index d53f55a689..180afeecc6 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/ExpressionType.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/ExpressionType.java
@@ -20,8 +20,8 @@ package org.apache.iotdb.db.query.expression;
 
 public enum ExpressionType {
   CONSTANT((short) -4, (short) 1400),
-  TIME_COLUMN((short) -3, (short) 1300),
-  TIME_SERIES((short) -2, (short) 1200),
+  TIMESTAMP((short) -3, (short) 1300),
+  TIMESERIES((short) -2, (short) 1200),
   FUNCTION((short) -1, (short) 1100),
 
   NEGATION((short) 0, (short) 1000),
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/leaf/TimeSeriesOperand.java b/server/src/main/java/org/apache/iotdb/db/query/expression/leaf/TimeSeriesOperand.java
index 3e82310854..dcaf9c81b1 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/leaf/TimeSeriesOperand.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/leaf/TimeSeriesOperand.java
@@ -133,7 +133,7 @@ public class TimeSeriesOperand extends LeafOperand {
       float memoryBudgetInMB = memoryAssigner.assign();
 
       LayerPointReader parentLayerPointReader =
-          rawTimeSeriesInputLayer.constructPointReader(inputColumnIndex);
+          rawTimeSeriesInputLayer.constructValuePointReader(inputColumnIndex);
       expressionDataTypeMap.put(this, parentLayerPointReader.getDataType());
 
       expressionIntermediateLayerMap.put(
@@ -154,7 +154,7 @@ public class TimeSeriesOperand extends LeafOperand {
 
   @Override
   public ExpressionType getExpressionType() {
-    return ExpressionType.TIME_SERIES;
+    return ExpressionType.TIMESERIES;
   }
 
   @Override
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/leaf/TimeSeriesOperand.java b/server/src/main/java/org/apache/iotdb/db/query/expression/leaf/TimestampOperand.java
similarity index 71%
copy from server/src/main/java/org/apache/iotdb/db/query/expression/leaf/TimeSeriesOperand.java
copy to server/src/main/java/org/apache/iotdb/db/query/expression/leaf/TimestampOperand.java
index 3e82310854..041af30a4d 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/leaf/TimeSeriesOperand.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/leaf/TimestampOperand.java
@@ -23,7 +23,6 @@ import org.apache.iotdb.db.exception.query.LogicalOptimizeException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.exception.sql.StatementAnalyzeException;
 import org.apache.iotdb.db.metadata.path.PartialPath;
-import org.apache.iotdb.db.metadata.path.PathDeserializeUtil;
 import org.apache.iotdb.db.mpp.common.schematree.PathPatternTree;
 import org.apache.iotdb.db.mpp.plan.rewriter.WildcardsRemover;
 import org.apache.iotdb.db.qp.physical.crud.UDTFPlan;
@@ -38,34 +37,20 @@ import org.apache.iotdb.db.query.udf.core.layer.SingleInputColumnSingleReference
 import org.apache.iotdb.db.query.udf.core.reader.LayerPointReader;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
+import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-public class TimeSeriesOperand extends LeafOperand {
+public class TimestampOperand extends LeafOperand {
 
-  private PartialPath path;
-
-  public TimeSeriesOperand(PartialPath path) {
-    this.path = path;
-  }
-
-  public TimeSeriesOperand(ByteBuffer byteBuffer) {
-    path = (PartialPath) PathDeserializeUtil.deserialize(byteBuffer);
-  }
-
-  public PartialPath getPath() {
-    return path;
+  public TimestampOperand() {
+    // do nothing
   }
 
-  public void setPath(PartialPath path) {
-    this.path = path;
-  }
-
-  @Override
-  public boolean isConstantOperandInternal() {
-    return false;
+  public TimestampOperand(ByteBuffer byteBuffer) {
+    // do nothing
   }
 
   @Override
@@ -73,26 +58,18 @@ public class TimeSeriesOperand extends LeafOperand {
       List<PartialPath> prefixPaths,
       List<Expression> resultExpressions,
       PathPatternTree patternTree) {
-    for (PartialPath prefixPath : prefixPaths) {
-      TimeSeriesOperand resultExpression = new TimeSeriesOperand(prefixPath.concatPath(path));
-      patternTree.appendPath(resultExpression.getPath());
-      resultExpressions.add(resultExpression);
-    }
+    // do nothing
   }
 
   @Override
   public void concat(List<PartialPath> prefixPaths, List<Expression> resultExpressions) {
-    for (PartialPath prefixPath : prefixPaths) {
-      resultExpressions.add(new TimeSeriesOperand(prefixPath.concatPath(path)));
-    }
+    // do nothing
   }
 
   @Override
   public void removeWildcards(WildcardsRemover wildcardsRemover, List<Expression> resultExpressions)
       throws StatementAnalyzeException {
-    for (PartialPath actualPath : wildcardsRemover.removeWildcardInPath(path)) {
-      resultExpressions.add(new TimeSeriesOperand(actualPath));
-    }
+    // do nothing
   }
 
   @Override
@@ -100,19 +77,17 @@ public class TimeSeriesOperand extends LeafOperand {
       org.apache.iotdb.db.qp.utils.WildcardsRemover wildcardsRemover,
       List<Expression> resultExpressions)
       throws LogicalOptimizeException {
-    for (PartialPath actualPath : wildcardsRemover.removeWildcardFrom(path)) {
-      resultExpressions.add(new TimeSeriesOperand(actualPath));
-    }
+    // do nothing
   }
 
   @Override
   public void collectPaths(Set<PartialPath> pathSet) {
-    pathSet.add(path);
+    // do nothing
   }
 
   @Override
   public void bindInputLayerColumnIndexWithExpression(UDTFPlan udtfPlan) {
-    inputColumnIndex = udtfPlan.getReaderIndexByExpressionName(toString());
+    // do nothing
   }
 
   @Override
@@ -128,12 +103,11 @@ public class TimeSeriesOperand extends LeafOperand {
       Map<Expression, IntermediateLayer> expressionIntermediateLayerMap,
       Map<Expression, TSDataType> expressionDataTypeMap,
       LayerMemoryAssigner memoryAssigner)
-      throws QueryProcessException {
+      throws QueryProcessException, IOException {
     if (!expressionIntermediateLayerMap.containsKey(this)) {
       float memoryBudgetInMB = memoryAssigner.assign();
 
-      LayerPointReader parentLayerPointReader =
-          rawTimeSeriesInputLayer.constructPointReader(inputColumnIndex);
+      LayerPointReader parentLayerPointReader = rawTimeSeriesInputLayer.constructTimePointReader();
       expressionDataTypeMap.put(this, parentLayerPointReader.getDataType());
 
       expressionIntermediateLayerMap.put(
@@ -148,17 +122,23 @@ public class TimeSeriesOperand extends LeafOperand {
     return expressionIntermediateLayerMap.get(this);
   }
 
-  public String getExpressionStringInternal() {
-    return path.isMeasurementAliasExists() ? path.getFullPathWithAlias() : path.getFullPath();
+  @Override
+  protected boolean isConstantOperandInternal() {
+    return false;
+  }
+
+  @Override
+  protected String getExpressionStringInternal() {
+    return "Time";
   }
 
   @Override
   public ExpressionType getExpressionType() {
-    return ExpressionType.TIME_SERIES;
+    return ExpressionType.TIMESTAMP;
   }
 
   @Override
   protected void serialize(ByteBuffer byteBuffer) {
-    path.serialize(byteBuffer);
+    // do nothing
   }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/multi/FunctionExpression.java b/server/src/main/java/org/apache/iotdb/db/query/expression/multi/FunctionExpression.java
index 6d1e72e707..165a2403e3 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/multi/FunctionExpression.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/multi/FunctionExpression.java
@@ -304,7 +304,7 @@ public class FunctionExpression extends Expression {
       if (isBuiltInAggregationFunctionExpression) {
         transformer =
             new TransparentTransformer(
-                rawTimeSeriesInputLayer.constructPointReader(inputColumnIndex));
+                rawTimeSeriesInputLayer.constructValuePointReader(inputColumnIndex));
       } else {
         IntermediateLayer udfInputIntermediateLayer =
             constructUdfInputIntermediateLayer(
diff --git a/server/src/main/java/org/apache/iotdb/db/query/udf/core/layer/RawQueryInputLayer.java b/server/src/main/java/org/apache/iotdb/db/query/udf/core/layer/RawQueryInputLayer.java
index fec8fd71b3..57f074e6d7 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/udf/core/layer/RawQueryInputLayer.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/udf/core/layer/RawQueryInputLayer.java
@@ -98,35 +98,59 @@ public class RawQueryInputLayer {
     return dataTypes.length;
   }
 
-  public LayerPointReader constructPointReader(int columnIndex) {
-    return new InputLayerPointReader(columnIndex);
+  public LayerPointReader constructTimePointReader() {
+    return new TimePointReader();
   }
 
-  private class InputLayerPointReader implements LayerPointReader {
+  public LayerPointReader constructValuePointReader(int columnIndex) {
+    return new ValuePointReader(columnIndex);
+  }
 
-    private final SafetyPile safetyPile;
+  private abstract class AbstractLayerPointReader implements LayerPointReader {
 
-    private final int columnIndex;
-    private int currentRowIndex;
+    protected final SafetyPile safetyPile;
 
-    private boolean hasCachedRowRecord;
-    private Object[] cachedRowRecord;
+    protected int currentRowIndex;
 
-    InputLayerPointReader(int columnIndex) {
-      safetyPile = safetyLine.addSafetyPile();
+    protected boolean hasCachedRowRecord;
+    protected Object[] cachedRowRecord;
 
-      this.columnIndex = columnIndex;
-      currentRowIndex = -1;
+    AbstractLayerPointReader() {
+      safetyPile = safetyLine.addSafetyPile();
 
       hasCachedRowRecord = false;
       cachedRowRecord = null;
+      currentRowIndex = -1;
+    }
+
+    @Override
+    public final long currentTime() throws IOException {
+      return (long) cachedRowRecord[timestampIndex];
     }
 
     @Override
-    public boolean isConstantPointReader() {
+    public final boolean isConstantPointReader() {
       return false;
     }
 
+    @Override
+    public final void readyForNext() {
+      hasCachedRowRecord = false;
+      cachedRowRecord = null;
+
+      safetyPile.moveForwardTo(currentRowIndex + 1);
+    }
+  }
+
+  private class ValuePointReader extends AbstractLayerPointReader {
+
+    protected final int columnIndex;
+
+    ValuePointReader(int columnIndex) {
+      super();
+      this.columnIndex = columnIndex;
+    }
+
     @Override
     public boolean next() throws IOException, QueryProcessException {
       if (hasCachedRowRecord) {
@@ -138,8 +162,8 @@ public class RawQueryInputLayer {
         // If any field in the current row are null, we should treat this row as valid.
         // Because in a GROUP BY time query, we must return every time window record even if there's
         // no data.
-        // Under the situation, if hasCachedRowRecord is false, this row will be
-        // skipped and the result is not as our expected.
+        // Under the situation, if hasCachedRowRecord is false, this row will be skipped and the
+        // result is not as our expected.
         if (rowRecordCandidate[columnIndex] != null || rowRecordList.fieldsHasAnyNull(i)) {
           hasCachedRowRecord = true;
           cachedRowRecord = rowRecordCandidate;
@@ -165,24 +189,11 @@ public class RawQueryInputLayer {
       return hasCachedRowRecord;
     }
 
-    @Override
-    public void readyForNext() {
-      hasCachedRowRecord = false;
-      cachedRowRecord = null;
-
-      safetyPile.moveForwardTo(currentRowIndex + 1);
-    }
-
     @Override
     public TSDataType getDataType() {
       return dataTypes[columnIndex];
     }
 
-    @Override
-    public long currentTime() {
-      return (long) cachedRowRecord[timestampIndex];
-    }
-
     @Override
     public int currentInt() {
       return (int) cachedRowRecord[columnIndex];
@@ -218,4 +229,74 @@ public class RawQueryInputLayer {
       return (Binary) cachedRowRecord[columnIndex];
     }
   }
+
+  private class TimePointReader extends AbstractLayerPointReader {
+
+    @Override
+    public boolean next() throws QueryProcessException, IOException {
+      if (hasCachedRowRecord) {
+        return true;
+      }
+
+      final int nextIndex = currentRowIndex + 1;
+      if (nextIndex < rowRecordList.size()) {
+        hasCachedRowRecord = true;
+        cachedRowRecord = rowRecordList.getRowRecord(nextIndex);
+        currentRowIndex = nextIndex;
+        return true;
+      }
+
+      if (queryDataSet.hasNextRowInObjects()) {
+        Object[] rowRecordCandidate = queryDataSet.nextRowInObjects();
+        rowRecordList.put(rowRecordCandidate);
+
+        hasCachedRowRecord = true;
+        cachedRowRecord = rowRecordCandidate;
+        currentRowIndex = rowRecordList.size() - 1;
+        return true;
+      }
+
+      return false;
+    }
+
+    @Override
+    public TSDataType getDataType() {
+      return TSDataType.INT64;
+    }
+
+    @Override
+    public int currentInt() throws IOException {
+      throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public long currentLong() throws IOException {
+      return (long) cachedRowRecord[timestampIndex];
+    }
+
+    @Override
+    public float currentFloat() throws IOException {
+      throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public double currentDouble() throws IOException {
+      throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean currentBoolean() throws IOException {
+      throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isCurrentNull() throws IOException {
+      return false;
+    }
+
+    @Override
+    public Binary currentBinary() throws IOException {
+      throw new UnsupportedOperationException();
+    }
+  }
 }


[iotdb] 02/02: fix bug

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

rong pushed a commit to branch iotdb-3050
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit f4e3d1cc3035de30194f53dd4d8ab34ad80ab6a5
Author: Steve Yurong Su <ro...@apache.org>
AuthorDate: Tue May 3 18:07:49 2022 +0800

    fix bug
---
 .../iotdb/db/integration/IoTDBNestedQueryIT.java   | 28 ++++++++++++++++++++++
 .../iotdb/db/qp/logical/crud/SelectComponent.java  |  4 +---
 .../iotdb/db/qp/physical/crud/QueryPlan.java       |  2 +-
 .../apache/iotdb/db/qp/physical/crud/UDTFPlan.java |  4 +++-
 .../db/query/expression/leaf/TimestampOperand.java | 17 +++++++++----
 .../org/apache/iotdb/rpc/IoTDBJDBCDataSet.java     |  3 ++-
 6 files changed, 47 insertions(+), 11 deletions(-)

diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBNestedQueryIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBNestedQueryIT.java
index c74ce71b6d..c27b622ea5 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBNestedQueryIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBNestedQueryIT.java
@@ -45,6 +45,7 @@ import java.sql.Statement;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 @Category({LocalStandaloneTest.class})
@@ -607,4 +608,31 @@ public class IoTDBNestedQueryIT {
       Assert.fail(e.getMessage());
     }
   }
+
+  @Test
+  public void testTimeExpressions() {
+    try (Connection connection =
+            DriverManager.getConnection(
+                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
+        Statement statement = connection.createStatement()) {
+      String query = "SELECT s1, time, time + 1 - 1, time + s1 - s1 FROM root.vehicle.d1";
+      try (ResultSet rs = statement.executeQuery(query)) {
+        for (int i = 1; i <= ITERATION_TIMES; ++i) {
+          assertTrue(rs.next());
+          for (int j = 1; j <= 5; ++j) {
+            assertEquals(i, Double.parseDouble(rs.getString(j)), 0.001);
+          }
+        }
+        assertFalse(rs.next());
+      }
+
+      query = "SELECT time FROM root.vehicle.d1";
+      try (ResultSet rs = statement.executeQuery(query)) {
+        assertFalse(rs.next());
+      }
+    } catch (SQLException e) {
+      e.printStackTrace();
+      Assert.fail(e.getMessage());
+    }
+  }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/SelectComponent.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/SelectComponent.java
index fa7c3c5d55..fe5a0a4060 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/SelectComponent.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/SelectComponent.java
@@ -114,9 +114,7 @@ public class SelectComponent {
           pathsCache.add(((TimeSeriesOperand) expression).getPath());
         } else if (expression instanceof FunctionExpression
             && expression.isBuiltInAggregationFunctionExpression()) {
-          pathsCache.add(
-              ((TimeSeriesOperand) ((FunctionExpression) expression).getExpressions().get(0))
-                  .getPath());
+          pathsCache.add(((TimeSeriesOperand) expression.getExpressions().get(0)).getPath());
         } else {
           pathsCache.add(null);
         }
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java
index a38cb1497e..1aba4f8cdf 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java
@@ -59,7 +59,7 @@ public abstract class QueryPlan extends PhysicalPlan {
 
   private boolean ascending = true;
 
-  private Map<String, Integer> pathToIndex = new HashMap<>();
+  private final Map<String, Integer> pathToIndex = new HashMap<>();
 
   protected Set<Integer>
       withoutNullColumnsIndex; // index set that withoutNullColumns for output data columns
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/UDTFPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/UDTFPlan.java
index e1c9dbadb7..0c4eded37c 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/UDTFPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/UDTFPlan.java
@@ -25,6 +25,7 @@ import org.apache.iotdb.db.metadata.path.PartialPath;
 import org.apache.iotdb.db.qp.logical.Operator;
 import org.apache.iotdb.db.qp.strategy.PhysicalGenerator;
 import org.apache.iotdb.db.query.expression.ResultColumn;
+import org.apache.iotdb.db.query.expression.leaf.TimestampOperand;
 import org.apache.iotdb.db.query.udf.core.executor.UDTFContext;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.utils.Pair;
@@ -71,7 +72,8 @@ public class UDTFPlan extends RawDataQueryPlan implements UDFPlan {
       Integer originalIndex = indexedPath.right;
 
       String columnForReader = originalPath.getFullPath();
-      if (!columnForReaderSet.contains(columnForReader)) {
+      if (!columnForReaderSet.contains(columnForReader)
+          && !TimestampOperand.TIMESTAMP_PARTIAL_PATH.getFullPath().equals(columnForReader)) {
         addDeduplicatedPaths(originalPath);
         pathNameToReaderIndex.put(columnForReader, pathNameToReaderIndex.size());
         columnForReaderSet.add(columnForReader);
diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/leaf/TimestampOperand.java b/server/src/main/java/org/apache/iotdb/db/query/expression/leaf/TimestampOperand.java
index 041af30a4d..8c18ff66bd 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/expression/leaf/TimestampOperand.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/expression/leaf/TimestampOperand.java
@@ -45,6 +45,8 @@ import java.util.Set;
 
 public class TimestampOperand extends LeafOperand {
 
+  public static final PartialPath TIMESTAMP_PARTIAL_PATH = new PartialPath("Time", false);
+
   public TimestampOperand() {
     // do nothing
   }
@@ -53,23 +55,28 @@ public class TimestampOperand extends LeafOperand {
     // do nothing
   }
 
+  @Override
+  public boolean isTimeSeriesGeneratingFunctionExpression() {
+    return true;
+  }
+
   @Override
   public void concat(
       List<PartialPath> prefixPaths,
       List<Expression> resultExpressions,
       PathPatternTree patternTree) {
-    // do nothing
+    resultExpressions.add(this);
   }
 
   @Override
   public void concat(List<PartialPath> prefixPaths, List<Expression> resultExpressions) {
-    // do nothing
+    resultExpressions.add(this);
   }
 
   @Override
   public void removeWildcards(WildcardsRemover wildcardsRemover, List<Expression> resultExpressions)
       throws StatementAnalyzeException {
-    // do nothing
+    resultExpressions.add(this);
   }
 
   @Override
@@ -77,12 +84,12 @@ public class TimestampOperand extends LeafOperand {
       org.apache.iotdb.db.qp.utils.WildcardsRemover wildcardsRemover,
       List<Expression> resultExpressions)
       throws LogicalOptimizeException {
-    // do nothing
+    resultExpressions.add(this);
   }
 
   @Override
   public void collectPaths(Set<PartialPath> pathSet) {
-    // do nothing
+    pathSet.add(TIMESTAMP_PARTIAL_PATH);
   }
 
   @Override
diff --git a/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java b/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java
index 0942b49937..670f025848 100644
--- a/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java
+++ b/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java
@@ -232,7 +232,8 @@ public class IoTDBJDBCDataSet {
 
         this.columnNameList.add(name);
         this.columnTypeList.add(columnTypeList.get(i));
-        if (!columnOrdinalMap.containsKey(name)) {
+        // "Time".equals(name) -> to allow the Time column appear in value columns
+        if (!columnOrdinalMap.containsKey(name) || "Time".equals(name)) {
           int index = columnNameIndex.get(name);
           columnOrdinalMap.put(name, index + START_INDEX);
           columnTypeDeduplicatedList.set(index, TSDataType.valueOf(columnTypeList.get(i)));