This is an automated email from the ASF dual-hosted git repository. xiangweiwei pushed a commit to branch RequeryV2 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 2fe872483c75291474e6ba18f4c4ad84ee824201 Merge: 0ba9a37 222396c Author: Alima777 <[email protected]> AuthorDate: Tue May 18 22:01:49 2021 +0800 Merge master and fix conflicts .github/workflows/client.yml | 7 +- .github/workflows/main-unix.yml | 2 +- .github/workflows/main-win.yml | 2 +- .../ContributeGuide.md => CONTRIBUTING.md | 63 +++--- Jenkinsfile | 2 +- LICENSE-binary | 2 +- README.md | 22 +- README_ZH.md | 16 +- .../antlr4/org/apache/iotdb/db/qp/sql/SqlBase.g4 | 19 +- .../main/java/org/apache/iotdb/tool/ImportCsv.java | 3 + client-cpp/src/main/CMakeLists.txt | 2 +- client-cpp/src/test/CMakeLists.txt | 2 +- client-py/README.md | 5 +- cluster/pom.xml | 2 +- .../resources/conf/iotdb-cluster.properties | 3 + .../java/org/apache/iotdb/cluster/ClusterMain.java | 13 ++ .../cluster/client/async/AsyncDataClient.java | 4 +- .../client/async/AsyncDataHeartbeatClient.java | 4 +- .../cluster/client/async/AsyncMetaClient.java | 4 +- .../client/async/AsyncMetaHeartbeatClient.java | 4 +- .../iotdb/cluster/client/sync/SyncDataClient.java | 2 + .../client/sync/SyncDataHeartbeatClient.java | 2 + .../iotdb/cluster/client/sync/SyncMetaClient.java | 2 + .../client/sync/SyncMetaHeartbeatClient.java | 2 + .../apache/iotdb/cluster/config/ClusterConfig.java | 9 + .../iotdb/cluster/config/ClusterDescriptor.java | 9 +- .../iotdb/cluster/log/applier/BaseApplier.java | 37 +++- .../apache/iotdb/cluster/metadata/CMManager.java | 12 +- .../cluster/query/ClusterDataQueryExecutor.java | 5 +- .../cluster/query/reader/ClusterReaderFactory.java | 12 +- .../query/reader/mult/RemoteMultSeriesReader.java | 7 +- .../iotdb/cluster/server/MetaClusterServer.java | 27 ++- .../server/clusterinfo/ClusterInfoServer.java | 94 ++++++++ .../server/clusterinfo/ClusterInfoServerMBean.java | 23 +- .../server/clusterinfo/ClusterInfoServiceImpl.java | 71 ++++++ .../ClusterInfoServiceThriftHandler.java | 55 +++++ .../cluster/utils/nodetool/ClusterMonitor.java | 2 + .../utils/nodetool/ClusterMonitorMBean.java | 2 +- .../cluster/client/sync/SyncDataClientTest.java | 6 +- .../cluster/client/sync/SyncMetaClientTest.java | 6 +- .../cluster/common/TestAsyncClientFactory.java | 4 +- .../cluster/common/TestSyncClientFactory.java | 13 ++ .../cluster/log/applier/DataLogApplierTest.java | 35 +++ .../cluster/log/snapshot/DataSnapshotTest.java | 14 ++ .../cluster/log/snapshot/PullSnapshotTaskTest.java | 14 ++ .../query/groupby/MergeGroupByExecutorTest.java | 23 +- .../query/groupby/RemoteGroupByExecutorTest.java | 23 +- .../server/clusterinfo/ClusterInfoServerTest.java | 96 ++++++++ .../clusterinfo/ClusterInfoServiceImplTest.java | 98 +++++++++ .../cluster/server/member/DataGroupMemberTest.java | 28 ++- .../cluster/server/member/MetaGroupMemberTest.java | 20 +- .../resources/node1conf/iotdb-cluster.properties | 1 + .../resources/node2conf/iotdb-cluster.properties | 1 + .../resources/node3conf/iotdb-cluster.properties | 1 + compile-tools/thrift/pom.xml | 2 +- docs/Development/ContributeGuide.md | 62 +++--- docs/UserGuide/API/Programming-Java-Native-API.md | 98 +++++++++ .../Administration-Management/Administration.md | 7 +- docs/UserGuide/Cluster/Cluster-Setup.md | 9 + .../Data-Concept/Data-Model-and-Terminology.md | 4 +- .../Ecosystem Integration/Zeppelin-IoTDB.md | 2 +- .../DDL-Data-Definition-Language.md | 2 +- .../DML-Data-Manipulation-Language.md | 14 ++ docs/zh/Development/ContributeGuide.md | 26 +-- .../UserGuide/API/Programming-Java-Native-API.md | 95 ++++++++ .../Administration-Management/Administration.md | 5 +- docs/zh/UserGuide/Cluster/Cluster-Setup.md | 9 + .../Data-Concept/Data-Model-and-Terminology.md | 4 +- .../Ecosystem Integration/Zeppelin-IoTDB.md | 2 +- .../DDL-Data-Definition-Language.md | 2 +- .../DML-Data-Manipulation-Language.md | 14 ++ example/pom.xml | 6 + {thrift-sync => example/rabbitmq}/pom.xml | 42 +--- example/rabbitmq/readme.md | 63 ++++++ .../java/org/apache/iotdb/rabbitmq/Constant.java | 68 ++++++ .../iotdb/rabbitmq/RabbitMQChannelUtils.java | 49 +++++ .../apache/iotdb/rabbitmq/RabbitMQConsumer.java | 132 +++++++++++ .../apache/iotdb/rabbitmq/RabbitMQProducer.java | 49 +++++ example/trigger/pom.xml | 66 +++--- .../apache/iotdb/tsfile/TsFileSequenceRead.java | 5 + example/udf/pom.xml | 66 +++--- jdbc/src/main/feature/feature.xml | 2 +- .../org/apache/iotdb/jdbc/IoTDBConnection.java | 9 +- .../iotdb/jdbc/IoTDBNonAlignJDBCResultSet.java | 9 +- .../java/org/apache/iotdb/jdbc/IoTDBStatement.java | 24 +- pom.xml | 25 ++- server/pom.xml | 12 +- .../resources/conf/iotdb-engine.properties | 13 +- .../apache/iotdb/db/auth/entity/PrivilegeType.java | 1 + .../org/apache/iotdb/db/concurrent/ThreadName.java | 3 +- .../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 34 ++- .../org/apache/iotdb/db/conf/IoTDBConfigCheck.java | 28 ++- .../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 19 ++ .../db/engine/cache/TimeSeriesMetadataCache.java | 121 +++++++++++ .../db/engine/compaction/TsFileManagement.java | 21 +- .../level/LevelCompactionTsFileManagement.java | 51 +++-- .../engine/compaction/utils/CompactionUtils.java | 81 +++++-- .../engine/storagegroup/StorageGroupProcessor.java | 42 +++- .../db/engine/storagegroup/TsFileResource.java | 15 +- .../org/apache/iotdb/db/metadata/MManager.java | 64 ++++-- .../org/apache/iotdb/db/metadata/PartialPath.java | 15 ++ .../apache/iotdb/db/qp/executor/PlanExecutor.java | 9 +- .../iotdb/db/qp/logical/crud/QueryOperator.java | 22 ++ .../org/apache/iotdb/db/qp/physical/BatchPlan.java | 54 +++-- .../db/qp/physical/crud/InsertMultiTabletPlan.java | 39 +++- .../physical/crud/InsertRowsOfOneDevicePlan.java | 33 ++- .../iotdb/db/qp/physical/crud/InsertRowsPlan.java | 39 +++- .../iotdb/db/qp/physical/crud/QueryPlan.java | 22 ++ .../qp/physical/sys/CreateMultiTimeSeriesPlan.java | 39 +++- .../apache/iotdb/db/qp/physical/sys/ShowPlan.java | 1 - .../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java | 147 ++++++------- .../iotdb/db/qp/strategy/PhysicalGenerator.java | 5 +- .../apache/iotdb/db/qp/utils/DatetimeUtils.java | 33 ++- .../dataset/RawQueryDataSetWithoutValueFilter.java | 79 +++++-- .../apache/iotdb/db/query/dataset/ShowDataSet.java | 12 +- .../db/query/executor/fill/LastPointReader.java | 51 ++--- .../chunk/metadata/DiskChunkMetadataLoader.java | 2 +- .../query/reader/series/SeriesAggregateReader.java | 2 +- .../reader/series/SeriesRawDataBatchReader.java | 4 +- .../iotdb/db/query/reader/series/SeriesReader.java | 13 +- .../reader/series/SeriesReaderByTimestamp.java | 2 +- .../query/reader/series/SeriesReaderFactory.java | 94 -------- .../db/query/reader/series/VectorSeriesReader.java | 144 ------------ .../org/apache/iotdb/db/service/ServiceType.java | 5 +- .../org/apache/iotdb/db/service/TSServiceImpl.java | 3 +- .../apache/iotdb/db/sync/conf/SyncConstant.java | 5 +- .../iotdb/db/sync/sender/transfer/SyncClient.java | 27 ++- .../java/org/apache/iotdb/db/utils/AuthUtils.java | 2 - .../org/apache/iotdb/db/utils/FileLoaderUtils.java | 94 +++++++- .../apache/iotdb/db/utils/QueryDataSetUtils.java | 18 +- .../iotdb/db/utils/datastructure/VectorTVList.java | 6 +- .../apache/iotdb/db/auth/AuthorityCheckerTest.java | 2 - .../auth/authorizer/LocalFileAuthorizerTest.java | 6 +- .../db/engine/compaction/CompactionChunkTest.java | 4 +- .../compaction/LevelCompactionCacheTest.java | 3 +- .../engine/compaction/LevelCompactionLogTest.java | 3 +- .../compaction/LevelCompactionMergeTest.java | 83 ++++++- .../compaction/LevelCompactionMoreDataTest.java | 3 +- .../NoCompactionTsFileManagementTest.java | 4 +- .../iotdb/db/integration/IoTDBGroupByMonthIT.java | 29 +++ .../iotdb/db/integration/IoTDBSimpleQueryIT.java | 36 +++ .../db/integration/IoTDBWithoutAllNullIT.java | 192 ++++++++++++++++ .../db/integration/IoTDBWithoutAnyNullIT.java | 221 +++++++++++++++++++ .../iotdb/db/metadata/MManagerBasicTest.java | 242 +++++++++++++++++++++ .../db/qp/utils/DatetimeQueryDataSetUtilsTest.java | 28 +++ .../org/apache/iotdb/db/script/EnvScriptIT.java | 6 +- .../apache/iotdb/db/sink/LocalIoTDBSinkTest.java | 3 +- .../apache/iotdb/db/utils/EnvironmentUtils.java | 12 +- .../iotdb/rpc/AutoScalingBufferReadTransport.java | 13 ++ .../iotdb/rpc/AutoScalingBufferWriteTransport.java | 15 ++ .../java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java | 20 +- .../org/apache/iotdb/rpc/RpcTransportFactory.java | 3 +- .../rpc/TCompressedElasticFramedTransport.java | 2 +- .../org/apache/iotdb/rpc/TConfigurationConst.java | 28 +-- .../apache/iotdb/rpc/TElasticFramedTransport.java | 20 +- .../iotdb/rpc/TNonblockingSocketWrapper.java | 60 +++++ .../java/org/apache/iotdb/rpc/TSocketWrapper.java | 68 ++++++ .../apache/iotdb/session/SessionConnection.java | 13 +- .../apache/iotdb/session/pool/SessionPoolTest.java | 117 +++++++--- session/src/test/resources/logback.xml | 40 ++++ .../test/java/org/apache/iotdb/db/sql/Cases.java | 149 +++++++++++++ .../java/org/apache/iotdb/db/sql/ClusterIT.java | 150 +++++-------- .../java/org/apache/iotdb/db/sql/SingleNodeIT.java | 92 ++------ .../iotdb/db/sql/node1/OneNodeClusterIT.java | 54 +++++ .../db/sql/nodes3/AbstractThreeNodeClusterIT.java | 61 ++++++ .../iotdb/db/sql/nodes3/ThreeNodeCluster1IT.java | 24 +- .../iotdb/db/sql/nodes3/ThreeNodeCluster2IT.java | 27 +-- .../db/sql/nodes5/AbstractFiveNodeClusterIT.java | 85 ++++++++ .../iotdb/db/sql/nodes5/FiveNodeCluster1IT.java | 24 +- .../iotdb/db/sql/nodes5/FiveNodeCluster2IT.java | 27 +-- .../iotdb/db/sql/nodes5/FiveNodeCluster4IT.java | 27 +-- .../test/resources/1node/iotdb-cluster.properties | 2 +- thrift-cluster/src/main/thrift/cluster.thrift | 52 ++++- thrift-sync/pom.xml | 5 - .../tsfile/common/constant/TsFileConstant.java | 3 + .../iotdb/tsfile/file/metadata/ChunkMetadata.java | 16 ++ .../iotdb/tsfile/file/metadata/IChunkMetadata.java | 6 + .../tsfile/file/metadata/ITimeSeriesMetadata.java | 3 + .../file/metadata/MetadataIndexConstructor.java | 54 ++++- .../tsfile/file/metadata/MetadataIndexNode.java | 2 +- .../tsfile/file/metadata/TimeseriesMetadata.java | 20 +- .../tsfile/file/metadata/VectorChunkMetadata.java | 24 ++ .../file/metadata/VectorTimeSeriesMetadata.java | 16 ++ .../iotdb/tsfile/read/TsFileSequenceReader.java | 80 +++++-- .../apache/iotdb/tsfile/read/common/RowRecord.java | 38 +++- .../tsfile/read/query/dataset/QueryDataSet.java | 29 ++- .../tsfile/v2/file/metadata/TsFileMetadataV2.java | 9 +- .../tsfile/v2/read/TsFileSequenceReaderForV2.java | 16 +- .../iotdb/tsfile/write/chunk/TimeChunkWriter.java | 3 +- .../iotdb/tsfile/write/chunk/ValueChunkWriter.java | 3 +- .../iotdb/tsfile/write/writer/TsFileIOWriter.java | 121 ++++++++--- 191 files changed, 4597 insertions(+), 1336 deletions(-) diff --cc server/pom.xml index 4d0f08d,08944e2..07219f6 --- a/server/pom.xml +++ b/server/pom.xml @@@ -213,12 -213,6 +213,12 @@@ <version>4.3.5</version> <scope>compile</scope> </dependency> - <dependency> - <groupId>org.apache.calcite</groupId> - <artifactId>calcite-linq4j</artifactId> - <version>1.10.0</version> - <scope>compile</scope> - </dependency> ++ <dependency> ++ <groupId>org.apache.calcite</groupId> ++ <artifactId>calcite-linq4j</artifactId> ++ <version>1.10.0</version> ++ <scope>compile</scope> ++ </dependency> </dependencies> <build> <plugins> diff --cc server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java index e52dd92,c640470..7e3055b --- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java @@@ -279,15 -257,19 +285,31 @@@ public class QueryOperator extends Root this.ascending = ascending; } + public boolean isLastQuery() { + return selectOperator.isLastQuery(); + } + + public boolean hasAggregationFunction() { + return selectOperator.hasAggregationFunction(); + } + + public boolean hasTimeSeriesGeneratingFunction() { + return selectOperator.hasTimeSeriesGeneratingFunction(); + } ++ + public boolean isWithoutAnyNull() { + return withoutAnyNull; + } + + public void setWithoutAnyNull(boolean withoutAnyNull) { + this.withoutAnyNull = withoutAnyNull; + } + + public boolean isWithoutAllNull() { + return withoutAllNull; + } + + public void setWithoutAllNull(boolean withoutAllNull) { + this.withoutAllNull = withoutAllNull; + } } diff --cc server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java index 6bd6ce4,a13de6f..d43413f --- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java @@@ -157,11 -157,19 +163,27 @@@ public abstract class QueryPlan extend this.vectorPathToIndex = vectorPathToIndex; } + public List<ResultColumn> getResultColumns() { + return resultColumns; + } + + public void setResultColumns(List<ResultColumn> resultColumns) { + this.resultColumns = resultColumns; + } ++ + public boolean isWithoutAnyNull() { + return withoutAnyNull; + } + + public void setWithoutAnyNull(boolean withoutAnyNull) { + this.withoutAnyNull = withoutAnyNull; + } + + public boolean isWithoutAllNull() { + return withoutAllNull; + } + + public void setWithoutAllNull(boolean withoutAllNull) { + this.withoutAllNull = withoutAllNull; + } } diff --cc server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java index 82ef1e0,faa4499..44d9131 --- a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java @@@ -78,9 -78,11 +78,9 @@@ import org.apache.iotdb.db.qp.logical.s import org.apache.iotdb.db.qp.logical.sys.StopTriggerOperator; import org.apache.iotdb.db.qp.logical.sys.TracingOperator; import org.apache.iotdb.db.qp.physical.crud.GroupByTimePlan; -import org.apache.iotdb.db.qp.sql.SqlBaseParser.AggregationCallContext; -import org.apache.iotdb.db.qp.sql.SqlBaseParser.AggregationElementContext; import org.apache.iotdb.db.qp.sql.SqlBaseParser.AliasClauseContext; - import org.apache.iotdb.db.qp.sql.SqlBaseParser.AlignByDeviceClauseOrDisableAlignInSpecialLimitContext; - import org.apache.iotdb.db.qp.sql.SqlBaseParser.AlignByDeviceStatementOrDisableAlignInSpecialClauseContext; + import org.apache.iotdb.db.qp.sql.SqlBaseParser.AlignByDeviceClauseOrDisableAlignContext; + import org.apache.iotdb.db.qp.sql.SqlBaseParser.AlignByDeviceClauseOrDisableAlignStatementContext; import org.apache.iotdb.db.qp.sql.SqlBaseParser.AlterClauseContext; import org.apache.iotdb.db.qp.sql.SqlBaseParser.AlterTimeseriesContext; import org.apache.iotdb.db.qp.sql.SqlBaseParser.AlterUserContext; @@@ -206,8 -212,11 +206,9 @@@ import org.apache.iotdb.db.qp.sql.SqlBa import org.apache.iotdb.db.qp.sql.SqlBaseParser.TracingOnContext; import org.apache.iotdb.db.qp.sql.SqlBaseParser.TriggerAttributeContext; import org.apache.iotdb.db.qp.sql.SqlBaseParser.TypeClauseContext; -import org.apache.iotdb.db.qp.sql.SqlBaseParser.UdfAttributeContext; -import org.apache.iotdb.db.qp.sql.SqlBaseParser.UdfCallContext; import org.apache.iotdb.db.qp.sql.SqlBaseParser.UnsetTTLStatementContext; import org.apache.iotdb.db.qp.sql.SqlBaseParser.WhereClauseContext; + import org.apache.iotdb.db.qp.sql.SqlBaseParser.WithoutNullStatementContext; import org.apache.iotdb.db.qp.utils.DatetimeUtils; import org.apache.iotdb.db.query.executor.fill.IFill; import org.apache.iotdb.db.query.executor.fill.LinearFill; diff --cc server/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java index 9bfc7e1,217a3bb..5c81c6e --- a/server/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java @@@ -540,9 -540,9 +540,9 @@@ public class PhysicalGenerator @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning private PhysicalPlan transformQuery(QueryOperator queryOperator) throws QueryProcessException { - QueryPlan queryPlan = null; + QueryPlan queryPlan; - if (queryOperator.hasAggregation()) { + if (queryOperator.hasAggregationFunction()) { queryPlan = new AggPhysicalPlanRule().transform(queryOperator); } else if (queryOperator.isFill()) { queryPlan = new FillPhysicalPlanRule().transform(queryOperator);
