You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2022/12/15 12:20:41 UTC

[iotdb] 01/03: Delete Stale Old Standalone Code

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

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

commit cc258187d1eeb400bd276e287bd5a97780eaaeeb
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Thu Dec 15 15:57:55 2022 +0800

    Delete Stale Old Standalone Code
---
 .../thrift/ConfigNodeRPCServiceProcessor.java      |    8 +-
 docs/Development/ContributeGuide.md                |   14 -
 docs/zh/Development/ContributeGuide.md             |   11 -
 .../apache/iotdb/trigger/old/TriggerExample.java   |  147 --
 .../confignode/it/IoTDBClusterAuthorityIT.java     |   62 +-
 .../iotdb/db/integration/IoTDBAuthorizationIT.java | 1127 ---------
 .../db/integration/IoTDBEngineTimeGeneratorIT.java |  291 ---
 .../iotdb/db/integration/IoTDBSelectIntoIT.java    |  796 ------
 .../db/integration/IoTDBSequenceDataQueryIT.java   |  329 ---
 .../iotdb/db/integration/IoTDBSeriesReaderIT.java  |  444 ----
 .../aggregation/IoTDBUDFNestAggregationIT.java     |  774 ------
 .../IoTDBUserDefinedAggregationFunctionIT.java     |  732 ------
 .../db/integration/aligned/AlignedWriteUtil.java   |  149 --
 .../db/integration/aligned/IoTDBEmptyDataIT.java   |   78 -
 .../aligned/IoTDBGroupByFillQueryBigDataIT.java    |  192 --
 .../aligned/IoTDBGroupByFillQueryIT.java           |  989 --------
 .../aligned/IoTDBLoadExternalAlignedTsFileIT.java  | 1037 --------
 .../aligned/IoTDBRawQueryWithValueFilter2IT.java   |   65 -
 .../aligned/IoTDBRawQueryWithValueFilterIT.java    |  763 ------
 ...oTDBRawQueryWithValueFilterWithDeletion2IT.java |   82 -
 ...IoTDBRawQueryWithValueFilterWithDeletionIT.java |  778 ------
 .../db/integration/groupby/IoTDBGroupByFillIT.java | 2657 --------------------
 .../groupby/IoTDBGroupByFillMixPathsIT.java        |  479 ----
 .../groupby/IoTDBGroupByFillWithRangeIT.java       |  179 --
 .../groupby/IoTDBGroupByNaturalMonthFillIT.java    |  273 --
 .../apache/iotdb/jdbc/IoTDBDatabaseMetadata.java   |   42 -
 .../java/org/apache/iotdb/jdbc/ListDataSet.java    |   53 -
 .../metadata/rocksdb/RocksDBBenchmarkEngine.java   |  139 +-
 .../metadata/tagSchemaRegion/TagSchemaRegion.java  |    9 +-
 .../tagSchemaRegion/TagSchemaRegionTest.java       |   18 +-
 .../org/apache/iotdb/db/auth/AuthorityChecker.java |  131 -
 .../apache/iotdb/db/auth/AuthorizerManager.java    |    7 +-
 .../iotdb/db/auth/ClusterAuthorityFetcher.java     |   10 +-
 .../iotdb/db/auth/StandaloneAuthorityFetcher.java  |  125 -
 .../iotdb/db/client/DataNodeInternalClient.java    |   15 +-
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java |    5 +-
 .../iotdb/db/engine/storagegroup/DataRegion.java   |   64 +-
 .../trigger/sink/local/LocalIoTDBHandler.java      |   95 -
 .../iotdb/db/localconfignode/LocalConfigNode.java  |    9 +-
 .../db/localconfignode/LocalDataPartitionInfo.java |    1 +
 .../localconfignode/LocalDataPartitionTable.java   |    1 +
 .../localconfignode/LocalSchemaPartitionTable.java |    1 +
 .../iotdb/db/metadata/LocalSchemaProcessor.java    |    6 +-
 .../iotdb/db/metadata/idtable/IDTableManager.java  |   27 +-
 .../iotdb/db/metadata/logfile/MLogReader.java      |   75 -
 .../iotdb/db/metadata/logfile/MLogWriter.java      |  254 --
 .../storagegroup/StorageGroupLogReader.java        |   47 -
 .../storagegroup/StorageGroupLogWriter.java        |   56 -
 .../storagegroup/StorageGroupSchemaManager.java    |  124 +-
 .../iotdb/db/metadata/template/Template.java       |   53 +-
 .../db/metadata/utils/ResourceByPathUtils.java     |   34 -
 .../db/mpp/aggregation/AccumulatorFactory.java     |    2 +-
 .../SlidingWindowAggregatorFactory.java            |    2 +-
 .../apache/iotdb/db/mpp/plan/analyze/Analyzer.java |   10 +-
 .../iotdb/db/mpp/plan/analyze/SchemaValidator.java |    6 +-
 .../plan/analyze/StandalonePartitionFetcher.java   |  252 --
 .../mpp/plan/analyze/StandaloneSchemaFetcher.java  |  227 --
 .../mpp/plan/execution/config/ConfigExecution.java |    7 +-
 .../executor/StandaloneConfigTaskExecutor.java     |  728 ------
 .../iotdb/db/mpp/plan/expression/Expression.java   |   27 -
 .../iotdb/db/mpp/plan/expression/ResultColumn.java |   61 -
 .../plan/expression/binary/BinaryExpression.java   |   96 -
 .../mpp/plan/expression/leaf/ConstantOperand.java  |   26 -
 .../db/mpp/plan/expression/leaf/NullOperand.java   |   27 -
 .../plan/expression/leaf/TimeSeriesOperand.java    |   31 -
 .../mpp/plan/expression/leaf/TimestampOperand.java |   27 -
 .../plan/expression/multi/FunctionExpression.java  |   49 -
 .../plan/expression/ternary/TernaryExpression.java |   50 -
 .../mpp/plan/expression/unary/UnaryExpression.java |   37 -
 .../iotdb/db/mpp/plan/parser/ASTVisitor.java       |   36 +-
 .../db/mpp/plan/planner/LogicalPlanBuilder.java    |    2 +-
 .../plan/parameter/AggregationDescriptor.java      |    1 -
 .../planner/plan/parameter}/AggregationType.java   |    2 +-
 .../iotdb/db/mpp/plan/statement/AuthorType.java    |  122 +
 .../db/mpp/plan/statement/sys/AuthorStatement.java |   12 +-
 .../mpp/transformation/dag/builder/DAGBuilder.java |  116 -
 .../dag/input/QueryDataSetInputLayer.java          |   41 -
 .../protocol/influxdb/util/QueryResultUtils.java   |   90 -
 .../iotdb/db/protocol/mqtt/MPPPublishHandler.java  |   11 +-
 .../protocol/rest/impl/GrafanaApiServiceImpl.java  |   11 +-
 .../db/protocol/rest/impl/RestApiServiceImpl.java  |   11 +-
 .../main/java/org/apache/iotdb/db/qp/Planner.java  |  154 --
 .../apache/iotdb/db/qp/executor/IPlanExecutor.java |   55 -
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |  946 -------
 .../org/apache/iotdb/db/qp/logical/Operator.java   |   13 -
 .../qp/logical/crud/AggregationQueryOperator.java  |  155 --
 .../db/qp/logical/crud/DeleteDataOperator.java     |   73 -
 .../db/qp/logical/crud/FillClauseComponent.java    |   49 -
 .../db/qp/logical/crud/FillQueryOperator.java      |   92 -
 .../db/qp/logical/crud/GroupByClauseComponent.java |   92 -
 .../logical/crud/GroupByFillClauseComponent.java   |   49 -
 .../qp/logical/crud/GroupByFillQueryOperator.java  |   80 -
 .../db/qp/logical/crud/GroupByQueryOperator.java   |  111 -
 .../iotdb/db/qp/logical/crud/InOperator.java       |  212 --
 .../iotdb/db/qp/logical/crud/InsertOperator.java   |   90 -
 .../db/qp/logical/crud/LastQueryOperator.java      |   64 -
 .../iotdb/db/qp/logical/crud/LikeOperator.java     |  134 -
 .../iotdb/db/qp/logical/crud/QueryOperator.java    |  421 ----
 .../iotdb/db/qp/logical/crud/RegexpOperator.java   |  133 -
 .../db/qp/logical/crud/SelectIntoOperator.java     |  133 -
 .../db/qp/logical/crud/UDAFQueryOperator.java      |  179 --
 .../db/qp/logical/crud/UDTFQueryOperator.java      |   48 -
 .../qp/logical/sys/ActivateTemplateOperator.java   |   51 -
 .../db/qp/logical/sys/AlterTimeSeriesOperator.java |  116 -
 .../iotdb/db/qp/logical/sys/AuthorOperator.java    |  233 --
 .../db/qp/logical/sys/ClearCacheOperator.java      |   39 -
 .../iotdb/db/qp/logical/sys/CountOperator.java     |   73 -
 .../sys/CreateAlignedTimeSeriesOperator.java       |  184 --
 .../logical/sys/CreateContinuousQueryOperator.java |  108 -
 .../db/qp/logical/sys/CreateFunctionOperator.java  |   59 -
 .../db/qp/logical/sys/CreateIndexOperator.java     |   84 -
 .../db/qp/logical/sys/CreatePipeOperator.java      |   61 -
 .../db/qp/logical/sys/CreatePipeSinkOperator.java  |   54 -
 .../db/qp/logical/sys/CreateTemplateOperator.java  |  108 -
 .../qp/logical/sys/CreateTimeSeriesOperator.java   |  127 -
 .../iotdb/db/qp/logical/sys/DataAuthOperator.java  |   51 -
 .../db/qp/logical/sys/DeletePartitionOperator.java |   61 -
 .../qp/logical/sys/DeleteStorageGroupOperator.java |   50 -
 .../qp/logical/sys/DeleteTimeSeriesOperator.java   |   51 -
 .../logical/sys/DropContinuousQueryOperator.java   |   50 -
 .../db/qp/logical/sys/DropFunctionOperator.java    |   50 -
 .../iotdb/db/qp/logical/sys/DropIndexOperator.java |   65 -
 .../iotdb/db/qp/logical/sys/DropPipeOperator.java  |   44 -
 .../db/qp/logical/sys/DropPipeSinkOperator.java    |   43 -
 .../db/qp/logical/sys/DropTemplateOperator.java    |   49 -
 .../iotdb/db/qp/logical/sys/FlushOperator.java     |   62 -
 .../iotdb/db/qp/logical/sys/KillQueryOperator.java |   52 -
 .../qp/logical/sys/LoadConfigurationOperator.java  |   52 -
 .../iotdb/db/qp/logical/sys/LoadDataOperator.java  |   54 -
 .../iotdb/db/qp/logical/sys/LoadFilesOperator.java |   92 -
 .../iotdb/db/qp/logical/sys/MergeOperator.java     |   44 -
 .../db/qp/logical/sys/RemoveFileOperator.java      |   49 -
 .../db/qp/logical/sys/SetStorageGroupOperator.java |   48 -
 .../db/qp/logical/sys/SetSystemModeOperator.java   |   54 -
 .../iotdb/db/qp/logical/sys/SetTTLOperator.java    |   61 -
 .../db/qp/logical/sys/SetTemplateOperator.java     |   65 -
 .../iotdb/db/qp/logical/sys/SettleOperator.java    |   71 -
 .../db/qp/logical/sys/ShowChildNodesOperator.java  |   47 -
 .../db/qp/logical/sys/ShowChildPathsOperator.java  |   47 -
 .../logical/sys/ShowContinuousQueriesOperator.java |   28 -
 .../db/qp/logical/sys/ShowDevicesOperator.java     |   73 -
 .../db/qp/logical/sys/ShowFunctionsOperator.java   |   38 -
 .../db/qp/logical/sys/ShowLockInfoOperator.java    |   36 -
 .../logical/sys/ShowNodesInTemplateOperator.java   |   43 -
 .../iotdb/db/qp/logical/sys/ShowOperator.java      |   64 -
 .../logical/sys/ShowPathsSetTemplateOperator.java  |   43 -
 .../sys/ShowPathsUsingTemplateOperator.java        |   43 -
 .../iotdb/db/qp/logical/sys/ShowPipeOperator.java  |   45 -
 .../db/qp/logical/sys/ShowPipeSinkOperator.java    |   45 -
 .../qp/logical/sys/ShowPipeSinkTypeOperator.java   |   38 -
 .../qp/logical/sys/ShowQueryResourceOperate.java   |   39 -
 .../qp/logical/sys/ShowStorageGroupOperator.java   |   47 -
 .../iotdb/db/qp/logical/sys/ShowTTLOperator.java   |   48 -
 .../db/qp/logical/sys/ShowTemplatesOperator.java   |   27 -
 .../db/qp/logical/sys/ShowTimeSeriesOperator.java  |  103 -
 .../db/qp/logical/sys/ShowTriggersOperator.java    |   38 -
 .../iotdb/db/qp/logical/sys/StartPipeOperator.java |   44 -
 .../iotdb/db/qp/logical/sys/StopPipeOperator.java  |   44 -
 .../iotdb/db/qp/logical/sys/TracingOperator.java   |   46 -
 .../iotdb/db/qp/logical/sys/UnSetTTLOperator.java  |   52 -
 .../db/qp/logical/sys/UnloadFileOperator.java      |   55 -
 .../db/qp/logical/sys/UnsetTemplateOperator.java   |   65 -
 .../org/apache/iotdb/db/qp/physical/BatchPlan.java |   73 -
 .../apache/iotdb/db/qp/physical/PhysicalPlan.java  |  253 --
 .../iotdb/db/qp/physical/crud/AggregationPlan.java |  226 --
 .../db/qp/physical/crud/AlignByDevicePlan.java     |  285 ---
 .../iotdb/db/qp/physical/crud/FillQueryPlan.java   |   61 -
 .../db/qp/physical/crud/GroupByTimeFillPlan.java   |  118 -
 .../iotdb/db/qp/physical/crud/GroupByTimePlan.java |  138 -
 .../iotdb/db/qp/physical/crud/LastQueryPlan.java   |   87 -
 .../iotdb/db/qp/physical/crud/MeasurementInfo.java |   62 -
 .../iotdb/db/qp/physical/crud/QueryIndexPlan.java  |   88 -
 .../iotdb/db/qp/physical/crud/QueryPlan.java       |  257 --
 .../db/qp/physical/crud/RawDataQueryPlan.java      |  217 --
 .../iotdb/db/qp/physical/crud/SelectIntoPlan.java  |  130 -
 .../apache/iotdb/db/qp/physical/crud/UDAFPlan.java |   81 -
 .../apache/iotdb/db/qp/physical/crud/UDFPlan.java  |   43 -
 .../apache/iotdb/db/qp/physical/crud/UDTFPlan.java |  149 --
 .../sys/ActivateTemplateInClusterPlan.java         |  127 -
 .../db/qp/physical/sys/ActivateTemplatePlan.java   |   87 -
 .../db/qp/physical/sys/AlterTimeSeriesPlan.java    |  212 --
 .../db/qp/physical/sys/AppendTemplatePlan.java     |  218 --
 .../iotdb/db/qp/physical/sys/AuthorPlan.java       |  406 ---
 .../qp/physical/sys/AutoCreateDeviceMNodePlan.java |   89 -
 .../iotdb/db/qp/physical/sys/ChangeAliasPlan.java  |  116 -
 .../db/qp/physical/sys/ChangeTagOffsetPlan.java    |  116 -
 .../iotdb/db/qp/physical/sys/ClearCachePlan.java   |   55 -
 .../apache/iotdb/db/qp/physical/sys/CountPlan.java |   53 -
 .../physical/sys/CreateAlignedTimeSeriesPlan.java  |   66 -
 .../qp/physical/sys/CreateContinuousQueryPlan.java |  156 --
 .../db/qp/physical/sys/CreateFunctionPlan.java     |   81 -
 .../iotdb/db/qp/physical/sys/CreateIndexPlan.java  |  180 --
 .../qp/physical/sys/CreateMultiTimeSeriesPlan.java |  398 ---
 .../db/qp/physical/sys/CreateTemplatePlan.java     |  516 ----
 .../db/qp/physical/sys/CreateTimeSeriesPlan.java   |   35 -
 .../iotdb/db/qp/physical/sys/DataAuthPlan.java     |  100 -
 .../db/qp/physical/sys/DeleteStorageGroupPlan.java |   84 -
 .../db/qp/physical/sys/DeleteTimeSeriesPlan.java   |  139 -
 .../qp/physical/sys/DropContinuousQueryPlan.java   |   63 -
 .../iotdb/db/qp/physical/sys/DropFunctionPlan.java |   69 -
 .../iotdb/db/qp/physical/sys/DropIndexPlan.java    |  129 -
 .../iotdb/db/qp/physical/sys/DropTemplatePlan.java |   78 -
 .../apache/iotdb/db/qp/physical/sys/FlushPlan.java |  244 --
 .../iotdb/db/qp/physical/sys/KillQueryPlan.java    |   45 -
 .../db/qp/physical/sys/LoadConfigurationPlan.java  |  144 --
 .../iotdb/db/qp/physical/sys/LoadDataPlan.java     |   73 -
 .../apache/iotdb/db/qp/physical/sys/LogPlan.java   |   75 -
 .../apache/iotdb/db/qp/physical/sys/MNodePlan.java |  116 -
 .../db/qp/physical/sys/MeasurementMNodePlan.java   |  154 --
 .../apache/iotdb/db/qp/physical/sys/MergePlan.java |   59 -
 .../iotdb/db/qp/physical/sys/OperateFilePlan.java  |  119 -
 .../qp/physical/sys/PreDeleteTimeSeriesPlan.java   |   80 -
 .../db/qp/physical/sys/PruneTemplatePlan.java      |  107 -
 .../sys/RollbackPreDeleteTimeSeriesPlan.java       |   81 -
 .../db/qp/physical/sys/SetStorageGroupPlan.java    |  100 -
 .../db/qp/physical/sys/SetSystemModePlan.java      |   76 -
 .../iotdb/db/qp/physical/sys/SetTTLPlan.java       |  102 -
 .../iotdb/db/qp/physical/sys/SetTemplatePlan.java  |  107 -
 .../iotdb/db/qp/physical/sys/SettlePlan.java       |   65 -
 .../db/qp/physical/sys/ShowChildNodesPlan.java     |   39 -
 .../db/qp/physical/sys/ShowChildPathsPlan.java     |   39 -
 .../qp/physical/sys/ShowContinuousQueriesPlan.java |   27 -
 .../iotdb/db/qp/physical/sys/ShowDevicesPlan.java  |   10 -
 .../db/qp/physical/sys/ShowFunctionsPlan.java      |   27 -
 .../iotdb/db/qp/physical/sys/ShowLockInfoPlan.java |   36 -
 .../qp/physical/sys/ShowNodesInTemplatePlan.java   |   34 -
 .../qp/physical/sys/ShowPathsSetTemplatePlan.java  |   34 -
 .../physical/sys/ShowPathsUsingTemplatePlan.java   |   34 -
 .../qp/physical/sys/ShowQueryProcesslistPlan.java  |   26 -
 .../db/qp/physical/sys/ShowQueryResourcePlan.java  |   38 -
 .../db/qp/physical/sys/ShowStorageGroupPlan.java   |   36 -
 .../iotdb/db/qp/physical/sys/ShowTTLPlan.java      |   42 -
 .../db/qp/physical/sys/ShowTemplatesPlan.java      |   27 -
 .../db/qp/physical/sys/ShowTimeSeriesPlan.java     |   14 -
 .../iotdb/db/qp/physical/sys/ShowTriggersPlan.java |   27 -
 .../db/qp/physical/sys/StorageGroupMNodePlan.java  |  110 -
 .../iotdb/db/qp/physical/sys/TracingPlan.java      |   45 -
 .../db/qp/physical/sys/UnsetTemplatePlan.java      |  109 -
 .../iotdb/db/qp/strategy/LogicalChecker.java       |   46 -
 .../iotdb/db/qp/strategy/LogicalGenerator.java     |  131 -
 .../iotdb/db/qp/strategy/PhysicalGenerator.java    |   59 -
 .../qp/strategy/optimizer/ConcatPathOptimizer.java |  408 ---
 .../qp/strategy/optimizer/DnfFilterOptimizer.java  |  163 --
 .../db/qp/strategy/optimizer/IFilterOptimizer.java |   29 -
 .../qp/strategy/optimizer/ILogicalOptimizer.java   |   30 -
 .../optimizer/MergeSingleFilterOptimizer.java      |  179 --
 .../qp/strategy/optimizer/RemoveNotOptimizer.java  |  104 -
 .../iotdb/db/qp/utils/EmptyOutputStream.java       |   35 -
 .../apache/iotdb/db/qp/utils/WildcardsRemover.java |  150 --
 .../db/query/aggregation/AggregateResult.java      |  377 ---
 .../aggregation/RemovableAggregateResult.java      |   30 -
 .../db/query/aggregation/impl/AvgAggrResult.java   |  222 --
 .../db/query/aggregation/impl/CountAggrResult.java |  122 -
 .../query/aggregation/impl/ExtremeAggrResult.java  |  175 --
 .../aggregation/impl/FirstValueAggrResult.java     |  141 --
 .../aggregation/impl/FirstValueDescAggrResult.java |   88 -
 .../aggregation/impl/LastValueAggrResult.java      |  131 -
 .../aggregation/impl/LastValueDescAggrResult.java  |  110 -
 .../query/aggregation/impl/MaxTimeAggrResult.java  |  119 -
 .../aggregation/impl/MaxTimeDescAggrResult.java    |   92 -
 .../query/aggregation/impl/MaxValueAggrResult.java |  126 -
 .../query/aggregation/impl/MinTimeAggrResult.java  |  134 -
 .../aggregation/impl/MinTimeDescAggrResult.java    |   76 -
 .../query/aggregation/impl/MinValueAggrResult.java |  124 -
 .../db/query/aggregation/impl/SumAggrResult.java   |  172 --
 .../iotdb/db/query/context/QueryContext.java       |    9 -
 .../db/query/control/QueryResourceManager.java     |   98 +-
 .../iotdb/db/query/control/QueryTimeManager.java   |  151 --
 .../iotdb/db/query/control/SessionManager.java     |   40 -
 .../db/query/control/tracing/TracingConstant.java  |   30 -
 .../db/query/control/tracing/TracingInfo.java      |  164 --
 .../db/query/control/tracing/TracingManager.java   |   88 -
 .../db/query/dataset/AlignByDeviceDataSet.java     |  281 ---
 .../db/query/dataset/DirectAlignByTimeDataSet.java |   34 -
 .../db/query/dataset/DirectNonAlignDataSet.java    |   32 -
 .../apache/iotdb/db/query/dataset/ListDataSet.java |   61 -
 .../db/query/dataset/NonAlignEngineDataSet.java    |  353 ---
 .../dataset/RawQueryDataSetWithValueFilter.java    |  264 --
 .../dataset/RawQueryDataSetWithoutValueFilter.java |  728 ------
 .../query/dataset/ShowContinuousQueriesResult.java |   75 -
 .../apache/iotdb/db/query/dataset/ShowDataSet.java |   69 -
 .../iotdb/db/query/dataset/ShowDevicesDataSet.java |   86 -
 .../db/query/dataset/ShowTimeseriesDataSet.java    |  109 -
 .../iotdb/db/query/dataset/SingleDataSet.java      |   56 -
 .../iotdb/db/query/dataset/UDFInputDataSet.java    |   67 -
 .../UDFRawQueryInputDataSetWithoutValueFilter.java |   68 -
 .../db/query/dataset/UDTFAlignByTimeDataSet.java   |  373 ---
 .../apache/iotdb/db/query/dataset/UDTFDataSet.java |  145 --
 .../db/query/dataset/UDTFNonAlignDataSet.java      |  216 --
 .../query/dataset/groupby/GroupByFillDataSet.java  |  340 ---
 .../query/dataset/groupby/GroupByLevelDataSet.java |   93 -
 .../query/dataset/groupby/GroupByTimeDataSet.java  |  165 --
 .../dataset/groupby/GroupByTimeEngineDataSet.java  |   93 -
 .../groupby/GroupByWithValueFilterDataSet.java     |  234 --
 .../groupby/GroupByWithoutValueFilterDataSet.java  |  161 --
 .../db/query/executor/AggregationExecutor.java     |  706 ------
 .../iotdb/db/query/executor/FillQueryExecutor.java |  206 --
 .../iotdb/db/query/executor/IQueryRouter.java      |   74 -
 .../iotdb/db/query/executor/LastQueryExecutor.java |  285 ---
 .../iotdb/db/query/executor/QueryRouter.java       |  274 --
 .../db/query/executor/RawDataQueryExecutor.java    |  185 --
 .../iotdb/db/query/executor/UDFQueryExecutor.java  |  112 -
 .../executor/fill/AlignedLastPointReader.java      |   58 -
 .../apache/iotdb/db/query/executor/fill/IFill.java |  150 --
 .../db/query/executor/fill/LastPointReader.java    |  266 --
 .../iotdb/db/query/executor/fill/LinearFill.java   |  263 --
 .../iotdb/db/query/executor/fill/PreviousFill.java |  138 -
 .../iotdb/db/query/executor/fill/ValueFill.java    |  152 --
 .../executor/groupby/AlignedGroupByExecutor.java   |   37 -
 .../db/query/executor/groupby/GroupByExecutor.java |   40 -
 .../groupby/SlidingWindowGroupByExecutor.java      |   66 -
 .../SlidingWindowGroupByExecutorFactory.java       |  117 -
 .../EmptyQueueSlidingWindowGroupByExecutor.java    |   51 -
 .../groupby/impl/LocalAlignedGroupByExecutor.java  |  366 ---
 .../groupby/impl/LocalGroupByExecutor.java         |  367 ---
 ...MonotonicQueueSlidingWindowGroupByExecutor.java |   73 -
 .../NormalQueueSlidingWindowGroupByExecutor.java   |   61 -
 .../SmoothQueueSlidingWindowGroupByExecutor.java   |   55 -
 .../db/query/externalsort/ExternalSortJob.java     |   43 -
 .../query/externalsort/ExternalSortJobEngine.java  |   52 -
 .../db/query/externalsort/ExternalSortJobPart.java |   43 -
 .../externalsort/ExternalSortJobScheduler.java     |   40 -
 .../iotdb/db/query/externalsort/LineMerger.java    |   55 -
 .../MultiSourceExternalSortJobPart.java            |   50 -
 .../externalsort/SimpleExternalSortEngine.java     |  178 --
 .../SingleSourceExternalSortJobPart.java           |   39 -
 .../adapter/ByTimestampReaderAdapter.java          |   73 -
 .../serialize/IExternalSortFileDeserializer.java   |   32 -
 .../serialize/IExternalSortFileSerializer.java     |   30 -
 .../FixLengthIExternalSortFileDeserializer.java    |  267 --
 .../impl/FixLengthTimeValuePairSerializer.java     |  169 --
 .../db/query/factory/AggregateResultFactory.java   |  150 --
 .../iotdb/db/query/pool/QueryTaskManager.java      |   90 -
 .../db/query/pool/RawQueryReadTaskPoolManager.java |  104 -
 .../pool/RawQueryReadTaskPoolManagerMetrics.java   |   92 -
 .../db/query/reader/chunk/ChunkDataIterator.java   |   79 -
 .../db/query/reader/chunk/ChunkReaderWrap.java     |   95 -
 .../reader/chunk/DiskChunkReaderByTimestamp.java   |   82 -
 .../resource/CachedUnseqResourceMergeReader.java   |   43 -
 .../series/AlignedSeriesAggregateReader.java       |  189 --
 .../reader/series/BaseManagedSeriesReader.java     |   45 -
 .../db/query/reader/series/IAggregateReader.java   |   57 -
 .../db/query/reader/series/IReaderByTimestamp.java |   47 -
 .../query/reader/series/ManagedSeriesReader.java   |   37 -
 .../query/reader/series/SeriesAggregateReader.java |  175 --
 .../reader/series/SeriesRawDataBatchReader.java    |   63 +-
 .../reader/series/SeriesRawDataPointReader.java    |   87 -
 .../iotdb/db/query/reader/series/SeriesReader.java |   51 -
 .../reader/series/SeriesReaderByTimestamp.java     |  189 --
 .../reader/universal/PriorityMergeReader.java      |   10 -
 .../query/timegenerator/ServerTimeGenerator.java   |  182 --
 .../java/org/apache/iotdb/db/service/DataNode.java |    8 -
 .../java/org/apache/iotdb/db/service/NewIoTDB.java |  232 --
 .../org/apache/iotdb/db/service/NewIoTDBMBean.java |   28 -
 .../iotdb/db/service/basic/ServiceProvider.java    |  100 -
 .../service/basic/StandaloneServiceProvider.java   |   55 -
 .../db/service/metrics/IoTDBInternalReporter.java  |   11 +-
 .../service/thrift/impl/ClientRPCServiceImpl.java  |  143 +-
 .../impl/DataNodeInternalRPCServiceImpl.java       |   17 +-
 .../db/service/thrift/impl/TSServiceImpl.java      | 1424 -----------
 .../iotdb/db/sync/pipedata/load/ILoader.java       |   15 +-
 .../db/sync/sender/manager/LocalSyncManager.java   |   21 +-
 .../java/org/apache/iotdb/db/utils/QueryUtils.java |   34 -
 .../org/apache/iotdb/db/utils/SchemaUtils.java     |   72 +-
 .../iotdb/db/utils/writelog/BatchLogReader.java    |   83 -
 .../apache/iotdb/db/utils/writelog/ILogReader.java |   50 -
 .../apache/iotdb/db/utils/writelog/LogWriter.java  |   19 +-
 .../db/utils/writelog/MultiFileLogReader.java      |   76 -
 .../db/utils/writelog/SingleFileLogReader.java     |  166 --
 .../apache/iotdb/db/auth/AuthorityCheckerTest.java |  264 --
 .../db/engine/storagegroup/DataRegionTest.java     |   10 -
 .../iotdb/db/engine/storagegroup/TTLTest.java      |    3 -
 .../apache/iotdb/db/metadata/SchemaBasicTest.java  |   95 -
 .../org/apache/iotdb/db/metadata/TemplateTest.java |  180 --
 .../plan/SchemaRegionPlanCompatibilityTest.java    |  279 --
 .../iotdb/db/mpp/aggregation/AccumulatorTest.java  |    2 +-
 .../operator/AggregationOperatorTest.java          |    2 +-
 .../AlignedSeriesAggregationScanOperatorTest.java  |    2 +-
 .../mpp/execution/operator/OperatorMemoryTest.java |    2 +-
 .../operator/RawDataAggregationOperatorTest.java   |    2 +-
 .../SeriesAggregationScanOperatorTest.java         |    2 +-
 .../SlidingWindowAggregationOperatorTest.java      |    2 +-
 .../operator/VerticallyConcatOperatorTest.java     |    2 +-
 .../db/mpp/plan/StandaloneCoordinatorTest.java     |  155 --
 .../plan/analyze/AggregationDescriptorTest.java    |    2 +-
 .../iotdb/db/mpp/plan/plan/LogicalPlannerTest.java |    2 +-
 .../db/mpp/plan/plan/QueryLogicalPlanUtil.java     |    2 +-
 .../distribution/AggregationDistributionTest.java  |    2 +-
 .../node/process/AggregationNodeSerdeTest.java     |    2 +-
 .../node/process/GroupByLevelNodeSerdeTest.java    |    2 +-
 .../plan/node/process/GroupByTagNodeSerdeTest.java |    2 +-
 .../source/SeriesAggregationScanNodeSerdeTest.java |    2 +-
 .../java/org/apache/iotdb/db/qp/PlannerTest.java   |  289 ---
 .../iotdb/db/qp/bench/QueryParseBenchmark.java     |   45 -
 .../iotdb/db/qp/logical/LogicalPlanSmallTest.java  |  365 ---
 .../iotdb/db/qp/other/TSPlanContextAuthorTest.java |   94 -
 .../db/qp/utils/DatetimeQueryDataSetUtilsTest.java |   18 +-
 .../db/query/aggregation/AggregateResultTest.java  |  294 ---
 .../query/aggregation/DescAggregateResultTest.java |  190 --
 .../iotdb/db/query/dataset/ListDataSetTest.java    |  164 --
 .../query/dataset/UDTFAlignByTimeDataSetTest.java  |  700 ------
 .../dataset/groupby/GroupByTimeDataSetTest.java    |  492 ----
 .../query/externalsort/ExternalSortEngineTest.java |  193 --
 .../db/query/externalsort/FakeChunkReaderWrap.java |   43 -
 ...ExternalSortFileSerializerDeserializerTest.java |  131 -
 .../reader/series/SeriesAggregateReaderTest.java   |  141 --
 .../reader/series/SeriesReaderByTimestampTest.java |   95 -
 .../db/query/reader/series/SeriesReaderTest.java   |  189 --
 .../iotdb/db/tools/TsFileAndModSettleToolTest.java |    2 -
 .../apache/iotdb/db/utils/EnvironmentUtils.java    |   53 +-
 .../org/apache/iotdb/db/utils/SchemaUtilsTest.java |   16 -
 .../iotdb/db/utils/TsFileRewriteToolTest.java      |  460 ----
 .../db/utils/writelog/LogWriterReaderTest.java     |  215 --
 .../db/utils/writelog/MultiFileLogReaderTest.java  |   97 -
 .../org/apache/iotdb/spark/db/IoTDBTest.scala      |    9 +-
 .../org/apache/iotdb/spark/db/IoTDBWriteTest.scala |   14 +-
 .../iotdb/spark/db/unit/DataFrameToolsTest.scala   |   11 +-
 .../tsfile/read/query/dataset/EmptyDataSet.java    |   40 -
 .../tsfile/read/reader/FakedTimeGenerator.java     |   83 -
 419 files changed, 438 insertions(+), 54188 deletions(-)

diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java b/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java
index 2af5115e6e..baf4cb164f 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/service/thrift/ConfigNodeRPCServiceProcessor.java
@@ -140,7 +140,7 @@ import org.apache.iotdb.confignode.rpc.thrift.TStorageGroupSchemaResp;
 import org.apache.iotdb.confignode.rpc.thrift.TUnsetSchemaTemplateReq;
 import org.apache.iotdb.confignode.service.ConfigNode;
 import org.apache.iotdb.consensus.common.response.ConsensusGenericResponse;
-import org.apache.iotdb.db.qp.logical.sys.AuthorOperator;
+import org.apache.iotdb.db.mpp.plan.statement.AuthorType;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
 
@@ -364,8 +364,7 @@ public class ConfigNodeRPCServiceProcessor implements IConfigNodeRPCService.Ifac
 
   @Override
   public TSStatus operatePermission(TAuthorizerReq req) {
-    if (req.getAuthorType() < 0
-        || req.getAuthorType() >= AuthorOperator.AuthorType.values().length) {
+    if (req.getAuthorType() < 0 || req.getAuthorType() >= AuthorType.values().length) {
       throw new IndexOutOfBoundsException("Invalid Author Type ordinal");
     }
     AuthorPlan plan = null;
@@ -388,8 +387,7 @@ public class ConfigNodeRPCServiceProcessor implements IConfigNodeRPCService.Ifac
 
   @Override
   public TAuthorizerResp queryPermission(TAuthorizerReq req) {
-    if (req.getAuthorType() < 0
-        || req.getAuthorType() >= AuthorOperator.AuthorType.values().length) {
+    if (req.getAuthorType() < 0 || req.getAuthorType() >= AuthorType.values().length) {
       throw new IndexOutOfBoundsException("Invalid Author Type ordinal");
     }
     AuthorPlan plan = null;
diff --git a/docs/Development/ContributeGuide.md b/docs/Development/ContributeGuide.md
index 5ab5b63406..07e82505fa 100644
--- a/docs/Development/ContributeGuide.md
+++ b/docs/Development/ContributeGuide.md
@@ -174,20 +174,6 @@ If the version after eclipse 2019
 
 import -> Maven -> Existing Maven Projects
 
-## Debugging code
-
-
-* Server main function:`server/src/main/java/org/apache/iotdb/db/service/IoTDB`, can be started in debug mode.
-* Cli:`cli/src/main/java/org/apache/iotdb/cli/`,Use Cli for linux and WinCli for windows, you can start directly with the parameter "`-h 127.0.0.1 -p 6667 -u root -pw root`"
-* Server rpc implementation (mainly used for cli and server communication, generally start interruption point here):`server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl`
-* all jdbc statements:`executeStatement(TSExecuteStatementReq req)`
-* jdbc query:`executeQueryStatement(TSExecuteStatementReq req)`	
-* native Write interface:`insertRecord(TSInsertRecordReq req)`
-`insertTablet(TSInsertTabletReq req)`
-
-* Storage engine`org.apache.iotdb.db.engine.StorageEngine`
-* Query engine `org.apache.iotdb.db.qp.QueryProcessor`
-
 
 # Frequent Questions When Compiling the Source Code
 
diff --git a/docs/zh/Development/ContributeGuide.md b/docs/zh/Development/ContributeGuide.md
index 8a691bd987..e9864e3c2e 100644
--- a/docs/zh/Development/ContributeGuide.md
+++ b/docs/zh/Development/ContributeGuide.md
@@ -155,17 +155,6 @@ import -> General -> Existing Projects into Workspace -> 选择 IoTDB 根目录
 
 import -> Maven -> Existing Maven Projects
 
-## 调试代码
-
-* 服务器主函数:```server/src/main/java/org/apache/iotdb/db/service/IoTDB```,可以 debug 模式启动
-* 命令行界面:```cli/src/main/java/org/apache/iotdb/cli/```,linux 用 Cli,windows 用 WinCli,可以直接启动。启动时需要参数"-h 127.0.0.1 -p 6667 -u root -pw root"
-* 服务器的 rpc 实现(主要用来客户端和服务器通信,一般在这里开始打断点):```server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl```
-	* jdbc 所有语句:executeStatement(TSExecuteStatementReq req)
-	* jdbc 查询语句:executeQueryStatement(TSExecuteStatementReq req)	
-	* native 写入接口:insertRecord(TSInsertRecordReq req)
-
-* 存储引擎 org.apache.iotdb.db.engine.StorageEngine
-* 查询引擎 org.apache.iotdb.db.qp.Planner
 
 # 常见编译错误
 
diff --git a/example/trigger/src/main/java/org/apache/iotdb/trigger/old/TriggerExample.java b/example/trigger/src/main/java/org/apache/iotdb/trigger/old/TriggerExample.java
deleted file mode 100644
index 6bfe230bd3..0000000000
--- a/example/trigger/src/main/java/org/apache/iotdb/trigger/old/TriggerExample.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.iotdb.trigger.old;
-
-import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.engine.trigger.api.Trigger;
-import org.apache.iotdb.db.engine.trigger.sink.local.LocalIoTDBConfiguration;
-import org.apache.iotdb.db.engine.trigger.sink.local.LocalIoTDBEvent;
-import org.apache.iotdb.db.engine.trigger.sink.local.LocalIoTDBHandler;
-import org.apache.iotdb.db.engine.trigger.sink.mqtt.MQTTConfiguration;
-import org.apache.iotdb.db.engine.trigger.sink.mqtt.MQTTEvent;
-import org.apache.iotdb.db.engine.trigger.sink.mqtt.MQTTHandler;
-import org.apache.iotdb.db.utils.windowing.configuration.SlidingSizeWindowConfiguration;
-import org.apache.iotdb.db.utils.windowing.handler.SlidingSizeWindowEvaluationHandler;
-import org.apache.iotdb.trigger.api.TriggerAttributes;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-
-import org.fusesource.mqtt.client.QoS;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class TriggerExample implements Trigger {
-
-  private static final Logger LOGGER = LoggerFactory.getLogger(TriggerExample.class);
-
-  private static final String TARGET_DEVICE = "root.alerting";
-
-  private final LocalIoTDBHandler localIoTDBHandler = new LocalIoTDBHandler();
-  private final MQTTHandler mqttHandler = new MQTTHandler();
-
-  // This field is required when the target MQTT server is current IoTDB.
-  // When IoTDB restarts, the registered triggers will be restored before starting the MQTT service.
-  // For this trigger, if openSinkHandlers() is called in onCreate(), IoTDB server will be stuck
-  // in openSinkHandlers when recovering, because it can't connect to the MQTT server (not started
-  // yet).
-  // See IOTDB-2274 for more detail.
-  private volatile boolean isSinksOpenedAfterCreation = false;
-
-  private SlidingSizeWindowEvaluationHandler windowEvaluationHandler;
-
-  @Override
-  public void onCreate(TriggerAttributes attributes) throws Exception {
-    LOGGER.info("onCreate(TriggerAttributes attributes)");
-
-    double lo = attributes.getDouble("lo");
-    double hi = attributes.getDouble("hi");
-
-    windowEvaluationHandler =
-        new SlidingSizeWindowEvaluationHandler(
-            new SlidingSizeWindowConfiguration(TSDataType.DOUBLE, 5, 5),
-            window -> {
-              double avg = 0;
-              for (int i = 0; i < window.size(); ++i) {
-                avg += window.getDouble(i);
-              }
-              avg /= window.size();
-
-              if (avg < lo || hi < avg) {
-                localIoTDBHandler.onEvent(new LocalIoTDBEvent(window.getTime(0), avg));
-                mqttHandler.onEvent(
-                    new MQTTEvent("test", QoS.EXACTLY_ONCE, false, window.getTime(0), avg));
-              }
-            });
-  }
-
-  @Override
-  public void onDrop() throws Exception {
-    LOGGER.info("onDrop()");
-    closeSinkHandlers();
-  }
-
-  @Override
-  public void onStart() throws Exception {
-    LOGGER.info("onStart()");
-    openSinkHandlers();
-  }
-
-  @Override
-  public void onStop() throws Exception {
-    LOGGER.info("onStop()");
-    closeSinkHandlers();
-  }
-
-  @Override
-  public Double fire(long timestamp, Double value, PartialPath path) throws Exception {
-    tryOpenSinksFirstOnFire();
-    windowEvaluationHandler.collect(timestamp, value);
-    return value;
-  }
-
-  @Override
-  public double[] fire(long[] timestamps, double[] values, PartialPath path) throws Exception {
-    tryOpenSinksFirstOnFire();
-    for (int i = 0; i < timestamps.length; ++i) {
-      windowEvaluationHandler.collect(timestamps[i], values[i]);
-    }
-    return values;
-  }
-
-  // See IOTDB-2274 for more detail.
-  private void tryOpenSinksFirstOnFire() throws Exception {
-    if (!isSinksOpenedAfterCreation) {
-      synchronized (this) {
-        if (!isSinksOpenedAfterCreation) {
-          openSinkHandlers();
-          isSinksOpenedAfterCreation = true;
-        }
-      }
-    }
-  }
-
-  private void openSinkHandlers() throws Exception {
-    localIoTDBHandler.open(
-        new LocalIoTDBConfiguration(
-            TARGET_DEVICE, new String[] {"local"}, new TSDataType[] {TSDataType.DOUBLE}));
-    mqttHandler.open(
-        new MQTTConfiguration(
-            "127.0.0.1",
-            1883,
-            "root",
-            "root",
-            new PartialPath(TARGET_DEVICE),
-            new String[] {"remote"}));
-  }
-
-  private void closeSinkHandlers() throws Exception {
-    localIoTDBHandler.close();
-    mqttHandler.close();
-  }
-}
diff --git a/integration-test/src/test/java/org/apache/iotdb/confignode/it/IoTDBClusterAuthorityIT.java b/integration-test/src/test/java/org/apache/iotdb/confignode/it/IoTDBClusterAuthorityIT.java
index db23693692..7a6dfc6b69 100644
--- a/integration-test/src/test/java/org/apache/iotdb/confignode/it/IoTDBClusterAuthorityIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/confignode/it/IoTDBClusterAuthorityIT.java
@@ -26,7 +26,7 @@ import org.apache.iotdb.confignode.rpc.thrift.IConfigNodeRPCService;
 import org.apache.iotdb.confignode.rpc.thrift.TAuthorizerReq;
 import org.apache.iotdb.confignode.rpc.thrift.TAuthorizerResp;
 import org.apache.iotdb.confignode.rpc.thrift.TCheckUserPrivilegesReq;
-import org.apache.iotdb.db.qp.logical.sys.AuthorOperator;
+import org.apache.iotdb.db.mpp.plan.statement.AuthorType;
 import org.apache.iotdb.it.env.EnvFactory;
 import org.apache.iotdb.it.framework.IoTDBTestRunner;
 import org.apache.iotdb.itbase.category.ClusterIT;
@@ -70,7 +70,7 @@ public class IoTDBClusterAuthorityIT {
     // clean user
     TAuthorizerReq authorizerReq =
         new TAuthorizerReq(
-            AuthorOperator.AuthorType.LIST_USER.ordinal(),
+            AuthorType.LIST_USER.ordinal(),
             "",
             "",
             "",
@@ -86,7 +86,7 @@ public class IoTDBClusterAuthorityIT {
       if (!user.equals("root")) {
         authorizerReq =
             new TAuthorizerReq(
-                AuthorOperator.AuthorType.DROP_USER.ordinal(),
+                AuthorType.DROP_USER.ordinal(),
                 user,
                 "",
                 "",
@@ -136,7 +136,7 @@ public class IoTDBClusterAuthorityIT {
       // create user
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.CREATE_USER.ordinal(),
+              AuthorType.CREATE_USER.ordinal(),
               "tempuser0",
               "",
               "passwd",
@@ -158,7 +158,7 @@ public class IoTDBClusterAuthorityIT {
       // drop user
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.DROP_USER.ordinal(),
+              AuthorType.DROP_USER.ordinal(),
               "tempuser1",
               "",
               "",
@@ -171,13 +171,7 @@ public class IoTDBClusterAuthorityIT {
       // list user
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.LIST_USER.ordinal(),
-              "",
-              "",
-              "",
-              "",
-              new HashSet<>(),
-              new ArrayList<>());
+              AuthorType.LIST_USER.ordinal(), "", "", "", "", new HashSet<>(), new ArrayList<>());
       authorizerResp = client.queryPermission(authorizerReq);
       status = authorizerResp.getStatus();
       assertEquals(TSStatusCode.SUCCESS_STATUS.getStatusCode(), status.getCode());
@@ -187,7 +181,7 @@ public class IoTDBClusterAuthorityIT {
       // create role
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.CREATE_ROLE.ordinal(),
+              AuthorType.CREATE_ROLE.ordinal(),
               "",
               "temprole0",
               "",
@@ -203,7 +197,7 @@ public class IoTDBClusterAuthorityIT {
       // drop role
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.DROP_ROLE.ordinal(),
+              AuthorType.DROP_ROLE.ordinal(),
               "",
               "temprole1",
               "",
@@ -216,13 +210,7 @@ public class IoTDBClusterAuthorityIT {
       // list role
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.LIST_ROLE.ordinal(),
-              "",
-              "",
-              "",
-              "",
-              new HashSet<>(),
-              new ArrayList<>());
+              AuthorType.LIST_ROLE.ordinal(), "", "", "", "", new HashSet<>(), new ArrayList<>());
       authorizerResp = client.queryPermission(authorizerReq);
       status = authorizerResp.getStatus();
       assertEquals(TSStatusCode.SUCCESS_STATUS.getStatusCode(), status.getCode());
@@ -232,7 +220,7 @@ public class IoTDBClusterAuthorityIT {
       // alter user
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.UPDATE_USER.ordinal(),
+              AuthorType.UPDATE_USER.ordinal(),
               "tempuser0",
               "",
               "",
@@ -247,7 +235,7 @@ public class IoTDBClusterAuthorityIT {
       nodeNameList.add("root.ln.**");
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.GRANT_USER.ordinal(),
+              AuthorType.GRANT_USER.ordinal(),
               "tempuser0",
               "",
               "",
@@ -266,7 +254,7 @@ public class IoTDBClusterAuthorityIT {
       // grant role
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.GRANT_ROLE.ordinal(),
+              AuthorType.GRANT_ROLE.ordinal(),
               "",
               "temprole0",
               "",
@@ -279,7 +267,7 @@ public class IoTDBClusterAuthorityIT {
       // grant role to user
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.GRANT_USER_ROLE.ordinal(),
+              AuthorType.GRANT_USER_ROLE.ordinal(),
               "tempuser0",
               "temprole0",
               "",
@@ -292,7 +280,7 @@ public class IoTDBClusterAuthorityIT {
       // revoke user
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.REVOKE_USER.ordinal(),
+              AuthorType.REVOKE_USER.ordinal(),
               "tempuser0",
               "",
               "",
@@ -305,7 +293,7 @@ public class IoTDBClusterAuthorityIT {
       // revoke role
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.REVOKE_ROLE.ordinal(),
+              AuthorType.REVOKE_ROLE.ordinal(),
               "",
               "temprole0",
               "",
@@ -318,7 +306,7 @@ public class IoTDBClusterAuthorityIT {
       // list privileges user on root.ln.**
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.LIST_USER_PRIVILEGE.ordinal(),
+              AuthorType.LIST_USER_PRIVILEGE.ordinal(),
               "tempuser0",
               "",
               "",
@@ -334,7 +322,7 @@ public class IoTDBClusterAuthorityIT {
       // list privileges user on root.**
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.LIST_USER_PRIVILEGE.ordinal(),
+              AuthorType.LIST_USER_PRIVILEGE.ordinal(),
               "tempuser0",
               "",
               "",
@@ -350,7 +338,7 @@ public class IoTDBClusterAuthorityIT {
       // list user privileges
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.LIST_USER_PRIVILEGE.ordinal(),
+              AuthorType.LIST_USER_PRIVILEGE.ordinal(),
               "tempuser0",
               "",
               "",
@@ -366,7 +354,7 @@ public class IoTDBClusterAuthorityIT {
       // list privileges role on root.ln.**
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.LIST_ROLE_PRIVILEGE.ordinal(),
+              AuthorType.LIST_ROLE_PRIVILEGE.ordinal(),
               "",
               "temprole0",
               "",
@@ -383,7 +371,7 @@ public class IoTDBClusterAuthorityIT {
       // list privileges role on root.**
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.LIST_ROLE_PRIVILEGE.ordinal(),
+              AuthorType.LIST_ROLE_PRIVILEGE.ordinal(),
               "",
               "temprole0",
               "",
@@ -399,7 +387,7 @@ public class IoTDBClusterAuthorityIT {
       // list role privileges
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.LIST_ROLE_PRIVILEGE.ordinal(),
+              AuthorType.LIST_ROLE_PRIVILEGE.ordinal(),
               "",
               "temprole0",
               "",
@@ -415,7 +403,7 @@ public class IoTDBClusterAuthorityIT {
       // list all role of user
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.LIST_ROLE.ordinal(),
+              AuthorType.LIST_ROLE.ordinal(),
               "tempuser0",
               "",
               "",
@@ -431,7 +419,7 @@ public class IoTDBClusterAuthorityIT {
       // list all user of role
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.LIST_USER.ordinal(),
+              AuthorType.LIST_USER.ordinal(),
               "",
               "temprole0",
               "",
@@ -448,7 +436,7 @@ public class IoTDBClusterAuthorityIT {
       // revoke role from user
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.REVOKE_USER_ROLE.ordinal(),
+              AuthorType.REVOKE_USER_ROLE.ordinal(),
               "tempuser0",
               "temprole0",
               "",
@@ -461,7 +449,7 @@ public class IoTDBClusterAuthorityIT {
       // list root privileges
       authorizerReq =
           new TAuthorizerReq(
-              AuthorOperator.AuthorType.LIST_USER_PRIVILEGE.ordinal(),
+              AuthorType.LIST_USER_PRIVILEGE.ordinal(),
               "root",
               "",
               "",
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBAuthorizationIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBAuthorizationIT.java
deleted file mode 100644
index ba305fd321..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBAuthorizationIT.java
+++ /dev/null
@@ -1,1127 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.integration;
-
-import org.apache.iotdb.commons.auth.entity.PrivilegeType;
-import org.apache.iotdb.db.auth.AuthorityChecker;
-import org.apache.iotdb.db.mpp.common.header.ColumnHeaderConstant;
-import org.apache.iotdb.db.qp.logical.Operator;
-import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-import org.apache.iotdb.jdbc.Config;
-import org.apache.iotdb.rpc.TSStatusCode;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.sql.BatchUpdateException;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-/**
- * Notice that, all test begins with "IoTDB" is integration test. All test which will start the
- * IoTDB server should be defined as integration test.
- */
-@Category({LocalStandaloneTest.class})
-public class IoTDBAuthorizationIT {
-
-  @Before
-  public void setUp() {
-    EnvironmentUtils.envSetUp();
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    EnvironmentUtils.cleanEnv();
-  }
-
-  @Test
-  public void allPrivilegesTest() throws ClassNotFoundException, SQLException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection adminCon =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement adminStmt = adminCon.createStatement()) {
-      adminStmt.execute("CREATE USER tempuser 'temppw'");
-
-      try (Connection userCon =
-              DriverManager.getConnection(
-                  Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "tempuser", "temppw");
-          Statement userStmt = userCon.createStatement()) {
-
-        Assert.assertThrows(SQLException.class, () -> userStmt.execute("CREATE DATABASE root.a"));
-        Assert.assertThrows(
-            SQLException.class,
-            () ->
-                userStmt.execute("CREATE TIMESERIES root.a.b WITH DATATYPE=INT32,ENCODING=PLAIN"));
-        Assert.assertThrows(
-            SQLException.class,
-            () -> userStmt.execute("INSERT INTO root.a(timestamp, b) VALUES (100, 100)"));
-        Assert.assertThrows(
-            SQLException.class,
-            () -> userStmt.execute("GRANT USER tempuser PRIVILEGES CREATE_TIMESERIES ON root.a"));
-
-        adminStmt.execute("GRANT USER tempuser PRIVILEGES ALL on root.**");
-
-        userStmt.execute("CREATE DATABASE root.a");
-        userStmt.execute("CREATE TIMESERIES root.a.b WITH DATATYPE=INT32,ENCODING=PLAIN");
-        userStmt.execute("INSERT INTO root.a(timestamp, b) VALUES (100, 100)");
-        userStmt.execute("SELECT * from root.a");
-        userStmt.execute("GRANT USER tempuser PRIVILEGES CREATE_DATABASE ON root.a");
-        userStmt.execute("GRANT USER tempuser PRIVILEGES CREATE_TIMESERIES ON root.b.b");
-
-        adminStmt.execute("REVOKE USER tempuser PRIVILEGES ALL on root.**");
-        adminStmt.execute("REVOKE USER tempuser PRIVILEGES CREATE_TIMESERIES ON root.b.b");
-
-        Assert.assertThrows(SQLException.class, () -> userStmt.execute("CREATE DATABASE root.b"));
-        Assert.assertThrows(
-            SQLException.class,
-            () ->
-                userStmt.execute("CREATE TIMESERIES root.b.b WITH DATATYPE=INT32,ENCODING=PLAIN"));
-        Assert.assertThrows(
-            SQLException.class,
-            () -> userStmt.execute("INSERT INTO root.b(timestamp, b) VALUES (100, 100)"));
-        Assert.assertThrows(SQLException.class, () -> userStmt.execute("SELECT * from root.a"));
-        Assert.assertThrows(
-            SQLException.class,
-            () -> userStmt.execute("GRANT USER tempuser PRIVILEGES CREATE_TIMESERIES ON root.a"));
-      }
-    }
-  }
-
-  @Test
-  public void testSetDeleteSG() throws ClassNotFoundException, SQLException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection adminCon =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement adminStmt = adminCon.createStatement()) {
-      adminStmt.execute("CREATE USER sgtest 'sgtest'");
-
-      try (Connection userCon =
-              DriverManager.getConnection(
-                  Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "sgtest", "sgtest");
-          Statement userStmt = userCon.createStatement()) {
-
-        Assert.assertThrows(
-            SQLException.class, () -> userStmt.execute("CREATE DATABASE root.sgtest"));
-
-        adminStmt.execute("GRANT USER sgtest PRIVILEGES SET_STORAGE_GROUP ON root.sgtest");
-
-        try {
-          userStmt.execute("CREATE DATABASE root.sgtest");
-        } catch (SQLException e) {
-          fail(e.getMessage());
-        }
-
-        Assert.assertThrows(
-            SQLException.class, () -> userStmt.execute("DELETE DATABASE root.sgtest"));
-
-        adminStmt.execute("GRANT USER sgtest PRIVILEGES DELETE_STORAGE_GROUP ON root.sgtest");
-
-        try {
-          userStmt.execute("DELETE DATABASE root.sgtest");
-        } catch (SQLException e) {
-          fail(e.getMessage());
-        }
-      }
-    }
-  }
-
-  @Test
-  public void testTriggerPrivileges() throws ClassNotFoundException, SQLException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection adminCon =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement adminStmt = adminCon.createStatement()) {
-      adminStmt.execute("CREATE USER trigger_user 'trigger_user'");
-      setUpForTriggerRelatedPrivilegesTests(adminStmt);
-      try (Connection userCon =
-              DriverManager.getConnection(
-                  Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "trigger_user", "trigger_user");
-          Statement userStmt = userCon.createStatement()) {
-        executeTriggerRelatedPrivilegesTests(adminStmt, userStmt);
-      }
-    }
-  }
-
-  private static void setUpForTriggerRelatedPrivilegesTests(Statement adminStmt)
-      throws SQLException {
-    adminStmt.execute(
-        "create timeseries root.ln.wf01.wt01.temperature with datatype=FLOAT,encoding=RLE");
-    adminStmt.execute(
-        "create timeseries root.ln.wf02.wt02.hardware with datatype=TEXT,encoding=PLAIN");
-    adminStmt.execute(
-        "create timeseries root.ln.wf03.wt03.software with datatype=DOUBLE,encoding=PLAIN");
-    adminStmt.execute(
-        "create trigger `started-trigger` before insert on root.ln.wf01.wt01.temperature as 'org.apache.iotdb.db.engine.trigger.example.Accumulator'");
-    adminStmt.execute(
-        "create trigger `stopped-trigger` after insert on root.ln.wf02.wt02.hardware as 'org.apache.iotdb.db.engine.trigger.example.Counter'");
-    adminStmt.execute("stop trigger `stopped-trigger`");
-  }
-
-  private static void executeTriggerRelatedPrivilegesTests(
-      Statement adminStmt, Statement userStmt) {
-    String[] userStatements = {
-      "create trigger magic before insert on root.ln.wf03.wt03.software as 'org.apache.iotdb.db.engine.trigger.example.Accumulator'",
-      "stop trigger `started-trigger`",
-      "drop trigger `started-trigger`",
-      "start trigger `stopped-trigger`",
-    };
-    for (String statement : userStatements) {
-      try {
-        userStmt.execute(statement);
-      } catch (SQLException e) {
-        assertTrue(e.getMessage().contains(TSStatusCode.NO_PERMISSION.getStatusCode() + ""));
-        continue;
-      }
-      fail();
-    }
-
-    String[] adminStatements =
-        new String[] {
-          "GRANT USER trigger_user PRIVILEGES CREATE_TRIGGER on root.magic.magic",
-          "GRANT USER trigger_user PRIVILEGES DROP_TRIGGER on root.magic.magic",
-          "GRANT USER trigger_user PRIVILEGES START_TRIGGER on root.magic.magic",
-          "GRANT USER trigger_user PRIVILEGES STOP_TRIGGER on root.magic.magic",
-        };
-    for (String statement : adminStatements) {
-      try {
-        adminStmt.execute(statement);
-      } catch (SQLException e) {
-        e.printStackTrace();
-        fail(e.getMessage());
-      }
-    }
-
-    for (String statement : userStatements) {
-      try {
-        userStmt.execute(statement);
-      } catch (SQLException e) {
-        assertTrue(e.getMessage().contains(TSStatusCode.NO_PERMISSION.getStatusCode() + ""));
-        continue;
-      }
-      fail();
-    }
-
-    adminStatements =
-        new String[] {
-          "GRANT USER trigger_user PRIVILEGES CREATE_TRIGGER on root.ln.wf03.wt03.software",
-          "GRANT USER trigger_user PRIVILEGES DROP_TRIGGER on root.ln.wf01.wt01.temperature",
-          "GRANT USER trigger_user PRIVILEGES START_TRIGGER on root.ln.wf02.wt02.hardware",
-          "GRANT USER trigger_user PRIVILEGES STOP_TRIGGER on root.ln.wf01.wt01.temperature",
-        };
-    for (String statement : adminStatements) {
-      try {
-        adminStmt.execute(statement);
-      } catch (SQLException e) {
-        e.printStackTrace();
-        fail(e.getMessage());
-      }
-    }
-
-    for (String statement : userStatements) {
-      try {
-        userStmt.execute(statement);
-      } catch (SQLException e) {
-        e.printStackTrace();
-        fail(e.getMessage());
-      }
-    }
-
-    userStatements =
-        new String[] {
-          "stop trigger `not-existed-trigger`",
-          "drop trigger `not-existed-trigger`",
-          "start trigger `not-existed-trigger`",
-        };
-    for (String statement : userStatements) {
-      try {
-        userStmt.execute(statement);
-      } catch (SQLException e) {
-        assertTrue(e.getMessage().contains("313"));
-        continue;
-      }
-      fail();
-    }
-  }
-
-  @Test
-  public void illegalPasswordTest() throws ClassNotFoundException, SQLException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection adminCon =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement adminStmt = adminCon.createStatement()) {
-      Assert.assertThrows(
-          SQLException.class, () -> adminStmt.execute("CREATE USER tempuser 'temppw '"));
-    }
-
-    try (Connection adminCon =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement adminStmt = adminCon.createStatement()) {
-      Assert.assertThrows(SQLException.class, () -> adminStmt.execute("CREATE USER tempuser 'te'"));
-    }
-  }
-
-  @Test
-  public void updatePasswordTest() throws ClassNotFoundException, SQLException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection adminCon =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement adminStmt = adminCon.createStatement()) {
-      adminStmt.execute("CREATE USER tempuser 'temppw'");
-      Connection userCon =
-          DriverManager.getConnection(
-              Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "tempuser", "temppw");
-      userCon.close();
-
-      adminStmt.execute("ALTER USER tempuser SET PASSWORD 'newpw'");
-
-      boolean caught = false;
-      try {
-        userCon =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "tempuser", "temppw");
-      } catch (SQLException e) {
-        caught = true;
-      } finally {
-        userCon.close();
-      }
-      assertTrue(caught);
-
-      userCon =
-          DriverManager.getConnection(
-              Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "tempuser", "newpw");
-
-      userCon.close();
-    }
-  }
-
-  @Test
-  public void illegalGrantRevokeUserTest() throws ClassNotFoundException, SQLException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection adminCon =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement adminStmt = adminCon.createStatement()) {
-      adminStmt.execute("CREATE USER tempuser 'temppw'");
-
-      try (Connection userCon =
-              DriverManager.getConnection(
-                  Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "tempuser", "temppw");
-          Statement userStmt = userCon.createStatement()) {
-
-        // grant a non-existing user
-        Assert.assertThrows(
-            SQLException.class,
-            () -> adminStmt.execute("GRANT USER nulluser PRIVILEGES CREATE_DATABASE on root.a"));
-        // grant a non-existing privilege
-        Assert.assertThrows(
-            SQLException.class,
-            () -> adminStmt.execute("GRANT USER tempuser PRIVILEGES NOT_A_PRIVILEGE on root.a"));
-        // duplicate grant
-        adminStmt.execute("GRANT USER tempuser PRIVILEGES CREATE_USER on root.**");
-        Assert.assertThrows(
-            SQLException.class,
-            () -> adminStmt.execute("GRANT USER tempuser PRIVILEGES CREATE_USER on root.**"));
-        // grant on a illegal seriesPath
-        Assert.assertThrows(
-            SQLException.class,
-            () -> adminStmt.execute("GRANT USER tempuser PRIVILEGES DELETE_TIMESERIES on a.b"));
-        // grant admin
-        Assert.assertThrows(
-            SQLException.class,
-            () -> adminStmt.execute("GRANT USER root PRIVILEGES DELETE_TIMESERIES on root.a.b"));
-        // no privilege to grant
-        Assert.assertThrows(
-            SQLException.class,
-            () -> userStmt.execute("GRANT USER tempuser PRIVILEGES DELETE_TIMESERIES on root.a.b"));
-        // revoke a non-existing privilege
-        adminStmt.execute("REVOKE USER tempuser PRIVILEGES CREATE_USER on root.**");
-        Assert.assertThrows(
-            SQLException.class,
-            () -> adminStmt.execute("REVOKE USER tempuser PRIVILEGES CREATE_USER on root.**"));
-        // revoke a non-existing user
-        Assert.assertThrows(
-            SQLException.class,
-            () -> adminStmt.execute("REVOKE USER tempuser1 PRIVILEGES CREATE_USER on root.**"));
-        // revoke on a illegal seriesPath
-        Assert.assertThrows(
-            SQLException.class,
-            () -> adminStmt.execute("REVOKE USER tempuser PRIVILEGES DELETE_TIMESERIES on a.b"));
-        // revoke admin
-        Assert.assertThrows(
-            SQLException.class,
-            () -> adminStmt.execute("REVOKE USER root PRIVILEGES DELETE_TIMESERIES on root.a.b"));
-        // no privilege to revoke
-        Assert.assertThrows(
-            SQLException.class,
-            () ->
-                userStmt.execute("REVOKE USER tempuser PRIVILEGES DELETE_TIMESERIES on root.a.b"));
-        // grant privilege to grant
-        Assert.assertThrows(
-            SQLException.class,
-            () -> userStmt.execute("GRANT USER tempuser PRIVILEGES DELETE_TIMESERIES on root.a.b"));
-
-        adminStmt.execute("GRANT USER tempuser PRIVILEGES GRANT_USER_PRIVILEGE on root.**");
-        userStmt.execute("GRANT USER tempuser PRIVILEGES DELETE_TIMESERIES on root.**");
-
-        // grant privilege to revoke
-        Assert.assertThrows(
-            SQLException.class,
-            () -> userStmt.execute("REVOKE USER tempuser PRIVILEGES DELETE_TIMESERIES on root.**"));
-
-        adminStmt.execute("GRANT USER tempuser PRIVILEGES REVOKE_USER_PRIVILEGE on root.**");
-        userStmt.execute("REVOKE USER tempuser PRIVILEGES DELETE_TIMESERIES on root.**");
-      }
-    }
-  }
-
-  @Test
-  public void createDeleteTimeSeriesTest() throws SQLException, ClassNotFoundException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection adminCon =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement adminStmt = adminCon.createStatement()) {
-
-      adminStmt.execute("CREATE USER tempuser 'temppw'");
-
-      try (Connection userCon =
-              DriverManager.getConnection(
-                  Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "tempuser", "temppw");
-          Statement userStmt = userCon.createStatement()) {
-
-        // grant and revoke the user the privilege to create time series
-        Assert.assertThrows(SQLException.class, () -> userStmt.execute("CREATE DATABASE root.a"));
-
-        adminStmt.execute("GRANT USER tempuser PRIVILEGES CREATE_DATABASE ON root.a");
-        userStmt.execute("CREATE DATABASE root.a");
-        adminStmt.execute("GRANT USER tempuser PRIVILEGES CREATE_TIMESERIES ON root.a.b");
-        userStmt.execute("CREATE TIMESERIES root.a.b WITH DATATYPE=INT32,ENCODING=PLAIN");
-        // no privilege to create this one
-        Assert.assertThrows(SQLException.class, () -> userStmt.execute("CREATE DATABASE root.b"));
-        // privilege already exists
-        Assert.assertThrows(
-            SQLException.class,
-            () -> adminStmt.execute("GRANT USER tempuser PRIVILEGES CREATE_DATABASE ON root.a"));
-        // no privilege to create this one any more
-        Assert.assertThrows(SQLException.class, () -> userStmt.execute("CREATE DATABASE root.a"));
-        // no privilege to create timeseries
-        Assert.assertThrows(SQLException.class, () -> userStmt.execute("CREATE DATABASE root.a"));
-
-        adminStmt.execute("REVOKE USER tempuser PRIVILEGES CREATE_DATABASE ON root.a");
-        // no privilege to create this one any more
-        Assert.assertThrows(
-            SQLException.class,
-            () ->
-                userStmt.execute("CREATE TIMESERIES root.b.a WITH DATATYPE=INT32,ENCODING=PLAIN"));
-        // privilege already exists
-        Assert.assertThrows(
-            SQLException.class,
-            () ->
-                adminStmt.execute("GRANT USER tempuser PRIVILEGES CREATE_TIMESERIES ON root.a.b"));
-
-        adminStmt.execute("REVOKE USER tempuser PRIVILEGES CREATE_TIMESERIES ON root.a.b");
-        // no privilege to create this one any more
-        Assert.assertThrows(
-            SQLException.class,
-            () ->
-                userStmt.execute("CREATE TIMESERIES root.a.b WITH DATATYPE=INT32,ENCODING=PLAIN"));
-        // the user cannot delete the timeseries now, no privilege to delete this one any more
-        Assert.assertThrows(
-            SQLException.class, () -> userStmt.execute("DELETE TIMESERIES root.a.b"));
-
-        // the user can delete the timeseries now
-        adminStmt.execute("GRANT USER tempuser PRIVILEGES DELETE_TIMESERIES on root.a.**");
-        adminStmt.execute("GRANT USER tempuser PRIVILEGES DELETE_TIMESERIES on root.b.**");
-        userStmt.execute("DELETE TIMESERIES root.a.b");
-
-        // revoke the privilege to delete time series
-        adminStmt.execute("CREATE TIMESERIES root.a.b WITH DATATYPE=INT32,ENCODING=PLAIN");
-        adminStmt.execute("CREATE DATABASE root.b");
-        adminStmt.execute("CREATE TIMESERIES root.b.a WITH DATATYPE=INT32,ENCODING=PLAIN");
-        adminStmt.execute("REVOKE USER tempuser PRIVILEGES DELETE_TIMESERIES on root.a.**");
-        userStmt.execute("DELETE TIMESERIES root.b.a");
-        // no privilege to create this one any more
-        Assert.assertThrows(
-            SQLException.class, () -> userStmt.execute("DELETE TIMESERIES root.a.b"));
-      }
-    }
-  }
-
-  @Test
-  public void insertQueryTest() throws ClassNotFoundException, SQLException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection adminCon =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement adminStmt = adminCon.createStatement()) {
-      adminStmt.execute("CREATE USER tempuser 'temppw'");
-
-      try (Connection userCon =
-              DriverManager.getConnection(
-                  Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "tempuser", "temppw");
-          Statement userStmt = userCon.createStatement()) {
-
-        adminStmt.execute("GRANT USER tempuser PRIVILEGES CREATE_DATABASE ON root.a");
-        userStmt.execute("CREATE DATABASE root.a");
-        adminStmt.execute("GRANT USER tempuser PRIVILEGES CREATE_TIMESERIES ON root.a.b");
-        userStmt.execute("CREATE TIMESERIES root.a.b WITH DATATYPE=INT32,ENCODING=PLAIN");
-
-        // grant privilege to insert
-        Assert.assertThrows(
-            SQLException.class,
-            () -> userStmt.execute("INSERT INTO root.a(timestamp, b) VALUES (1,100)"));
-
-        adminStmt.execute("GRANT USER tempuser PRIVILEGES INSERT_TIMESERIES on root.a.**");
-        userStmt.execute("INSERT INTO root.a(timestamp, b) VALUES (1,100)");
-
-        // revoke privilege to insert
-        adminStmt.execute("REVOKE USER tempuser PRIVILEGES INSERT_TIMESERIES on root.a.**");
-        Assert.assertThrows(
-            SQLException.class,
-            () -> userStmt.execute("INSERT INTO root.a(timestamp, b) VALUES (1,100)"));
-        // grant privilege to query
-        Assert.assertThrows(SQLException.class, () -> userStmt.execute("SELECT * from root.a"));
-
-        adminStmt.execute("GRANT USER tempuser PRIVILEGES READ_TIMESERIES on root.a.**");
-        userStmt.execute("SELECT * from root.a");
-        userStmt.getResultSet().close();
-        userStmt.execute("SELECT LAST b from root.a");
-        userStmt.getResultSet().close();
-
-        // revoke privilege to query
-        adminStmt.execute("REVOKE USER tempuser PRIVILEGES READ_TIMESERIES on root.a.**");
-        Assert.assertThrows(SQLException.class, () -> userStmt.execute("SELECT * from root.a"));
-      }
-    }
-  }
-
-  @Test
-  public void rolePrivilegeTest() throws SQLException, ClassNotFoundException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection adminCon =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement adminStmt = adminCon.createStatement()) {
-
-      adminStmt.execute("CREATE USER tempuser 'temppw'");
-      try (Connection userCon =
-              DriverManager.getConnection(
-                  Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "tempuser", "temppw");
-          Statement userStmt = userCon.createStatement()) {
-
-        Assert.assertThrows(SQLException.class, () -> userStmt.execute("CREATE ROLE admin"));
-
-        adminStmt.execute("CREATE ROLE admin");
-        adminStmt.execute(
-            "GRANT ROLE admin PRIVILEGES CREATE_DATABASE,CREATE_TIMESERIES,DELETE_TIMESERIES,READ_TIMESERIES,INSERT_TIMESERIES on root.**");
-        adminStmt.execute("GRANT admin TO tempuser");
-
-        userStmt.execute("CREATE DATABASE root.a");
-        userStmt.execute("CREATE TIMESERIES root.a.b WITH DATATYPE=INT32,ENCODING=PLAIN");
-        userStmt.execute("CREATE TIMESERIES root.a.c WITH DATATYPE=INT32,ENCODING=PLAIN");
-        userStmt.execute("INSERT INTO root.a(timestamp,b,c) VALUES (1,100,1000)");
-        // userStmt.execute("DELETE FROM root.a.b WHERE TIME <= 1000000000");
-        userStmt.execute("SELECT * FROM root.**");
-        userStmt.getResultSet().close();
-
-        adminStmt.execute("REVOKE ROLE admin PRIVILEGES DELETE_TIMESERIES on root.**");
-
-        Assert.assertThrows(
-            SQLException.class,
-            () -> userStmt.execute("DELETE FROM root.* WHERE TIME <= 1000000000"));
-
-        adminStmt.execute("GRANT USER tempuser PRIVILEGES READ_TIMESERIES on root.**");
-        adminStmt.execute("REVOKE admin FROM tempuser");
-        userStmt.execute("SELECT * FROM root.**");
-        userStmt.getResultSet().close();
-
-        Assert.assertThrows(
-            SQLException.class,
-            () ->
-                userStmt.execute("CREATE TIMESERIES root.a.b WITH DATATYPE=INT32,ENCODING=PLAIN"));
-      }
-    }
-  }
-
-  @Test
-  @Ignore
-  public void authPerformanceTest() throws ClassNotFoundException, SQLException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection adminCon =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement adminStmt = adminCon.createStatement()) {
-
-      adminStmt.execute("CREATE USER tempuser 'temppw'");
-      adminStmt.execute("CREATE DATABASE root.a");
-      int privilegeCnt = 500;
-      for (int i = 0; i < privilegeCnt; i++) {
-        adminStmt.execute("CREATE TIMESERIES root.a.b" + i + " WITH DATATYPE=INT32,ENCODING=PLAIN");
-        adminStmt.execute("GRANT USER tempuser PRIVILEGES INSERT_TIMESERIES ON root.a.b" + i);
-      }
-      try (Connection userCon =
-              DriverManager.getConnection(
-                  Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "tempuser", "temppw");
-          Statement userStmt = userCon.createStatement()) {
-
-        int insertCnt = 20000;
-        int batchSize = 500;
-
-        long time = System.currentTimeMillis();
-        for (int i = 0; i < insertCnt; ) {
-          for (int j = 0; j < batchSize; j++) {
-            userStmt.addBatch(
-                "INSERT INTO root.a(timestamp, b"
-                    + (privilegeCnt - 1)
-                    + ") VALUES ("
-                    + (i++ + 1)
-                    + ", 100)");
-          }
-          userStmt.executeBatch();
-          userStmt.clearBatch();
-        }
-
-        time = System.currentTimeMillis();
-        for (int i = 0; i < insertCnt; ) {
-          for (int j = 0; j < batchSize; j++) {
-            adminStmt.addBatch(
-                "INSERT INTO root.a(timestamp, b0) VALUES (" + (i++ + 1 + insertCnt) + ", 100)");
-          }
-          adminStmt.executeBatch();
-          adminStmt.clearBatch();
-        }
-      }
-    }
-  }
-
-  @Test
-  public void testListUser() throws ClassNotFoundException, SQLException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    Connection adminCon =
-        DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-    Statement adminStmt = adminCon.createStatement();
-
-    try {
-      ResultSet resultSet = adminStmt.executeQuery("LIST USER");
-      String ans = String.format("root,\n");
-      try {
-        validateResultSet(resultSet, ans);
-
-        for (int i = 0; i < 10; i++) {
-          adminStmt.execute("CREATE USER user" + i + " 'password" + i + "'");
-        }
-        resultSet = adminStmt.executeQuery("LIST USER");
-        ans =
-            "root,\n"
-                + "user0,\n"
-                + "user1,\n"
-                + "user2,\n"
-                + "user3,\n"
-                + "user4,\n"
-                + "user5,\n"
-                + "user6,\n"
-                + "user7,\n"
-                + "user8,\n"
-                + "user9,\n";
-        validateResultSet(resultSet, ans);
-
-        for (int i = 0; i < 10; i++) {
-          if (i % 2 == 0) {
-            adminStmt.execute("DROP USER user" + i);
-          }
-        }
-        resultSet = adminStmt.executeQuery("LIST USER");
-        ans = "root,\n" + "user1,\n" + "user3,\n" + "user5,\n" + "user7,\n" + "user9,\n";
-        validateResultSet(resultSet, ans);
-      } finally {
-        resultSet.close();
-      }
-    } finally {
-      adminCon.close();
-    }
-  }
-
-  @Test
-  public void testListRole() throws ClassNotFoundException, SQLException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    Connection adminCon =
-        DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-    Statement adminStmt = adminCon.createStatement();
-
-    try {
-      ResultSet resultSet = adminStmt.executeQuery("LIST ROLE");
-      String ans = "";
-      try {
-        validateResultSet(resultSet, ans);
-
-        for (int i = 0; i < 10; i++) {
-          adminStmt.execute("CREATE ROLE role" + i);
-        }
-
-        resultSet = adminStmt.executeQuery("LIST ROLE");
-        ans =
-            "role0,\n"
-                + "role1,\n"
-                + "role2,\n"
-                + "role3,\n"
-                + "role4,\n"
-                + "role5,\n"
-                + "role6,\n"
-                + "role7,\n"
-                + "role8,\n"
-                + "role9,\n";
-        validateResultSet(resultSet, ans);
-
-        for (int i = 0; i < 10; i++) {
-          if (i % 2 == 0) {
-            adminStmt.execute("DROP ROLE role" + i);
-          }
-        }
-        resultSet = adminStmt.executeQuery("LIST ROLE");
-        ans = "role1,\n" + "role3,\n" + "role5,\n" + "role7,\n" + "role9,\n";
-        validateResultSet(resultSet, ans);
-      } finally {
-        resultSet.close();
-      }
-    } finally {
-      adminStmt.close();
-      adminCon.close();
-    }
-  }
-
-  @Test
-  public void testListUserPrivileges() throws SQLException, ClassNotFoundException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    Connection adminCon =
-        DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-    Statement adminStmt = adminCon.createStatement();
-
-    try {
-      adminStmt.execute("CREATE USER user1 'password1'");
-      adminStmt.execute("GRANT USER user1 PRIVILEGES READ_TIMESERIES ON root.a.b");
-      adminStmt.execute("CREATE ROLE role1");
-      adminStmt.execute(
-          "GRANT ROLE role1 PRIVILEGES READ_TIMESERIES,INSERT_TIMESERIES,DELETE_TIMESERIES ON root.a.b.c");
-      adminStmt.execute(
-          "GRANT ROLE role1 PRIVILEGES READ_TIMESERIES,INSERT_TIMESERIES,DELETE_TIMESERIES ON root.d.b.c");
-      adminStmt.execute("GRANT role1 TO user1");
-
-      ResultSet resultSet = adminStmt.executeQuery("LIST PRIVILEGES USER user1");
-      String ans =
-          ",root.a.b : READ_TIMESERIES"
-              + ",\n"
-              + "role1,root.a.b.c : INSERT_TIMESERIES READ_TIMESERIES DELETE_TIMESERIES"
-              + ",\n"
-              + "role1,root.d.b.c : INSERT_TIMESERIES READ_TIMESERIES DELETE_TIMESERIES"
-              + ",\n";
-      try {
-        validateResultSet(resultSet, ans);
-
-        resultSet = adminStmt.executeQuery("LIST PRIVILEGES USER user1 ON root.a.b.c");
-        ans = "role1,root.a.b.c : INSERT_TIMESERIES READ_TIMESERIES DELETE_TIMESERIES,\n";
-        validateResultSet(resultSet, ans);
-
-        adminStmt.execute("REVOKE role1 from user1");
-
-        resultSet = adminStmt.executeQuery("LIST PRIVILEGES USER user1");
-        ans = ",root.a.b : READ_TIMESERIES,\n";
-        validateResultSet(resultSet, ans);
-
-        resultSet = adminStmt.executeQuery("LIST PRIVILEGES USER user1 ON root.a.b.c");
-        ans = "";
-        validateResultSet(resultSet, ans);
-      } finally {
-        resultSet.close();
-      }
-    } finally {
-      adminStmt.close();
-      adminCon.close();
-    }
-  }
-
-  @Test
-  public void testListRolePrivileges() throws ClassNotFoundException, SQLException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    Connection adminCon =
-        DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-    Statement adminStmt = adminCon.createStatement();
-
-    try {
-      adminStmt.execute("CREATE ROLE role1");
-      ResultSet resultSet = adminStmt.executeQuery("LIST PRIVILEGES ROLE role1");
-      String ans = "";
-      try {
-        // not granted list role privilege, should return empty
-        validateResultSet(resultSet, ans);
-
-        adminStmt.execute(
-            "GRANT ROLE role1 PRIVILEGES READ_TIMESERIES,INSERT_TIMESERIES,DELETE_TIMESERIES ON root.a.b.c");
-        adminStmt.execute(
-            "GRANT ROLE role1 PRIVILEGES READ_TIMESERIES,INSERT_TIMESERIES,DELETE_TIMESERIES ON root.d.b.c");
-        resultSet = adminStmt.executeQuery("LIST PRIVILEGES ROLE role1");
-        ans =
-            "root.a.b.c : INSERT_TIMESERIES READ_TIMESERIES DELETE_TIMESERIES,\n"
-                + "root.d.b.c : INSERT_TIMESERIES READ_TIMESERIES DELETE_TIMESERIES,\n";
-        validateResultSet(resultSet, ans);
-
-        resultSet = adminStmt.executeQuery("LIST PRIVILEGES ROLE role1 ON root.a.b.c");
-        ans = "root.a.b.c : INSERT_TIMESERIES READ_TIMESERIES DELETE_TIMESERIES,\n";
-        validateResultSet(resultSet, ans);
-
-        adminStmt.execute(
-            "REVOKE ROLE role1 PRIVILEGES INSERT_TIMESERIES,DELETE_TIMESERIES ON root.a.b.c");
-
-        resultSet = adminStmt.executeQuery("LIST PRIVILEGES ROLE role1");
-        ans =
-            "root.a.b.c : READ_TIMESERIES,\n"
-                + "root.d.b.c : INSERT_TIMESERIES READ_TIMESERIES DELETE_TIMESERIES,\n";
-        validateResultSet(resultSet, ans);
-
-        resultSet = adminStmt.executeQuery("LIST PRIVILEGES ROLE role1 ON root.a.b.c");
-        ans = "root.a.b.c : READ_TIMESERIES,\n";
-        validateResultSet(resultSet, ans);
-      } finally {
-        resultSet.close();
-      }
-    } finally {
-      adminStmt.close();
-      adminCon.close();
-    }
-  }
-
-  @Test
-  public void testListUserRoles() throws SQLException, ClassNotFoundException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    Connection adminCon =
-        DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-    Statement adminStmt = adminCon.createStatement();
-
-    try {
-      adminStmt.execute("CREATE USER chenduxiu 'orange'");
-
-      adminStmt.execute("CREATE ROLE xijing");
-      adminStmt.execute("CREATE ROLE dalao");
-      adminStmt.execute("CREATE ROLE shenshi");
-      adminStmt.execute("CREATE ROLE zhazha");
-      adminStmt.execute("CREATE ROLE hakase");
-
-      adminStmt.execute("GRANT xijing TO chenduxiu");
-      adminStmt.execute("GRANT dalao TO chenduxiu");
-      adminStmt.execute("GRANT shenshi TO chenduxiu");
-      adminStmt.execute("GRANT zhazha TO chenduxiu");
-      adminStmt.execute("GRANT hakase TO chenduxiu");
-
-      ResultSet resultSet = adminStmt.executeQuery("LIST ROLE OF USER chenduxiu");
-      String ans = "xijing,\n" + "dalao,\n" + "shenshi,\n" + "zhazha,\n" + "hakase,\n";
-      try {
-        validateResultSet(resultSet, ans);
-
-        adminStmt.execute("REVOKE dalao FROM chenduxiu");
-        adminStmt.execute("REVOKE hakase FROM chenduxiu");
-
-        resultSet = adminStmt.executeQuery("LIST ROLE OF USER chenduxiu");
-        ans = "xijing,\n" + "shenshi,\n" + "zhazha,\n";
-        validateResultSet(resultSet, ans);
-      } finally {
-        resultSet.close();
-      }
-    } finally {
-      adminStmt.close();
-      adminCon.close();
-    }
-  }
-
-  @Test
-  public void testListRoleUsers() throws SQLException, ClassNotFoundException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    Connection adminCon =
-        DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-    Statement adminStmt = adminCon.createStatement();
-
-    try {
-      adminStmt.execute("CREATE ROLE dalao");
-      adminStmt.execute("CREATE ROLE zhazha");
-
-      String[] members = {
-        "HighFly",
-        "SunComparison",
-        "Persistence",
-        "GoodWoods",
-        "HealthHonor",
-        "GoldLuck",
-        "DoubleLight",
-        "Eastwards",
-        "ScentEffusion",
-        "Smart",
-        "East",
-        "DailySecurity",
-        "Moon",
-        "RayBud",
-        "RiverSky"
-      };
-
-      for (int i = 0; i < members.length - 1; i++) {
-        adminStmt.execute("CREATE USER " + members[i] + " '666666'");
-        adminStmt.execute("GRANT dalao TO  " + members[i]);
-      }
-      adminStmt.execute("CREATE USER RiverSky '2333333'");
-      adminStmt.execute("GRANT zhazha TO RiverSky");
-
-      ResultSet resultSet = adminStmt.executeQuery("LIST USER OF ROLE dalao");
-      String ans =
-          "DailySecurity,\n"
-              + "DoubleLight,\n"
-              + "East,\n"
-              + "Eastwards,\n"
-              + "GoldLuck,\n"
-              + "GoodWoods,\n"
-              + "HealthHonor,\n"
-              + "HighFly,\n"
-              + "Moon,\n"
-              + "Persistence,\n"
-              + "RayBud,\n"
-              + "ScentEffusion,\n"
-              + "Smart,\n"
-              + "SunComparison,\n";
-      try {
-        validateResultSet(resultSet, ans);
-
-        resultSet = adminStmt.executeQuery("LIST USER OF ROLE zhazha");
-        ans = "RiverSky,\n";
-        validateResultSet(resultSet, ans);
-
-        adminStmt.execute("REVOKE zhazha from RiverSky");
-        resultSet = adminStmt.executeQuery("LIST USER OF ROLE zhazha");
-        ans = "";
-        validateResultSet(resultSet, ans);
-      } finally {
-        resultSet.close();
-      }
-
-    } finally {
-      adminStmt.close();
-      adminCon.close();
-    }
-  }
-
-  private void validateResultSet(ResultSet set, String ans) throws SQLException {
-    try {
-      StringBuilder builder = new StringBuilder();
-      ResultSetMetaData metaData = set.getMetaData();
-      int colNum = metaData.getColumnCount();
-      while (set.next()) {
-        for (int i = 1; i <= colNum; i++) {
-          builder.append(set.getString(i)).append(",");
-        }
-        builder.append("\n");
-      }
-      assertEquals(ans, builder.toString());
-    } finally {
-      set.close();
-    }
-  }
-
-  @Test
-  public void testListUserPrivilege() throws ClassNotFoundException, SQLException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    Connection adminCon =
-        DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-    Statement adminStmt = adminCon.createStatement();
-
-    for (int i = 0; i < 10; i++) {
-      adminStmt.execute("CREATE USER user" + i + " 'password" + i + "'");
-    }
-
-    adminStmt.execute("CREATE USER tempuser 'temppw'");
-
-    try (Connection userCon =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "tempuser", "temppw");
-        Statement userStmt = userCon.createStatement()) {
-      try {
-        Assert.assertThrows(SQLException.class, () -> userStmt.execute("LIST USER"));
-        // with list user privilege
-        adminStmt.execute("GRANT USER tempuser PRIVILEGES LIST_USER on root.**");
-        ResultSet resultSet = userStmt.executeQuery("LIST USER");
-        String ans =
-            "root,\n"
-                + "tempuser,\n"
-                + "user0,\n"
-                + "user1,\n"
-                + "user2,\n"
-                + "user3,\n"
-                + "user4,\n"
-                + "user5,\n"
-                + "user6,\n"
-                + "user7,\n"
-                + "user8,\n"
-                + "user9,\n";
-        validateResultSet(resultSet, ans);
-      } finally {
-        userStmt.close();
-      }
-    } finally {
-      adminCon.close();
-    }
-  }
-
-  @Test
-  public void testExecuteBatchWithPrivilege() throws ClassNotFoundException, SQLException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection adminCon =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement adminStmt = adminCon.createStatement()) {
-      adminStmt.execute("CREATE USER tempuser 'temppw'");
-      try (Connection userCon =
-              DriverManager.getConnection(
-                  Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "tempuser", "temppw");
-          Statement userStatement = userCon.createStatement()) {
-        userStatement.addBatch("CREATE TIMESERIES root.sg1.d1.s1 WITH DATATYPE=INT64");
-        userStatement.addBatch("CREATE TIMESERIES root.sg2.d1.s1 WITH DATATYPE=INT64");
-        try {
-          userStatement.executeBatch();
-        } catch (BatchUpdateException e) {
-          assertEquals(
-              System.lineSeparator()
-                  + "No permissions for this operation, please add privilege "
-                  + PrivilegeType.values()[
-                      AuthorityChecker.translateToPermissionId(
-                          Operator.OperatorType.CREATE_TIMESERIES)]
-                  + " for SQL: \"CREATE TIMESERIES root.sg1.d1.s1 WITH DATATYPE=INT64\""
-                  + System.lineSeparator()
-                  + "No permissions for this operation, please add privilege "
-                  + PrivilegeType.values()[
-                      AuthorityChecker.translateToPermissionId(
-                          Operator.OperatorType.CREATE_TIMESERIES)]
-                  + " for SQL: \"CREATE TIMESERIES root.sg2.d1.s1 WITH DATATYPE=INT64\""
-                  + System.lineSeparator(),
-              e.getMessage());
-        }
-      }
-    }
-  }
-
-  @Test
-  public void testExecuteBatchWithPrivilege1() throws ClassNotFoundException, SQLException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection adminCon =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement adminStmt = adminCon.createStatement()) {
-      adminStmt.execute("CREATE USER tempuser 'temppw'");
-      adminStmt.execute("GRANT USER tempuser PRIVILEGES INSERT_TIMESERIES on root.sg1.**");
-
-      try (Connection userCon =
-              DriverManager.getConnection(
-                  Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "tempuser", "temppw");
-          Statement userStatement = userCon.createStatement()) {
-        userStatement.addBatch("insert into root.sg1.d1(timestamp,s1) values (1,1)");
-        userStatement.addBatch("insert into root.sg2.d1(timestamp,s1) values (2,1)");
-        userStatement.addBatch("insert into root.sg1.d1(timestamp,s2) values (3,1)");
-        userStatement.addBatch("insert into root.sg2.d1(timestamp,s1) values (4,1)");
-        try {
-          userStatement.executeBatch();
-        } catch (BatchUpdateException e) {
-          System.out.println(e.getMessage());
-          assertEquals(
-              System.lineSeparator()
-                  + "No permissions for this operation, please add privilege "
-                  + PrivilegeType.values()[
-                      AuthorityChecker.translateToPermissionId(Operator.OperatorType.INSERT)]
-                  + " for SQL: \"insert into root.sg2.d1(timestamp,s1) values (2,1)\""
-                  + System.lineSeparator()
-                  + "No permissions for this operation, please add privilege "
-                  + PrivilegeType.values()[
-                      AuthorityChecker.translateToPermissionId(Operator.OperatorType.INSERT)]
-                  + " for SQL: \"insert into root.sg2.d1(timestamp,s1) values (4,1)\""
-                  + System.lineSeparator(),
-              e.getMessage());
-        }
-      }
-      ResultSet resultSet = adminStmt.executeQuery("select * from root.**");
-      String[] expected = new String[] {"1, 1.0", "1, null", "3, null", "3, 1.0"};
-      List<String> expectedList = new ArrayList<>();
-      Collections.addAll(expectedList, expected);
-      List<String> result = new ArrayList<>();
-      while (resultSet.next()) {
-        result.add(
-            resultSet.getString(ColumnHeaderConstant.TIME)
-                + ", "
-                + resultSet.getString("root.sg1.d1.s1"));
-        result.add(
-            resultSet.getString(ColumnHeaderConstant.TIME)
-                + ", "
-                + resultSet.getString("root.sg1.d1.s2"));
-      }
-      assertEquals(expected.length, result.size());
-      assertTrue(expectedList.containsAll(result));
-    }
-  }
-
-  /** ISSUE-4308 */
-  @Test
-  public void testSelectUDTF() throws ClassNotFoundException, SQLException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection adminConnection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement adminStatement = adminConnection.createStatement()) {
-      adminStatement.execute("CREATE USER a_application 'a_application'");
-      adminStatement.execute("CREATE ROLE application_role");
-      adminStatement.execute(
-          "GRANT ROLE application_role PRIVILEGES READ_TIMESERIES ON root.test.**");
-      adminStatement.execute("GRANT application_role TO a_application");
-
-      adminStatement.execute("INSERT INTO root.test(time, s1, s2, s3) VALUES(1, 2, 3, 4)");
-    }
-
-    try (Connection userConnection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "a_application", "a_application");
-        Statement userStatement = userConnection.createStatement();
-        ResultSet resultSet =
-            userStatement.executeQuery(
-                "SELECT s1, s1, s1 - s3, s2 * sin(s1), s1 + 1 / 2 * sin(s1), sin(s1), sin(s1) FROM root.test")) {
-      assertTrue(resultSet.next());
-    }
-  }
-}
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBEngineTimeGeneratorIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBEngineTimeGeneratorIT.java
deleted file mode 100644
index 38b24fbda9..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBEngineTimeGeneratorIT.java
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.integration;
-
-import org.apache.iotdb.commons.exception.MetadataException;
-import org.apache.iotdb.commons.path.MeasurementPath;
-import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.constant.TestConstant;
-import org.apache.iotdb.db.exception.StorageEngineException;
-import org.apache.iotdb.db.exception.query.QueryProcessException;
-import org.apache.iotdb.db.qp.physical.crud.RawDataQueryPlan;
-import org.apache.iotdb.db.query.timegenerator.ServerTimeGenerator;
-import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.db.utils.SchemaTestUtils;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-import org.apache.iotdb.jdbc.Config;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.read.expression.IExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.BinaryExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.filter.TimeFilter;
-import org.apache.iotdb.tsfile.read.filter.ValueFilter;
-import org.apache.iotdb.tsfile.read.filter.factory.FilterFactory;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.io.IOException;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.Statement;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.apache.iotdb.db.utils.EnvironmentUtils.TEST_QUERY_CONTEXT;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-/**
- * Notice that, all test begins with "IoTDB" is integration test. All test which will start the
- * IoTDB server should be defined as integration test.
- */
-@Category({LocalStandaloneTest.class})
-public class IoTDBEngineTimeGeneratorIT {
-
-  private static TSFileConfig tsFileConfig = TSFileDescriptor.getInstance().getConfig();
-  private static int maxNumberOfPointsInPage;
-  private static int pageSizeInByte;
-  private static int groupSizeInByte;
-
-  private static int count = 0;
-  private static int count2 = 150;
-
-  @BeforeClass
-  public static void setUp() throws Exception {
-
-    // use small page setting
-    // origin value
-    maxNumberOfPointsInPage = tsFileConfig.getMaxNumberOfPointsInPage();
-    pageSizeInByte = tsFileConfig.getPageSizeInByte();
-    groupSizeInByte = tsFileConfig.getGroupSizeInByte();
-
-    // new value
-    tsFileConfig.setMaxNumberOfPointsInPage(100);
-    tsFileConfig.setPageSizeInByte(1024 * 1024 * 150);
-    tsFileConfig.setGroupSizeInByte(1024 * 1024 * 100);
-    IoTDBDescriptor.getInstance().getConfig().setMemtableSizeThreshold(1024 * 1024 * 100);
-
-    EnvironmentUtils.envSetUp();
-
-    insertData();
-  }
-
-  // recovery value
-  @AfterClass
-  public static void tearDown() throws Exception {
-    tsFileConfig.setMaxNumberOfPointsInPage(maxNumberOfPointsInPage);
-    tsFileConfig.setPageSizeInByte(pageSizeInByte);
-    tsFileConfig.setGroupSizeInByte(groupSizeInByte);
-    IoTDBDescriptor.getInstance().getConfig().setMemtableSizeThreshold(groupSizeInByte);
-
-    EnvironmentUtils.cleanEnv();
-  }
-
-  private static void insertData() throws ClassNotFoundException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      // create database and measurement
-      for (String sql : TestConstant.createSql) {
-        statement.execute(sql);
-      }
-
-      // insert data (time from 300-999)
-      for (long time = 300; time < 1000; time++) {
-        String sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s0) values(%s,%s)", time, time % 17);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s1) values(%s,%s)", time, time % 29);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s2) values(%s,%s)", time, time % 31);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s3) values(%s,'%s')",
-                time, TestConstant.stringValue[(int) time % 5]);
-        statement.execute(sql);
-
-        if (satisfyTimeFilter1(time)) {
-          count++;
-        }
-
-        if (satisfyTimeFilter2(time)) {
-          count2++;
-        }
-      }
-
-      statement.execute("FLUSH");
-
-      // insert data (time from 1200-1499)
-      for (long time = 1200; time < 1500; time++) {
-        String sql = null;
-        if (time % 2 == 0) {
-          sql =
-              String.format(
-                  "insert into root.vehicle.d0(timestamp,s0) values(%s,%s)", time, time % 17);
-          statement.execute(sql);
-          sql =
-              String.format(
-                  "insert into root.vehicle.d0(timestamp,s1) values(%s,%s)", time, time % 29);
-          statement.execute(sql);
-          if (satisfyTimeFilter1(time)) {
-            count++;
-          }
-        }
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s2) values(%s,%s)", time, time % 31);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s3) values(%s,'%s')",
-                time, TestConstant.stringValue[(int) time % 5]);
-        statement.execute(sql);
-      }
-
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  /** value >= 14 && time > 500 */
-  private static boolean satisfyTimeFilter1(long time) {
-    return time % 17 >= 14 && time > 500;
-  }
-
-  /** root.vehicle.d0.s0 >= 5 && root.vehicle.d0.s2 >= 11 || time > 900 */
-  private static boolean satisfyTimeFilter2(long time) {
-    return (time % 17 >= 5 || time > 900) && (time % 31 >= 11.5 || time > 900);
-  }
-
-  /** value >= 14 && time > 500 */
-  @Test
-  public void testOneSeriesWithValueAndTimeFilter()
-      throws IOException, StorageEngineException, MetadataException, QueryProcessException {
-    // System.out.println("Test >>> root.vehicle.d0.s0 >= 14 && time > 500");
-
-    MeasurementPath pd0s0 =
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s0);
-    ValueFilter.ValueGtEq<Integer> valueGtEq = ValueFilter.gtEq(14);
-    TimeFilter.TimeGt timeGt = TimeFilter.gt(500);
-
-    SingleSeriesExpression singleSeriesExpression =
-        new SingleSeriesExpression(pd0s0, FilterFactory.and(valueGtEq, timeGt));
-    RawDataQueryPlan queryPlan = new RawDataQueryPlan();
-    List<PartialPath> paths = new ArrayList<>();
-    paths.add(pd0s0);
-    queryPlan.setDeduplicatedPathsAndUpdate(paths);
-    queryPlan.setExpression(singleSeriesExpression);
-    ServerTimeGenerator timeGenerator = new ServerTimeGenerator(TEST_QUERY_CONTEXT, queryPlan);
-
-    int cnt = 0;
-    while (timeGenerator.hasNext()) {
-      long time = timeGenerator.next();
-      assertTrue(satisfyTimeFilter1(time));
-      cnt++;
-      // System.out.println("cnt =" + cnt + "; time = " + time);
-    }
-    assertEquals(count, cnt);
-  }
-
-  /** root.vehicle.d1.s0 >= 5, and d1.s0 has no data */
-  @Test
-  public void testEmptySeriesWithValueFilter()
-      throws IOException, StorageEngineException, MetadataException, QueryProcessException {
-    // System.out.println("Test >>> root.vehicle.d1.s0 >= 5");
-
-    MeasurementPath pd1s0 =
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d1 + TsFileConstant.PATH_SEPARATOR + TestConstant.s0);
-    ValueFilter.ValueGtEq<Integer> valueGtEq = ValueFilter.gtEq(5);
-
-    IExpression singleSeriesExpression = new SingleSeriesExpression(pd1s0, valueGtEq);
-    RawDataQueryPlan queryPlan = new RawDataQueryPlan();
-    List<PartialPath> paths = new ArrayList<>();
-    paths.add(pd1s0);
-    queryPlan.setDeduplicatedPathsAndUpdate(paths);
-    queryPlan.setExpression(singleSeriesExpression);
-    ServerTimeGenerator timeGenerator = new ServerTimeGenerator(TEST_QUERY_CONTEXT, queryPlan);
-
-    int cnt = 0;
-    while (timeGenerator.hasNext()) {
-      cnt++;
-    }
-    assertEquals(0, cnt);
-  }
-
-  /** root.vehicle.d0.s0 >= 5 && root.vehicle.d0.s2 >= 11.5 || time > 900 */
-  @Test
-  public void testMultiSeriesWithValueFilterAndTimeFilter()
-      throws IOException, StorageEngineException, MetadataException, QueryProcessException {
-    System.out.println(
-        "Test >>> root.vehicle.d0.s0 >= 5 && root.vehicle.d0.s2 >= 11.5 || time > 900");
-
-    MeasurementPath pd0s0 =
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s0);
-    MeasurementPath pd0s2 =
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s2);
-
-    ValueFilter.ValueGtEq<Integer> valueGtEq5 = ValueFilter.gtEq(5);
-    ValueFilter.ValueGtEq<Float> valueGtEq11 = ValueFilter.gtEq(11.5f);
-    TimeFilter.TimeGt timeGt = TimeFilter.gt(900L);
-
-    IExpression singleSeriesExpression1 =
-        new SingleSeriesExpression(pd0s0, FilterFactory.or(valueGtEq5, timeGt));
-    IExpression singleSeriesExpression2 =
-        new SingleSeriesExpression(pd0s2, FilterFactory.or(valueGtEq11, timeGt));
-    IExpression andExpression =
-        BinaryExpression.and(singleSeriesExpression1, singleSeriesExpression2);
-
-    RawDataQueryPlan queryPlan = new RawDataQueryPlan();
-    List<PartialPath> paths = new ArrayList<>();
-    paths.add(pd0s0);
-    paths.add(pd0s2);
-    queryPlan.setDeduplicatedPathsAndUpdate(paths);
-    queryPlan.setExpression(andExpression);
-    ServerTimeGenerator timeGenerator = new ServerTimeGenerator(TEST_QUERY_CONTEXT, queryPlan);
-    int cnt = 0;
-    while (timeGenerator.hasNext()) {
-      long time = timeGenerator.next();
-      assertTrue(satisfyTimeFilter2(time));
-      cnt++;
-      //       System.out.println("cnt =" + cnt + "; time = " + time);
-    }
-    assertEquals(count2, cnt);
-  }
-}
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectIntoIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectIntoIT.java
deleted file mode 100644
index f80bb9fe4b..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectIntoIT.java
+++ /dev/null
@@ -1,796 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.iotdb.db.integration;
-
-import org.apache.iotdb.commons.exception.MetadataException;
-import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
-import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-import org.apache.iotdb.jdbc.Config;
-import org.apache.iotdb.rpc.TSStatusCode;
-import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-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;
-
-// TODO: check null values
-@Category({LocalStandaloneTest.class})
-public class IoTDBSelectIntoIT {
-
-  private static final int ROW_LIMIT =
-      IoTDBDescriptor.getInstance().getConfig().getSelectIntoInsertTabletPlanRowLimit();
-
-  private static final String[] INSERTION_SQLS = {
-    "insert into root.sg.d1(time, s2, s3, s4, s5, s6) values (0, 0, 0, 0, true, '0')",
-    "insert into root.sg.d1(time, s1, s3, s4, s5, s6) values (1, 1, 1, 1, false, '1')",
-    "insert into root.sg.d1(time, s1, s2, s4, s5, s6) values (2, 2, 2, 2, true, '2')",
-    "insert into root.sg.d1(time, s1, s2, s3, s5, s6) values (3, 3, 3, 3, false, '3')",
-    "insert into root.sg.d1(time, s1, s2, s3, s4, s5, s6) values (4, 4, 4, 4, 4, true, '4')",
-    "insert into root.sg.d1(time, s1, s2, s3, s4, s6) values (5, 5, 5, 5, 5, '5')",
-    "insert into root.sg.d1(time, s1, s2, s3, s4, s5) values (6, 6, 6, 6, 6, true)",
-  };
-
-  @BeforeClass
-  public static void setUp() throws Exception {
-    EnvironmentUtils.envSetUp();
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    createTimeSeries();
-    generateData();
-  }
-
-  private static void createTimeSeries() throws MetadataException {
-    LocalSchemaProcessor.getInstance()
-        .createTimeseries(
-            new PartialPath("root.sg.d1.s1"),
-            TSDataType.INT32,
-            TSEncoding.PLAIN,
-            CompressionType.UNCOMPRESSED,
-            null);
-    LocalSchemaProcessor.getInstance()
-        .createTimeseries(
-            new PartialPath("root.sg.d1.s2"),
-            TSDataType.INT64,
-            TSEncoding.PLAIN,
-            CompressionType.UNCOMPRESSED,
-            null);
-    LocalSchemaProcessor.getInstance()
-        .createTimeseries(
-            new PartialPath("root.sg.d1.s3"),
-            TSDataType.FLOAT,
-            TSEncoding.PLAIN,
-            CompressionType.UNCOMPRESSED,
-            null);
-    LocalSchemaProcessor.getInstance()
-        .createTimeseries(
-            new PartialPath("root.sg.d1.s4"),
-            TSDataType.DOUBLE,
-            TSEncoding.PLAIN,
-            CompressionType.UNCOMPRESSED,
-            null);
-    LocalSchemaProcessor.getInstance()
-        .createTimeseries(
-            new PartialPath("root.sg.d1.s5"),
-            TSDataType.BOOLEAN,
-            TSEncoding.PLAIN,
-            CompressionType.UNCOMPRESSED,
-            null);
-    LocalSchemaProcessor.getInstance()
-        .createTimeseries(
-            new PartialPath("root.sg.d1.s6"),
-            TSDataType.TEXT,
-            TSEncoding.PLAIN,
-            CompressionType.UNCOMPRESSED,
-            null);
-
-    LocalSchemaProcessor.getInstance()
-        .createTimeseries(
-            new PartialPath("root.sg.d1.empty"),
-            TSDataType.TEXT,
-            TSEncoding.PLAIN,
-            CompressionType.UNCOMPRESSED,
-            null);
-
-    LocalSchemaProcessor.getInstance()
-        .createTimeseries(
-            new PartialPath("root.sg.d2.s1"),
-            TSDataType.INT32,
-            TSEncoding.PLAIN,
-            CompressionType.UNCOMPRESSED,
-            null);
-
-    LocalSchemaProcessor.getInstance()
-        .createTimeseries(
-            new PartialPath("root.sg.d1.`datatype`"),
-            TSDataType.DOUBLE,
-            TSEncoding.PLAIN,
-            CompressionType.UNCOMPRESSED,
-            null);
-  }
-
-  private static void generateData() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      for (String dataGenerationSql : INSERTION_SQLS) {
-        statement.execute(dataGenerationSql);
-      }
-
-      statement.execute("insert into root.sg.d2(time, s1) values (0, 0)");
-
-      final int size = ROW_LIMIT + 1;
-      for (int i = 0; i < size; ++i) {
-        statement.execute(String.format("insert into root.sg.d3(time, s1) values (%d, %d)", i, i));
-      }
-    } catch (SQLException throwable) {
-      fail(throwable.getMessage());
-    }
-  }
-
-  @AfterClass
-  public static void tearDown() throws Exception {
-    EnvironmentUtils.cleanEnv();
-  }
-
-  @Test // TODO: check values
-  public void selectIntoSameDevice() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute(
-          "select s1, s2, s3, s4, s5, s6 into s7, s8, s9, s10, s11, s12 from root.sg.d1");
-
-      try (ResultSet resultSet =
-          statement.executeQuery("select s7, s8, s9, s10, s11, s12 from root.sg.d1")) {
-        assertEquals(1 + 6, resultSet.getMetaData().getColumnCount());
-
-        for (int i = 0; i < INSERTION_SQLS.length; ++i) {
-          assertTrue(resultSet.next());
-          StringBuilder stringBuilder = new StringBuilder();
-          for (int j = 0; j < 6 + 1; ++j) {
-            stringBuilder.append(resultSet.getString(j + 1)).append(',');
-          }
-          System.out.println(stringBuilder.toString());
-        }
-
-        assertFalse(resultSet.next());
-      }
-    } catch (SQLException throwable) {
-      fail(throwable.getMessage());
-    }
-  }
-
-  @Test // TODO: check values
-  public void selectIntoDifferentDevices() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute(
-          "select s1, s2, s3, s4, s5, s6 into pre_${2}_suf.s1, pre_${2}_suf.s2, pre_${2}_suf.s3, pre_${2}_suf.s4, pre_${2}_suf.s5, pre_${2}_suf.s6 from root.sg.d1");
-
-      try (ResultSet resultSet =
-          statement.executeQuery(
-              "select pre_d1_suf.s1, pre_d1_suf.s2, pre_d1_suf.s3, pre_d1_suf.s4, pre_d1_suf.s5, pre_d1_suf.s6 from root.sg.d1")) {
-        assertEquals(1 + 6, resultSet.getMetaData().getColumnCount());
-
-        for (int i = 0; i < INSERTION_SQLS.length; ++i) {
-          assertTrue(resultSet.next());
-          StringBuilder stringBuilder = new StringBuilder();
-          for (int j = 0; j < 6 + 1; ++j) {
-            stringBuilder.append(resultSet.getString(j + 1)).append(',');
-          }
-          System.out.println(stringBuilder.toString());
-        }
-
-        assertFalse(resultSet.next());
-      }
-    } catch (SQLException throwable) {
-      fail(throwable.getMessage());
-    }
-  }
-
-  @Test
-  public void selectFromEmptySourcePath() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select empty into target from root.sg.d1");
-
-      try (ResultSet resultSet = statement.executeQuery("select target from root.sg.d1")) {
-        assertEquals(1, resultSet.getMetaData().getColumnCount());
-        assertFalse(resultSet.next());
-      }
-    } catch (SQLException throwable) {
-      fail(throwable.getMessage());
-    }
-  }
-
-  @Test
-  public void selectIntoFullTargetPath() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select s1 into root.${2}.${1}.s1 from root.sg.d1 where time>0");
-
-      try (ResultSet resultSet = statement.executeQuery("select sg.d1.s1, d1.sg.s1 from root")) {
-        assertEquals(1 + 2, resultSet.getMetaData().getColumnCount());
-
-        for (int i = 0; i < INSERTION_SQLS.length - 1; ++i) {
-          assertTrue(resultSet.next());
-          assertEquals(resultSet.getString(1), String.valueOf(i + 1));
-          assertEquals(resultSet.getString(2), resultSet.getString(3));
-        }
-
-        assertFalse(resultSet.next());
-      }
-    } catch (SQLException throwable) {
-      fail(throwable.getMessage());
-    }
-  }
-
-  @Test
-  public void selectSameTimeSeries() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select s1, s1 into s1s2, s1s3 from root.sg.d1");
-
-      try (ResultSet resultSet = statement.executeQuery("select s1s2, s1s3 from root.sg.d1")) {
-        assertEquals(1 + 2, resultSet.getMetaData().getColumnCount());
-
-        for (int i = 1; i < INSERTION_SQLS.length; ++i) {
-          assertTrue(resultSet.next());
-          for (int j = 0; j < 2 + 1; ++j) {
-            assertEquals(resultSet.getString(2), resultSet.getString(3));
-          }
-        }
-
-        assertFalse(resultSet.next());
-      }
-    } catch (SQLException throwable) {
-      fail(throwable.getMessage());
-    }
-  }
-
-  @Test
-  public void testLargeData() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select s1 into large_s1 from root.sg.d3");
-
-      try (ResultSet resultSet = statement.executeQuery("select large_s1 from root.sg.d3")) {
-        assertEquals(1 + 1, resultSet.getMetaData().getColumnCount());
-
-        final int size = ROW_LIMIT + 1;
-        for (int i = 0; i < size; ++i) {
-          assertTrue(resultSet.next());
-          assertEquals(
-              Double.parseDouble(resultSet.getString(1)),
-              Double.parseDouble(resultSet.getString(2)),
-              0);
-        }
-        assertFalse(resultSet.next());
-      }
-    } catch (SQLException throwable) {
-      fail(throwable.getMessage());
-    }
-  }
-
-  @Test
-  public void testUDFQuery() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute(
-          "select s1, sin(s1), s1 + s1 into ${2}.s2, ${2}.s3, ${2}.s4 from root.sg.d1");
-
-      try (ResultSet resultSet = statement.executeQuery("select s2, s3, s4 from root.sg.d1.d1")) {
-        assertEquals(1 + 3, resultSet.getMetaData().getColumnCount());
-
-        for (int i = 1; i < INSERTION_SQLS.length; ++i) {
-          assertTrue(resultSet.next());
-          for (int j = 0; j < 2 + 1; ++j) {
-            double s2 = Double.parseDouble(resultSet.getString(2));
-            double s3 = Double.parseDouble(resultSet.getString(3));
-            double s4 = Double.parseDouble(resultSet.getString(4));
-            assertEquals(i, s2, 0);
-            assertEquals(Math.sin(i), s3, 0);
-            assertEquals((double) i + (double) i, s4, 0);
-          }
-        }
-
-        assertFalse(resultSet.next());
-      }
-    } catch (SQLException throwable) {
-      fail(throwable.getMessage());
-    }
-  }
-
-  @Test
-  public void testNestedQuery() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute(
-          "select s1 * sin(s1) + cos(s1), sin(s1) / s1 + s1, s1 into ${2}.n2, ${2}.n3, ${2}.n4 from root.sg.d1");
-
-      try (ResultSet resultSet = statement.executeQuery("select n2, n3, n4 from root.sg.d1.d1")) {
-        assertEquals(1 + 3, resultSet.getMetaData().getColumnCount());
-
-        for (int i = 1; i < INSERTION_SQLS.length; ++i) {
-          assertTrue(resultSet.next());
-          for (int j = 0; j < 2 + 1; ++j) {
-            double s2 = Double.parseDouble(resultSet.getString(2));
-            double s3 = Double.parseDouble(resultSet.getString(3));
-            double s4 = Double.parseDouble(resultSet.getString(4));
-            assertEquals(i * Math.sin(i) + Math.cos(i), s2, 0);
-            assertEquals(Math.sin(i) / i + i, s3, 0);
-            assertEquals(i, s4, 0);
-          }
-        }
-
-        assertFalse(resultSet.next());
-      }
-    } catch (SQLException throwable) {
-      fail(throwable.getMessage());
-    }
-  }
-
-  @Test
-  public void testSelectIntoAlignedTimeSeriesCorrectly() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute(
-          "select s1, s1 "
-              + "into aligned root.sg.`aligned`.s1s2, root.sg.`aligned`.s1s3 "
-              + "from root.sg.d1 "
-              + "where time <= 2");
-      statement.execute(
-          "select s1, s1 "
-              + "into aligned root.sg.`aligned`.s1s2, root.sg.`aligned`.s1s3 "
-              + "from root.sg.d1 "
-              + "where time > 2");
-
-      try (ResultSet resultSet =
-          statement.executeQuery("select s1s2, s1s3 from root.sg.`aligned`")) {
-        assertEquals(1 + 2, resultSet.getMetaData().getColumnCount());
-
-        for (int i = 1; i < INSERTION_SQLS.length; ++i) {
-          assertTrue(resultSet.next());
-          for (int j = 0; j < 2 + 1; ++j) {
-            assertEquals(resultSet.getString(2), resultSet.getString(3));
-          }
-        }
-
-        assertFalse(resultSet.next());
-      }
-    } catch (SQLException throwable) {
-      fail(throwable.getMessage());
-    }
-  }
-
-  @Test
-  public void testSourceAndTargetPathDataTypeUnmatched() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select s1 " + "into root.sg.d1.`datatype` " + "from root.sg.d1");
-      fail();
-    } catch (SQLException throwable) {
-      assertTrue(
-          throwable
-              .getMessage()
-              .contains(Integer.toString(TSStatusCode.MULTIPLE_ERROR.getStatusCode())));
-      assertTrue(throwable.getMessage().contains("not consistent"));
-    }
-  }
-
-  @Test
-  public void testSelectIntoAlignedTimeSeriesWithUnmatchedTypes() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("create aligned timeseries root.sg.`aligned`(s1 TEXT, s2 TEXT)");
-      statement.execute(
-          "select s1, s1 "
-              + "into aligned root.sg.`aligned`.s1, root.sg.`aligned`.s2 "
-              + "from root.sg.d1");
-      fail();
-    } catch (SQLException throwable) {
-      assertTrue(
-          throwable
-              .getMessage()
-              .contains(
-                  "failed to insert measurements [s1, s2] caused by data type of root.sg.aligned.s1 is not consistent"));
-    }
-  }
-
-  @Test
-  public void testGroupByQuery() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select count(s1) into count_s1 from root.sg.d1 group by ([1, 5),1ms);");
-
-      try (ResultSet resultSet = statement.executeQuery("select count_s1 from root.sg.d1")) {
-        assertEquals(1 + 1, resultSet.getMetaData().getColumnCount());
-
-        for (int i = 1; i < INSERTION_SQLS.length - 2; ++i) {
-          assertTrue(resultSet.next());
-          for (int j = 0; j < 1 + 1; ++j) {
-            assertEquals(String.valueOf(i), resultSet.getString(1));
-            assertEquals("1", resultSet.getString(2));
-          }
-        }
-
-        assertFalse(resultSet.next());
-      }
-    } catch (SQLException throwable) {
-      fail(throwable.getMessage());
-    }
-  }
-
-  @Test
-  public void testGroupByFillQuery() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute(
-          "select last_value(s1) into gbf_s1 from root.sg.d1 group by ([1, 10),1ms) fill (float[PREVIOUS]);");
-
-      try (ResultSet resultSet = statement.executeQuery("select gbf_s1 from root.sg.d1")) {
-        assertEquals(1 + 1, resultSet.getMetaData().getColumnCount());
-
-        for (int i = 1; i < 5; ++i) {
-          assertTrue(resultSet.next());
-          for (int j = 0; j < 1 + 1; ++j) {
-            assertEquals(String.valueOf(i), resultSet.getString(1));
-            assertEquals(i < 5 ? String.valueOf(i) : "0", resultSet.getString(2));
-          }
-        }
-
-        assertTrue(resultSet.next());
-        assertTrue(resultSet.next());
-        assertFalse(resultSet.next());
-      }
-    } catch (SQLException throwable) {
-      fail(throwable.getMessage());
-    }
-  }
-
-  @Test
-  public void testFillQuery() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute(
-          "select s1 into fill_s1 from root.sg.d1 where time = 10 fill(float [linear, 1ms, 1ms])");
-
-      try (ResultSet resultSet = statement.executeQuery("select fill_s1 from root.sg.d1")) {
-        assertEquals(1 + 1, resultSet.getMetaData().getColumnCount());
-
-        assertTrue(resultSet.next());
-        assertEquals("10", resultSet.getString(1));
-        assertEquals("6", resultSet.getString(2));
-
-        assertFalse(resultSet.next());
-      }
-    } catch (SQLException throwable) {
-      fail(throwable.getMessage());
-    }
-  }
-
-  @Test
-  public void testDifferentNumbersOfSourcePathsAndTargetPaths() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select s1, s2 into target from root.sg.d1");
-      fail();
-    } catch (SQLException throwable) {
-      assertTrue(
-          throwable
-              .getMessage()
-              .contains(
-                  "the number of source paths and the number of target paths should be the same"));
-    }
-
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select s1 into target from root.sg.*");
-      fail();
-    } catch (SQLException throwable) {
-      assertTrue(throwable.getMessage().contains("* and ** are not allowed in a target path."));
-    }
-
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select * into target from root.sg.d1");
-      fail();
-    } catch (SQLException throwable) {
-      assertTrue(
-          throwable
-              .getMessage()
-              .contains(
-                  "the number of source paths and the number of target paths should be the same"));
-    }
-  }
-
-  @Test
-  public void testMultiPrefixPathsInFromClause() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select s1 into target from root.sg.d1, root.sg.d2");
-      fail();
-    } catch (SQLException throwable) {
-      assertTrue(
-          throwable
-              .getMessage()
-              .contains("the number of prefix paths in the from clause should be 1"));
-    }
-  }
-
-  @Test
-  public void testLeveledPathNodePatternLimit() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select s1 into root.${100}.s1 from root.sg.d1");
-      fail();
-    } catch (SQLException throwable) {
-      assertTrue(
-          throwable
-              .getMessage()
-              .contains(
-                  "the x of ${x} should be greater than 0 and equal to or less than <level> or the length of queried path prefix."));
-    }
-
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select s1 into root.${0}.s1 from root.sg.d1");
-      fail();
-    } catch (SQLException throwable) {
-      assertTrue(
-          throwable
-              .getMessage()
-              .contains(
-                  "the x of ${x} should be greater than 0 and equal to or less than <level> or the length of queried path prefix."));
-    }
-
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select s1 into root.${wrong}.s1 from root.sg.d1");
-      fail();
-    } catch (SQLException throwable) {
-      assertTrue(throwable.getMessage().contains("the x of ${x} should be an integer."));
-    }
-  }
-
-  @Test
-  public void testAlignByDevice() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select s1 into root.${1}.s1 from root.sg.d1 align by device");
-      fail();
-    } catch (SQLException throwable) {
-      assertTrue(throwable.getMessage().contains("align by device clauses are not supported."));
-    }
-  }
-
-  @Test
-  public void testDisableDevice() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select s1 into root.${1}.s1 from root.sg.d1 disable align");
-      fail();
-    } catch (SQLException throwable) {
-      assertTrue(throwable.getMessage().contains("disable align clauses are not supported."));
-    }
-  }
-
-  @Test
-  public void testLastQuery() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select last s1 into root.${1}.s1 from root.sg.d1");
-      fail();
-    } catch (SQLException throwable) {
-      assertTrue(throwable.getMessage().contains("last clauses are not supported."));
-    }
-  }
-
-  @Test
-  public void testSlimit() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select s1, s2 into ${1}.s1, ${2}.s1 from root.sg.d1 slimit 1");
-      fail();
-    } catch (SQLException throwable) {
-      assertTrue(throwable.getMessage().contains("slimit clauses are not supported."));
-    }
-  }
-
-  @Test
-  public void testDescending() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select s1, s2 into ${1}.s1, ${2}.s1 from root.sg.d1 order by time desc");
-      fail();
-    } catch (SQLException throwable) {
-      assertTrue(throwable.getMessage().contains("desc clauses are not supported."));
-    }
-  }
-
-  @Test
-  public void testSameTargetPaths() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("select s1, s2 into ${1}.s1, ${1}.s1 from root.sg.d1");
-      fail();
-    } catch (SQLException throwable) {
-      assertTrue(
-          throwable.getMessage().contains("target paths in into clause should be different."));
-    }
-  }
-
-  @Test
-  public void testContainerCase() throws SQLException {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      for (int i = 0; i < 10; i++) {
-        statement.execute(
-            String.format("INSERT INTO root.sg.device%s(timestamp,s) VALUES(1,1)", i));
-      }
-
-      statement.execute(
-          "SELECT device0.s, device1.s, device2.s, device3.s, device4.s, device5.s, device6.s, device7.s, device8.s, device9.s "
-              + "INTO device0.t, device1.t, device2.t, device3.t, device4.t, device5.t, device6.t, device7.t, device8.t, device9.t "
-              + "FROM root.sg;");
-
-      for (int i = 0; i < 10; i++) {
-        statement.execute(
-            String.format("INSERT INTO root.sg.device%s(timestamp,s) VALUES(2,2)", i));
-        statement.execute(String.format("SELECT device%s.s into device%s.t from root.sg;", i, i));
-      }
-
-      for (int i = 0; i < 10; ++i) {
-        try (ResultSet resultSet =
-            statement.executeQuery(String.format("SELECT s, t FROM root.sg.device%s", i))) {
-          assertTrue(resultSet.next());
-          assertEquals(1, Double.parseDouble(resultSet.getString(1)), 0);
-          assertEquals(
-              Double.parseDouble(resultSet.getString(1)),
-              Double.parseDouble(resultSet.getString(2)),
-              0);
-          assertEquals(
-              Double.parseDouble(resultSet.getString(2)),
-              Double.parseDouble(resultSet.getString(3)),
-              0);
-
-          assertTrue(resultSet.next());
-          assertEquals(2, Double.parseDouble(resultSet.getString(1)), 0);
-          assertEquals(
-              Double.parseDouble(resultSet.getString(1)),
-              Double.parseDouble(resultSet.getString(2)),
-              0);
-          assertEquals(
-              Double.parseDouble(resultSet.getString(2)),
-              Double.parseDouble(resultSet.getString(3)),
-              0);
-
-          assertFalse(resultSet.next());
-        }
-      }
-    }
-  }
-
-  // This case tests whether select into clause functions correctly when multiple columns are
-  // selected.
-  // It is possible that in the first few rows, some columns are null.
-  @Test
-  public void testSelectMultiColumnsWithTopKCase() throws SQLException {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute(
-          "select -s1, sin(cos(tan(s1+s1*s2))) + cos(s1), top_k(s1,'k'='1') "
-              + "into k1,k2,k3 from root.sg.d1;");
-
-      try (ResultSet resultSet = statement.executeQuery("select k1 from root.sg.d1")) {
-        assertEquals(1 + 1, resultSet.getMetaData().getColumnCount());
-        for (int i = 1; i <= 6; ++i) {
-          assertTrue(resultSet.next());
-        }
-        assertFalse(resultSet.next());
-      }
-
-      // verify that only one row is selected into k3.
-      try (ResultSet resultSet = statement.executeQuery("select k3 from root.sg.d1")) {
-        assertEquals(1 + 1, resultSet.getMetaData().getColumnCount());
-        assertTrue(resultSet.next());
-        assertFalse(resultSet.next());
-      }
-
-    } catch (SQLException throwable) {
-      fail(throwable.getMessage());
-    }
-  }
-}
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSequenceDataQueryIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSequenceDataQueryIT.java
deleted file mode 100644
index af18b279a5..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSequenceDataQueryIT.java
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.integration;
-
-import org.apache.iotdb.commons.exception.MetadataException;
-import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.constant.TestConstant;
-import org.apache.iotdb.db.exception.StorageEngineException;
-import org.apache.iotdb.db.exception.query.QueryProcessException;
-import org.apache.iotdb.db.qp.physical.crud.RawDataQueryPlan;
-import org.apache.iotdb.db.query.executor.QueryRouter;
-import org.apache.iotdb.db.utils.SchemaTestUtils;
-import org.apache.iotdb.integration.env.ConfigFactory;
-import org.apache.iotdb.integration.env.EnvFactory;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.read.common.Path;
-import org.apache.iotdb.tsfile.read.common.RowRecord;
-import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.filter.TimeFilter;
-import org.apache.iotdb.tsfile.read.filter.ValueFilter;
-import org.apache.iotdb.tsfile.read.filter.operator.AndFilter;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.io.IOException;
-import java.sql.Connection;
-import java.sql.Statement;
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.apache.iotdb.db.utils.EnvironmentUtils.TEST_QUERY_CONTEXT;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-/**
- * Notice that, all test begins with "IoTDB" is integration test. All test which will start the
- * IoTDB server should be defined as integration test. In this test case, no unseq insert data.
- */
-@Category({LocalStandaloneTest.class})
-public class IoTDBSequenceDataQueryIT {
-
-  private static TSFileConfig tsFileConfig = TSFileDescriptor.getInstance().getConfig();
-  private static int maxNumberOfPointsInPage;
-  private static int pageSizeInByte;
-  private static int groupSizeInByte;
-
-  // count : d0s0 >= 14
-  private static int count = 0;
-
-  @BeforeClass
-  public static void setUp() throws Exception {
-
-    // use small page setting
-    // origin value
-    maxNumberOfPointsInPage = tsFileConfig.getMaxNumberOfPointsInPage();
-    pageSizeInByte = tsFileConfig.getPageSizeInByte();
-    groupSizeInByte = tsFileConfig.getGroupSizeInByte();
-
-    // new value
-    ConfigFactory.getConfig()
-        .setMaxNumberOfPointsInPage(100)
-        .setPageSizeInByte(1024 * 1024 * 150)
-        .setGroupSizeInByte(1024 * 1024 * 100)
-        .setMemtableSizeThreshold(1024 * 1024 * 100);
-
-    EnvFactory.getEnv().initBeforeClass();
-
-    insertData();
-  }
-
-  @AfterClass
-  public static void tearDown() throws Exception {
-    // recovery value
-    ConfigFactory.getConfig()
-        .setMaxNumberOfPointsInPage(maxNumberOfPointsInPage)
-        .setPageSizeInByte(pageSizeInByte)
-        .setGroupSizeInByte(groupSizeInByte)
-        .setMemtableSizeThreshold(groupSizeInByte);
-
-    EnvFactory.getEnv().cleanAfterClass();
-  }
-
-  private static void insertData() {
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-
-      // create database and measurement
-      for (String sql : TestConstant.createSql) {
-        statement.execute(sql);
-      }
-
-      // insert data (time from 300-999)
-      for (long time = 300; time < 1000; time++) {
-        String sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s0) values(%s,%s)", time, time % 17);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s1) values(%s,%s)", time, time % 29);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s2) values(%s,%s)", time, time % 31);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s3) values(%s,'%s')",
-                time, TestConstant.stringValue[(int) time % 5]);
-        statement.execute(sql);
-
-        if (time % 17 >= 14) {
-          count++;
-        }
-      }
-
-      statement.execute("flush");
-
-      // insert data (time from 1200-1499)
-      for (long time = 1200; time < 1500; time++) {
-        String sql;
-        if (time % 2 == 0) {
-          sql =
-              String.format(
-                  "insert into root.vehicle.d0(timestamp,s0) values(%s,%s)", time, time % 17);
-          statement.execute(sql);
-          sql =
-              String.format(
-                  "insert into root.vehicle.d0(timestamp,s1) values(%s,%s)", time, time % 29);
-          statement.execute(sql);
-          if (time % 17 >= 14) {
-            count++;
-          }
-        }
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s2) values(%s,%s)", time, time % 31);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s3) values(%s,'%s')",
-                time, TestConstant.stringValue[(int) time % 5]);
-        statement.execute(sql);
-      }
-
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void readWithoutFilterTest()
-      throws IOException, StorageEngineException, QueryProcessException, MetadataException {
-
-    QueryRouter queryRouter = new QueryRouter();
-    List<PartialPath> pathList = new ArrayList<>();
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s0));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s1));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s2));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s3));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s4));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d1 + TsFileConstant.PATH_SEPARATOR + TestConstant.s0));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d1 + TsFileConstant.PATH_SEPARATOR + TestConstant.s1));
-
-    RawDataQueryPlan queryPlan = new RawDataQueryPlan();
-    queryPlan.setDeduplicatedPathsAndUpdate(pathList);
-    QueryDataSet queryDataSet = queryRouter.rawDataQuery(queryPlan, TEST_QUERY_CONTEXT);
-
-    int cnt = 0;
-    while (queryDataSet.hasNext()) {
-      queryDataSet.next();
-      cnt++;
-    }
-    assertEquals(1000, cnt);
-  }
-
-  @Test
-  public void readWithTimeFilterTest()
-      throws IOException, StorageEngineException, QueryProcessException, MetadataException {
-    QueryRouter queryRouter = new QueryRouter();
-    List<PartialPath> pathList = new ArrayList<>();
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s0));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d1 + TsFileConstant.PATH_SEPARATOR + TestConstant.s0));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d1 + TsFileConstant.PATH_SEPARATOR + TestConstant.s1));
-
-    GlobalTimeExpression globalTimeExpression = new GlobalTimeExpression(TimeFilter.gtEq(800L));
-
-    RawDataQueryPlan queryPlan = new RawDataQueryPlan();
-    queryPlan.setDeduplicatedPathsAndUpdate(pathList);
-    queryPlan.setExpression(globalTimeExpression);
-    QueryDataSet queryDataSet = queryRouter.rawDataQuery(queryPlan, TEST_QUERY_CONTEXT);
-
-    int cnt = 0;
-    while (queryDataSet.hasNext()) {
-      RowRecord rowRecord = queryDataSet.next();
-      String value = rowRecord.getFields().get(0).getStringValue();
-      long time = rowRecord.getTimestamp();
-      assertEquals("" + time % 17, value);
-      cnt++;
-    }
-    assertEquals(350, cnt);
-  }
-
-  @Test
-  public void readWithValueFilterTest()
-      throws IOException, StorageEngineException, QueryProcessException, MetadataException {
-    // select * from root.** where root.vehicle.d0.s0 >=14
-    QueryRouter queryRouter = new QueryRouter();
-    List<PartialPath> pathList = new ArrayList<>();
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s0));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s1));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s2));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s3));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s4));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d1 + TsFileConstant.PATH_SEPARATOR + TestConstant.s0));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d1 + TsFileConstant.PATH_SEPARATOR + TestConstant.s1));
-
-    Path queryPath =
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s0);
-    SingleSeriesExpression singleSeriesExpression =
-        new SingleSeriesExpression(queryPath, ValueFilter.gtEq(14));
-
-    RawDataQueryPlan queryPlan = new RawDataQueryPlan();
-    queryPlan.setDeduplicatedPathsAndUpdate(pathList);
-    queryPlan.setExpression(singleSeriesExpression);
-    QueryDataSet queryDataSet = queryRouter.rawDataQuery(queryPlan, TEST_QUERY_CONTEXT);
-
-    int cnt = 0;
-    while (queryDataSet.hasNext()) {
-      queryDataSet.next();
-      cnt++;
-    }
-    assertEquals(count, cnt);
-  }
-
-  @Test
-  public void readIncorrectTimeFilterTest()
-      throws MetadataException, QueryProcessException, StorageEngineException, IOException {
-
-    QueryRouter queryRouter = new QueryRouter();
-    List<PartialPath> pathList = new ArrayList<>();
-    List<TSDataType> dataTypes = new ArrayList<>();
-    pathList.add(
-        new PartialPath(TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s0));
-    dataTypes.add(TSDataType.INT32);
-    pathList.add(
-        new PartialPath(TestConstant.d1 + TsFileConstant.PATH_SEPARATOR + TestConstant.s0));
-    dataTypes.add(TSDataType.INT32);
-
-    TimeFilter.TimeGt gtRight = TimeFilter.gt(10L);
-    TimeFilter.TimeLt ltLeft = TimeFilter.lt(5L);
-    AndFilter andFilter = new AndFilter(ltLeft, gtRight);
-
-    GlobalTimeExpression globalTimeExpression = new GlobalTimeExpression(andFilter);
-
-    RawDataQueryPlan queryPlan = new RawDataQueryPlan();
-    queryPlan.setDeduplicatedPathsAndUpdate(pathList);
-    queryPlan.setExpression(globalTimeExpression);
-    QueryDataSet queryDataSet = queryRouter.rawDataQuery(queryPlan, TEST_QUERY_CONTEXT);
-
-    int cnt = 0;
-    while (queryDataSet.hasNext()) {
-      queryDataSet.next();
-      cnt++;
-    }
-    assertEquals(0, cnt);
-  }
-}
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSeriesReaderIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSeriesReaderIT.java
deleted file mode 100644
index c45a549776..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSeriesReaderIT.java
+++ /dev/null
@@ -1,444 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.integration;
-
-import org.apache.iotdb.commons.exception.MetadataException;
-import org.apache.iotdb.commons.path.MeasurementPath;
-import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.constant.TestConstant;
-import org.apache.iotdb.db.exception.StorageEngineException;
-import org.apache.iotdb.db.exception.query.QueryProcessException;
-import org.apache.iotdb.db.qp.physical.crud.RawDataQueryPlan;
-import org.apache.iotdb.db.query.executor.QueryRouter;
-import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.db.utils.SchemaTestUtils;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-import org.apache.iotdb.jdbc.Config;
-import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
-import org.apache.iotdb.tsfile.read.expression.impl.SingleSeriesExpression;
-import org.apache.iotdb.tsfile.read.filter.TimeFilter;
-import org.apache.iotdb.tsfile.read.filter.ValueFilter;
-import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet;
-
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.io.IOException;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import static org.apache.iotdb.db.utils.EnvironmentUtils.TEST_QUERY_CONTEXT;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.fail;
-
-/**
- * Notice that, all test begins with "IoTDB" is integration test. All test which will start the
- * IoTDB server should be defined as integration test.
- */
-@Category({LocalStandaloneTest.class})
-public class IoTDBSeriesReaderIT {
-
-  private static TSFileConfig tsFileConfig = TSFileDescriptor.getInstance().getConfig();
-  private static int pageSizeInByte;
-  private static int groupSizeInByte;
-  private static long prevPartitionInterval;
-
-  private static Connection connection;
-
-  @BeforeClass
-  public static void setUp() throws Exception {
-    // use small page setting
-    // origin value
-    pageSizeInByte = tsFileConfig.getPageSizeInByte();
-    groupSizeInByte = tsFileConfig.getGroupSizeInByte();
-
-    // new value
-    tsFileConfig.setMaxNumberOfPointsInPage(1000);
-    tsFileConfig.setPageSizeInByte(1024 * 1024 * 150);
-    tsFileConfig.setGroupSizeInByte(1024 * 1024 * 150);
-    IoTDBDescriptor.getInstance().getConfig().setMemtableSizeThreshold(1024 * 16);
-
-    // test result of IBatchReader should not cross partition
-    prevPartitionInterval = IoTDBDescriptor.getInstance().getConfig().getTimePartitionInterval();
-    IoTDBDescriptor.getInstance().getConfig().setTimePartitionInterval(2000);
-
-    EnvironmentUtils.envSetUp();
-
-    insertData();
-    connection =
-        DriverManager.getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-  }
-
-  @AfterClass
-  public static void tearDown() throws Exception {
-    connection.close();
-    // recovery value
-    tsFileConfig.setMaxNumberOfPointsInPage(1024 * 1024 * 150);
-    tsFileConfig.setPageSizeInByte(pageSizeInByte);
-    tsFileConfig.setGroupSizeInByte(groupSizeInByte);
-
-    EnvironmentUtils.cleanEnv();
-    IoTDBDescriptor.getInstance().getConfig().setMemtableSizeThreshold(groupSizeInByte);
-    IoTDBDescriptor.getInstance().getConfig().setTimePartitionInterval(prevPartitionInterval);
-  }
-
-  private static void insertData() throws ClassNotFoundException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      for (String sql : TestConstant.createSql) {
-        statement.execute(sql);
-      }
-
-      // insert large amount of data time range : 3000 ~ 13600
-      for (int time = 3000; time < 13600; time++) {
-        String sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s0) values(%s,%s)", time, time % 100);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s1) values(%s,%s)", time, time % 17);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s2) values(%s,%s)", time, time % 22);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s3) values(%s,'%s')",
-                time, TestConstant.stringValue[time % 5]);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s4) values(%s, %s)",
-                time, TestConstant.booleanValue[time % 2]);
-        statement.execute(sql);
-        sql = String.format("insert into root.vehicle.d0(timestamp,s5) values(%s, %s)", time, time);
-        statement.execute(sql);
-      }
-
-      // statement.execute("flush");
-
-      // insert large amount of data time range : 13700 ~ 24000
-      for (int time = 13700; time < 24000; time++) {
-
-        String sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s0) values(%s,%s)", time, time % 70);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s1) values(%s,%s)", time, time % 40);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s2) values(%s,%s)", time, time % 123);
-        statement.execute(sql);
-      }
-
-      statement.execute("merge");
-
-      // buffwrite data, unsealed file
-      for (int time = 100000; time < 101000; time++) {
-
-        String sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s0) values(%s,%s)", time, time % 20);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s1) values(%s,%s)", time, time % 30);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s2) values(%s,%s)", time, time % 77);
-        statement.execute(sql);
-      }
-
-      // sequential data, memory data
-      for (int time = 200000; time < 201000; time++) {
-
-        String sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s0) values(%s,%s)", time, -time % 20);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s1) values(%s,%s)", time, -time % 30);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s2) values(%s,%s)", time, -time % 77);
-        statement.execute(sql);
-      }
-
-      statement.execute("flush");
-      // unsequence insert, time < 3000
-      for (int time = 2000; time < 2500; time++) {
-
-        String sql =
-            String.format("insert into root.vehicle.d0(timestamp,s0) values(%s,%s)", time, time);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s1) values(%s,%s)", time, time + 1);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s2) values(%s,%s)", time, time + 2);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s3) values(%s,'%s')",
-                time, TestConstant.stringValue[time % 5]);
-        statement.execute(sql);
-      }
-
-      for (int time = 100000; time < 100500; time++) {
-        String sql =
-            String.format("insert into root.vehicle.d0(timestamp,s0) values(%s,%s)", time, 666);
-        statement.execute(sql);
-        sql = String.format("insert into root.vehicle.d0(timestamp,s1) values(%s,%s)", time, 777);
-        statement.execute(sql);
-        sql = String.format("insert into root.vehicle.d0(timestamp,s2) values(%s,%s)", time, 888);
-        statement.execute(sql);
-      }
-
-      statement.execute("flush");
-      // unsequence insert, time > 200000
-      for (int time = 200900; time < 201000; time++) {
-
-        String sql =
-            String.format("insert into root.vehicle.d0(timestamp,s0) values(%s,%s)", time, 6666);
-        statement.execute(sql);
-        sql = String.format("insert into root.vehicle.d0(timestamp,s1) values(%s,%s)", time, 7777);
-        statement.execute(sql);
-        sql = String.format("insert into root.vehicle.d0(timestamp,s2) values(%s,%s)", time, 8888);
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s3) values(%s,'%s')", time, "goodman");
-        statement.execute(sql);
-        sql =
-            String.format(
-                "insert into root.vehicle.d0(timestamp,s4) values(%s, %s)",
-                time, TestConstant.booleanValue[time % 2]);
-        statement.execute(sql);
-        sql = String.format("insert into root.vehicle.d0(timestamp,s5) values(%s, %s)", time, 9999);
-        statement.execute(sql);
-      }
-
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectAllTest()
-      throws IOException, StorageEngineException, QueryProcessException, MetadataException {
-    QueryRouter queryRouter = new QueryRouter();
-    List<PartialPath> pathList = new ArrayList<>();
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s0));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s1));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s2));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s3));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s4));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s5));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d1 + TsFileConstant.PATH_SEPARATOR + TestConstant.s0));
-    pathList.add(
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d1 + TsFileConstant.PATH_SEPARATOR + TestConstant.s1));
-
-    RawDataQueryPlan queryPlan = new RawDataQueryPlan();
-    queryPlan.setDeduplicatedPathsAndUpdate(pathList);
-    QueryDataSet queryDataSet = queryRouter.rawDataQuery(queryPlan, TEST_QUERY_CONTEXT);
-
-    int cnt = 0;
-    while (queryDataSet.hasNext()) {
-      queryDataSet.next();
-      cnt++;
-    }
-    assertEquals(23400, cnt);
-  }
-
-  @Test
-  public void selectOneSeriesWithValueFilterTest()
-      throws IOException, StorageEngineException, QueryProcessException, MetadataException {
-    QueryRouter queryRouter = new QueryRouter();
-    List<PartialPath> pathList = new ArrayList<>();
-    PartialPath path =
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s0);
-    pathList.add(path);
-    SingleSeriesExpression singleSeriesExpression =
-        new SingleSeriesExpression(path, ValueFilter.gtEq(20));
-
-    RawDataQueryPlan queryPlan = new RawDataQueryPlan();
-    queryPlan.setDeduplicatedPathsAndUpdate(pathList);
-    queryPlan.setExpression(singleSeriesExpression);
-    QueryDataSet queryDataSet = queryRouter.rawDataQuery(queryPlan, TEST_QUERY_CONTEXT);
-
-    int cnt = 0;
-    while (queryDataSet.hasNext()) {
-      queryDataSet.next();
-      cnt++;
-    }
-    assertEquals(16940, cnt);
-  }
-
-  @Test
-  public void seriesTimeDigestReadTest()
-      throws IOException, StorageEngineException, QueryProcessException, MetadataException {
-    QueryRouter queryRouter = new QueryRouter();
-    MeasurementPath path =
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s0);
-    SingleSeriesExpression expression = new SingleSeriesExpression(path, TimeFilter.gt(22987L));
-
-    RawDataQueryPlan queryPlan = new RawDataQueryPlan();
-    queryPlan.setDeduplicatedPathsAndUpdate(Collections.singletonList(path));
-    queryPlan.setExpression(expression);
-    QueryDataSet queryDataSet = queryRouter.rawDataQuery(queryPlan, TEST_QUERY_CONTEXT);
-
-    int cnt = 0;
-    while (queryDataSet.hasNext()) {
-      queryDataSet.next();
-      cnt++;
-    }
-    assertEquals(3012, cnt);
-  }
-
-  @Test
-  public void crossSeriesReadUpdateTest()
-      throws IOException, StorageEngineException, QueryProcessException, MetadataException {
-    QueryRouter queryRouter = new QueryRouter();
-    MeasurementPath path1 =
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s0);
-    MeasurementPath path2 =
-        SchemaTestUtils.getMeasurementPath(
-            TestConstant.d0 + TsFileConstant.PATH_SEPARATOR + TestConstant.s1);
-
-    RawDataQueryPlan queryPlan = new RawDataQueryPlan();
-
-    List<PartialPath> pathList = new ArrayList<>();
-    pathList.add(path1);
-    pathList.add(path2);
-    queryPlan.setDeduplicatedPathsAndUpdate(pathList);
-
-    SingleSeriesExpression singleSeriesExpression =
-        new SingleSeriesExpression(path1, ValueFilter.lt(111));
-    queryPlan.setExpression(singleSeriesExpression);
-
-    QueryDataSet queryDataSet = queryRouter.rawDataQuery(queryPlan, TEST_QUERY_CONTEXT);
-
-    int cnt = 0;
-    while (queryDataSet.hasNext()) {
-      queryDataSet.next();
-      cnt++;
-    }
-
-    assertEquals(22300, cnt);
-  }
-
-  @Test
-  public void queryEmptySeriesTest() throws SQLException {
-    Statement statement = connection.createStatement();
-    statement.execute(
-        "CREATE TIMESERIES root.vehicle.d_empty.s1 WITH DATATYPE=INT64, ENCODING=RLE");
-    ResultSet resultSet = statement.executeQuery("select * from root.vehicle.d_empty");
-    try {
-      assertFalse(resultSet.next());
-    } finally {
-      resultSet.close();
-    }
-  }
-
-  /** Test when one un-sequenced file may cover a long time range. */
-  @Test
-  public void queryWithLongRangeUnSeqTest() throws SQLException {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      // make up data
-      final String INSERT_TEMPLATE = "insert into root.sg.d1(time, s1) values(%d, %d)";
-      final String FLUSH_CMD = "flush";
-      for (int i = 1; i <= 10; i++) {
-        statement.execute(String.format(INSERT_TEMPLATE, i, i));
-      }
-      statement.execute(FLUSH_CMD);
-      for (int i = 12; i <= 20; i++) {
-        statement.execute(String.format(INSERT_TEMPLATE, i, i));
-      }
-      statement.execute(FLUSH_CMD);
-      for (int i = 21; i <= 110; i++) {
-        statement.execute(String.format(INSERT_TEMPLATE, i, i));
-        if (i % 10 == 0) {
-          statement.execute(FLUSH_CMD);
-        }
-      }
-      // unSeq from here
-      for (int i = 11; i <= 101; i += 10) {
-        statement.execute(String.format(INSERT_TEMPLATE, i, i));
-      }
-      statement.execute(FLUSH_CMD);
-
-      // query from here
-      ResultSet resultSet = statement.executeQuery("select s1 from root.sg.d1 where time > 10");
-      int cnt = 0;
-      while (resultSet.next()) {
-        cnt++;
-      }
-      Assert.assertEquals(100, cnt);
-    }
-  }
-}
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBUDFNestAggregationIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBUDFNestAggregationIT.java
deleted file mode 100644
index 075fe5a5c8..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBUDFNestAggregationIT.java
+++ /dev/null
@@ -1,774 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.iotdb.db.integration.aggregation;
-
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.integration.env.ConfigFactory;
-import org.apache.iotdb.integration.env.EnvFactory;
-import org.apache.iotdb.itbase.category.ClusterTest;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.Statement;
-import java.util.Locale;
-
-import static org.junit.Assert.fail;
-
-@Category({LocalStandaloneTest.class, ClusterTest.class})
-public class IoTDBUDFNestAggregationIT {
-
-  private static final double E = 1e-6;
-  private static final String TIMESTAMP_STR = "Time";
-
-  private static String[] creationSqls =
-      new String[] {
-        "CREATE DATABASE root.vehicle.d0",
-        "CREATE DATABASE root.vehicle.d1",
-        "CREATE TIMESERIES root.vehicle.d0.s0 WITH DATATYPE=INT32, ENCODING=RLE",
-        "CREATE TIMESERIES root.vehicle.d0.s1 WITH DATATYPE=INT64, ENCODING=RLE",
-        "CREATE TIMESERIES root.vehicle.d0.s2 WITH DATATYPE=FLOAT, ENCODING=RLE",
-        "CREATE TIMESERIES root.vehicle.d0.s3 WITH DATATYPE=TEXT, ENCODING=PLAIN",
-        "CREATE TIMESERIES root.vehicle.d0.s4 WITH DATATYPE=BOOLEAN, ENCODING=PLAIN"
-      };
-  private static String[] dataSet2 =
-      new String[] {
-        "CREATE DATABASE root.ln.wf01.wt01",
-        "CREATE TIMESERIES root.ln.wf01.wt01.status WITH DATATYPE=BOOLEAN, ENCODING=PLAIN",
-        "CREATE TIMESERIES root.ln.wf01.wt01.temperature WITH DATATYPE=FLOAT, ENCODING=PLAIN",
-        "CREATE TIMESERIES root.ln.wf01.wt01.hardware WITH DATATYPE=INT32, ENCODING=PLAIN",
-        "INSERT INTO root.ln.wf01.wt01(timestamp,temperature,status, hardware) "
-            + "values(1, 1.1, false, 11)",
-        "INSERT INTO root.ln.wf01.wt01(timestamp,temperature,status, hardware) "
-            + "values(2, 2.2, true, 22)",
-        "INSERT INTO root.ln.wf01.wt01(timestamp,temperature,status, hardware) "
-            + "values(3, 3.3, false, 33 )",
-        "INSERT INTO root.ln.wf01.wt01(timestamp,temperature,status, hardware) "
-            + "values(4, 4.4, false, 44)",
-        "INSERT INTO root.ln.wf01.wt01(timestamp,temperature,status, hardware) "
-            + "values(5, 5.5, false, 55)"
-      };
-  private static String[] dataSet3 =
-      new String[] {
-        "CREATE DATABASE root.sg",
-        "CREATE TIMESERIES root.sg.d1.s1 WITH DATATYPE=INT32, ENCODING=RLE",
-        "insert into root.sg.d1(timestamp,s1) values(5,5)",
-        "insert into root.sg.d1(timestamp,s1) values(12,12)",
-        "flush",
-        "insert into root.sg.d1(timestamp,s1) values(15,15)",
-        "insert into root.sg.d1(timestamp,s1) values(25,25)",
-        "flush",
-        "insert into root.sg.d1(timestamp,s1) values(1,111)",
-        "insert into root.sg.d1(timestamp,s1) values(20,200)",
-        "flush"
-      };
-
-  private static final String[] dataSet4 =
-      new String[] {
-        "CREATE DATABASE root.sg1",
-        "CREATE DATABASE root.sg2",
-        "CREATE TIMESERIES root.sg1.d1.status WITH DATATYPE=BOOLEAN, ENCODING=PLAIN",
-        "CREATE TIMESERIES root.sg1.d1.temperature WITH DATATYPE=DOUBLE, ENCODING=PLAIN",
-        "CREATE TIMESERIES root.sg1.d2.status WITH DATATYPE=BOOLEAN, ENCODING=PLAIN",
-        "CREATE TIMESERIES root.sg1.d2.temperature WITH DATATYPE=DOUBLE, ENCODING=PLAIN",
-        "CREATE TIMESERIES root.sg2.d1.status WITH DATATYPE=INT32, ENCODING=PLAIN",
-        "CREATE TIMESERIES root.sg2.d1.temperature WITH DATATYPE=DOUBLE, ENCODING=PLAIN",
-        "CREATE TIMESERIES root.sg2.d2.temperature WITH DATATYPE=DOUBLE, ENCODING=PLAIN",
-        "INSERT INTO root.sg1.d1(timestamp,status) values(150,true)",
-        "INSERT INTO root.sg1.d1(timestamp,status,temperature) values(200,false,20.71)",
-        "INSERT INTO root.sg1.d1(timestamp,status,temperature) values(600,false,71.12)",
-        "INSERT INTO root.sg1.d2(timestamp,status,temperature) values(200,false,42.66)",
-        "INSERT INTO root.sg1.d2(timestamp,status,temperature) values(300,false,46.77)",
-        "INSERT INTO root.sg1.d2(timestamp,status,temperature) values(700,true,62.15)",
-        "INSERT INTO root.sg2.d1(timestamp,status,temperature) values(100,3,88.24)",
-        "INSERT INTO root.sg2.d1(timestamp,status,temperature) values(500,5,125.5)",
-        "INSERT INTO root.sg2.d2(timestamp,temperature) values(200,105.5)",
-        "INSERT INTO root.sg2.d2(timestamp,temperature) values(800,61.22)",
-      };
-
-  private static final String[] dataSet5 =
-      new String[] {
-        "CREATE DATABASE root.st",
-        "CREATE TIMESERIES root.st.a WITH DATATYPE=DOUBLE, ENCODING=PLAIN",
-        "CREATE TIMESERIES root.st.b WITH DATATYPE=DOUBLE, ENCODING=PLAIN",
-        "CREATE TIMESERIES root.st.c WITH DATATYPE=DOUBLE, ENCODING=PLAIN",
-        "INSERT INTO root.st(timestamp,a,b,c) values(10,10,10,10)",
-        "INSERT INTO root.st(timestamp,a,b,c) values(20,20,20,20)",
-        "INSERT INTO root.st(timestamp,a,b,c) values(30,30,30,30)",
-        "INSERT INTO root.st(timestamp,a,b,c) values(40,40,40,40)",
-        "INSERT INTO root.st(timestamp,a,b,c) values(50,50,50,50)",
-        "INSERT INTO root.st(timestamp,a,b,c) values(60,60,60,60)",
-        "INSERT INTO root.st(timestamp,a) values(70,70)",
-        "INSERT INTO root.st(timestamp,b) values(80,80)",
-        "INSERT INTO root.st(timestamp,c) values(90,90)",
-      };
-
-  private final String d0s0 = "root.vehicle.d0.s0";
-  private final String d0s1 = "root.vehicle.d0.s1";
-  private final String d0s2 = "root.vehicle.d0.s2";
-  private final String d0s3 = "root.vehicle.d0.s3";
-  private static final String insertTemplate =
-      "INSERT INTO root.vehicle.d0(timestamp,s0,s1,s2,s3,s4)" + " VALUES(%d,%d,%d,%f,%s,%s)";
-  private static long prevPartitionInterval;
-
-  @BeforeClass
-  public static void setUp() throws Exception {
-    prevPartitionInterval = IoTDBDescriptor.getInstance().getConfig().getTimePartitionInterval();
-    ConfigFactory.getConfig().setPartitionInterval(1000);
-    EnvFactory.getEnv().initBeforeClass();
-    prepareData();
-  }
-
-  @AfterClass
-  public static void tearDown() throws Exception {
-    EnvFactory.getEnv().cleanAfterClass();
-    ConfigFactory.getConfig().setPartitionInterval(prevPartitionInterval);
-  }
-
-  // Test FunctionExpression, NegativeExpression and BinaryExpression with time filter
-  @Test
-  public void complexExpressionsWithTimeFilterTest() {
-    Object[] retResults = {
-      0L, 2L, 6.950000047683716D, 7.0D, 0.9092974268256817D, 1.9092974268256817D, -2L, 2L
-    };
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      String query =
-          "SELECT"
-              + " count(temperature)"
-              + ", count(temperature) + avg(temperature) "
-              + ", count(temperature) + max_time(hardware)"
-              + ", sin(count(temperature))"
-              + ", sin(count(temperature)) + 1"
-              + ", -count(temperature)"
-              + ", count(temperature)"
-              + " FROM root.ln.wf01.wt01 WHERE time > 3";
-      boolean hasResultSet = statement.execute(query);
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        Assert.assertTrue(resultSet.next());
-        Assert.assertEquals((long) retResults[0], resultSet.getLong(TIMESTAMP_STR));
-        Assert.assertEquals((long) retResults[1], resultSet.getLong(1));
-        Assert.assertEquals((double) retResults[2], resultSet.getDouble(2), E);
-        Assert.assertEquals((double) retResults[3], resultSet.getDouble(3), E);
-        Assert.assertEquals((double) retResults[4], resultSet.getDouble(4), E);
-        Assert.assertEquals((double) retResults[5], resultSet.getDouble(5), E);
-        Assert.assertEquals((long) retResults[6], resultSet.getLong(6), E);
-        Assert.assertEquals((long) retResults[7], resultSet.getLong(7), E);
-        Assert.assertFalse(resultSet.next());
-      }
-
-      hasResultSet = statement.execute(query + " ORDER BY TIME DESC");
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        Assert.assertTrue(resultSet.next());
-        Assert.assertEquals((long) retResults[0], resultSet.getLong(TIMESTAMP_STR));
-        Assert.assertEquals((long) retResults[1], resultSet.getLong(1));
-        Assert.assertEquals((double) retResults[2], resultSet.getDouble(2), E);
-        Assert.assertEquals((double) retResults[3], resultSet.getDouble(3), E);
-        Assert.assertEquals((double) retResults[4], resultSet.getDouble(4), E);
-        Assert.assertEquals((double) retResults[5], resultSet.getDouble(5), E);
-        Assert.assertEquals((long) retResults[6], resultSet.getLong(6), E);
-        Assert.assertEquals((long) retResults[7], resultSet.getLong(7), E);
-        Assert.assertFalse(resultSet.next());
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void complexExpressionsWithTimeFilterTest2() {
-    Object[] retResults = {0L, 1.14112000806D, 0.28224001612D};
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      String query =
-          "SELECT sin(count(temperature) + 1) + 1,sin(count(temperature) + 1) * 2 FROM root.ln.wf01.wt01 WHERE time > 3";
-      boolean hasResultSet = statement.execute(query);
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        Assert.assertTrue(resultSet.next());
-        Assert.assertEquals((long) retResults[0], resultSet.getLong(TIMESTAMP_STR));
-        Assert.assertEquals((double) retResults[1], resultSet.getDouble(1), E);
-        Assert.assertEquals((double) retResults[2], resultSet.getDouble(2), E);
-        Assert.assertFalse(resultSet.next());
-      }
-
-      hasResultSet = statement.execute(query + " ORDER BY TIME DESC");
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        Assert.assertTrue(resultSet.next());
-        Assert.assertEquals((long) retResults[0], resultSet.getLong(TIMESTAMP_STR));
-        Assert.assertEquals((double) retResults[1], resultSet.getDouble(1), E);
-        Assert.assertEquals((double) retResults[2], resultSet.getDouble(2), E);
-        Assert.assertFalse(resultSet.next());
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void expressionNestExtremeTest() {
-    // Issue: https://issues.apache.org/jira/browse/IOTDB-2151
-    Object[] retResults = {0L, 5.5F, 0.21511998808D};
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      String query =
-          "SELECT extreme(temperature), sin(extreme(temperature) + 1) FROM root.ln.wf01.wt01";
-      boolean hasResultSet = statement.execute(query);
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        Assert.assertTrue(resultSet.next());
-        Assert.assertEquals((long) retResults[0], resultSet.getLong(TIMESTAMP_STR));
-        Assert.assertEquals((float) retResults[1], resultSet.getFloat(1), E);
-        Assert.assertEquals((double) retResults[2], resultSet.getDouble(2), E);
-        Assert.assertFalse(resultSet.next());
-      }
-
-      hasResultSet = statement.execute(query + " ORDER BY TIME DESC");
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        Assert.assertTrue(resultSet.next());
-        Assert.assertEquals((long) retResults[0], resultSet.getLong(TIMESTAMP_STR));
-        Assert.assertEquals((float) retResults[1], resultSet.getFloat(1), E);
-        Assert.assertEquals((double) retResults[2], resultSet.getDouble(2), E);
-        Assert.assertFalse(resultSet.next());
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  // Test FunctionExpression, NegativeExpression and BinaryExpression with value filter
-  @Test
-  public void complexExpressionsWithValueFilterTest() {
-    Object[] retResults = {0L, 4L, 6.75D, 8.0D, -0.7568024953D, 5.0D, -4L, 4L};
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      String query =
-          "SELECT"
-              + " count(temperature)"
-              + ", count(temperature) + avg(temperature) "
-              + ", count(temperature) + max_time(hardware)"
-              + ", sin(count(temperature))"
-              + ", count(temperature) + 1"
-              + ", -count(temperature)"
-              + ", count(temperature)"
-              + " FROM root.ln.wf01.wt01 WHERE temperature < 5";
-      boolean hasResultSet = statement.execute(query);
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        Assert.assertTrue(resultSet.next());
-        Assert.assertEquals((long) retResults[0], resultSet.getLong(TIMESTAMP_STR));
-        Assert.assertEquals((long) retResults[1], resultSet.getLong(1));
-        Assert.assertEquals((double) retResults[2], resultSet.getDouble(2), E);
-        Assert.assertEquals((double) retResults[3], resultSet.getDouble(3), E);
-        Assert.assertEquals((double) retResults[4], resultSet.getDouble(4), E);
-        Assert.assertEquals((double) retResults[5], resultSet.getDouble(5), E);
-        Assert.assertEquals((long) retResults[6], resultSet.getLong(6), E);
-        Assert.assertEquals((long) retResults[7], resultSet.getLong(7), E);
-        Assert.assertFalse(resultSet.next());
-      }
-
-      hasResultSet = statement.execute(query + " ORDER BY TIME DESC");
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        Assert.assertTrue(resultSet.next());
-        Assert.assertEquals((long) retResults[0], resultSet.getLong(TIMESTAMP_STR));
-        Assert.assertEquals((long) retResults[1], resultSet.getLong(1));
-        Assert.assertEquals((double) retResults[2], resultSet.getDouble(2), E);
-        Assert.assertEquals((double) retResults[3], resultSet.getDouble(3), E);
-        Assert.assertEquals((double) retResults[4], resultSet.getDouble(4), E);
-        Assert.assertEquals((double) retResults[5], resultSet.getDouble(5), E);
-        Assert.assertEquals((long) retResults[6], resultSet.getLong(6), E);
-        Assert.assertEquals((long) retResults[7], resultSet.getLong(7), E);
-        Assert.assertFalse(resultSet.next());
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  // Test FunctionExpression, NegativeExpression and BinaryExpression with wildcard
-  @Test
-  public void complexExpressionWithWildcardTest() throws Exception {
-    double[] retArray =
-        new double[] {
-          91.83,
-          151.58,
-          92.83,
-          152.58,
-          -0.66224654127,
-          0.70580058691,
-          -91.83,
-          -151.58,
-          91.83,
-          151.58,
-        };
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      statement.execute(
-          "select sum(temperature), sum(temperature) + 1, sin(sum(temperature)), -sum(temperature), sum(temperature) from root.sg1.**");
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        Assert.assertTrue(resultSet.next());
-        Assert.assertEquals(0L, resultSet.getLong(TIMESTAMP_STR));
-        for (int i = 1; i <= 10; i++) {
-          Assert.assertEquals(
-              resultSet.getMetaData().getColumnName(i), retArray[i - 1], resultSet.getDouble(i), E);
-        }
-        Assert.assertFalse(resultSet.next());
-      }
-    }
-  }
-
-  @Test
-  public void complexExpressionWithGroupByTimeWithTimeFilterTest() {
-    Object[][] retArray = {
-      {0L, null, null, null, null, null, null},
-      {1000L, null, null, null, null, null, null},
-      {2000L, null, null, null, null, null, null},
-      {3000L, null, null, null, null, null, null},
-      {4000L, null, null, null, null, null, null},
-      {5000L, null, null, null, null, null, null},
-      {6000L, -0.32466497009092804D, 6499500.0D, 1.64995E7D, 8254.75D, -6499500.0D, 6499500.0D},
-      {7000L, -0.6648173658103295D, 3874750.0D, 1.387475E7D, 10129.75D, -3874750.0D, 3874750.0D},
-      {8000L, 0.8033729538397475D, 4124750.0D, 1.412475E7D, 10879.75D, -4124750.0D, 4124750.0D},
-    };
-
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      String query =
-          "SELECT sin(sum(s0)), sum(s0), sum(s0)+10000000, ((avg(s2)-1000) * 3 + 11) / 2, -sum(s0), sum(s0) "
-              + "FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 9000 GROUP BY([0, 9000), 1s)";
-      boolean hasResultSet = statement.execute(query);
-
-      Assert.assertTrue(hasResultSet);
-      int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        while (resultSet.next()) {
-          Assert.assertEquals((long) retArray[cnt][0], resultSet.getLong(TIMESTAMP_STR));
-          for (int i = 2; i <= 7; i++) {
-            if (retArray[cnt][1] == null) {
-              Assert.assertNull(resultSet.getMetaData().getColumnName(i), resultSet.getObject(i));
-            } else {
-              Assert.assertEquals(
-                  resultSet.getMetaData().getColumnName(i),
-                  (double) retArray[cnt][i - 1],
-                  resultSet.getDouble(i),
-                  E);
-            }
-          }
-          cnt++;
-        }
-      }
-      Assert.assertEquals(retArray.length, cnt);
-      // keep the correctness of `order by time desc`
-      hasResultSet = statement.execute(query + " ORDER BY TIME DESC");
-
-      Assert.assertTrue(hasResultSet);
-      cnt = retArray.length;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        while (resultSet.next()) {
-          cnt--;
-          Assert.assertEquals((long) retArray[cnt][0], resultSet.getLong(TIMESTAMP_STR));
-          for (int i = 2; i <= 7; i++) {
-            if (retArray[cnt][1] == null) {
-              Assert.assertNull(resultSet.getMetaData().getColumnName(i), resultSet.getObject(i));
-            } else {
-              Assert.assertEquals(
-                  resultSet.getMetaData().getColumnName(i),
-                  (double) retArray[cnt][i - 1],
-                  resultSet.getDouble(i),
-                  E);
-            }
-          }
-        }
-      }
-      Assert.assertEquals(0, cnt);
-
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void complexExpressionWithGroupByTimeWithValueFilterTest() {
-    Object[][] retArray = {
-      {0L, null, null, null, null, null, null},
-      {1000L, null, null, null, null, null, null},
-      {2000L, null, null, null, null, null, null},
-      {3000L, null, null, null, null, null, null},
-      {4000L, null, null, null, null, null, null},
-      {5000L, null, null, null, null, null, null},
-      {6000L, -0.32466497009092804D, 6499500.0D, 1.64995E7D, 8254.75D, -6499500.0D, 6499500.0D},
-      {7000L, -0.6648173658103295D, 3874750.0D, 1.387475E7D, 10129.75D, -3874750.0D, 3874750.0D},
-      {8000L, 0.8033729538397475D, 4124750.0D, 1.412475E7D, 10879.75D, -4124750.0D, 4124750.0D},
-    };
-
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      String query =
-          "SELECT sin(sum(s0)), sum(s0), sum(s0)+10000000, ((avg(s2)-1000) * 3 + 11) / 2, -sum(s0), sum(s0) "
-              + "FROM root.vehicle.d0 WHERE s0 >= 6000 AND s0 <= 9000 GROUP BY([0, 9000), 1s)";
-      boolean hasResultSet = statement.execute(query);
-
-      Assert.assertTrue(hasResultSet);
-      int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        while (resultSet.next()) {
-          Assert.assertEquals((long) retArray[cnt][0], resultSet.getLong(TIMESTAMP_STR));
-          for (int i = 2; i <= 7; i++) {
-            if (retArray[cnt][1] == null) {
-              Assert.assertNull(resultSet.getMetaData().getColumnName(i), resultSet.getObject(i));
-            } else {
-              Assert.assertEquals(
-                  resultSet.getMetaData().getColumnName(i),
-                  (double) retArray[cnt][i - 1],
-                  resultSet.getDouble(i),
-                  E);
-            }
-          }
-          cnt++;
-        }
-      }
-      Assert.assertEquals(retArray.length, cnt);
-      // keep the correctness of `order by time desc`
-      hasResultSet = statement.execute(query + " ORDER BY TIME DESC");
-
-      Assert.assertTrue(hasResultSet);
-      cnt = retArray.length;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        while (resultSet.next()) {
-          cnt--;
-          Assert.assertEquals((long) retArray[cnt][0], resultSet.getLong(TIMESTAMP_STR));
-          for (int i = 2; i <= 7; i++) {
-            if (retArray[cnt][1] == null) {
-              Assert.assertNull(resultSet.getMetaData().getColumnName(i), resultSet.getObject(i));
-            } else {
-              Assert.assertEquals(
-                  resultSet.getMetaData().getColumnName(i),
-                  (double) retArray[cnt][i - 1],
-                  resultSet.getDouble(i),
-                  E);
-            }
-          }
-        }
-      }
-      Assert.assertEquals(0, cnt);
-
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  // test clause 'with null'
-  @Test
-  public void withNullClauseTest() {
-    Object[][] retArray1 = {
-      {10L, 11.0, 11.0, 3.0},
-      {20L, 21.0, 21.0, 3.0},
-      {30L, 31.0, 31.0, 3.0},
-      {40L, 41.0, 41.0, 3.0},
-      {50L, 51.0, 51.0, 3.0},
-      {60L, 61.0, 61.0, 3.0},
-      {70L, 71.0, 71.0, 3.0},
-      {80L, null, null, 1.0},
-      {90L, null, null, 1.0},
-    };
-
-    Object[][] retArray2 = {
-      {10L, 11.0, 11.0, 3.0},
-      {20L, 21.0, 21.0, 3.0},
-      {30L, 31.0, 31.0, 3.0},
-      {40L, 41.0, 41.0, 3.0},
-      {50L, 51.0, 51.0, 3.0},
-      {60L, 61.0, 61.0, 3.0},
-      {70L, 71.0, 71.0, 3.0},
-    };
-
-    Object[][] retArray3 = {
-      {10L, 11.0, 11.0},
-      {20L, 21.0, 21.0},
-      {30L, 31.0, 31.0},
-      {40L, 41.0, 41.0},
-      {50L, 51.0, 51.0},
-      {60L, 61.0, 61.0},
-      {70L, 71.0, 71.0},
-    };
-
-    // query without 'without null'
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      String query =
-          "SELECT avg(a)+1, 1+sum(a),count(a)*2+1 FROM root.st GROUP BY([10, 100), 10ms)";
-      boolean hasResultSet = statement.execute(query);
-
-      Assert.assertTrue(hasResultSet);
-      int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        while (resultSet.next()) {
-          Assert.assertEquals((long) retArray1[cnt][0], resultSet.getLong(TIMESTAMP_STR));
-          for (int i = 2; i <= 4; ++i) {
-            if (retArray1[cnt][i - 1] == null) {
-              Assert.assertNull(resultSet.getMetaData().getColumnName(i), resultSet.getObject(i));
-            } else {
-              Assert.assertEquals(
-                  resultSet.getMetaData().getColumnName(i),
-                  (double) retArray1[cnt][i - 1],
-                  resultSet.getDouble(i),
-                  E);
-            }
-          }
-          cnt++;
-        }
-      }
-      Assert.assertEquals(retArray1.length, cnt);
-
-      // query without 'without null any'
-      hasResultSet = statement.execute(query + " WITHOUT NULL ANY");
-      Assert.assertTrue(hasResultSet);
-      cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        while (resultSet.next()) {
-          Assert.assertEquals((long) retArray2[cnt][0], resultSet.getLong(TIMESTAMP_STR));
-          for (int i = 2; i <= 4; ++i) {
-            if (retArray1[cnt][i - 1] == null) {
-              Assert.assertNull(resultSet.getMetaData().getColumnName(i), resultSet.getObject(i));
-            } else {
-              Assert.assertEquals(
-                  resultSet.getMetaData().getColumnName(i),
-                  (double) retArray2[cnt][i - 1],
-                  resultSet.getDouble(i),
-                  E);
-            }
-          }
-          cnt++;
-        }
-      }
-      Assert.assertEquals(retArray2.length, cnt);
-
-      // query without 'without null all'
-      query =
-          "SELECT avg(a) + 1, count(a) + avg(a) FROM root.st GROUP BY([10, 100), 10ms) WITHOUT NULL ALL";
-      hasResultSet = statement.execute(query);
-      Assert.assertTrue(hasResultSet);
-      cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        while (resultSet.next()) {
-          Assert.assertEquals((long) retArray3[cnt][0], resultSet.getLong(TIMESTAMP_STR));
-          for (int i = 2; i <= 3; ++i) {
-            if (retArray1[cnt][i - 1] == null) {
-              Assert.assertNull(resultSet.getMetaData().getColumnName(i), resultSet.getObject(i));
-            } else {
-              Assert.assertEquals(
-                  resultSet.getMetaData().getColumnName(i),
-                  (double) retArray3[cnt][i - 1],
-                  resultSet.getDouble(i),
-                  E);
-            }
-          }
-          cnt++;
-        }
-      }
-      Assert.assertEquals(retArray3.length, cnt);
-
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-  // test whether row number is right with function count()'
-  @Test
-  public void rowNumberWithFunctionCountTest() {
-    Object[][] retArray1 = {
-      {10L, 11.0, 11.0, 3.0},
-      {20L, 21.0, 21.0, 3.0},
-      {30L, 31.0, 31.0, 3.0},
-      {40L, 41.0, 41.0, 3.0},
-      {50L, 51.0, 51.0, 3.0},
-      {60L, 61.0, 61.0, 3.0},
-      {70L, 71.0, 71.0, 3.0},
-      {80L, null, null, 1.0},
-      {90L, null, null, 1.0},
-    };
-
-    Object[][] retArray2 = {
-      {10L, 11.0},
-      {20L, 21.0},
-      {30L, 31.0},
-      {40L, 41.0},
-      {50L, 51.0},
-      {60L, 61.0},
-      {70L, 71.0},
-      {80L, null},
-      {90L, null},
-    };
-
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      // multi columns
-      String query =
-          "SELECT avg(a)+1, count(a)+avg(a),count(a)*2+1 FROM root.st GROUP BY([10, 100), 10ms)";
-      boolean hasResultSet = statement.execute(query);
-
-      Assert.assertTrue(hasResultSet);
-      int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        while (resultSet.next()) {
-          Assert.assertEquals((long) retArray1[cnt][0], resultSet.getLong(TIMESTAMP_STR));
-          for (int i = 2; i <= 4; ++i) {
-            if (retArray1[cnt][i - 1] == null) {
-              Assert.assertNull(resultSet.getMetaData().getColumnName(i), resultSet.getObject(i));
-            } else {
-              Assert.assertEquals(
-                  resultSet.getMetaData().getColumnName(i),
-                  (double) retArray1[cnt][i - 1],
-                  resultSet.getDouble(i),
-                  E);
-            }
-          }
-          cnt++;
-        }
-      }
-      // row num should be 9 instead of 7.
-      Assert.assertEquals(retArray1.length, cnt);
-
-      // only one column
-      query = "SELECT count(a)+avg(a)" + "FROM root.st GROUP BY([10, 100), 10ms)";
-      hasResultSet = statement.execute(query);
-
-      Assert.assertTrue(hasResultSet);
-      cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        while (resultSet.next()) {
-          Assert.assertEquals((long) retArray2[cnt][0], resultSet.getLong(TIMESTAMP_STR));
-          for (int i = 2; i <= 2; ++i) {
-            if (retArray2[cnt][i - 1] == null) {
-              Assert.assertNull(resultSet.getMetaData().getColumnName(i), resultSet.getObject(i));
-            } else {
-              Assert.assertEquals(
-                  resultSet.getMetaData().getColumnName(i),
-                  (double) retArray2[cnt][i - 1],
-                  resultSet.getDouble(i),
-                  E);
-            }
-          }
-          cnt++;
-        }
-      }
-      Assert.assertEquals(retArray2.length, cnt);
-
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  private static void prepareData() {
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-
-      for (String sql : creationSqls) {
-        statement.execute(sql);
-      }
-
-      // prepare BufferWrite file
-      for (int i = 5000; i < 7000; i++) {
-        statement.execute(
-            String.format(
-                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + "'", "true"));
-      }
-      statement.execute("FLUSH");
-      for (int i = 7500; i < 8500; i++) {
-        statement.execute(
-            String.format(
-                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + "'", "false"));
-      }
-      statement.execute("FLUSH");
-      // prepare Unseq-File
-      for (int i = 500; i < 1500; i++) {
-        statement.execute(
-            String.format(
-                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + "'", "true"));
-      }
-      statement.execute("FLUSH");
-      for (int i = 3000; i < 6500; i++) {
-        statement.execute(
-            String.format(
-                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + "'", "false"));
-      }
-      statement.execute("merge");
-
-      // prepare BufferWrite cache
-      for (int i = 9000; i < 10000; i++) {
-        statement.execute(
-            String.format(
-                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + "'", "true"));
-      }
-      // prepare Overflow cache
-      for (int i = 2000; i < 2500; i++) {
-        statement.execute(
-            String.format(
-                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + "'", "false"));
-      }
-
-      for (String sql : dataSet3) {
-        statement.execute(sql);
-      }
-
-      for (String sql : dataSet2) {
-        statement.execute(sql);
-      }
-
-      for (String sql : dataSet4) {
-        statement.execute(sql);
-      }
-
-      for (String sql : dataSet5) {
-        statement.execute(sql);
-      }
-
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-  }
-}
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBUserDefinedAggregationFunctionIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBUserDefinedAggregationFunctionIT.java
deleted file mode 100644
index 39b0faec33..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/aggregation/IoTDBUserDefinedAggregationFunctionIT.java
+++ /dev/null
@@ -1,732 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.iotdb.db.integration.aggregation;
-
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.jdbc.Config;
-
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.Statement;
-import java.util.Locale;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.fail;
-
-public class IoTDBUserDefinedAggregationFunctionIT {
-
-  private static final double DETLA = 1e-6;
-  private static final String TIMESTAMP_STR = "Time";
-  private static final String TEMPERATURE_STR = "root.ln.wf01.wt01.temperature";
-
-  private static String[] creationSqls =
-      new String[] {
-        "CREATE DATABASE root.vehicle.d0",
-        "CREATE DATABASE root.vehicle.d1",
-        "CREATE TIMESERIES root.vehicle.d0.s0 WITH DATATYPE=INT32, ENCODING=RLE",
-        "CREATE TIMESERIES root.vehicle.d0.s1 WITH DATATYPE=INT64, ENCODING=RLE",
-        "CREATE TIMESERIES root.vehicle.d0.s2 WITH DATATYPE=FLOAT, ENCODING=RLE",
-        "CREATE TIMESERIES root.vehicle.d0.s3 WITH DATATYPE=TEXT, ENCODING=PLAIN",
-        "CREATE TIMESERIES root.vehicle.d0.s4 WITH DATATYPE=BOOLEAN, ENCODING=PLAIN"
-      };
-  private static String[] dataSet2 =
-      new String[] {
-        "CREATE DATABASE root.ln.wf01.wt01",
-        "CREATE TIMESERIES root.ln.wf01.wt01.status WITH DATATYPE=BOOLEAN, ENCODING=PLAIN",
-        "CREATE TIMESERIES root.ln.wf01.wt01.temperature WITH DATATYPE=FLOAT, ENCODING=PLAIN",
-        "CREATE TIMESERIES root.ln.wf01.wt01.hardware WITH DATATYPE=INT32, ENCODING=PLAIN",
-        "INSERT INTO root.ln.wf01.wt01(timestamp,temperature,status, hardware) "
-            + "values(1, 1.1, false, 11)",
-        "INSERT INTO root.ln.wf01.wt01(timestamp,temperature,status, hardware) "
-            + "values(2, 2.2, true, 22)",
-        "INSERT INTO root.ln.wf01.wt01(timestamp,temperature,status, hardware) "
-            + "values(3, 3.3, false, 33 )",
-        "INSERT INTO root.ln.wf01.wt01(timestamp,temperature,status, hardware) "
-            + "values(4, 4.4, false, 44)",
-        "INSERT INTO root.ln.wf01.wt01(timestamp,temperature,status, hardware) "
-            + "values(5, 5.5, false, 55)"
-      };
-  private static String[] dataSet3 =
-      new String[] {
-        "CREATE DATABASE root.sg",
-        "CREATE TIMESERIES root.sg.d1.s1 WITH DATATYPE=INT32, ENCODING=RLE",
-        "insert into root.sg.d1(timestamp,s1) values(5,5)",
-        "insert into root.sg.d1(timestamp,s1) values(12,12)",
-        "flush",
-        "insert into root.sg.d1(timestamp,s1) values(15,15)",
-        "insert into root.sg.d1(timestamp,s1) values(25,25)",
-        "flush",
-        "insert into root.sg.d1(timestamp,s1) values(1,111)",
-        "insert into root.sg.d1(timestamp,s1) values(20,200)",
-        "flush"
-      };
-  private final String d0s0 = "root.vehicle.d0.s0";
-  private final String d0s1 = "root.vehicle.d0.s1";
-  private final String d0s2 = "root.vehicle.d0.s2";
-  private final String d0s3 = "root.vehicle.d0.s3";
-  private static final String insertTemplate =
-      "INSERT INTO root.vehicle.d0(timestamp,s0,s1,s2,s3,s4)" + " VALUES(%d,%d,%d,%f,%s,%s)";
-  private static long prevPartitionInterval =
-      IoTDBDescriptor.getInstance().getConfig().getTimePartitionInterval();
-
-  @BeforeClass
-  public static void setUp() throws Exception {
-    IoTDBDescriptor.getInstance().getConfig().setTimePartitionInterval(1000000);
-    EnvironmentUtils.envSetUp();
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    prepareData();
-  }
-
-  @AfterClass
-  public static void tearDown() throws Exception {
-    EnvironmentUtils.cleanEnv();
-    IoTDBDescriptor.getInstance().getConfig().setTimePartitionInterval(prevPartitionInterval);
-  }
-
-  // add test for part of points in page don't satisfy filter
-  // details in: https://issues.apache.org/jira/projects/IOTDB/issues/IOTDB-54
-  @Test
-  public void additionTest1() {
-    String[] retArray = new String[] {"0,3.0", "0,6.0,7.0", "0,4.0,6.0"};
-    try (Connection connection =
-            DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT count(temperature) + 1 FROM root.ln.wf01.wt01 WHERE hardware > 35");
-
-      Assert.assertTrue(hasResultSet);
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(1);
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(1, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "SELECT count(temperature) + 1 FROM root.ln.wf01.wt01 WHERE hardware > 35 order by time desc");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans = resultSet.getString(TIMESTAMP_STR) + "," + resultSet.getString(1);
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(1, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "SELECT count(temperature) + min_time(temperature), count(temperature) + max_time(temperature) FROM root.ln.wf01.wt01 WHERE time > 3");
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(1)
-                  + ","
-                  + Double.valueOf(resultSet.getString(2)).toString();
-          Assert.assertEquals(retArray[cnt], ans);
-        }
-        Assert.assertEquals(1, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "SELECT count(temperature) + min_time(temperature), count(temperature) + max_time(temperature) FROM root.ln.wf01.wt01 WHERE time > 3 order by time desc ");
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(1)
-                  + ","
-                  + resultSet.getString(2);
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(2, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "SELECT min_time(temperature), count(temperature) + min_time(temperature) FROM root.ln.wf01.wt01 WHERE time > 3");
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(1)
-                  + ","
-                  + resultSet.getString(2);
-          cnt++;
-        }
-        Assert.assertEquals(3, cnt);
-      }
-
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void addtionTest2() {
-    String[] retArray =
-        new String[] {
-          "0,2002.0,2003.0,2004.0,2005.0", "0,15000.0,7500,7500", "0,7500,15000.0,7500"
-        };
-    try (Connection connection =
-            DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT count(s0)+1,count(s1)+2,count(s2)+3,count(s3)+4 "
-                  + "FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 9000");
-
-      Assert.assertTrue(hasResultSet);
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(1)
-                  + ","
-                  + resultSet.getString(2)
-                  + ","
-                  + resultSet.getString(3)
-                  + ","
-                  + resultSet.getString(4);
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(1, cnt);
-      }
-      // keep the correctness of `order by time desc`
-      hasResultSet =
-          statement.execute(
-              "SELECT count(s0)+1,count(s1)+2,count(s2)+3,count(s3)+4 "
-                  + "FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 9000 order by time desc");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(1)
-                  + ","
-                  + resultSet.getString(2)
-                  + ","
-                  + resultSet.getString(3)
-                  + ","
-                  + resultSet.getString(4);
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(1, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "SELECT count(s0)+count(s1),count(s2),count(s3) " + "FROM root.vehicle.d0");
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 1;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(1)
-                  + ","
-                  + resultSet.getString(2)
-                  + ","
-                  + resultSet.getString(3);
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(2, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "SELECT count(s0)+count(s1),count(s2),count(s3) "
-                  + "FROM root.vehicle.d0 order by time desc");
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 1;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(1)
-                  + ","
-                  + resultSet.getString(2)
-                  + ","
-                  + resultSet.getString(3);
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(2, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "SELECT count(s0),count(s0)+count(s1),count(s2) " + "FROM root.vehicle.d0");
-
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 2;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(1)
-                  + ","
-                  + resultSet.getString(2)
-                  + ","
-                  + resultSet.getString(3);
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(3, cnt);
-      }
-
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void polyNominalWithFirstAndLastValueTest() {
-    String[] retArray = new String[] {"0,10001.0,2000"};
-    try (Connection connection =
-            DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT ((first_value(s0)+ last_value(s1))*2-first_value(s2)+2)/2, first_value(s1) "
-                  + "FROM root.vehicle.d0 WHERE time >= 1500 AND time <= 9000");
-      Assert.assertTrue(hasResultSet);
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(1)
-                  + ","
-                  + resultSet.getString(2);
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(1, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "SELECT ((first_value(s0)+ last_value(s1))*2-first_value(s2)+2)/2, first_value(s1) "
-                  + "FROM root.vehicle.d0 WHERE time >= 1500 AND time <= 9000 order by time desc");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(1)
-                  + ","
-                  + resultSet.getString(2);
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(1, cnt);
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void polyNominalWithMaxMinTimeTest() {
-    String[] retArray = new String[] {"0,500,0.0", "0,100.0,2499", "0,-100.0,-2499"};
-    try (Connection connection =
-            DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT min_time(s2),((max_time(s0)+min_time(s2))*2+2)%10 "
-                  + "FROM root.vehicle.d0 WHERE time >= 100 AND time < 9000");
-      Assert.assertTrue(hasResultSet);
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(1)
-                  + ","
-                  + resultSet.getString(2);
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(1, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "SELECT min_time(s2),((max_time(s0)+min_time(s2))*2+2)%10 "
-                  + "FROM root.vehicle.d0 WHERE time >= 100 AND time < 9000 order by time desc");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(1)
-                  + ","
-                  + resultSet.getString(2);
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(1, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "SELECT ((max_time(s0)-min_time(s2))+1)/5,max_time(s0) "
-                  + "FROM root.vehicle.d0 WHERE time <= 2500 AND time > 1800");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 1;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(1)
-                  + ","
-                  + resultSet.getString(2);
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(2, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "SELECT ((max_time(s0)-min_time(s2))+1)/5,max_time(s0) "
-                  + "FROM root.vehicle.d0 WHERE time <= 2500 AND time > 1800 order by time desc");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 1;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(1)
-                  + ","
-                  + resultSet.getString(2);
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(2, cnt);
-      }
-      hasResultSet =
-          statement.execute(
-              "SELECT -((max_time(s0)-min_time(s2))+1)/5,-max_time(s0) "
-                  + "FROM root.vehicle.d0 WHERE time <= 2500 AND time > 1800");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 2;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(1)
-                  + ","
-                  + resultSet.getString(2);
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(3, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "SELECT -((max_time(s0)-min_time(s2))+1)/5,-max_time(s0) "
-                  + "FROM root.vehicle.d0 WHERE time <= 2500 AND time > 1800 order by time desc");
-      Assert.assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 2;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(1)
-                  + ","
-                  + resultSet.getString(2);
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(3, cnt);
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void polynominalWithAvgAndSumTest() {
-    double[][] retArray = {
-      {0.0, 2.4508E7, 6250.374812593702},
-      {0.0, 626750.0, 1250.9980039920158}
-    };
-
-    try (Connection connection =
-            DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute(
-              "SELECT sum(s0)+10000000,avg(s2)-1000 FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 9000");
-
-      Assert.assertTrue(hasResultSet);
-      int cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        while (resultSet.next()) {
-          double[] ans = new double[3];
-          ans[0] = Double.valueOf(resultSet.getString(TIMESTAMP_STR));
-          ans[1] = Double.valueOf(resultSet.getString(1));
-          ans[2] = Double.valueOf(resultSet.getString(2));
-          assertArrayEquals(retArray[cnt], ans, DETLA);
-          cnt++;
-        }
-        Assert.assertEquals(1, cnt);
-      }
-      // keep the correctness of `order by time desc`
-      hasResultSet =
-          statement.execute(
-              "SELECT sum(s0)+10000000,avg(s2)-1000 FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 9000 order by time desc");
-
-      Assert.assertTrue(hasResultSet);
-      cnt = 0;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        while (resultSet.next()) {
-          double[] ans = new double[3];
-          ans[0] = Double.valueOf(resultSet.getString(TIMESTAMP_STR));
-          ans[1] = Double.valueOf(resultSet.getString(1));
-          ans[2] = Double.valueOf(resultSet.getString(2));
-          assertArrayEquals(retArray[cnt], ans, DETLA);
-          cnt++;
-        }
-        Assert.assertEquals(1, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "SELECT (sum(s0)+15)-3*5,avg(s2) FROM root.vehicle.d0 WHERE time >= 1000 AND time <= 2000");
-      Assert.assertTrue(hasResultSet);
-      cnt = 1;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        while (resultSet.next()) {
-          double[] ans = new double[3];
-          ans[0] = Double.valueOf(resultSet.getString(TIMESTAMP_STR));
-          ans[1] = Double.valueOf(resultSet.getString(1));
-          ans[2] = Double.valueOf(resultSet.getString(2));
-          assertArrayEquals(retArray[cnt], ans, DETLA);
-          cnt++;
-        }
-        Assert.assertEquals(2, cnt);
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void avgSumErrorTest() {
-    try (Connection connection =
-            DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      try {
-        statement.execute(
-            "SELECT avg(s3)+1 FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 9000");
-        try (ResultSet resultSet = statement.getResultSet()) {
-          resultSet.next();
-          fail();
-        }
-      } catch (Exception e) {
-        Assert.assertTrue(
-            e.getMessage()
-                .contains(
-                    "Aggregate functions [AVG, SUM, EXTREME, MIN_VALUE, MAX_VALUE] only support numeric data types [INT32, INT64, FLOAT, DOUBLE]"));
-      }
-      try {
-        statement.execute(
-            "SELECT sum(s3)+1 FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 9000");
-        try (ResultSet resultSet = statement.getResultSet()) {
-          resultSet.next();
-          fail();
-        }
-      } catch (Exception e) {
-        Assert.assertTrue(
-            e.getMessage()
-                .contains(
-                    "Aggregate functions [AVG, SUM, EXTREME, MIN_VALUE, MAX_VALUE] only support numeric data types [INT32, INT64, FLOAT, DOUBLE]"));
-      }
-      try {
-        statement.execute(
-            "SELECT avg(s4)+1 FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 9000");
-        try (ResultSet resultSet = statement.getResultSet()) {
-          resultSet.next();
-          fail();
-        }
-      } catch (Exception e) {
-        Assert.assertTrue(
-            e.getMessage()
-                .contains(
-                    "Aggregate functions [AVG, SUM, EXTREME, MIN_VALUE, MAX_VALUE] only support numeric data types [INT32, INT64, FLOAT, DOUBLE]"));
-      }
-      try {
-        statement.execute(
-            "SELECT sum(s4)+1 FROM root.vehicle.d0 WHERE time >= 6000 AND time <= 9000");
-        try (ResultSet resultSet = statement.getResultSet()) {
-          resultSet.next();
-          fail();
-        }
-      } catch (Exception e) {
-        Assert.assertTrue(
-            e.getMessage()
-                .contains(
-                    "Aggregate functions [AVG, SUM, EXTREME, MIN_VALUE, MAX_VALUE] only support numeric data types [INT32, INT64, FLOAT, DOUBLE]"));
-      }
-      try {
-        statement.execute("SELECT avg(status)+2 FROM root.ln.wf01.wt01");
-        try (ResultSet resultSet = statement.getResultSet()) {
-          resultSet.next();
-          fail();
-        }
-      } catch (Exception e) {
-        Assert.assertTrue(
-            e.getMessage()
-                .contains(
-                    "Aggregate functions [AVG, SUM, EXTREME, MIN_VALUE, MAX_VALUE] only support numeric data types [INT32, INT64, FLOAT, DOUBLE]"));
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  private static void prepareData() {
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      for (String sql : creationSqls) {
-        statement.execute(sql);
-      }
-
-      // prepare BufferWrite file
-      for (int i = 5000; i < 7000; i++) {
-        statement.execute(
-            String.format(
-                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + "'", "true"));
-      }
-      statement.execute("FLUSH");
-      for (int i = 7500; i < 8500; i++) {
-        statement.execute(
-            String.format(
-                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + "'", "false"));
-      }
-      statement.execute("FLUSH");
-      // prepare Unseq-File
-      for (int i = 500; i < 1500; i++) {
-        statement.execute(
-            String.format(
-                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + "'", "true"));
-      }
-      statement.execute("FLUSH");
-      for (int i = 3000; i < 6500; i++) {
-        statement.execute(
-            String.format(
-                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + "'", "false"));
-      }
-      statement.execute("merge");
-
-      // prepare BufferWrite cache
-      for (int i = 9000; i < 10000; i++) {
-        statement.execute(
-            String.format(
-                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + "'", "true"));
-      }
-      // prepare Overflow cache
-      for (int i = 2000; i < 2500; i++) {
-        statement.execute(
-            String.format(
-                Locale.ENGLISH, insertTemplate, i, i, i, (double) i, "'" + i + "'", "false"));
-      }
-
-      for (String sql : dataSet3) {
-        statement.execute(sql);
-      }
-
-      for (String sql : dataSet2) {
-        statement.execute(sql);
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-  }
-}
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/AlignedWriteUtil.java b/integration/src/test/java/org/apache/iotdb/db/integration/aligned/AlignedWriteUtil.java
deleted file mode 100644
index a19ab2597e..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/AlignedWriteUtil.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.integration.aligned;
-
-import org.apache.iotdb.jdbc.Config;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.Statement;
-
-/**
- * This class generates data for test cases in aligned time series scenarios.
- *
- * <p>You can comprehensively view the generated data in the following online doc:
- *
- * <p>https://docs.google.com/spreadsheets/d/1kfrSR1_paSd9B1Z0jnPBD3WQIMDslDuNm4R0mpWx9Ms/edit?usp=sharing
- */
-public class AlignedWriteUtil {
-
-  private static final String[] sqls =
-      new String[] {
-        "CREATE DATABASE root.sg1",
-        "create aligned timeseries root.sg1.d1(s1 FLOAT encoding=RLE, s2 INT32 encoding=Gorilla compression=SNAPPY, s3 INT64, s4 BOOLEAN, s5 TEXT)",
-        "create timeseries root.sg1.d2.s1 WITH DATATYPE=FLOAT, encoding=RLE",
-        "create timeseries root.sg1.d2.s2 WITH DATATYPE=INT32, encoding=Gorilla",
-        "create timeseries root.sg1.d2.s3 WITH DATATYPE=INT64",
-        "create timeseries root.sg1.d2.s4 WITH DATATYPE=BOOLEAN",
-        "create timeseries root.sg1.d2.s5 WITH DATATYPE=TEXT",
-        "insert into root.sg1.d1(time, s1, s2, s3, s4, s5) aligned values(1, 1.0, 1, 1, TRUE, 'aligned_test1')",
-        "insert into root.sg1.d1(time, s1, s2, s3, s5) aligned values(2, 2.0, 2, 2, 'aligned_test2')",
-        "insert into root.sg1.d1(time, s1, s3, s4, s5) aligned values(3, 3.0, 3, FALSE, 'aligned_test3')",
-        "insert into root.sg1.d1(time, s1, s2, s4, s5) aligned values(4, 4.0, 4, TRUE, 'aligned_test4')",
-        "insert into root.sg1.d1(time, s1, s2, s4, s5) aligned values(5, 5.0, 5, TRUE, 'aligned_test5')",
-        "insert into root.sg1.d1(time, s1, s2, s3, s4) aligned values(6, 6.0, 6, 6, TRUE)",
-        "insert into root.sg1.d1(time, s1, s2, s3, s4, s5) aligned values(7, 7.0, 7, 7, FALSE, 'aligned_test7')",
-        "insert into root.sg1.d1(time, s1, s2, s3, s5) aligned values(8, 8.0, 8, 8, 'aligned_test8')",
-        "insert into root.sg1.d1(time, s1, s2, s3, s4, s5) aligned values(9, 9.0, 9, 9, FALSE, 'aligned_test9')",
-        "insert into root.sg1.d1(time, s2, s3, s4, s5) aligned values(10, 10, 10, TRUE, 'aligned_test10')",
-        "insert into root.sg1.d2(time, s1, s2, s3, s4, s5) values(1, 1.0, 1, 1, TRUE, 'non_aligned_test1')",
-        "insert into root.sg1.d2(time, s1, s2, s3, s5) values(2, 2.0, 2, 2, 'non_aligned_test2')",
-        "insert into root.sg1.d2(time, s1, s3, s4, s5) values(3, 3.0, 3, FALSE, 'non_aligned_test3')",
-        "insert into root.sg1.d2(time, s1, s2, s4, s5) values(4, 4.0, 4, TRUE, 'non_aligned_test4')",
-        "insert into root.sg1.d2(time, s1, s2, s4, s5) values(5, 5.0, 5, TRUE, 'non_aligned_test5')",
-        "insert into root.sg1.d2(time, s1, s2, s3, s4) values(6, 6.0, 6, 6, TRUE)",
-        "insert into root.sg1.d2(time, s1, s2, s3, s4, s5) values(7, 7.0, 7, 7, FALSE, 'non_aligned_test7')",
-        "insert into root.sg1.d2(time, s1, s2, s3, s5) values(8, 8.0, 8, 8, 'non_aligned_test8')",
-        "insert into root.sg1.d2(time, s1, s2, s3, s4, s5) values(9, 9.0, 9, 9, FALSE, 'non_aligned_test9')",
-        "insert into root.sg1.d2(time, s2, s3, s4, s5) values(10, 10, 10, TRUE, 'non_aligned_test10')",
-        "flush",
-        "insert into root.sg1.d1(time, s1, s3, s4, s5) aligned values(3, 30000.0, 30000, TRUE, 'aligned_unseq_test3')",
-        "insert into root.sg1.d1(time, s1, s2, s3) aligned values(11, 11.0, 11, 11)",
-        "insert into root.sg1.d1(time, s1, s2, s3) aligned values(12, 12.0, 12, 12)",
-        "insert into root.sg1.d1(time, s1, s2, s3) aligned values(13, 13.0, 13, 13)",
-        "insert into root.sg1.d1(time, s1, s2, s3) aligned values(14, 14.0, 14, 14)",
-        "insert into root.sg1.d1(time, s1, s2, s3) aligned values(15, 15.0, 15, 15)",
-        "insert into root.sg1.d1(time, s1, s2, s3) aligned values(16, 16.0, 16, 16)",
-        "insert into root.sg1.d1(time, s1, s2, s3) aligned values(17, 17.0, 17, 17)",
-        "insert into root.sg1.d1(time, s1, s2, s3) aligned values(18, 18.0, 18, 18)",
-        "insert into root.sg1.d1(time, s1, s2, s3) aligned values(19, 19.0, 19, 19)",
-        "insert into root.sg1.d1(time, s1, s2, s3) aligned values(20, 20.0, 20, 20)",
-        "insert into root.sg1.d2(time, s1, s2, s3) values(11, 11.0, 11, 11)",
-        "insert into root.sg1.d2(time, s1, s2, s3) values(12, 12.0, 12, 12)",
-        "insert into root.sg1.d2(time, s1, s2, s3) values(13, 13.0, 13, 13)",
-        "insert into root.sg1.d2(time, s1, s2, s3) values(14, 14.0, 14, 14)",
-        "insert into root.sg1.d2(time, s1, s2, s3) values(15, 15.0, 15, 15)",
-        "insert into root.sg1.d2(time, s1, s2, s3) values(16, 16.0, 16, 16)",
-        "insert into root.sg1.d2(time, s1, s2, s3) values(17, 17.0, 17, 17)",
-        "insert into root.sg1.d2(time, s1, s2, s3) values(18, 18.0, 18, 18)",
-        "insert into root.sg1.d2(time, s1, s2, s3) values(19, 19.0, 19, 19)",
-        "insert into root.sg1.d2(time, s1, s2, s3) values(20, 20.0, 20, 20)",
-        "flush",
-        "insert into root.sg1.d1(time, s1, s2, s3, s4, s5) aligned values(13, 130000.0, 130000, 130000, TRUE, 'aligned_unseq_test13')",
-        "insert into root.sg1.d1(time, s3, s4) aligned values(21, 21, TRUE)",
-        "insert into root.sg1.d1(time, s3, s4) aligned values(22, 22, TRUE)",
-        "insert into root.sg1.d1(time, s3, s4) aligned values(23, 23, TRUE)",
-        "insert into root.sg1.d1(time, s3, s4) aligned values(24, 24, TRUE)",
-        "insert into root.sg1.d1(time, s3, s4) aligned values(25, 25, TRUE)",
-        "insert into root.sg1.d1(time, s3, s4) aligned values(26, 26, FALSE)",
-        "insert into root.sg1.d1(time, s3, s4) aligned values(27, 27, FALSE)",
-        "insert into root.sg1.d1(time, s3, s4) aligned values(28, 28, FALSE)",
-        "insert into root.sg1.d1(time, s3, s4) aligned values(29, 29, FALSE)",
-        "insert into root.sg1.d1(time, s3, s4) aligned values(30, 30, FALSE)",
-        "insert into root.sg1.d2(time, s3, s4) values(21, 21, TRUE)",
-        "insert into root.sg1.d2(time, s3, s4) values(22, 22, TRUE)",
-        "insert into root.sg1.d2(time, s3, s4) values(23, 23, TRUE)",
-        "insert into root.sg1.d2(time, s3, s4) values(24, 24, TRUE)",
-        "insert into root.sg1.d2(time, s3, s4) values(25, 25, TRUE)",
-        "insert into root.sg1.d2(time, s3, s4) values(26, 26, FALSE)",
-        "insert into root.sg1.d2(time, s3, s4) values(27, 27, FALSE)",
-        "insert into root.sg1.d2(time, s3, s4) values(28, 28, FALSE)",
-        "insert into root.sg1.d2(time, s3, s4) values(29, 29, FALSE)",
-        "insert into root.sg1.d2(time, s3, s4) values(30, 30, FALSE)",
-        "flush",
-        "insert into root.sg1.d1(time, s1, s3, s4) aligned values(23, 230000.0, 230000, FALSE)",
-        "insert into root.sg1.d1(time, s2, s5) aligned values(31, 31, 'aligned_test31')",
-        "insert into root.sg1.d1(time, s2, s5) aligned values(32, 32, 'aligned_test32')",
-        "insert into root.sg1.d1(time, s2, s5) aligned values(33, 33, 'aligned_test33')",
-        "insert into root.sg1.d1(time, s2, s5) aligned values(34, 34, 'aligned_test34')",
-        "insert into root.sg1.d1(time, s2, s5) aligned values(35, 35, 'aligned_test35')",
-        "insert into root.sg1.d1(time, s2, s5) aligned values(36, 36, 'aligned_test36')",
-        "insert into root.sg1.d1(time, s2, s5) aligned values(37, 37, 'aligned_test37')",
-        "insert into root.sg1.d1(time, s2, s5) aligned values(38, 38, 'aligned_test38')",
-        "insert into root.sg1.d1(time, s2, s5) aligned values(39, 39, 'aligned_test39')",
-        "insert into root.sg1.d1(time, s2, s5) aligned values(40, 40, 'aligned_test40')",
-        "insert into root.sg1.d2(time, s2, s5) values(31, 31, 'non_aligned_test31')",
-        "insert into root.sg1.d2(time, s2, s5) values(32, 32, 'non_aligned_test32')",
-        "insert into root.sg1.d2(time, s2, s5) values(33, 33, 'non_aligned_test33')",
-        "insert into root.sg1.d2(time, s2, s5) values(34, 34, 'non_aligned_test34')",
-        "insert into root.sg1.d2(time, s2, s5) values(35, 35, 'non_aligned_test35')",
-        "insert into root.sg1.d2(time, s2, s5) values(36, 36, 'non_aligned_test36')",
-        "insert into root.sg1.d2(time, s2, s5) values(37, 37, 'non_aligned_test37')",
-        "insert into root.sg1.d2(time, s2, s5) values(38, 38, 'non_aligned_test38')",
-        "insert into root.sg1.d2(time, s2, s5) values(39, 39, 'non_aligned_test39')",
-        "insert into root.sg1.d2(time, s2, s5) values(40, 40, 'non_aligned_test40')",
-      };
-
-  public static void insertData() throws ClassNotFoundException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      // create aligned and non-aligned time series
-      for (String sql : sqls) {
-        statement.execute(sql);
-      }
-
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-  }
-}
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBEmptyDataIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBEmptyDataIT.java
deleted file mode 100644
index 269f0af6fd..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBEmptyDataIT.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.integration.aligned;
-
-import org.apache.iotdb.integration.env.EnvFactory;
-import org.apache.iotdb.itbase.category.ClusterTest;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-@Category({LocalStandaloneTest.class, ClusterTest.class})
-public class IoTDBEmptyDataIT {
-
-  @BeforeClass
-  public static void setUp() throws Exception {
-    EnvFactory.getEnv().initBeforeTest();
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-
-      statement.execute("create aligned timeseries root.sg.d1(s1 int32);");
-      statement.execute("insert into root.sg.d1(time, s1) aligned values(1400, null); ");
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-  }
-
-  @AfterClass
-  public static void tearDown() throws Exception {
-    EnvFactory.getEnv().cleanAfterTest();
-  }
-
-  @Test
-  public void selectAllAlignedWithoutValueFilterTest() {
-
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-
-      try (ResultSet resultSet = statement.executeQuery("select * from root.sg.d1")) {
-        int cnt = 0;
-        while (resultSet.next()) {
-          cnt++;
-        }
-        assertEquals(0, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-}
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBGroupByFillQueryBigDataIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBGroupByFillQueryBigDataIT.java
deleted file mode 100644
index 531800c53c..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBGroupByFillQueryBigDataIT.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.integration.aligned;
-
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.integration.env.ConfigFactory;
-import org.apache.iotdb.integration.env.EnvFactory;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-import org.apache.iotdb.jdbc.Config;
-
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-import static org.apache.iotdb.db.constant.TestConstant.avg;
-import static org.apache.iotdb.db.constant.TestConstant.sum;
-
-@Category({LocalStandaloneTest.class})
-public class IoTDBGroupByFillQueryBigDataIT {
-
-  private static final String[] sqls =
-      new String[] {
-        "CREATE DATABASE root.sg1",
-        "create aligned timeseries root.sg1.d1(s1 FLOAT encoding=RLE, s2 INT32 encoding=Gorilla compression=SNAPPY, s3 INT64)",
-        "create timeseries root.sg1.d2.s1 WITH DATATYPE=FLOAT, encoding=RLE",
-        "create timeseries root.sg1.d2.s2 WITH DATATYPE=INT32, encoding=Gorilla",
-        "create timeseries root.sg1.d2.s3 WITH DATATYPE=INT64",
-      };
-
-  protected static boolean enableSeqSpaceCompaction;
-  protected static boolean enableUnseqSpaceCompaction;
-  protected static boolean enableCrossSpaceCompaction;
-  protected static long prevPartitionInterval;
-
-  private static final String TIMESTAMP_STR = "Time";
-
-  @BeforeClass
-  public static void setUp() throws Exception {
-    EnvFactory.getEnv().initBeforeClass();
-    // TODO When the aligned time series support compaction, we need to set compaction to true
-    enableSeqSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableSeqSpaceCompaction();
-    enableUnseqSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableUnseqSpaceCompaction();
-    enableCrossSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableCrossSpaceCompaction();
-    prevPartitionInterval = IoTDBDescriptor.getInstance().getConfig().getTimePartitionInterval();
-    ConfigFactory.getConfig().setEnableSeqSpaceCompaction(false);
-    ConfigFactory.getConfig().setEnableUnseqSpaceCompaction(false);
-    ConfigFactory.getConfig().setEnableCrossSpaceCompaction(false);
-
-    // set group by fill cache size to 0.1 MB for testing ElasticSerializableTVList
-    IoTDBDescriptor.getInstance().getConfig().setGroupByFillCacheSizeInMB((float) 0.1);
-
-    insertData();
-  }
-
-  public static void insertData() throws ClassNotFoundException {
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-
-      // create aligned and non-aligned time series
-      for (String sql : sqls) {
-        statement.execute(sql);
-      }
-
-      // insert aligned and non-aligned data
-      for (int i = 0; i < 100000; i++) {
-        statement.execute(
-            String.format(
-                "insert into root.sg1.d1(time, s2, s3) aligned values(%d, %d, %d)", i, i, i));
-        statement.execute(
-            String.format("insert into root.sg1.d2(time, s2, s3) values(%d, %d, %d)", i, i, i));
-        if (i % 1000 == 0) {
-          statement.execute("flush");
-        }
-      }
-      statement.execute("insert into root.sg1.d1(time, s1) aligned values(0, 0)");
-      statement.execute("insert into root.sg1.d1(time, s1) aligned values(99999, 99999)");
-      statement.execute("insert into root.sg1.d2(time, s1) values(0, 0)");
-      statement.execute("insert into root.sg1.d2(time, s1) values(99999, 99999)");
-      statement.execute("flush");
-      // wait flush
-      Thread.sleep(100);
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-  }
-
-  @AfterClass
-  public static void tearDown() throws Exception {
-    ConfigFactory.getConfig().setEnableSeqSpaceCompaction(enableSeqSpaceCompaction);
-    ConfigFactory.getConfig().setEnableUnseqSpaceCompaction(enableUnseqSpaceCompaction);
-    ConfigFactory.getConfig().setEnableCrossSpaceCompaction(enableCrossSpaceCompaction);
-    ConfigFactory.getConfig().setPartitionInterval(prevPartitionInterval);
-    IoTDBDescriptor.getInstance().getConfig().setGroupByFillCacheSizeInMB((float) 1.0);
-    EnvFactory.getEnv().cleanAfterClass();
-  }
-
-  @Test
-  public void alignedBigDataLinearFillTest() throws SQLException {
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select avg(d1.s1), avg(d1.s2), avg(d1.s3), sum(d2.s1), sum(d2.s2), sum(d2.s3)  from root.sg1 "
-                  + "GROUP BY ([0, 100000), 1ms) FILL (linear)");
-      Assert.assertTrue(hasResultSet);
-
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(avg("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(avg("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(avg("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(sum("root.sg1.d2.s1"))
-                  + ","
-                  + resultSet.getString(sum("root.sg1.d2.s2"))
-                  + ","
-                  + resultSet.getString(sum("root.sg1.d2.s3"));
-          Assert.assertEquals(
-              String.format("%d,%d.0,%d.0,%d.0,%d.0,%d.0,%d.0", cnt, cnt, cnt, cnt, cnt, cnt, cnt),
-              ans);
-          cnt++;
-        }
-        Assert.assertEquals(100000, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select avg(d1.s1), avg(d1.s2), avg(d1.s3), sum(d2.s1), sum(d2.s2), sum(d2.s3)  from root.sg1 "
-                  + "GROUP BY ([0, 100000), 1ms) FILL (linear) order by time desc");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 99999;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(avg("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(avg("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(avg("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(sum("root.sg1.d2.s1"))
-                  + ","
-                  + resultSet.getString(sum("root.sg1.d2.s2"))
-                  + ","
-                  + resultSet.getString(sum("root.sg1.d2.s3"));
-          Assert.assertEquals(
-              String.format("%d,%d.0,%d.0,%d.0,%d.0,%d.0,%d.0", cnt, cnt, cnt, cnt, cnt, cnt, cnt),
-              ans);
-          cnt--;
-        }
-        Assert.assertEquals(-1, cnt);
-      }
-    }
-  }
-}
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBGroupByFillQueryIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBGroupByFillQueryIT.java
deleted file mode 100644
index 67b375d81f..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBGroupByFillQueryIT.java
+++ /dev/null
@@ -1,989 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.integration.aligned;
-
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.integration.env.ConfigFactory;
-import org.apache.iotdb.integration.env.EnvFactory;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-import static org.apache.iotdb.db.constant.TestConstant.avg;
-import static org.apache.iotdb.db.constant.TestConstant.count;
-import static org.apache.iotdb.db.constant.TestConstant.firstValue;
-import static org.apache.iotdb.db.constant.TestConstant.lastValue;
-import static org.apache.iotdb.db.constant.TestConstant.maxTime;
-import static org.apache.iotdb.db.constant.TestConstant.maxValue;
-import static org.apache.iotdb.db.constant.TestConstant.minTime;
-import static org.apache.iotdb.db.constant.TestConstant.minValue;
-import static org.apache.iotdb.db.constant.TestConstant.sum;
-
-@Category({LocalStandaloneTest.class})
-public class IoTDBGroupByFillQueryIT {
-
-  protected static boolean enableSeqSpaceCompaction;
-  protected static boolean enableUnseqSpaceCompaction;
-  protected static boolean enableCrossSpaceCompaction;
-  protected static long prevPartitionInterval;
-
-  private static final String TIMESTAMP_STR = "Time";
-
-  @BeforeClass
-  public static void setUp() throws Exception {
-    EnvFactory.getEnv().initBeforeClass();
-    // TODO When the aligned time series support compaction, we need to set compaction to true
-    enableSeqSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableSeqSpaceCompaction();
-    enableUnseqSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableUnseqSpaceCompaction();
-    enableCrossSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableCrossSpaceCompaction();
-    prevPartitionInterval = IoTDBDescriptor.getInstance().getConfig().getTimePartitionInterval();
-    ConfigFactory.getConfig().setEnableSeqSpaceCompaction(false);
-    ConfigFactory.getConfig().setEnableUnseqSpaceCompaction(false);
-    ConfigFactory.getConfig().setEnableCrossSpaceCompaction(false);
-    AlignedWriteUtil.insertData();
-  }
-
-  @AfterClass
-  public static void tearDown() throws Exception {
-    ConfigFactory.getConfig().setEnableSeqSpaceCompaction(enableSeqSpaceCompaction);
-    ConfigFactory.getConfig().setEnableUnseqSpaceCompaction(enableUnseqSpaceCompaction);
-    ConfigFactory.getConfig().setEnableCrossSpaceCompaction(enableCrossSpaceCompaction);
-    ConfigFactory.getConfig().setPartitionInterval(prevPartitionInterval);
-    EnvFactory.getEnv().cleanAfterClass();
-  }
-
-  @Test
-  public void countSumAvgPreviousFillTest() throws SQLException {
-    String[] retArray =
-        new String[] {
-          "1,4,40.0,7.5", "11,10,130142.0,13014.2", "21,1,130142.0,230000.0", "31,0,355.0,230000.0"
-        };
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select count(s1), sum(s2), avg(s1) from root.sg1.d1 "
-                  + "where time > 5 GROUP BY ([1, 41), 10ms) FILL (previous, 15ms)");
-      Assert.assertTrue(hasResultSet);
-
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(sum("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(avg("root.sg1.d1.s1"));
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select count(s1), sum(s2), avg(s1) from root.sg1.d1 "
-                  + " where time > 5 GROUP BY ([1, 41), 10ms) FILL (previous, 15ms) order by time desc");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = retArray.length;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(sum("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(avg("root.sg1.d1.s1"));
-          Assert.assertEquals(retArray[cnt - 1], ans);
-          cnt--;
-        }
-        Assert.assertEquals(0, cnt);
-      }
-    }
-  }
-
-  @Test
-  public void countSumAvgValueFillTest() throws SQLException {
-    String[] retArray =
-        new String[] {
-          "1,1,3.14,30000.0",
-          "6,4,40.0,7.5",
-          "11,5,130052.0,26010.4",
-          "16,5,90.0,18.0",
-          "21,1,3.14,230000.0",
-          "26,0,3.14,3.14",
-          "31,0,3.14,3.14"
-        };
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select count(s1), sum(s2), avg(s1) from root.sg1.d1 "
-                  + "where s3 > 5 and time < 30 GROUP BY ([1, 36), 5ms) FILL (3.14)");
-      Assert.assertTrue(hasResultSet);
-
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(sum("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(avg("root.sg1.d1.s1"));
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select count(s1), sum(s2), avg(s1) from root.sg1.d1 "
-                  + " where s3 > 5 and time < 30 GROUP BY ([1, 36), 5ms) FILL (3.14) order by time desc");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = retArray.length;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(sum("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(avg("root.sg1.d1.s1"));
-          Assert.assertEquals(retArray[cnt - 1], ans);
-          cnt--;
-        }
-        Assert.assertEquals(0, cnt);
-      }
-    }
-  }
-
-  @Test
-  public void countSumAvgWithNonAlignedTimeseriesLinearFillTest() throws SQLException {
-    String[] retArray =
-        new String[] {
-          "1,0,null,null,0,null,null",
-          "7,3,34.0,8.0,4,34.0,8.5",
-          "13,4,58.0,14.5,4,130045.0,14.5",
-          "19,2,39.0,19.5,4,39.0,20.5",
-          "25,0,84.5,null,4,84.5,26.5",
-          "31,0,130.0,null,0,130.0,null",
-          "37,0,154.0,null,0,154.0,null"
-        };
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select count(d1.s1), sum(d2.s2), avg(d2.s1), count(d1.s3), sum(d1.s2), avg(d2.s3) "
-                  + "from root.sg1 where time > 5 GROUP BY ([1, 41), 4ms, 6ms) FILL (linear, 15ms, 15ms)");
-      Assert.assertTrue(hasResultSet);
-
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(sum("root.sg1.d2.s2"))
-                  + ","
-                  + resultSet.getString(avg("root.sg1.d2.s1"))
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(sum("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(avg("root.sg1.d2.s3"));
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select count(d1.s1), sum(d2.s2), avg(d2.s1), count(d1.s3), sum(d1.s2), avg(d2.s3) "
-                  + "from root.sg1 where time > 5 GROUP BY ([1, 41), 4ms, 6ms) FILL (linear, 15ms, 15ms) order by time desc");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = retArray.length;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(sum("root.sg1.d2.s2"))
-                  + ","
-                  + resultSet.getString(avg("root.sg1.d2.s1"))
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(sum("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(avg("root.sg1.d2.s3"));
-          Assert.assertEquals(retArray[cnt - 1], ans);
-          cnt--;
-        }
-        Assert.assertEquals(0, cnt);
-      }
-    }
-  }
-
-  @Test
-  public void maxMinValueTimePreviousUntilLastFillTest() throws SQLException {
-    String[] retArray =
-        new String[] {
-          "1,30000,6.0,9,3",
-          "11,130000,11.0,20,11",
-          "21,230000,230000.0,null,23",
-          "31,null,null,null,null"
-        };
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select max_value(s3), min_value(s1), max_time(s2), min_time(s3) from root.sg1.d1 "
-                  + "where s1 > 5 and time < 35 GROUP BY ([1, 41), 10ms) FILL(previousUntilLast)");
-      Assert.assertTrue(hasResultSet);
-
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(maxValue("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(minValue("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(maxTime("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(minTime("root.sg1.d1.s3"));
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select max_value(s3), min_value(s1), max_time(s2), min_time(s3) from root.sg1.d1 "
-                  + " where s1 > 5 and time < 35 GROUP BY ([1, 41), 10ms) FILL(previousUntilLast) order by time desc");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = retArray.length;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(maxValue("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(minValue("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(maxTime("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(minTime("root.sg1.d1.s3"));
-          Assert.assertEquals(retArray[cnt - 1], ans);
-          cnt--;
-        }
-        Assert.assertEquals(0, cnt);
-      }
-    }
-  }
-
-  @Test
-  public void maxMinValueTimeValueFillTest() throws SQLException {
-    String[] retArray =
-        new String[] {
-          "1,30000,30000.0,null,3",
-          "6,10,6.0,10,6",
-          "11,130000,11.0,15,11",
-          "16,20,16.0,20,16",
-          "21,230000,230000.0,null,21",
-          "26,29,null,null,26"
-        };
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select max_value(s3), min_value(s1), max_time(s2), min_time(s3) from root.sg1.d1 "
-                  + "where s3 > 5 and time < 30 GROUP BY ([1, 31), 5ms) FILL ('fill string')");
-      Assert.assertTrue(hasResultSet);
-
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(maxValue("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(minValue("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(maxTime("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(minTime("root.sg1.d1.s3"));
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select max_value(s3), min_value(s1), max_time(s2), min_time(s3) from root.sg1.d1 "
-                  + " where s3 > 5 and time < 30 GROUP BY ([1, 31), 5ms) FILL ('fill string') order by time desc");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = retArray.length;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(maxValue("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(minValue("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(maxTime("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(minTime("root.sg1.d1.s3"));
-          Assert.assertEquals(retArray[cnt - 1], ans);
-          cnt--;
-        }
-        Assert.assertEquals(0, cnt);
-      }
-    }
-  }
-
-  @Test
-  public void maxMinValueTimeWithSlidingStepSmallBeforeRangePreviousFillTest() throws SQLException {
-    String[] retArray =
-        new String[] {
-          "1,30000,30000.0,null,3",
-          "7,10,7.0,10,7",
-          "13,130000,14.0,16,13",
-          "19,22,19.0,20,19",
-          "25,28,19.0,20,25",
-          "31,28,null,null,25",
-          "37,null,null,null,null"
-        };
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select max_value(s3), min_value(s1), max_time(s2), min_time(s3) from root.sg1.d1 "
-                  + "where s3 > 5 and time < 30 GROUP BY ([1, 41), 4ms, 6ms) FILL(previous, 6ms)");
-      Assert.assertTrue(hasResultSet);
-
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(maxValue("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(minValue("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(maxTime("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(minTime("root.sg1.d1.s3"));
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select max_value(s3), min_value(s1), max_time(s2), min_time(s3) from root.sg1.d1 "
-                  + " where s3 > 5 and time < 30 GROUP BY ([1, 41), 4ms, 6ms) FILL(previous, 6ms) order by time desc");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = retArray.length;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(maxValue("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(minValue("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(maxTime("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(minTime("root.sg1.d1.s3"));
-          Assert.assertEquals(retArray[cnt - 1], ans);
-          cnt--;
-        }
-        Assert.assertEquals(0, cnt);
-      }
-    }
-  }
-
-  @Test
-  public void maxMinValueTimeWithNonAlignedTimeseriesValueFillTest() throws SQLException {
-    String[] retArray =
-        new String[] {
-          "1,null,null,null,null,null,null,null,null",
-          "7,10,7.0,10,7,10,7.0,10,7",
-          "13,16,14.0,16,14,16,14.0,16,14",
-          "19,22,19.0,20,19,22,19.0,20,19",
-          "25,null,null,null,null,null,null,null,null",
-          "31,null,null,null,null,null,null,null,null",
-          "37,null,null,null,null,null,null,null,null"
-        };
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select max_value(d2.s3), min_value(d1.s1), max_time(d2.s2), min_time(d1.s3), "
-                  + "max_value(d1.s3), min_value(d2.s1), max_time(d1.s2), min_time(d2.s3) "
-                  + "from root.sg1 where d2.s3 > 5 and d1.s3 < 25 GROUP BY ([1, 41), 4ms, 6ms) FILL ('3.14')");
-      Assert.assertTrue(hasResultSet);
-
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(maxValue("root.sg1.d2.s3"))
-                  + ","
-                  + resultSet.getString(minValue("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(maxTime("root.sg1.d2.s2"))
-                  + ","
-                  + resultSet.getString(minTime("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(maxValue("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(minValue("root.sg1.d2.s1"))
-                  + ","
-                  + resultSet.getString(maxTime("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(minTime("root.sg1.d2.s3"));
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select max_value(d2.s3), min_value(d1.s1), max_time(d2.s2), min_time(d1.s3), "
-                  + "max_value(d1.s3), min_value(d2.s1), max_time(d1.s2), min_time(d2.s3) "
-                  + "from root.sg1 where d2.s3 > 5 and d1.s3 < 25 GROUP BY ([1, 41), 4ms, 6ms) FILL ('3.14')"
-                  + " order by time desc");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = retArray.length;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(maxValue("root.sg1.d2.s3"))
-                  + ","
-                  + resultSet.getString(minValue("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(maxTime("root.sg1.d2.s2"))
-                  + ","
-                  + resultSet.getString(minTime("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(maxValue("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(minValue("root.sg1.d2.s1"))
-                  + ","
-                  + resultSet.getString(maxTime("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(minTime("root.sg1.d2.s3"));
-          Assert.assertEquals(retArray[cnt - 1], ans);
-          cnt--;
-        }
-        Assert.assertEquals(0, cnt);
-      }
-    }
-  }
-
-  @Test
-  public void maxMinValueTimeWithNonAlignedTimeseriesValueFillTest2() throws SQLException {
-    String[] retArray =
-        new String[] {
-          "1,null,3.14,null,null,null,3.14,null,null",
-          "7,10,7.0,10,7,10,7.0,10,7",
-          "13,16,14.0,16,14,16,14.0,16,14",
-          "19,22,19.0,20,19,22,19.0,20,19",
-          "25,null,3.14,null,null,null,3.14,null,null",
-          "31,null,3.14,null,null,null,3.14,null,null",
-          "37,null,3.14,null,null,null,3.14,null,null"
-        };
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select max_value(d2.s3), min_value(d1.s1), max_time(d2.s2), min_time(d1.s3), "
-                  + "max_value(d1.s3), min_value(d2.s1), max_time(d1.s2), min_time(d2.s3) "
-                  + "from root.sg1 where d2.s3 > 5 and d1.s3 < 25 GROUP BY ([1, 41), 4ms, 6ms) FILL (3.14)");
-      Assert.assertTrue(hasResultSet);
-
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(maxValue("root.sg1.d2.s3"))
-                  + ","
-                  + resultSet.getString(minValue("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(maxTime("root.sg1.d2.s2"))
-                  + ","
-                  + resultSet.getString(minTime("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(maxValue("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(minValue("root.sg1.d2.s1"))
-                  + ","
-                  + resultSet.getString(maxTime("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(minTime("root.sg1.d2.s3"));
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select max_value(d2.s3), min_value(d1.s1), max_time(d2.s2), min_time(d1.s3), "
-                  + "max_value(d1.s3), min_value(d2.s1), max_time(d1.s2), min_time(d2.s3) "
-                  + "from root.sg1 where d2.s3 > 5 and d1.s3 < 25 GROUP BY ([1, 41), 4ms, 6ms) FILL (3.14)"
-                  + " order by time desc");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = retArray.length;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(maxValue("root.sg1.d2.s3"))
-                  + ","
-                  + resultSet.getString(minValue("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(maxTime("root.sg1.d2.s2"))
-                  + ","
-                  + resultSet.getString(minTime("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(maxValue("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(minValue("root.sg1.d2.s1"))
-                  + ","
-                  + resultSet.getString(maxTime("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(minTime("root.sg1.d2.s3"));
-          Assert.assertEquals(retArray[cnt - 1], ans);
-          cnt--;
-        }
-        Assert.assertEquals(0, cnt);
-      }
-    }
-  }
-
-  @Test
-  public void firstLastLinearFillTest() throws SQLException {
-    String[] retArray =
-        new String[] {
-          "1,null,null", "6,true,aligned_test7", "11,true,aligned_unseq_test13", "16,null,null",
-          "21,true,null", "26,false,null", "31,null,aligned_test31", "36,null,aligned_test36"
-        };
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select last_value(s4), first_value(s5) from root.sg1.d1 "
-                  + "where time > 5 and time < 38 GROUP BY ([1, 41), 5ms) FILL(linear, 100ms, 100ms)");
-      Assert.assertTrue(hasResultSet);
-
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s4"))
-                  + ","
-                  + resultSet.getString(firstValue("root.sg1.d1.s5"));
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select last_value(s4), first_value(s5) from root.sg1.d1 "
-                  + " where time > 5 and time < 38 GROUP BY ([1, 41), 5ms) FILL(linear, 100ms, 100ms) order by time desc");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = retArray.length;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s4"))
-                  + ","
-                  + resultSet.getString(firstValue("root.sg1.d1.s5"));
-          Assert.assertEquals(retArray[cnt - 1], ans);
-          cnt--;
-        }
-        Assert.assertEquals(0, cnt);
-      }
-    }
-  }
-
-  @Test
-  public void firstLastWithSlidingStepPreviousUntilLastFillTest() throws SQLException {
-    String[] retArray =
-        new String[] {
-          "1,null,null",
-          "7,true,aligned_test7",
-          "13,true,aligned_unseq_test13",
-          "19,true,aligned_unseq_test13",
-          "25,false,null",
-          "31,null,aligned_test31",
-          "37,null,aligned_test37"
-        };
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select last_value(s4), first_value(s5) from root.sg1.d1 "
-                  + "where time > 5 and time < 38 GROUP BY ([1, 41), 4ms, 6ms) FILL(previousUntilLast, 10ms)");
-      Assert.assertTrue(hasResultSet);
-
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s4"))
-                  + ","
-                  + resultSet.getString(firstValue("root.sg1.d1.s5"));
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select last_value(s4), first_value(s5) from root.sg1.d1 "
-                  + " where time > 5 and time < 38 GROUP BY ([1, 41), 4ms, 6ms) FILL(previousUntilLast, 10ms) order by time desc");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = retArray.length;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s4"))
-                  + ","
-                  + resultSet.getString(firstValue("root.sg1.d1.s5"));
-          Assert.assertEquals(retArray[cnt - 1], ans);
-          cnt--;
-        }
-        Assert.assertEquals(0, cnt);
-      }
-    }
-  }
-
-  @Test
-  public void firstLastWithNonAlignedTimeseriesPreviousFillTest() throws SQLException {
-    String[] retArray =
-        new String[] {
-          "1,null,null,null,null",
-          "7,non_aligned_test10,false,aligned_test10,false",
-          "13,non_aligned_test10,true,aligned_unseq_test13,false",
-          "19,non_aligned_test10,true,aligned_unseq_test13,true",
-          "25,non_aligned_test10,true,aligned_unseq_test13,true",
-          "31,non_aligned_test34,true,aligned_test34,true",
-          "37,non_aligned_test37,true,aligned_test37,true"
-        };
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select last_value(d2.s5), first_value(d1.s4), last_value(d1.s5), first_value(d2.s4) "
-                  + "from root.sg1 where time > 5 and time < 38 GROUP BY ([1, 41), 4ms, 6ms) FILL(previous)");
-      Assert.assertTrue(hasResultSet);
-
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d2.s5"))
-                  + ","
-                  + resultSet.getString(firstValue("root.sg1.d1.s4"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s5"))
-                  + ","
-                  + resultSet.getString(firstValue("root.sg1.d2.s4"));
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select last_value(d2.s5), first_value(d1.s4), last_value(d1.s5), first_value(d2.s4) "
-                  + "from root.sg1 where time > 5 and time < 38 "
-                  + "GROUP BY ([1, 41), 4ms, 6ms) FILL(previous) order by time desc");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = retArray.length;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d2.s5"))
-                  + ","
-                  + resultSet.getString(firstValue("root.sg1.d1.s4"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s5"))
-                  + ","
-                  + resultSet.getString(firstValue("root.sg1.d2.s4"));
-          Assert.assertEquals(retArray[cnt - 1], ans);
-          cnt--;
-        }
-        Assert.assertEquals(0, cnt);
-      }
-    }
-  }
-
-  @Test
-  public void groupByWithWildcardPreviousFillTest() throws SQLException {
-    String[] retArray =
-        new String[] {
-          "1,5,4,5,4,4,9.0,9,9,false,aligned_test9",
-          "11,10,10,10,1,1,20.0,20,20,true,aligned_unseq_test13",
-          "21,1,0,1,1,0,230000.0,20,230000,false,aligned_unseq_test13",
-          "31,0,0,0,0,0,230000.0,null,230000,false,null"
-        };
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select count(*), last_value(*) from root.sg1.d1 "
-                  + " where s1 > 5 and time < 35 GROUP BY ([1, 41), 10ms) FILL(previous, 10ms)");
-      Assert.assertTrue(hasResultSet);
-
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s4"))
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s5"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s4"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s5"));
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select count(*), last_value(*) from root.sg1.d1 "
-                  + " where s1 > 5 and time < 35 GROUP BY ([1, 41), 10ms) FILL(previous, 10ms) order by time desc");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = retArray.length;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s4"))
-                  + ","
-                  + resultSet.getString(count("root.sg1.d1.s5"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s4"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s5"));
-          Assert.assertEquals(retArray[cnt - 1], ans);
-          cnt--;
-        }
-        Assert.assertEquals(0, cnt);
-      }
-    }
-  }
-
-  @Test
-  public void groupByWithWildcardPreviousFillAllTest() throws SQLException {
-    String[] retArray =
-        new String[] {
-          "1,null,null,null,null,null",
-          "5,7.0,7,7,false,aligned_test7",
-          "9,11.0,11,11,true,aligned_test10",
-          "13,15.0,15,15,true,aligned_unseq_test13",
-          "17,19.0,19,19,true,aligned_unseq_test13",
-          "21,230000.0,19,230000,false,aligned_unseq_test13",
-          "25,230000.0,19,27,false,aligned_unseq_test13",
-          "29,230000.0,31,30,false,aligned_test31",
-          "33,230000.0,35,30,false,aligned_test35",
-          "37,230000.0,37,30,false,aligned_test37"
-        };
-    try (Connection connection = EnvFactory.getEnv().getConnection();
-        Statement statement = connection.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select last_value(*) from root.sg1.d1 "
-                  + "where time > 5 and time < 38 GROUP BY ([1, 41), 3ms, 4ms) FILL(previous)");
-      Assert.assertTrue(hasResultSet);
-
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s4"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s5"));
-          Assert.assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        Assert.assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select last_value(*) from root.sg1.d1 "
-                  + " where time > 5 and time < 38 GROUP BY ([1, 41), 3ms, 4ms) FILL(previous) order by time desc");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = retArray.length;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s1"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s2"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s3"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s4"))
-                  + ","
-                  + resultSet.getString(lastValue("root.sg1.d1.s5"));
-          Assert.assertEquals(retArray[cnt - 1], ans);
-          cnt--;
-        }
-        Assert.assertEquals(0, cnt);
-      }
-    }
-  }
-}
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBLoadExternalAlignedTsFileIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBLoadExternalAlignedTsFileIT.java
deleted file mode 100644
index 29a345280c..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBLoadExternalAlignedTsFileIT.java
+++ /dev/null
@@ -1,1037 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.integration.aligned;
-//
-// import org.apache.iotdb.commons.exception.IllegalPathException;
-// import org.apache.iotdb.commons.path.PartialPath;
-// import org.apache.iotdb.db.conf.IoTDBConfig;
-// import org.apache.iotdb.db.conf.IoTDBDescriptor;
-// import org.apache.iotdb.db.engine.StorageEngine;
-// import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-// import org.apache.iotdb.db.engine.storagegroup.timeindex.TimeIndexLevel;
-// import org.apache.iotdb.db.exception.StorageEngineException;
-// import org.apache.iotdb.db.utils.EnvironmentUtils;
-// import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-// import org.apache.iotdb.jdbc.Config;
-//
-// import org.junit.After;
-// import org.junit.Assert;
-// import org.junit.Before;
-// import org.junit.Test;
-// import org.junit.experimental.categories.Category;
-// import org.slf4j.Logger;
-// import org.slf4j.LoggerFactory;
-//
-// import java.io.File;
-// import java.sql.Connection;
-// import java.sql.DriverManager;
-// import java.sql.ResultSet;
-// import java.sql.SQLException;
-// import java.sql.Statement;
-// import java.util.ArrayList;
-// import java.util.Arrays;
-// import java.util.HashSet;
-// import java.util.List;
-// import java.util.Set;
-//
-// import static org.junit.Assert.assertEquals;
-// import static org.junit.Assert.assertNotNull;
-// import static org.junit.Assert.assertTrue;
-// import static org.junit.Assert.fail;
-//
-// @Category({LocalStandaloneTest.class})
-// public class IoTDBLoadExternalAlignedTsFileIT {
-//
-//  private static final Logger LOGGER =
-//      LoggerFactory.getLogger(IoTDBLoadExternalAlignedTsFileIT.class);
-//
-//  private static final IoTDBConfig config = IoTDBDescriptor.getInstance().getConfig();
-//
-//  private static String[] insertSequenceSqls =
-//      new String[] {
-//        "CREATE DATABASE root.vehicle",
-//        "CREATE DATABASE root.test",
-//        "CREATE ALIGNED TIMESERIES root.vehicle.d0(s0 INT32 encoding=RLE, s1 TEXT
-// encoding=PLAIN)",
-//        "CREATE ALIGNED TIMESERIES root.vehicle.d1(s2 FLOAT encoding=RLE, s3 BOOLEAN
-// encoding=PLAIN)",
-//        "CREATE ALIGNED TIMESERIES root.test.d0(s0 INT32 encoding=RLE, s1 TEXT encoding=PLAIN)",
-//        "CREATE ALIGNED TIMESERIES root.test.d1.g0(s0 INT32 encoding=RLE)",
-//        "insert into root.vehicle.d0(timestamp,s0) aligned values(10,100)",
-//        "insert into root.vehicle.d0(timestamp,s0,s1) aligned values(12,101,'102')",
-//        "insert into root.vehicle.d0(timestamp,s1) aligned values(19,'103')",
-//        "insert into root.vehicle.d1(timestamp,s2) aligned values(11,104.0)",
-//        "insert into root.vehicle.d1(timestamp,s2,s3) aligned values(15,105.0,true)",
-//        "insert into root.vehicle.d1(timestamp,s3) aligned values(17,false)",
-//        "insert into root.vehicle.d0(timestamp,s0) aligned values(20,1000)",
-//        "insert into root.test.d0(timestamp,s0) aligned values(10,106)",
-//        "insert into root.test.d0(timestamp,s0,s1) aligned values(14,107,'108')",
-//        "insert into root.test.d0(timestamp,s1) aligned values(16,'109')",
-//        "insert into root.test.d1.g0(timestamp,s0) aligned values(1,110)",
-//        "insert into root.test.d0(timestamp,s0) aligned values(30,1006)",
-//        "insert into root.test.d0(timestamp,s0,s1) aligned values(34,1007,'1008')",
-//        "insert into root.test.d0(timestamp,s1) aligned values(36,'1090')",
-//        "insert into root.test.d1.g0(timestamp,s0) aligned values(10,1100)",
-//        "flush",
-//        "insert into root.test.d0(timestamp,s0) aligned values(150,126)",
-//        "insert into root.test.d0(timestamp,s0,s1) aligned values(80,127,'128')",
-//        "insert into root.test.d0(timestamp,s1) aligned values(200,'129')",
-//        "insert into root.test.d1.g0(timestamp,s0) aligned values(140,430)",
-//        "insert into root.test.d0(timestamp,s0) aligned values(150,426)",
-//        "flush"
-//      };
-//
-//  private static String[] insertUnsequenceSqls =
-//      new String[] {
-//        "insert into root.vehicle.d0(timestamp,s0) aligned values(6,120)",
-//        "insert into root.vehicle.d0(timestamp,s0,s1) aligned values(38,121,'122')",
-//        "insert into root.vehicle.d0(timestamp,s1) aligned values(9,'123')",
-//        "insert into root.vehicle.d0(timestamp,s0) aligned values(16,128)",
-//        "insert into root.vehicle.d0(timestamp,s0,s1) aligned values(18,189,'198')",
-//        "insert into root.vehicle.d0(timestamp,s1) aligned values(99,'1234')",
-//        "insert into root.vehicle.d1(timestamp,s2) aligned values(14,1024.0)",
-//        "insert into root.vehicle.d1(timestamp,s2,s3) aligned values(29,1205.0,true)",
-//        "insert into root.vehicle.d1(timestamp,s3) aligned values(33,true)",
-//        "insert into root.test.d0(timestamp,s0) aligned values(45,126)",
-//        "insert into root.test.d0(timestamp,s0,s1) aligned values(68,127,'128')",
-//        "insert into root.test.d0(timestamp,s1) aligned values(78,'129')",
-//        "insert into root.test.d1.g0(timestamp,s0) aligned values(14,430)",
-//        "flush",
-//        "insert into root.test.d0(timestamp,s0) aligned values(20,426)",
-//        "insert into root.test.d0(timestamp,s0,s1) aligned values(13,427,'528')",
-//        "insert into root.test.d0(timestamp,s1) aligned values(2,'1209')",
-//        "insert into root.test.d1.g0(timestamp,s0) aligned values(4,330)",
-//        "flush",
-//      };
-//
-//  private static String[] deleteTimeseiresSqls =
-//      new String[] {"delete from root.vehicle.** where time >= 10 and time<=20", "flush"};
-//
-//  private static final String TIMESTAMP_STR = "Time";
-//  private static final String VEHICLE_D0_S0_STR = "root.vehicle.d0.s0";
-//  private static final String VEHICLE_D0_S1_STR = "root.vehicle.d0.s1";
-//  private static final String VEHICLE_D0_S2_STR = "root.vehicle.d1.s2";
-//  private static final String VEHICLE_D0_S3_STR = "root.vehicle.d1.s3";
-//  private static final String TEST_D0_S0_STR = "root.test.d0.s0";
-//  private static final String TEST_D0_S1_STR = "root.test.d0.s1";
-//  private static final String TEST_D1_STR = "root.test.d1.g0.s0";
-//
-//  private int prevVirtualPartitionNum;
-//  private int prevCompactionThread;
-//
-//  private static String[] deleteSqls =
-//      new String[] {"DELETE DATABASE root.vehicle", "DELETE DATABASE root.test"};
-//
-//  @Before
-//  public void setUp() throws Exception {
-//    prevVirtualPartitionNum = IoTDBDescriptor.getInstance().getConfig().getDataRegionNum();
-//    IoTDBDescriptor.getInstance().getConfig().setDataRegionNum(1);
-//    prevCompactionThread = IoTDBDescriptor.getInstance().getConfig().getCompactionThreadCount();
-//    EnvironmentUtils.envSetUp();
-//    Class.forName(Config.JDBC_DRIVER_NAME);
-//    prepareData(insertSequenceSqls);
-//  }
-//
-//  @After
-//  public void tearDown() throws Exception {
-//    EnvironmentUtils.cleanEnv();
-//    IoTDBDescriptor.getInstance().getConfig().setCompactionThreadCount(prevCompactionThread);
-//    IoTDBDescriptor.getInstance().getConfig().setDataRegionNum(prevVirtualPartitionNum);
-//  }
-//
-//  @Test
-//  public void unloadTsfileTest() throws SQLException {
-//    try (Connection connection =
-//            DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
-//        Statement statement = connection.createStatement()) {
-//
-//      // move root.vehicle
-//      List<TsFileResource> resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.vehicle"))
-//                  .getSequenceFileList());
-//      assertEquals(1, resources.size());
-//      File tmpDir =
-//          new File(
-//              resources.get(0).getTsFile().getParentFile().getParentFile(),
-//              "tmp" + File.separator + new PartialPath("root.vehicle"));
-//      if (!tmpDir.exists()) {
-//        tmpDir.mkdirs();
-//      }
-//      for (TsFileResource resource : resources) {
-//        statement.execute(String.format("unload '%s' '%s'", resource.getTsFilePath(), tmpDir));
-//      }
-//      assertEquals(
-//          0,
-//          StorageEngine.getInstance()
-//              .getProcessor(new PartialPath("root.vehicle"))
-//              .getSequenceFileList()
-//              .size());
-//      assertNotNull(tmpDir.listFiles());
-//      assertEquals(1, tmpDir.listFiles().length >> 1);
-//
-//      // move root.test
-//      resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.test"))
-//                  .getSequenceFileList());
-//      assertEquals(2, resources.size());
-//      tmpDir =
-//          new File(
-//              resources.get(0).getTsFile().getParentFile().getParentFile(),
-//              "tmp" + File.separator + new PartialPath("root.test"));
-//      if (!tmpDir.exists()) {
-//        tmpDir.mkdirs();
-//      }
-//      for (TsFileResource resource : resources) {
-//        // test unload using relative path
-//        statement.execute(
-//            String.format("unload '%s' '%s'", "./" + resource.getTsFilePath(), tmpDir));
-//      }
-//      assertEquals(
-//          0,
-//          StorageEngine.getInstance()
-//              .getProcessor(new PartialPath("root.test"))
-//              .getSequenceFileList()
-//              .size());
-//      assertNotNull(tmpDir.listFiles());
-//      assertEquals(2, tmpDir.listFiles().length >> 1);
-//    } catch (StorageEngineException | IllegalPathException e) {
-//      Assert.fail();
-//    }
-//  }
-//
-//  @Test
-//  public void loadSequenceTsfileTest() throws SQLException {
-//    try (Connection connection =
-//            DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
-//        Statement statement = connection.createStatement()) {
-//
-//      // move root.vehicle
-//      List<TsFileResource> resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.vehicle"))
-//                  .getSequenceFileList());
-//      File tmpDir =
-//          new File(
-//              resources
-//                  .get(0)
-//                  .getTsFile()
-//                  .getParentFile()
-//                  .getParentFile()
-//                  .getParentFile()
-//                  .getParentFile(),
-//              "tmp"
-//                  + File.separator
-//                  + new PartialPath("root.vehicle")
-//                  + File.separator
-//                  + "0"
-//                  + File.separator
-//                  + "0");
-//      if (!tmpDir.exists()) {
-//        tmpDir.mkdirs();
-//      }
-//      for (TsFileResource resource : resources) {
-//        statement.execute(String.format("unload '%s' '%s'", resource.getTsFilePath(), tmpDir));
-//      }
-//
-//      // move root.test
-//      resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.test"))
-//                  .getSequenceFileList());
-//      tmpDir =
-//          new File(
-//              resources
-//                  .get(0)
-//                  .getTsFile()
-//                  .getParentFile()
-//                  .getParentFile()
-//                  .getParentFile()
-//                  .getParentFile(),
-//              "tmp"
-//                  + File.separator
-//                  + new PartialPath("root.test")
-//                  + File.separator
-//                  + "0"
-//                  + File.separator
-//                  + "0");
-//      if (!tmpDir.exists()) {
-//        tmpDir.mkdirs();
-//      }
-//      for (TsFileResource resource : resources) {
-//        statement.execute(String.format("unload '%s' '%s'", resource.getTsFilePath(), tmpDir));
-//      }
-//
-//      // load all tsfile in tmp dir
-//      tmpDir =
-//          new File(
-//              resources
-//                  .get(0)
-//                  .getTsFile()
-//                  .getParentFile()
-//                  .getParentFile()
-//                  .getParentFile()
-//                  .getParentFile(),
-//              "tmp");
-//      statement.execute(String.format("load '%s'", tmpDir.getAbsolutePath()));
-//      resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.vehicle"))
-//                  .getSequenceFileList());
-//      assertEquals(1, resources.size());
-//      resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.test"))
-//                  .getSequenceFileList());
-//      assertEquals(2, resources.size());
-//      assertNotNull(tmpDir.listFiles());
-//      assertEquals(
-//          0,
-//          new File(
-//                  tmpDir,
-//                  new PartialPath("root.vehicle") + File.separator + "0" + File.separator + "0")
-//              .listFiles()
-//              .length);
-//      assertEquals(
-//          0,
-//          new File(
-//                  tmpDir,
-//                  new PartialPath("root.test") + File.separator + "0" + File.separator + "0")
-//              .listFiles()
-//              .length);
-//    } catch (StorageEngineException | IllegalPathException e) {
-//      Assert.fail();
-//    }
-//  }
-//
-//  @Test
-//  public void loadUnsequenceTsfileTest() throws SQLException {
-//    prepareData(insertUnsequenceSqls);
-//    String[] queryRes =
-//        new String[] {
-//          "1,null,null,null,null,null,null,110",
-//          "2,null,null,null,null,null,1209,null",
-//          "4,null,null,null,null,null,null,330",
-//          "6,120,null,null,null,null,null,null",
-//          "9,null,123,null,null,null,null,null",
-//          "10,100,null,null,null,106,null,1100",
-//          "11,null,null,104.0,null,null,null,null",
-//          "12,101,102,null,null,null,null,null",
-//          "13,null,null,null,null,427,528,null",
-//          "14,null,null,1024.0,null,107,108,430",
-//          "15,null,null,105.0,true,null,null,null",
-//          "16,128,null,null,null,null,109,null",
-//          "17,null,null,null,false,null,null,null",
-//          "18,189,198,null,null,null,null,null",
-//          "19,null,103,null,null,null,null,null",
-//          "20,1000,null,null,null,426,null,null",
-//          "29,null,null,1205.0,true,null,null,null",
-//          "30,null,null,null,null,1006,null,null",
-//          "33,null,null,null,true,null,null,null",
-//          "34,null,null,null,null,1007,1008,null",
-//          "36,null,null,null,null,null,1090,null",
-//          "38,121,122,null,null,null,null,null",
-//          "45,null,null,null,null,126,null,null",
-//          "68,null,null,null,null,127,128,null",
-//          "78,null,null,null,null,null,129,null",
-//          "80,null,null,null,null,127,128,null",
-//          "99,null,1234,null,null,null,null,null",
-//          "140,null,null,null,null,null,null,430",
-//          "150,null,null,null,null,426,null,null",
-//          "200,null,null,null,null,null,129,null"
-//        };
-//    try (Connection connection =
-//            DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
-//        Statement statement = connection.createStatement()) {
-//
-//      // check query result
-//      boolean hasResultSet = statement.execute("SELECT * FROM root.**");
-//      Assert.assertTrue(hasResultSet);
-//      try (ResultSet resultSet = statement.getResultSet()) {
-//        int cnt = 0;
-//        while (resultSet.next()) {
-//          String queryString =
-//              resultSet.getString(TIMESTAMP_STR)
-//                  + ","
-//                  + resultSet.getString(VEHICLE_D0_S0_STR)
-//                  + ","
-//                  + resultSet.getString(VEHICLE_D0_S1_STR)
-//                  + ","
-//                  + resultSet.getString(VEHICLE_D0_S2_STR)
-//                  + ","
-//                  + resultSet.getString(VEHICLE_D0_S3_STR)
-//                  + ","
-//                  + resultSet.getString(TEST_D0_S0_STR)
-//                  + ","
-//                  + resultSet.getString(TEST_D0_S1_STR)
-//                  + ","
-//                  + resultSet.getString(TEST_D1_STR);
-//          Assert.assertEquals(queryRes[cnt++], queryString);
-//        }
-//      }
-//
-//      // move root.vehicle
-//      List<TsFileResource> resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.vehicle"))
-//                  .getSequenceFileList());
-//      assertEquals(2, resources.size());
-//      File tmpDir =
-//          new File(
-//              resources.get(0).getTsFile().getParentFile().getParentFile().getParentFile(),
-//              "tmp" + File.separator + new PartialPath("root.vehicle") + File.separator + "0");
-//      if (!tmpDir.exists()) {
-//        tmpDir.mkdirs();
-//      }
-//      for (TsFileResource resource : resources) {
-//        statement.execute(String.format("unload '%s' '%s'", resource.getTsFilePath(), tmpDir));
-//      }
-//      resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.vehicle"))
-//                  .getUnSequenceFileList());
-//      assertEquals(1, resources.size());
-//      for (TsFileResource resource : resources) {
-//        statement.execute(String.format("unload '%s' '%s'", resource.getTsFilePath(), tmpDir));
-//      }
-//
-//      // move root.test
-//      resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.test"))
-//                  .getSequenceFileList());
-//      assertEquals(2, resources.size());
-//      tmpDir = new File(tmpDir.getParentFile().getParentFile(), "root.test" + File.separator +
-// "0");
-//      if (!tmpDir.exists()) {
-//        tmpDir.mkdirs();
-//      }
-//      for (TsFileResource resource : resources) {
-//        statement.execute(String.format("unload '%s' '%s'", resource.getTsFilePath(), tmpDir));
-//      }
-//      resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.test"))
-//                  .getUnSequenceFileList());
-//      assertEquals(2, resources.size());
-//      for (TsFileResource resource : resources) {
-//        statement.execute(String.format("unload '%s' '%s'", resource.getTsFilePath(), tmpDir));
-//      }
-//
-//      // load all tsfile in tmp dir
-//      tmpDir = tmpDir.getParentFile().getParentFile();
-//      statement.execute(String.format("load '%s'", tmpDir.getAbsolutePath()));
-//      assertEquals(
-//          2,
-//          StorageEngine.getInstance()
-//              .getProcessor(new PartialPath("root.vehicle"))
-//              .getSequenceFileList()
-//              .size());
-//      assertEquals(
-//          1,
-//          StorageEngine.getInstance()
-//              .getProcessor(new PartialPath("root.vehicle"))
-//              .getUnSequenceFileList()
-//              .size());
-//      if (config.getTimeIndexLevel().equals(TimeIndexLevel.DEVICE_TIME_INDEX)) {
-//        if (StorageEngine.getInstance()
-//                .getProcessor(new PartialPath("root.test"))
-//                .getUnSequenceFileList()
-//                .size()
-//            == 1) {
-//          assertEquals(
-//              3,
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.test"))
-//                  .getSequenceFileList()
-//                  .size());
-//        } else {
-//          assertEquals(
-//              2,
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.test"))
-//                  .getSequenceFileList()
-//                  .size());
-//        }
-//      } else if (config.getTimeIndexLevel().equals(TimeIndexLevel.FILE_TIME_INDEX)) {
-//        assertEquals(
-//            2,
-//            StorageEngine.getInstance()
-//                .getProcessor(new PartialPath("root.test"))
-//                .getUnSequenceFileList()
-//                .size());
-//        assertEquals(
-//            2,
-//            StorageEngine.getInstance()
-//                .getProcessor(new PartialPath("root.test"))
-//                .getSequenceFileList()
-//                .size());
-//      }
-//      assertNotNull(tmpDir.listFiles());
-//      assertEquals(
-//          0,
-//          new File(tmpDir, new PartialPath("root.vehicle") + File.separator + "0")
-//              .listFiles()
-//              .length);
-//      assertEquals(
-//          0,
-//          new File(tmpDir, new PartialPath("root.test") + File.separator +
-// "0").listFiles().length);
-//
-//      // check query result
-//      hasResultSet = statement.execute("SELECT * FROM root.**");
-//      Assert.assertTrue(hasResultSet);
-//      try (ResultSet resultSet = statement.getResultSet()) {
-//        int cnt = 0;
-//        while (resultSet.next()) {
-//          String queryString =
-//              resultSet.getString(TIMESTAMP_STR)
-//                  + ","
-//                  + resultSet.getString(VEHICLE_D0_S0_STR)
-//                  + ","
-//                  + resultSet.getString(VEHICLE_D0_S1_STR)
-//                  + ","
-//                  + resultSet.getString(VEHICLE_D0_S2_STR)
-//                  + ","
-//                  + resultSet.getString(VEHICLE_D0_S3_STR)
-//                  + ","
-//                  + resultSet.getString(TEST_D0_S0_STR)
-//                  + ","
-//                  + resultSet.getString(TEST_D0_S1_STR)
-//                  + ","
-//                  + resultSet.getString(TEST_D1_STR);
-//          Assert.assertEquals(queryRes[cnt++], queryString);
-//        }
-//      }
-//    } catch (StorageEngineException | IllegalPathException e) {
-//      Assert.fail();
-//    }
-//  }
-//
-//  @Test
-//  public void loadTsfileWithModsTest() throws SQLException {
-//    prepareData(insertUnsequenceSqls);
-//    prepareData(deleteTimeseiresSqls);
-//    String[] queryRes =
-//        new String[] {
-//          "1,null,null,null,null,null,null,110",
-//          "2,null,null,null,null,null,1209,null",
-//          "4,null,null,null,null,null,null,330",
-//          "6,120,null,null,null,null,null,null",
-//          "9,null,123,null,null,null,null,null",
-//          "10,null,null,null,null,106,null,1100",
-//          "13,null,null,null,null,427,528,null",
-//          "14,null,null,null,null,107,108,430",
-//          "16,null,null,null,null,null,109,null",
-//          "20,null,null,null,null,426,null,null",
-//          "29,null,null,1205.0,true,null,null,null",
-//          "30,null,null,null,null,1006,null,null",
-//          "33,null,null,null,true,null,null,null",
-//          "34,null,null,null,null,1007,1008,null",
-//          "36,null,null,null,null,null,1090,null",
-//          "38,121,122,null,null,null,null,null",
-//          "45,null,null,null,null,126,null,null",
-//          "68,null,null,null,null,127,128,null",
-//          "78,null,null,null,null,null,129,null",
-//          "80,null,null,null,null,127,128,null",
-//          "99,null,1234,null,null,null,null,null",
-//          "140,null,null,null,null,null,null,430",
-//          "150,null,null,null,null,426,null,null",
-//          "200,null,null,null,null,null,129,null"
-//        };
-//    try (Connection connection =
-//            DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
-//        Statement statement = connection.createStatement()) {
-//
-//      // check query result
-//      boolean hasResultSet = statement.execute("SELECT * FROM root.**");
-//      Assert.assertTrue(hasResultSet);
-//      try (ResultSet resultSet = statement.getResultSet()) {
-//        int cnt = 0;
-//        while (resultSet.next()) {
-//          String queryString =
-//              resultSet.getString(TIMESTAMP_STR)
-//                  + ","
-//                  + resultSet.getString(VEHICLE_D0_S0_STR)
-//                  + ","
-//                  + resultSet.getString(VEHICLE_D0_S1_STR)
-//                  + ","
-//                  + resultSet.getString(VEHICLE_D0_S2_STR)
-//                  + ","
-//                  + resultSet.getString(VEHICLE_D0_S3_STR)
-//                  + ","
-//                  + resultSet.getString(TEST_D0_S0_STR)
-//                  + ","
-//                  + resultSet.getString(TEST_D0_S1_STR)
-//                  + ","
-//                  + resultSet.getString(TEST_D1_STR);
-//          Assert.assertEquals(queryRes[cnt++], queryString);
-//        }
-//      }
-//
-//      // move root.vehicle
-//      List<TsFileResource> resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.vehicle"))
-//                  .getSequenceFileList());
-//      assertEquals(2, resources.size());
-//      File tmpDir =
-//          new File(
-//              resources.get(0).getTsFile().getParentFile().getParentFile().getParentFile(),
-//              "tmp" + File.separator + new PartialPath("root.vehicle") + File.separator + "0");
-//      if (!tmpDir.exists()) {
-//        tmpDir.mkdirs();
-//      }
-//      for (TsFileResource resource : resources) {
-//        statement.execute(String.format("unload '%s' '%s'", resource.getTsFilePath(), tmpDir));
-//      }
-//      resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.vehicle"))
-//                  .getUnSequenceFileList());
-//      assertEquals(1, resources.size());
-//      for (TsFileResource resource : resources) {
-//        statement.execute(String.format("unload '%s' '%s'", resource.getTsFilePath(), tmpDir));
-//      }
-//
-//      // move root.test
-//      resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.test"))
-//                  .getSequenceFileList());
-//      assertEquals(2, resources.size());
-//      tmpDir = new File(tmpDir.getParentFile().getParentFile(), "root.test" + File.separator +
-// "0");
-//      if (!tmpDir.exists()) {
-//        tmpDir.mkdirs();
-//      }
-//      for (TsFileResource resource : resources) {
-//        statement.execute(String.format("unload '%s' '%s'", resource.getTsFilePath(), tmpDir));
-//      }
-//      resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.test"))
-//                  .getUnSequenceFileList());
-//      assertEquals(2, resources.size());
-//      for (TsFileResource resource : resources) {
-//        statement.execute(String.format("unload '%s' '%s'", resource.getTsFilePath(), tmpDir));
-//      }
-//
-//      // load all tsfile in tmp dir
-//      tmpDir = tmpDir.getParentFile().getParentFile();
-//      statement.execute(String.format("load '%s'", tmpDir.getAbsolutePath()));
-//      assertEquals(
-//          2,
-//          StorageEngine.getInstance()
-//              .getProcessor(new PartialPath("root.vehicle"))
-//              .getSequenceFileList()
-//              .size());
-//      assertEquals(
-//          1,
-//          StorageEngine.getInstance()
-//              .getProcessor(new PartialPath("root.vehicle"))
-//              .getUnSequenceFileList()
-//              .size());
-//      if (config.getTimeIndexLevel().equals(TimeIndexLevel.DEVICE_TIME_INDEX)) {
-//        if (StorageEngine.getInstance()
-//                .getProcessor(new PartialPath("root.test"))
-//                .getUnSequenceFileList()
-//                .size()
-//            == 1) {
-//          assertEquals(
-//              3,
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.test"))
-//                  .getSequenceFileList()
-//                  .size());
-//        } else {
-//          assertEquals(
-//              2,
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.test"))
-//                  .getSequenceFileList()
-//                  .size());
-//        }
-//      } else if (config.getTimeIndexLevel().equals(TimeIndexLevel.FILE_TIME_INDEX)) {
-//        assertEquals(
-//            2,
-//            StorageEngine.getInstance()
-//                .getProcessor(new PartialPath("root.test"))
-//                .getUnSequenceFileList()
-//                .size());
-//        assertEquals(
-//            2,
-//            StorageEngine.getInstance()
-//                .getProcessor(new PartialPath("root.test"))
-//                .getSequenceFileList()
-//                .size());
-//      }
-//      assertNotNull(tmpDir.listFiles());
-//      assertEquals(
-//          0,
-//          new File(tmpDir, new PartialPath("root.vehicle") + File.separator + "0")
-//              .listFiles()
-//              .length);
-//      assertEquals(
-//          0,
-//          new File(tmpDir, new PartialPath("root.test") + File.separator +
-// "0").listFiles().length);
-//
-//      // check query result
-//      hasResultSet = statement.execute("SELECT * FROM root.**");
-//      Assert.assertTrue(hasResultSet);
-//      try (ResultSet resultSet = statement.getResultSet()) {
-//        int cnt = 0;
-//        while (resultSet.next()) {
-//          String queryString =
-//              resultSet.getString(TIMESTAMP_STR)
-//                  + ","
-//                  + resultSet.getString(VEHICLE_D0_S0_STR)
-//                  + ","
-//                  + resultSet.getString(VEHICLE_D0_S1_STR)
-//                  + ","
-//                  + resultSet.getString(VEHICLE_D0_S2_STR)
-//                  + ","
-//                  + resultSet.getString(VEHICLE_D0_S3_STR)
-//                  + ","
-//                  + resultSet.getString(TEST_D0_S0_STR)
-//                  + ","
-//                  + resultSet.getString(TEST_D0_S1_STR)
-//                  + ","
-//                  + resultSet.getString(TEST_D1_STR);
-//          Assert.assertEquals(queryRes[cnt++], queryString);
-//        }
-//      }
-//    } catch (StorageEngineException | IllegalPathException e) {
-//      Assert.fail();
-//    }
-//  }
-//
-//  @Test
-//  public void loadTsFileTestWithAutoCreateSchema() throws SQLException {
-//    try (Connection connection =
-//            DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
-//        Statement statement = connection.createStatement()) {
-//
-//      // move root.vehicle
-//      List<TsFileResource> resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.vehicle"))
-//                  .getSequenceFileList());
-//
-//      File tmpDir =
-//          new File(
-//              resources
-//                  .get(0)
-//                  .getTsFile()
-//                  .getParentFile()
-//                  .getParentFile()
-//                  .getParentFile()
-//                  .getParentFile(),
-//              "tmp"
-//                  + File.separator
-//                  + "root.vehicle"
-//                  + File.separator
-//                  + "0"
-//                  + File.separator
-//                  + "0");
-//      if (!tmpDir.exists()) {
-//        tmpDir.mkdirs();
-//      }
-//      for (TsFileResource resource : resources) {
-//        statement.execute(String.format("unload '%s' '%s'", resource.getTsFilePath(), tmpDir));
-//      }
-//
-//      // move root.test
-//      resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.test"))
-//                  .getSequenceFileList());
-//      tmpDir =
-//          new File(
-//              resources
-//                  .get(0)
-//                  .getTsFile()
-//                  .getParentFile()
-//                  .getParentFile()
-//                  .getParentFile()
-//                  .getParentFile(),
-//              "tmp" + File.separator + "root.test" + File.separator + "0" + File.separator + "0");
-//      if (!tmpDir.exists()) {
-//        tmpDir.mkdirs();
-//      }
-//      for (TsFileResource resource : resources) {
-//        statement.execute(String.format("unload '%s' '%s'", resource.getTsFilePath(), tmpDir));
-//      }
-//
-//      Set<String> expectedSet =
-//          new HashSet<>(
-//              Arrays.asList(
-//                  "root.vehicle.d0.s0,root.vehicle,INT32",
-//                  "root.vehicle.d0.s1,root.vehicle,TEXT",
-//                  "root.vehicle.d1.s2,root.vehicle,FLOAT",
-//                  "root.vehicle.d1.s3,root.vehicle,BOOLEAN",
-//                  "root.test.d0.s0,root.test,INT32",
-//                  "root.test.d0.s1,root.test,TEXT",
-//                  "root.test.d1.g0.s0,root.test,INT32"));
-//
-//      boolean hasResultSet = statement.execute("SHOW timeseries");
-//      Assert.assertTrue(hasResultSet);
-//      try (ResultSet resultSet = statement.getResultSet()) {
-//        while (resultSet.next()) {
-//          Assert.assertTrue(
-//              expectedSet.contains(
-//                  resultSet.getString(1)
-//                      + ","
-//                      + resultSet.getString(3)
-//                      + ","
-//                      + resultSet.getString(4)));
-//        }
-//      }
-//
-//      // remove metadata
-//      for (String sql : deleteSqls) {
-//        statement.execute(sql);
-//      }
-//
-//      // test not load metadata automatically, it will occur errors.
-//      // UPDATE: load grammar is updated in 0.14, change this into load metadata automatically
-//      boolean hasError = false;
-//      try {
-//        statement.execute(String.format("load '%s' sglevel=1", tmpDir.getAbsolutePath()));
-//      } catch (Exception e) {
-//        hasError = true;
-//      }
-//      Assert.assertFalse(hasError);
-//
-//      // test load metadata automatically, it will succeed.
-//      tmpDir = tmpDir.getParentFile().getParentFile().getParentFile();
-//      statement.execute(String.format("load '%s' sglevel=1", tmpDir.getAbsolutePath()));
-//      resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.vehicle"))
-//                  .getSequenceFileList());
-//      assertEquals(1, resources.size());
-//      resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.test"))
-//                  .getSequenceFileList());
-//      assertEquals(2, resources.size());
-//      assertEquals(2, tmpDir.listFiles().length);
-//      for (File dir : tmpDir.listFiles()) {
-//        assertEquals(0, dir.listFiles()[0].listFiles()[0].listFiles().length);
-//      }
-//    } catch (StorageEngineException | IllegalPathException e) {
-//      e.printStackTrace();
-//      Assert.fail();
-//    }
-//  }
-//
-//  @Test
-//  public void loadTsFileTestWithVerifyMetadata() throws Exception {
-//    try (Connection connection =
-//            DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
-//        Statement statement = connection.createStatement()) {
-//      List<TsFileResource> resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.vehicle"))
-//                  .getSequenceFileList());
-//      assertEquals(1, resources.size());
-//      File vehicleTmpDir =
-//          new File(
-//              resources
-//                  .get(0)
-//                  .getTsFile()
-//                  .getParentFile()
-//                  .getParentFile()
-//                  .getParentFile()
-//                  .getParentFile(),
-//              "tmp" + File.separator + "root.vehicle");
-//      if (!vehicleTmpDir.exists()) {
-//        vehicleTmpDir.mkdirs();
-//      }
-//
-//      for (TsFileResource resource : resources) {
-//        statement.execute(
-//            String.format("unload '%s' '%s'", resource.getTsFilePath(), vehicleTmpDir));
-//      }
-//
-//      resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.test"))
-//                  .getSequenceFileList());
-//      assertEquals(2, resources.size());
-//
-//      File testTmpDir = new File(vehicleTmpDir.getParentFile(), "root.test");
-//      if (!testTmpDir.exists()) {
-//        testTmpDir.mkdirs();
-//      }
-//
-//      for (TsFileResource resource : resources) {
-//        statement.execute(String.format("unload '%s' '%s'", resource.getTsFilePath(),
-// testTmpDir));
-//      }
-//
-//      for (String sql : deleteSqls) {
-//        statement.execute(sql);
-//      }
-//
-//      List<String> metaDataSqls =
-//          new ArrayList<>(
-//              Arrays.asList(
-//                  "CREATE DATABASE root.vehicle",
-//                  "CREATE DATABASE root.test",
-//                  "CREATE TIMESERIES root.vehicle.d0.s0 WITH DATATYPE=INT64, ENCODING=RLE",
-//                  "CREATE TIMESERIES root.vehicle.d0.s1 WITH DATATYPE=TEXT, ENCODING=PLAIN",
-//                  "CREATE TIMESERIES root.vehicle.d1.s2 WITH DATATYPE=FLOAT, ENCODING=RLE",
-//                  "CREATE TIMESERIES root.vehicle.d1.s3 WITH DATATYPE=BOOLEAN, ENCODING=PLAIN",
-//                  "CREATE ALIGNED TIMESERIES root.test.d0(s0 FLOAT encoding=RLE, s1 TEXT
-// encoding=PLAIN)",
-//                  "CREATE ALIGNED TIMESERIES root.test.d1.g0(s0 INT32 encoding=RLE)"));
-//
-//      for (String sql : metaDataSqls) {
-//        statement.execute(sql);
-//      }
-//
-//      // load vehicle
-//      boolean hasError = false;
-//      try {
-//        statement.execute(String.format("load '%s'", vehicleTmpDir));
-//      } catch (Exception e) {
-//        hasError = true;
-//        assertTrue(
-//            e.getMessage()
-//                .contains("is aligned in the loading TsFile but is not aligned in IoTDB."));
-//      }
-//      assertTrue(hasError);
-//
-//      statement.execute(String.format("load '%s' verify=false", vehicleTmpDir));
-//      assertEquals(
-//          1,
-//          StorageEngine.getInstance()
-//              .getProcessor(new PartialPath("root.vehicle"))
-//              .getSequenceFileList()
-//              .size());
-//
-//      // load test
-//      hasError = false;
-//      try {
-//        statement.execute(String.format("load '%s'", testTmpDir));
-//      } catch (Exception e) {
-//        hasError = true;
-//        assertTrue(
-//            e.getMessage()
-//                .contains(
-//                    "because root.test.d0.s0 is INT32 in the loading TsFile but is FLOAT in
-// IoTDB."));
-//      }
-//      assertTrue(hasError);
-//
-//      statement.execute(String.format("load '%s' verify=false", testTmpDir));
-//      assertEquals(
-//          2,
-//          StorageEngine.getInstance()
-//              .getProcessor(new PartialPath("root.test"))
-//              .getSequenceFileList()
-//              .size());
-//
-//    } catch (Exception e) {
-//      e.printStackTrace();
-//      Assert.fail();
-//    }
-//  }
-//
-//  @Test
-//  public void removeTsFileTest() throws SQLException {
-//    try (Connection connection =
-//            DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667/", "root", "root");
-//        Statement statement = connection.createStatement()) {
-//      List<TsFileResource> resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.vehicle"))
-//                  .getSequenceFileList());
-//      assertEquals(1, resources.size());
-//      for (TsFileResource resource : resources) {
-//        statement.execute(String.format("remove '%s'", resource.getTsFilePath()));
-//      }
-//      assertEquals(
-//          0,
-//          StorageEngine.getInstance()
-//              .getProcessor(new PartialPath("root.vehicle"))
-//              .getSequenceFileList()
-//              .size());
-//
-//      resources =
-//          new ArrayList<>(
-//              StorageEngine.getInstance()
-//                  .getProcessor(new PartialPath("root.test"))
-//                  .getSequenceFileList());
-//      assertEquals(2, resources.size());
-//      for (TsFileResource resource : resources) {
-//        statement.execute(String.format("remove '%s'", resource.getTsFilePath()));
-//      }
-//      assertEquals(
-//          0,
-//          StorageEngine.getInstance()
-//              .getProcessor(new PartialPath("root.test"))
-//              .getSequenceFileList()
-//              .size());
-//    } catch (StorageEngineException | IllegalPathException e) {
-//      Assert.fail();
-//    }
-//  }
-//
-//  private void prepareData(String[] sqls) {
-//    try (Connection connection =
-//            DriverManager.getConnection(
-//                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-//        Statement statement = connection.createStatement()) {
-//
-//      for (String sql : sqls) {
-//        statement.execute(sql);
-//      }
-//
-//    } catch (Exception e) {
-//      LOGGER.error("Can not execute sql.", e);
-//      fail();
-//    }
-//  }
-// }
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBRawQueryWithValueFilter2IT.java b/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBRawQueryWithValueFilter2IT.java
deleted file mode 100644
index 46c46032fc..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBRawQueryWithValueFilter2IT.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.integration.aligned;
-
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.experimental.categories.Category;
-
-@Category({LocalStandaloneTest.class})
-public class IoTDBRawQueryWithValueFilter2IT extends IoTDBRawQueryWithValueFilterIT {
-
-  private static int numOfPointsPerPage;
-
-  @BeforeClass
-  public static void setUp() throws Exception {
-    EnvironmentUtils.envSetUp();
-    // TODO When the aligned time series support compaction, we need to set compaction to true
-    enableSeqSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableSeqSpaceCompaction();
-    enableUnseqSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableUnseqSpaceCompaction();
-    enableCrossSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableCrossSpaceCompaction();
-    numOfPointsPerPage = TSFileDescriptor.getInstance().getConfig().getMaxNumberOfPointsInPage();
-    IoTDBDescriptor.getInstance().getConfig().setEnableSeqSpaceCompaction(false);
-    IoTDBDescriptor.getInstance().getConfig().setEnableUnseqSpaceCompaction(false);
-    IoTDBDescriptor.getInstance().getConfig().setEnableCrossSpaceCompaction(false);
-    TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(3);
-    AlignedWriteUtil.insertData();
-  }
-
-  @AfterClass
-  public static void tearDown() throws Exception {
-    IoTDBDescriptor.getInstance().getConfig().setEnableSeqSpaceCompaction(enableSeqSpaceCompaction);
-    IoTDBDescriptor.getInstance()
-        .getConfig()
-        .setEnableUnseqSpaceCompaction(enableUnseqSpaceCompaction);
-    IoTDBDescriptor.getInstance()
-        .getConfig()
-        .setEnableCrossSpaceCompaction(enableCrossSpaceCompaction);
-    TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(numOfPointsPerPage);
-    EnvironmentUtils.cleanEnv();
-  }
-}
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBRawQueryWithValueFilterIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBRawQueryWithValueFilterIT.java
deleted file mode 100644
index 3993624f61..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBRawQueryWithValueFilterIT.java
+++ /dev/null
@@ -1,763 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.integration.aligned;
-
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-import org.apache.iotdb.jdbc.Config;
-
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-@Category({LocalStandaloneTest.class})
-public class IoTDBRawQueryWithValueFilterIT {
-  protected static boolean enableSeqSpaceCompaction;
-  protected static boolean enableUnseqSpaceCompaction;
-  protected static boolean enableCrossSpaceCompaction;
-
-  @BeforeClass
-  public static void setUp() throws Exception {
-    EnvironmentUtils.envSetUp();
-    // TODO When the aligned time series support compaction, we need to set compaction to true
-    enableSeqSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableSeqSpaceCompaction();
-    enableUnseqSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableUnseqSpaceCompaction();
-    enableCrossSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableCrossSpaceCompaction();
-    IoTDBDescriptor.getInstance().getConfig().setEnableSeqSpaceCompaction(false);
-    IoTDBDescriptor.getInstance().getConfig().setEnableUnseqSpaceCompaction(false);
-    IoTDBDescriptor.getInstance().getConfig().setEnableCrossSpaceCompaction(false);
-    AlignedWriteUtil.insertData();
-  }
-
-  @AfterClass
-  public static void tearDown() throws Exception {
-    IoTDBDescriptor.getInstance().getConfig().setEnableSeqSpaceCompaction(enableSeqSpaceCompaction);
-    IoTDBDescriptor.getInstance()
-        .getConfig()
-        .setEnableUnseqSpaceCompaction(enableUnseqSpaceCompaction);
-    IoTDBDescriptor.getInstance()
-        .getConfig()
-        .setEnableCrossSpaceCompaction(enableCrossSpaceCompaction);
-    EnvironmentUtils.cleanEnv();
-  }
-
-  @Test
-  public void selectAllAlignedWithValueFilterTest1() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "1,1.0,1,1,true,aligned_test1",
-          "3,30000.0,null,30000,true,aligned_unseq_test3",
-          "4,4.0,4,null,true,aligned_test4",
-          "5,5.0,5,null,true,aligned_test5",
-          "6,6.0,6,6,true,null",
-          "10,null,10,10,true,aligned_test10",
-          "13,130000.0,130000,130000,true,aligned_unseq_test13",
-          "21,null,null,21,true,null",
-          "22,null,null,22,true,null",
-          "24,null,null,24,true,null",
-          "25,null,null,25,true,null",
-        };
-
-    String[] columnNames = {
-      "root.sg1.d1.s1", "root.sg1.d1.s2", "root.sg1.d1.s3", "root.sg1.d1.s4", "root.sg1.d1.s5"
-    };
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet = statement.execute("select * from root.sg1.d1 where s4 = true");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectAllAlignedWithValueFilterTest2() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "12,12.0,12,12,null,null",
-          "14,14.0,14,14,null,null",
-          "15,15.0,15,15,null,null",
-          "16,16.0,16,16,null,null",
-          "17,17.0,17,17,null,null",
-          "18,18.0,18,18,null,null",
-          "19,19.0,19,19,null,null",
-          "20,20.0,20,20,null,null",
-        };
-
-    String[] columnNames = {
-      "root.sg1.d1.s1", "root.sg1.d1.s2", "root.sg1.d1.s3", "root.sg1.d1.s4", "root.sg1.d1.s5"
-    };
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute("select * from root.sg1.d1 where s1 > 11 and s2 <= 33");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectAllAlignedWithValueFilterTest3() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "1,1.0,1,1,true,aligned_test1",
-          "2,2.0,2,2,null,aligned_test2",
-          "3,30000.0,null,30000,true,aligned_unseq_test3",
-          "4,4.0,4,null,true,aligned_test4",
-          "5,5.0,5,null,true,aligned_test5",
-          "6,6.0,6,6,true,null",
-          "7,7.0,7,7,false,aligned_test7",
-          "8,8.0,8,8,null,aligned_test8",
-          "9,9.0,9,9,false,aligned_test9",
-          "10,null,10,10,true,aligned_test10",
-          "11,11.0,11,11,null,null",
-          "12,12.0,12,12,null,null",
-          "13,130000.0,130000,130000,true,aligned_unseq_test13",
-          "14,14.0,14,14,null,null",
-          "15,15.0,15,15,null,null",
-          "16,16.0,16,16,null,null",
-          "17,17.0,17,17,null,null",
-          "18,18.0,18,18,null,null",
-          "19,19.0,19,19,null,null",
-          "20,20.0,20,20,null,null",
-          "23,230000.0,null,230000,false,null",
-          "31,null,31,null,null,aligned_test31",
-          "32,null,32,null,null,aligned_test32",
-        };
-
-    String[] columnNames = {
-      "root.sg1.d1.s1", "root.sg1.d1.s2", "root.sg1.d1.s3", "root.sg1.d1.s4", "root.sg1.d1.s5"
-    };
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute("select * from root.sg1.d1 where s1 >= 13 or s2 < 33");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectAllAlignedAndNonAlignedTest1() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "13,130000.0,130000,130000,true,aligned_unseq_test13,13.0,13,13,null,null",
-          "17,17.0,17,17,null,null,17.0,17,17,null,null",
-          "18,18.0,18,18,null,null,18.0,18,18,null,null",
-          "19,19.0,19,19,null,null,19.0,19,19,null,null",
-          "20,20.0,20,20,null,null,20.0,20,20,null,null",
-        };
-
-    String[] columnNames = {
-      "root.sg1.d1.s1",
-      "root.sg1.d1.s2",
-      "root.sg1.d1.s3",
-      "root.sg1.d1.s4",
-      "root.sg1.d1.s5",
-      "root.sg1.d2.s1",
-      "root.sg1.d2.s2",
-      "root.sg1.d2.s3",
-      "root.sg1.d2.s4",
-      "root.sg1.d2.s5"
-    };
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute(
-              "select * from root.sg1.* where root.sg1.d1.s2 > 16 and root.sg1.d2.s3 <= 36");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectAllAlignedAndNonAlignedTest2() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "3,30000.0,null,30000,true,aligned_unseq_test3,3.0,null,3,false,non_aligned_test3",
-          "7,7.0,7,7,false,aligned_test7,7.0,7,7,false,non_aligned_test7",
-          "9,9.0,9,9,false,aligned_test9,9.0,9,9,false,non_aligned_test9",
-          "13,130000.0,130000,130000,true,aligned_unseq_test13,13.0,13,13,null,null",
-          "17,17.0,17,17,null,null,17.0,17,17,null,null",
-          "18,18.0,18,18,null,null,18.0,18,18,null,null",
-          "19,19.0,19,19,null,null,19.0,19,19,null,null",
-          "20,20.0,20,20,null,null,20.0,20,20,null,null",
-          "26,null,null,26,false,null,null,null,26,false,null",
-          "27,null,null,27,false,null,null,null,27,false,null",
-          "28,null,null,28,false,null,null,null,28,false,null",
-          "29,null,null,29,false,null,null,null,29,false,null",
-          "30,null,null,30,false,null,null,null,30,false,null",
-          "31,null,31,null,null,aligned_test31,null,31,null,null,non_aligned_test31",
-          "32,null,32,null,null,aligned_test32,null,32,null,null,non_aligned_test32",
-          "33,null,33,null,null,aligned_test33,null,33,null,null,non_aligned_test33",
-          "34,null,34,null,null,aligned_test34,null,34,null,null,non_aligned_test34",
-          "35,null,35,null,null,aligned_test35,null,35,null,null,non_aligned_test35",
-          "36,null,36,null,null,aligned_test36,null,36,null,null,non_aligned_test36",
-          "37,null,37,null,null,aligned_test37,null,37,null,null,non_aligned_test37",
-          "38,null,38,null,null,aligned_test38,null,38,null,null,non_aligned_test38",
-          "39,null,39,null,null,aligned_test39,null,39,null,null,non_aligned_test39",
-          "40,null,40,null,null,aligned_test40,null,40,null,null,non_aligned_test40",
-        };
-
-    String[] columnNames = {
-      "root.sg1.d1.s1",
-      "root.sg1.d1.s2",
-      "root.sg1.d1.s3",
-      "root.sg1.d1.s4",
-      "root.sg1.d1.s5",
-      "root.sg1.d2.s1",
-      "root.sg1.d2.s2",
-      "root.sg1.d2.s3",
-      "root.sg1.d2.s4",
-      "root.sg1.d2.s5"
-    };
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute(
-              "select * from root.sg1.* where root.sg1.d1.s2 > 16 or root.sg1.d2.s4 = false");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectAllAlignedWithTimeAndValueFilterTest1() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "9,9.0,9,9,false,aligned_test9",
-          "11,11.0,11,11,null,null",
-          "12,12.0,12,12,null,null",
-          "14,14.0,14,14,null,null",
-          "15,15.0,15,15,null,null",
-          "16,16.0,16,16,null,null",
-          "17,17.0,17,17,null,null",
-          "18,18.0,18,18,null,null",
-        };
-
-    String[] columnNames = {
-      "root.sg1.d1.s1", "root.sg1.d1.s2", "root.sg1.d1.s3", "root.sg1.d1.s4", "root.sg1.d1.s5"
-    };
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute("select * from root.sg1.d1 where time >= 9 and time <= 33 and s1 < 19");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectAllAlignedWithTimeAndValueFilterTest2() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "9,9.0,9,9,false,aligned_test9",
-          "10,null,10,10,true,aligned_test10",
-          "11,11.0,11,11,null,null",
-          "12,12.0,12,12,null,null",
-          "13,130000.0,130000,130000,true,aligned_unseq_test13",
-          "14,14.0,14,14,null,null",
-          "15,15.0,15,15,null,null",
-          "16,16.0,16,16,null,null",
-          "17,17.0,17,17,null,null",
-          "18,18.0,18,18,null,null",
-          "19,19.0,19,19,null,null",
-          "20,20.0,20,20,null,null",
-          "21,null,null,21,true,null",
-          "22,null,null,22,true,null",
-          "23,230000.0,null,230000,false,null",
-          "24,null,null,24,true,null",
-          "25,null,null,25,true,null",
-          "26,null,null,26,false,null",
-          "27,null,null,27,false,null",
-          "28,null,null,28,false,null",
-          "29,null,null,29,false,null",
-          "30,null,null,30,false,null",
-          "31,null,31,null,null,aligned_test31",
-          "32,null,32,null,null,aligned_test32",
-          "33,null,33,null,null,aligned_test33",
-          "36,null,36,null,null,aligned_test36",
-          "37,null,37,null,null,aligned_test37",
-        };
-
-    String[] columnNames = {
-      "root.sg1.d1.s1", "root.sg1.d1.s2", "root.sg1.d1.s3", "root.sg1.d1.s4", "root.sg1.d1.s5"
-    };
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute(
-              "select * from root.sg1.d1 where time >= 9 and time <= 33 or s5 = 'aligned_test36' or s5 = 'aligned_test37'");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectSomeAlignedWithValueFilterTest1() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "1,1.0,true,aligned_test1",
-          "2,2.0,null,aligned_test2",
-          "4,4.0,true,aligned_test4",
-          "5,5.0,true,aligned_test5",
-          "6,6.0,true,null",
-          "7,7.0,false,aligned_test7",
-          "8,8.0,null,aligned_test8",
-          "9,9.0,false,aligned_test9",
-          "11,11.0,null,null",
-          "12,12.0,null,null",
-          "14,14.0,null,null",
-          "15,15.0,null,null",
-          "16,16.0,null,null",
-          "34,null,null,aligned_test34",
-        };
-
-    String[] columnNames = {"root.sg1.d1.s1", "root.sg1.d1.s4", "root.sg1.d1.s5"};
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute(
-              "select s1,s4,s5 from root.sg1.d1 where s1 < 17 or s5 = 'aligned_test34'");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectSomeAlignedWithValueFilterTest2() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "7,7.0,false", "9,9.0,false",
-        };
-
-    String[] columnNames = {"root.sg1.d1.s1", "root.sg1.d1.s4"};
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute("select s1,s4 from root.sg1.d1 where s1 < 19 and s4 = false");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectSomeAlignedWithTimeAndValueFilterTest() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "23,230000.0,false,null",
-          "26,null,false,null",
-          "27,null,false,null",
-          "28,null,false,null",
-          "29,null,false,null",
-          "30,null,false,null",
-        };
-
-    String[] columnNames = {"root.sg1.d1.s1", "root.sg1.d1.s4", "root.sg1.d1.s5"};
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute(
-              "select s1,s4,s5 from root.sg1.d1 where time >= 16 and time <= 34 and s4=false");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectSomeAlignedAndNonAlignedWithTimeAndValueFilterTest()
-      throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "18,null,null,18.0,null,null,18.0",
-          "19,null,null,19.0,null,null,19.0",
-          "20,null,null,20.0,null,null,20.0",
-          "21,null,true,null,null,true,null",
-          "22,null,true,null,null,true,null",
-          "23,null,false,null,null,true,230000.0",
-          "24,null,true,null,null,true,null",
-          "25,null,true,null,null,true,null",
-        };
-
-    String[] columnNames = {
-      "root.sg1.d2.s5",
-      "root.sg1.d1.s4",
-      "root.sg1.d2.s1",
-      "root.sg1.d1.s5",
-      "root.sg1.d2.s4",
-      "root.sg1.d1.s1"
-    };
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      // 1 4 5
-      boolean hasResultSet =
-          statement.execute(
-              "select d2.s5, d1.s4, d2.s1, d1.s5, d2.s4, d1.s1 from root.sg1 where time >= 16 and time <= 34 and (d1.s1 >= 18 or d2.s4 = true)");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-}
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBRawQueryWithValueFilterWithDeletion2IT.java b/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBRawQueryWithValueFilterWithDeletion2IT.java
deleted file mode 100644
index 6fc22924e3..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBRawQueryWithValueFilterWithDeletion2IT.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.integration.aligned;
-
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-import org.apache.iotdb.jdbc.Config;
-import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.experimental.categories.Category;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.Statement;
-
-@Category({LocalStandaloneTest.class})
-public class IoTDBRawQueryWithValueFilterWithDeletion2IT
-    extends IoTDBRawQueryWithValueFilterWithDeletionIT {
-
-  private static int numOfPointsPerPage;
-
-  @BeforeClass
-  public static void setUp() throws Exception {
-    EnvironmentUtils.envSetUp();
-
-    enableSeqSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableSeqSpaceCompaction();
-    enableUnseqSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableUnseqSpaceCompaction();
-    enableCrossSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableCrossSpaceCompaction();
-    numOfPointsPerPage = TSFileDescriptor.getInstance().getConfig().getMaxNumberOfPointsInPage();
-    IoTDBDescriptor.getInstance().getConfig().setEnableSeqSpaceCompaction(false);
-    IoTDBDescriptor.getInstance().getConfig().setEnableUnseqSpaceCompaction(false);
-    IoTDBDescriptor.getInstance().getConfig().setEnableCrossSpaceCompaction(false);
-    TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(3);
-    AlignedWriteUtil.insertData();
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("delete timeseries root.sg1.d1.s2");
-      statement.execute("delete from root.sg1.d1.s1 where time <= 21");
-      statement.execute("delete from root.sg1.d1.s5 where time <= 31 and time > 20");
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-  }
-
-  @AfterClass
-  public static void tearDown() throws Exception {
-    IoTDBDescriptor.getInstance().getConfig().setEnableSeqSpaceCompaction(enableSeqSpaceCompaction);
-    IoTDBDescriptor.getInstance()
-        .getConfig()
-        .setEnableUnseqSpaceCompaction(enableUnseqSpaceCompaction);
-    IoTDBDescriptor.getInstance()
-        .getConfig()
-        .setEnableCrossSpaceCompaction(enableCrossSpaceCompaction);
-    TSFileDescriptor.getInstance().getConfig().setMaxNumberOfPointsInPage(numOfPointsPerPage);
-    EnvironmentUtils.cleanEnv();
-  }
-}
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBRawQueryWithValueFilterWithDeletionIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBRawQueryWithValueFilterWithDeletionIT.java
deleted file mode 100644
index 3da780f7e6..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/aligned/IoTDBRawQueryWithValueFilterWithDeletionIT.java
+++ /dev/null
@@ -1,778 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.integration.aligned;
-
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-import org.apache.iotdb.jdbc.Config;
-
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-@Category({LocalStandaloneTest.class})
-public class IoTDBRawQueryWithValueFilterWithDeletionIT {
-
-  protected static boolean enableSeqSpaceCompaction;
-  protected static boolean enableUnseqSpaceCompaction;
-  protected static boolean enableCrossSpaceCompaction;
-
-  @BeforeClass
-  public static void setUp() throws Exception {
-    EnvironmentUtils.envSetUp();
-
-    enableSeqSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableSeqSpaceCompaction();
-    enableUnseqSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableUnseqSpaceCompaction();
-    enableCrossSpaceCompaction =
-        IoTDBDescriptor.getInstance().getConfig().isEnableCrossSpaceCompaction();
-    IoTDBDescriptor.getInstance().getConfig().setEnableSeqSpaceCompaction(false);
-    IoTDBDescriptor.getInstance().getConfig().setEnableUnseqSpaceCompaction(false);
-    IoTDBDescriptor.getInstance().getConfig().setEnableCrossSpaceCompaction(false);
-
-    AlignedWriteUtil.insertData();
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-      statement.execute("delete timeseries root.sg1.d1.s2");
-      statement.execute("delete from root.sg1.d1.s1 where time <= 21");
-      statement.execute("delete from root.sg1.d1.s5 where time <= 31 and time > 20");
-    } catch (Exception e) {
-      e.printStackTrace();
-    }
-  }
-
-  @AfterClass
-  public static void tearDown() throws Exception {
-    IoTDBDescriptor.getInstance().getConfig().setEnableSeqSpaceCompaction(enableSeqSpaceCompaction);
-    IoTDBDescriptor.getInstance()
-        .getConfig()
-        .setEnableUnseqSpaceCompaction(enableUnseqSpaceCompaction);
-    IoTDBDescriptor.getInstance()
-        .getConfig()
-        .setEnableCrossSpaceCompaction(enableCrossSpaceCompaction);
-    EnvironmentUtils.cleanEnv();
-  }
-
-  @Test
-  public void selectAllAlignedWithValueFilterTest1() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "1,null,1,true,aligned_test1",
-          "3,null,30000,true,aligned_unseq_test3",
-          "4,null,null,true,aligned_test4",
-          "5,null,null,true,aligned_test5",
-          "6,null,6,true,null",
-          "10,null,10,true,aligned_test10",
-          "13,null,130000,true,aligned_unseq_test13",
-          "21,null,21,true,null",
-          "22,null,22,true,null",
-          "24,null,24,true,null",
-          "25,null,25,true,null",
-        };
-
-    String[] columnNames = {"root.sg1.d1.s1", "root.sg1.d1.s3", "root.sg1.d1.s4", "root.sg1.d1.s5"};
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet = statement.execute("select * from root.sg1.d1 where s4 = true");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectAllAlignedWithValueFilterTest2() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "7,null,7,false,aligned_test7",
-          "9,null,9,false,aligned_test9",
-          "26,null,26,false,null",
-          "27,null,27,false,null",
-          "28,null,28,false,null",
-          "29,null,29,false,null",
-          "30,null,30,false,null",
-        };
-
-    String[] columnNames = {"root.sg1.d1.s1", "root.sg1.d1.s3", "root.sg1.d1.s4", "root.sg1.d1.s5"};
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute("select * from root.sg1.d1 where s4 = false and s3 <= 33");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectAllAlignedWithValueFilterTest3() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "1,null,1,true,aligned_test1",
-          "2,null,2,null,aligned_test2",
-          "6,null,6,true,null",
-          "7,null,7,false,aligned_test7",
-          "8,null,8,null,aligned_test8",
-          "9,null,9,false,aligned_test9",
-          "10,null,10,true,aligned_test10",
-          "11,null,11,null,null",
-          "12,null,12,null,null",
-          "14,null,14,null,null",
-          "15,null,15,null,null",
-          "16,null,16,null,null",
-          "17,null,17,null,null",
-          "18,null,18,null,null",
-          "19,null,19,null,null",
-          "20,null,20,null,null",
-          "21,null,21,true,null",
-          "22,null,22,true,null",
-          "23,230000.0,230000,false,null",
-          "24,null,24,true,null",
-          "25,null,25,true,null",
-          "26,null,26,false,null",
-          "27,null,27,false,null",
-          "28,null,28,false,null",
-          "29,null,29,false,null",
-          "30,null,30,false,null",
-          "40,null,null,null,aligned_test40",
-        };
-
-    String[] columnNames = {"root.sg1.d1.s1", "root.sg1.d1.s3", "root.sg1.d1.s4", "root.sg1.d1.s5"};
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute(
-              "select * from root.sg1.d1 where s5 = 'aligned_test40' or s4 = false or s3 <= 33");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectAllAlignedAndNonAlignedTest1() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "3,null,30000,true,aligned_unseq_test3,3.0,null,3,false,non_aligned_test3",
-          "13,null,130000,true,aligned_unseq_test13,13.0,13,13,null,null",
-          "17,null,17,null,null,17.0,17,17,null,null",
-          "18,null,18,null,null,18.0,18,18,null,null",
-          "19,null,19,null,null,19.0,19,19,null,null",
-          "20,null,20,null,null,20.0,20,20,null,null",
-          "21,null,21,true,null,null,null,21,true,null",
-          "22,null,22,true,null,null,null,22,true,null",
-          "23,230000.0,230000,false,null,null,null,23,true,null",
-          "24,null,24,true,null,null,null,24,true,null",
-          "25,null,25,true,null,null,null,25,true,null",
-          "26,null,26,false,null,null,null,26,false,null",
-          "27,null,27,false,null,null,null,27,false,null",
-          "28,null,28,false,null,null,null,28,false,null",
-          "29,null,29,false,null,null,null,29,false,null",
-          "30,null,30,false,null,null,null,30,false,null",
-        };
-
-    String[] columnNames = {
-      "root.sg1.d1.s1",
-      "root.sg1.d1.s3",
-      "root.sg1.d1.s4",
-      "root.sg1.d1.s5",
-      "root.sg1.d2.s1",
-      "root.sg1.d2.s2",
-      "root.sg1.d2.s3",
-      "root.sg1.d2.s4",
-      "root.sg1.d2.s5"
-    };
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute(
-              "select * from root.sg1.* where root.sg1.d1.s3 > 16 and root.sg1.d2.s3 <= 36");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectAllAlignedAndNonAlignedTest2() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "3,null,30000,true,aligned_unseq_test3,3.0,null,3,false,non_aligned_test3",
-          "7,null,7,false,aligned_test7,7.0,7,7,false,non_aligned_test7",
-          "9,null,9,false,aligned_test9,9.0,9,9,false,non_aligned_test9",
-          "13,null,130000,true,aligned_unseq_test13,13.0,13,13,null,null",
-          "17,null,17,null,null,17.0,17,17,null,null",
-          "18,null,18,null,null,18.0,18,18,null,null",
-          "19,null,19,null,null,19.0,19,19,null,null",
-          "20,null,20,null,null,20.0,20,20,null,null",
-          "21,null,21,true,null,null,null,21,true,null",
-          "22,null,22,true,null,null,null,22,true,null",
-          "23,230000.0,230000,false,null,null,null,23,true,null",
-          "24,null,24,true,null,null,null,24,true,null",
-          "25,null,25,true,null,null,null,25,true,null",
-          "26,null,26,false,null,null,null,26,false,null",
-          "27,null,27,false,null,null,null,27,false,null",
-          "28,null,28,false,null,null,null,28,false,null",
-          "29,null,29,false,null,null,null,29,false,null",
-          "30,null,30,false,null,null,null,30,false,null",
-        };
-
-    String[] columnNames = {
-      "root.sg1.d1.s1",
-      "root.sg1.d1.s3",
-      "root.sg1.d1.s4",
-      "root.sg1.d1.s5",
-      "root.sg1.d2.s1",
-      "root.sg1.d2.s2",
-      "root.sg1.d2.s3",
-      "root.sg1.d2.s4",
-      "root.sg1.d2.s5"
-    };
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute(
-              "select * from root.sg1.* where root.sg1.d1.s3 > 16 or root.sg1.d2.s4 = false");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectAllAlignedWithTimeAndValueFilterTest1() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "9,null,9,false,aligned_test9",
-          "10,null,10,true,aligned_test10",
-          "11,null,11,null,null",
-          "12,null,12,null,null",
-          "14,null,14,null,null",
-          "15,null,15,null,null",
-          "16,null,16,null,null",
-          "17,null,17,null,null",
-          "18,null,18,null,null",
-          "19,null,19,null,null",
-          "20,null,20,null,null",
-          "21,null,21,true,null",
-          "22,null,22,true,null",
-          "24,null,24,true,null",
-          "25,null,25,true,null",
-          "26,null,26,false,null",
-          "27,null,27,false,null",
-          "28,null,28,false,null",
-        };
-
-    String[] columnNames = {"root.sg1.d1.s1", "root.sg1.d1.s3", "root.sg1.d1.s4", "root.sg1.d1.s5"};
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute("select * from root.sg1.d1 where time >= 9 and time <= 33 and s3 < 29");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectAllAlignedWithTimeAndValueFilterTest2() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "9,null,9,false,aligned_test9",
-          "10,null,10,true,aligned_test10",
-          "11,null,11,null,null",
-          "12,null,12,null,null",
-          "13,null,130000,true,aligned_unseq_test13",
-          "14,null,14,null,null",
-          "15,null,15,null,null",
-          "16,null,16,null,null",
-          "17,null,17,null,null",
-          "18,null,18,null,null",
-          "19,null,19,null,null",
-          "20,null,20,null,null",
-          "21,null,21,true,null",
-          "22,null,22,true,null",
-          "23,230000.0,230000,false,null",
-          "24,null,24,true,null",
-          "25,null,25,true,null",
-          "26,null,26,false,null",
-          "27,null,27,false,null",
-          "28,null,28,false,null",
-          "29,null,29,false,null",
-          "30,null,30,false,null",
-          "32,null,null,null,aligned_test32",
-          "33,null,null,null,aligned_test33",
-          "36,null,null,null,aligned_test36",
-          "37,null,null,null,aligned_test37",
-        };
-
-    String[] columnNames = {"root.sg1.d1.s1", "root.sg1.d1.s3", "root.sg1.d1.s4", "root.sg1.d1.s5"};
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute(
-              "select * from root.sg1.d1 where time >= 9 and time <= 33 or s5 = 'aligned_test36' or s5 = 'aligned_test37'");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectSomeAlignedWithValueFilterTest1() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "7,null,false,aligned_test7",
-          "9,null,false,aligned_test9",
-          "23,230000.0,false,null",
-          "26,null,false,null",
-          "27,null,false,null",
-          "28,null,false,null",
-          "29,null,false,null",
-          "30,null,false,null",
-          "34,null,null,aligned_test34",
-        };
-
-    String[] columnNames = {"root.sg1.d1.s1", "root.sg1.d1.s4", "root.sg1.d1.s5"};
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute(
-              "select s1,s4,s5 from root.sg1.d1 where s4 = false or s5 = 'aligned_test34'");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectSomeAlignedWithValueFilterTest2() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "23,230000.0,false",
-        };
-
-    String[] columnNames = {"root.sg1.d1.s1", "root.sg1.d1.s4"};
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute("select s1,s4 from root.sg1.d1 where s1 > 29 and s4 = false");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectSomeAlignedWithTimeAndValueFilterTest() throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "23,230000.0,false,null",
-          "26,null,false,null",
-          "27,null,false,null",
-          "28,null,false,null",
-          "29,null,false,null",
-          "30,null,false,null",
-        };
-
-    String[] columnNames = {"root.sg1.d1.s1", "root.sg1.d1.s4", "root.sg1.d1.s5"};
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      boolean hasResultSet =
-          statement.execute(
-              "select s1,s4,s5 from root.sg1.d1 where time >= 16 and time <= 34 and s4=false");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void selectSomeAlignedAndNonAlignedWithTimeAndValueFilterTest()
-      throws ClassNotFoundException {
-
-    String[] retArray =
-        new String[] {
-          "21,null,true,null,null,true,null",
-          "22,null,true,null,null,true,null",
-          "23,null,false,null,null,true,230000.0",
-          "24,null,true,null,null,true,null",
-          "25,null,true,null,null,true,null",
-          "32,non_aligned_test32,null,null,aligned_test32,null,null",
-          "33,non_aligned_test33,null,null,aligned_test33,null,null",
-          "34,non_aligned_test34,null,null,aligned_test34,null,null",
-        };
-
-    String[] columnNames = {
-      "root.sg1.d2.s5",
-      "root.sg1.d1.s4",
-      "root.sg1.d2.s1",
-      "root.sg1.d1.s5",
-      "root.sg1.d2.s4",
-      "root.sg1.d1.s1"
-    };
-
-    Class.forName(Config.JDBC_DRIVER_NAME);
-    try (Connection connection =
-            DriverManager.getConnection(
-                Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/", "root", "root");
-        Statement statement = connection.createStatement()) {
-
-      // 1 4 5
-      boolean hasResultSet =
-          statement.execute(
-              "select d2.s5, d1.s4, d2.s1, d1.s5, d2.s4, d1.s1 from root.sg1 where time >= 16 and time <= 34 and (d1.s5 = 'aligned_test31' or d1.s5 = 'aligned_test32' or d1.s5 = 'aligned_test33' or d1.s5 = 'aligned_test34' or d2.s4 = true)");
-      Assert.assertTrue(hasResultSet);
-
-      try (ResultSet resultSet = statement.getResultSet()) {
-        ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
-        Map<String, Integer> map = new HashMap<>();
-        for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
-          map.put(resultSetMetaData.getColumnName(i), i);
-        }
-        assertEquals(columnNames.length + 1, resultSetMetaData.getColumnCount());
-        int cnt = 0;
-        while (resultSet.next()) {
-          StringBuilder builder = new StringBuilder();
-          builder.append(resultSet.getString(1));
-          for (String columnName : columnNames) {
-            int index = map.get(columnName);
-            builder.append(",").append(resultSet.getString(index));
-          }
-          assertEquals(retArray[cnt], builder.toString());
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-    } catch (SQLException e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-}
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/groupby/IoTDBGroupByFillIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/groupby/IoTDBGroupByFillIT.java
deleted file mode 100644
index a5afbaa37b..0000000000
--- a/integration/src/test/java/org/apache/iotdb/db/integration/groupby/IoTDBGroupByFillIT.java
+++ /dev/null
@@ -1,2657 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.integration.groupby;
-
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.qp.logical.crud.AggregationQueryOperator;
-import org.apache.iotdb.db.utils.EnvironmentUtils;
-import org.apache.iotdb.integration.env.ConfigFactory;
-import org.apache.iotdb.integration.env.EnvFactory;
-import org.apache.iotdb.itbase.category.LocalStandaloneTest;
-
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.Statement;
-
-import static org.apache.iotdb.db.constant.TestConstant.TIMESTAMP_STR;
-import static org.apache.iotdb.db.constant.TestConstant.avg;
-import static org.apache.iotdb.db.constant.TestConstant.count;
-import static org.apache.iotdb.db.constant.TestConstant.firstValue;
-import static org.apache.iotdb.db.constant.TestConstant.lastValue;
-import static org.apache.iotdb.db.constant.TestConstant.maxTime;
-import static org.apache.iotdb.db.constant.TestConstant.maxValue;
-import static org.apache.iotdb.db.constant.TestConstant.minTime;
-import static org.apache.iotdb.db.constant.TestConstant.minValue;
-import static org.apache.iotdb.db.constant.TestConstant.sum;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-@Category({LocalStandaloneTest.class})
-public class IoTDBGroupByFillIT {
-
-  private static String[] dataSet1 =
-      new String[] {
-        "CREATE DATABASE root.ln.wf01.wt01",
-        "CREATE TIMESERIES root.ln.wf01.wt01.status WITH DATATYPE=BOOLEAN, ENCODING=PLAIN",
-        "CREATE TIMESERIES root.ln.wf01.wt01.temperature WITH DATATYPE=INT32, ENCODING=PLAIN",
-        "CREATE TIMESERIES root.ln.wf01.wt01.hardware WITH DATATYPE=DOUBLE, ENCODING=PLAIN",
-        "INSERT INTO root.ln.wf01.wt01(timestamp, temperature, status, hardware) "
-            + "values(10, 21, false, 11.1)",
-        "INSERT INTO root.ln.wf01.wt01(timestamp, temperature, status, hardware) "
-            + "values(12, 23, true, 22.3)",
-        "INSERT INTO root.ln.wf01.wt01(timestamp, temperature, status, hardware) "
-            + "values(14, 25, false, 33.5)",
-        "INSERT INTO root.ln.wf01.wt01(timestamp, temperature, status, hardware) "
-            + "values(23, 28, true, 34.9)",
-        "INSERT INTO root.ln.wf01.wt01(timestamp, temperature, status, hardware) "
-            + "values(25, 23, false, 31.7)",
-        "INSERT INTO root.ln.wf01.wt01(timestamp, temperature, status, hardware) "
-            + "values(33, 29, false, 44.6)",
-        "INSERT INTO root.ln.wf01.wt01(timestamp, temperature, status, hardware) "
-            + "values(36, 24, true, 44.8)",
-        "INSERT INTO root.ln.wf01.wt01(timestamp, temperature, status, hardware) "
-            + "values(48, 28, false, 54.6)",
-        "INSERT INTO root.ln.wf01.wt01(timestamp, temperature, status, hardware) "
-            + "values(50, 30, true, 55.8)",
-        "INSERT INTO root.ln.wf01.wt01(timestamp, temperature, status, hardware) "
-            + "values(66, 40, false, 33.0)",
-        "flush"
-      };
-
-  @BeforeClass
-  public static void setUp() throws Exception {
-    ConfigFactory.getConfig().setPartitionInterval(1000);
-    EnvFactory.getEnv().initBeforeClass();
-    prepareData();
-  }
-
-  @AfterClass
-  public static void tearDown() throws Exception {
-    IoTDBDescriptor.getInstance().getConfig().setTimePartitionInterval(86400000);
-    EnvironmentUtils.cleanEnv();
-  }
-
-  @Test
-  public void oldTypePreviousLastValueTest() {
-    String[] retArray =
-        new String[] {"17,null", "22,23", "27,23", "32,24", "37,24", "42,24", "47,30", "52,30"};
-
-    try (Connection conn = EnvFactory.getEnv().getConnection();
-        Statement statement = conn.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select last_value(temperature) from "
-                  + "root.ln.wf01.wt01 "
-                  + "GROUP BY ([17, 55), 5ms) FILL(int32[previous])");
-      assertTrue(hasResultSet);
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(lastValue("root.ln.wf01.wt01.temperature"));
-          assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select last_value(temperature) from "
-                  + "root.ln.wf01.wt01 "
-                  + "GROUP BY ([17, 55), 5ms) FILL(int32[previous]) order by time desc");
-      assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(lastValue("root.ln.wf01.wt01.temperature"));
-          assertEquals(retArray[retArray.length - cnt - 1], ans);
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void previousLastValueWithValueFilterTest() {
-    String[] retArray =
-        new String[] {"17,null", "22,28", "27,28", "32,29", "37,29", "42,29", "47,30", "52,30"};
-
-    try (Connection conn = EnvFactory.getEnv().getConnection();
-        Statement statement = conn.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select last_value(temperature) from "
-                  + "root.ln.wf01.wt01 "
-                  + "WHERE temperature > 25 "
-                  + "GROUP BY ([17, 55), 5ms) FILL(previous)");
-      assertTrue(hasResultSet);
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(lastValue("root.ln.wf01.wt01.temperature"));
-          assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select last_value(temperature) from "
-                  + "root.ln.wf01.wt01 "
-                  + "WHERE temperature > 25 "
-                  + "GROUP BY ([17, 55), 5ms) FILL(previous) order by time desc");
-      assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(lastValue("root.ln.wf01.wt01.temperature"));
-          assertEquals(retArray[retArray.length - cnt - 1], ans);
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void oldTypePreviousFirstValueTest() {
-    String[] retArray =
-        new String[] {
-          "17,null", "22,34.9", "27,34.9", "32,44.6", "37,44.6", "42,44.6", "47,54.6", "52,54.6"
-        };
-
-    try (Connection conn = EnvFactory.getEnv().getConnection();
-        Statement statement = conn.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select first_value(hardware) from "
-                  + "root.ln.wf01.wt01 "
-                  + "GROUP BY ([17, 55), 5ms) FILL(double[previous])");
-
-      assertTrue(hasResultSet);
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(firstValue("root.ln.wf01.wt01.hardware"));
-          assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select first_value(hardware) from "
-                  + "root.ln.wf01.wt01 "
-                  + "GROUP BY ([17, 55), 5ms) FILL(double[previous]) order by time desc");
-      assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(firstValue("root.ln.wf01.wt01.hardware"));
-          assertEquals(retArray[retArray.length - cnt - 1], ans);
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void previousAvgTest() {
-    String[] retArray =
-        new String[] {
-          "17,null", "22,33.3", "27,33.3", "32,44.7", "37,44.7", "42,44.7", "47,55.2", "52,55.2"
-        };
-
-    try (Connection conn = EnvFactory.getEnv().getConnection();
-        Statement statement = conn.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select avg(hardware) from "
-                  + "root.ln.wf01.wt01 "
-                  + "GROUP BY ([17, 55), 5ms) FILL(previous)");
-      assertTrue(hasResultSet);
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(avg("root.ln.wf01.wt01.hardware"));
-          assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select avg(hardware) from "
-                  + "root.ln.wf01.wt01 "
-                  + "GROUP BY ([17, 55), 5ms) FILL(previous) order by time desc");
-      assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(avg("root.ln.wf01.wt01.hardware"));
-          assertEquals(retArray[retArray.length - cnt - 1], ans);
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void oldTypePreviousAvgWithValueFilterTest() {
-    String[] retArray =
-        new String[] {
-          "17,null", "22,null", "27,null", "32,44.7", "37,44.7", "42,44.7", "47,55.2", "52,55.2"
-        };
-
-    try (Connection conn = EnvFactory.getEnv().getConnection();
-        Statement statement = conn.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
-              "select avg(hardware) from "
-                  + "root.ln.wf01.wt01 "
-                  + "WHERE hardware > 35.0 "
-                  + "GROUP BY ([17, 55), 5ms) FILL(double[previous])");
-      assertTrue(hasResultSet);
-      int cnt;
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(avg("root.ln.wf01.wt01.hardware"));
-          assertEquals(retArray[cnt], ans);
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-
-      hasResultSet =
-          statement.execute(
-              "select avg(hardware) from "
-                  + "root.ln.wf01.wt01 "
-                  + "WHERE hardware > 35.0 "
-                  + "GROUP BY ([17, 55), 5ms) FILL(double[previous]) order by time desc");
-      assertTrue(hasResultSet);
-      try (ResultSet resultSet = statement.getResultSet()) {
-        cnt = 0;
-        while (resultSet.next()) {
-          String ans =
-              resultSet.getString(TIMESTAMP_STR)
-                  + ","
-                  + resultSet.getString(avg("root.ln.wf01.wt01.hardware"));
-          assertEquals(retArray[retArray.length - cnt - 1], ans);
-          cnt++;
-        }
-        assertEquals(retArray.length, cnt);
-      }
-    } catch (Exception e) {
-      e.printStackTrace();
-      fail(e.getMessage());
-    }
-  }
-
-  @Test
-  public void previousCountTest() {
-    String[] retArray =
-        new String[] {"17,0", "22,2", "27,0", "32,2", "37,0", "42,0", "47,2", "52,0"};
-
-    try (Connection conn = EnvFactory.getEnv().getConnection();
-        Statement statement = conn.createStatement()) {
-      boolean hasResultSet =
-          statement.execute(
... 49958 lines suppressed ...