This is an automated email from the ASF dual-hosted git repository. chaow pushed a commit to branch feature/metric2021 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 4b26410817c08d7a8924fd7fd856cc679ce2e7d4 Merge: e4c562a a2b704d Author: chaow <[email protected]> AuthorDate: Thu Feb 25 15:41:17 2021 +0800 merge master .github/workflows/client.yml | 4 +- .github/workflows/{main-mac.yml => main-unix.yml} | 10 +- .github/workflows/main-win.yml | 2 +- .../{main-linux.yml => sonar-coveralls.yml} | 20 +- README.md | 2 + .../java/org/apache/iotdb/cli/AbstractCliIT.java | 2 +- .../org/apache/iotdb/cli/StartClientScriptIT.java | 4 +- client-cpp/pom.xml | 156 ++++---- client-cpp/src/assembly/client-cpp.xml | 1 + cluster/src/assembly/cluster.xml | 8 +- .../java/org/apache/iotdb/cluster/ClientMain.java | 2 +- .../iotdb/cluster/client/DataClientProvider.java | 7 +- .../iotdb/cluster/coordinator/Coordinator.java | 42 +- .../cluster/log/applier/AsyncDataLogApplier.java | 8 + .../iotdb/cluster/log/applier/BaseApplier.java | 3 + .../iotdb/cluster/log/applier/DataLogApplier.java | 11 + .../cluster/log/logtypes/PhysicalPlanLog.java | 2 +- .../cluster/log/snapshot/MetaSimpleSnapshot.java | 3 +- .../apache/iotdb/cluster/metadata/CMManager.java | 168 +++++--- .../apache/iotdb/cluster/metadata/MetaPuller.java | 26 +- .../iotdb/cluster/query/ClusterPlanExecutor.java | 57 +-- .../iotdb/cluster/query/ClusterPlanRouter.java | 35 +- .../cluster/query/aggregate/ClusterAggregator.java | 16 +- .../query/groupby/RemoteGroupByExecutor.java | 37 +- .../query/last/ClusterLastQueryExecutor.java | 32 +- .../cluster/query/reader/ClusterReaderFactory.java | 16 +- .../iotdb/cluster/query/reader/DataSourceInfo.java | 3 +- .../reader/RemoteSeriesReaderByTimestamp.java | 16 +- .../query/reader/RemoteSimpleSeriesReader.java | 14 +- .../apache/iotdb/cluster/server/ClientServer.java | 14 +- .../iotdb/cluster/server/StoppedMemberManager.java | 2 +- .../cluster/server/member/DataGroupMember.java | 12 +- .../apache/iotdb/cluster/server/monitor/Timer.java | 2 +- .../cluster/utils/nodetool/function/Host.java | 2 +- .../cluster/client/DataClientProviderTest.java | 3 + .../iotdb/cluster/common/TestLogManager.java | 4 +- .../iotdb/cluster/log/CommitLogCallbackTest.java | 4 +- .../cluster/log/applier/MetaLogApplierTest.java | 11 +- .../cluster/log/manage/RaftLogManagerTest.java | 3 +- .../cluster/log/snapshot/DataSnapshotTest.java | 2 +- .../iotdb/cluster/query/LoadConfigurationTest.java | 4 +- .../query/reader/RemoteSimpleSeriesReaderTest.java | 2 +- .../caller/AppendGroupEntryHandlerTest.java | 3 +- .../handlers/caller/ElectionHandlerTest.java | 2 +- compile-tools/thrift/pom.xml | 432 +++++++-------------- compile-tools/thrift/src/assembly/compiler.xml | 37 -- compile-tools/thrift/src/assembly/cpp.xml | 51 --- compile-tools/thrift/src/assembly/python.xml | 38 -- distribution/pom.xml | 31 +- .../src/assembly/{distribution.xml => all.xml} | 57 +-- distribution/src/assembly/cli.xml | 54 +++ distribution/src/assembly/client-cpp.xml | 38 ++ .../src/assembly/{distribution.xml => cluster.xml} | 64 ++- distribution/src/assembly/common-files.xml | 48 +++ distribution/src/assembly/grafana.xml | 48 +++ .../src/assembly/{distribution.xml => server.xml} | 49 +-- docker/src/main/Dockerfile | 2 +- docs/UserGuide/Comparison/TSDB-Comparison.md | 107 +++-- .../DML Data Manipulation Language.md | 38 +- .../Operation Manual/UDF User Defined Function.md | 6 +- docs/zh/SystemDesign/DataQuery/AggregationQuery.md | 2 +- .../DML Data Manipulation Language.md | 36 +- .../Operation Manual/UDF User Defined Function.md | 6 +- docs/zh/UserGuide/Server/Config Manual.md | 30 +- example/client-cpp-example/pom.xml | 214 +++++----- .../iotdb/flink/FlinkTsFileStreamSource.java | 3 +- .../iotdb/hadoop/tsfile/TSFMRReadExample.java | 3 +- .../iotdb/hadoop/tsfile/TSMRWriteExample.java | 3 +- .../apache/iotdb/hadoop/tsfile/TsFileHelper.java | 3 +- .../main/java/org/apache/iotdb/SessionExample.java | 5 +- .../java/org/apache/iotdb/SessionPoolExample.java | 2 +- .../iotdb/tsfile/TsFileWriteWithTSRecord.java | 2 +- .../java/org/apache/iotdb/flink/IoTDBSink.java | 2 +- .../iotdb/flink/IoTDBSinkBatchInsertTest.java | 2 +- .../iotdb/flink/IoTDBSinkBatchTimerTest.java | 4 +- .../iotdb/flink/tsfile/RowTSRecordConverter.java | 7 +- .../flink/tsfile/RowTsFileConnectorTestBase.java | 2 +- .../flink/tsfile/RowTsFileInputFormatITCase.java | 2 +- .../web/grafana/dao/impl/BasicDaoImplTest.java | 4 +- .../apache/iotdb/hadoop/fileSystem/HDFSFile.java | 23 +- .../apache/iotdb/hadoop/fileSystem/HDFSInput.java | 10 +- .../apache/iotdb/hadoop/fileSystem/HDFSOutput.java | 4 +- .../iotdb/hadoop/tsfile/TSFRecordReader.java | 4 +- .../iotdb/hadoop/tsfile/TSFRecordWriter.java | 2 +- .../apache/iotdb/hadoop/tsfile/TSFHadoopTest.java | 4 +- .../iotdb/hadoop/tsfile/TSFInputSplitTest.java | 2 +- .../iotdb/hadoop/tsfile/TsFileTestHelper.java | 3 +- .../org/apache/iotdb/hive/TSFHiveOutputFormat.java | 2 +- .../org/apache/iotdb/hive/TSFHiveRecordReader.java | 2 +- .../org/apache/iotdb/hive/TsFileDeserializer.java | 2 +- .../java/org/apache/iotdb/hive/TsFileSerDe.java | 4 +- .../org/apache/iotdb/hive/TsFileTestHelper.java | 3 +- .../org/apache/iotdb/jdbc/IoTDBConnection.java | 2 +- .../org/apache/iotdb/jdbc/IoTDBDataSource.java | 17 +- .../apache/iotdb/jdbc/IoTDBDataSourceFactory.java | 10 +- .../apache/iotdb/jdbc/IoTDBDatabaseMetadata.java | 8 +- .../java/org/apache/iotdb/jdbc/IoTDBDriver.java | 4 +- .../apache/iotdb/jdbc/IoTDBPreparedStatement.java | 24 +- .../java/org/apache/iotdb/jdbc/IoTDBStatement.java | 2 +- .../test/java/org/apache/iotdb/jdbc/BatchTest.java | 2 +- .../org/apache/iotdb/jdbc/IoTDBConnectionTest.java | 6 +- .../apache/iotdb/jdbc/IoTDBResultMetadataTest.java | 4 +- .../org/apache/iotdb/jdbc/IoTDBStatementTest.java | 2 +- .../test/java/org/apache/iotdb/jdbc/UtilsTest.java | 4 +- pom.xml | 29 +- .../iotdb/db/auth/authorizer/OpenIdAuthorizer.java | 8 +- .../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 2 +- .../org/apache/iotdb/db/engine/StorageEngine.java | 9 +- .../db/engine/compaction/TsFileManagement.java | 6 + .../level/LevelCompactionTsFileManagement.java | 3 +- .../iotdb/db/engine/merge/manage/MergeManager.java | 4 +- .../io/LocalTextModificationAccessor.java | 2 +- .../engine/storagegroup/StorageGroupProcessor.java | 33 +- .../storagegroup/virtualSg/VirtualPartitioner.java | 4 +- .../virtualSg/VirtualStorageGroupManager.java | 4 +- .../query/UnSupportedFillTypeException.java | 2 +- .../org/apache/iotdb/db/metadata/MManager.java | 66 ++-- .../java/org/apache/iotdb/db/metadata/MTree.java | 128 +++--- .../org/apache/iotdb/db/metadata/MetaUtils.java | 37 ++ .../org/apache/iotdb/db/metadata/mnode/MNode.java | 49 ++- .../apache/iotdb/db/metrics/server/JettyUtil.java | 6 +- .../iotdb/db/metrics/server/QueryServlet.java | 7 +- .../apache/iotdb/db/metrics/ui/MetricsPage.java | 2 +- .../apache/iotdb/db/qp/executor/IPlanExecutor.java | 8 + .../apache/iotdb/db/qp/executor/PlanExecutor.java | 76 ++-- .../org/apache/iotdb/db/qp/logical/Operator.java | 3 +- .../apache/iotdb/db/qp/physical/PhysicalPlan.java | 8 +- .../iotdb/db/qp/physical/crud/AggregationPlan.java | 35 ++ .../iotdb/db/qp/physical/crud/InsertRowPlan.java | 10 +- .../physical/crud/InsertRowsOfOneDevicePlan.java | 4 +- .../iotdb/db/qp/physical/crud/InsertRowsPlan.java | 219 +++++++++++ .../iotdb/db/qp/physical/sys/AuthorPlan.java | 2 +- .../qp/physical/sys/CreateMultiTimeSeriesPlan.java | 14 + .../iotdb/db/qp/physical/sys/DataAuthPlan.java | 2 +- .../db/qp/physical/sys/DeleteTimeSeriesPlan.java | 22 ++ .../apache/iotdb/db/qp/physical/sys/ShowPlan.java | 2 +- .../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java | 2 +- .../iotdb/db/qp/strategy/PhysicalGenerator.java | 11 + .../qp/strategy/optimizer/ConcatPathOptimizer.java | 11 - .../db/query/aggregation/impl/AvgAggrResult.java | 17 + .../db/query/aggregation/impl/CountAggrResult.java | 2 +- .../query/aggregation/impl/MaxValueAggrResult.java | 4 +- .../query/aggregation/impl/MinValueAggrResult.java | 7 +- .../iotdb/db/query/dataset/SingleDataSet.java | 5 +- .../query/dataset/groupby/GroupByTimeDataSet.java | 8 +- .../db/query/executor/AggregationExecutor.java | 12 +- .../db/query/reader/chunk/DiskChunkLoader.java | 2 +- .../db/query/reader/chunk/MemChunkLoader.java | 4 +- .../db/query/reader/chunk/MemChunkReader.java | 2 +- .../chunk/metadata/MemChunkMetadataLoader.java | 3 +- .../query/reader/series/SeriesAggregateReader.java | 2 +- .../iotdb/db/query/reader/series/SeriesReader.java | 20 +- .../UDFInputSeriesDataTypeNotValidException.java | 4 +- .../db/query/udf/core/executor/UDTFExecutor.java | 2 +- .../udf/service/TemporaryQueryDataFileService.java | 7 +- .../query/udf/service/UDFRegistrationService.java | 9 +- .../org/apache/iotdb/db/service/JMXService.java | 3 +- .../org/apache/iotdb/db/service/MQTTService.java | 3 +- .../apache/iotdb/db/service/MetricsService.java | 4 +- .../org/apache/iotdb/db/service/RPCService.java | 3 +- .../org/apache/iotdb/db/service/TSServiceImpl.java | 100 +++-- .../org/apache/iotdb/db/service/UpgradeSevice.java | 3 +- .../iotdb/db/sync/receiver/SyncServerManager.java | 3 +- .../db/sync/receiver/transfer/SyncServiceImpl.java | 9 +- .../apache/iotdb/db/tools/TsFileSketchTool.java | 6 +- .../db/tools/watermark/WatermarkDetector.java | 2 +- .../java/org/apache/iotdb/db/utils/AuthUtils.java | 2 +- .../iotdb/db/utils/EncodingInferenceUtils.java | 2 +- .../org/apache/iotdb/db/utils/FilePathUtils.java | 155 ++++---- .../java/org/apache/iotdb/db/utils/FileUtils.java | 3 +- .../org/apache/iotdb/db/utils/SchemaUtils.java | 6 +- .../db/auth/authorizer/OpenIdAuthorizerTest.java | 2 +- .../db/auth/role/LocalFileRoleAccessorTest.java | 2 +- .../db/auth/role/LocalFileRoleManagerTest.java | 2 +- .../db/auth/user/LocalFileUserAccessorTest.java | 2 +- .../IoTDBDefaultThreadExceptionHandlerTest.java | 4 +- .../db/concurrent/IoTDBThreadPoolFactoryTest.java | 8 +- .../org/apache/iotdb/db/constant/TestConstant.java | 3 +- .../db/engine/memtable/MemTableFlushTaskTest.java | 3 +- .../db/engine/memtable/MemtableBenchmark.java | 3 +- .../db/engine/memtable/PrimitiveMemTableTest.java | 4 +- .../iotdb/db/engine/merge/MergeTaskTest.java | 3 +- .../engine/modification/DeletionFileNodeTest.java | 3 +- .../io/LocalTextModificationAccessorTest.java | 2 +- .../storagegroup/StorageGroupProcessorTest.java | 3 +- .../iotdb/db/engine/storagegroup/TTLTest.java | 4 +- .../engine/storagegroup/TsFileProcessorTest.java | 2 +- .../virtualSg/HashVirtualPartitionerTest.java | 2 +- .../db/integration/IoTDBAutoCreateSchemaIT.java | 106 +++++ .../iotdb/db/integration/IoTDBCheckConfigIT.java | 2 +- .../iotdb/db/integration/IoTDBClearCacheIT.java | 3 +- .../apache/iotdb/db/integration/IoTDBCloseIT.java | 3 +- .../iotdb/db/integration/IoTDBCompleteIT.java | 20 +- .../iotdb/db/integration/IoTDBCompressTypeIT.java | 2 +- .../db/integration/IoTDBCreateSnapshotIT.java | 2 +- .../db/integration/IoTDBCreateTimeseriesIT.java | 157 ++++++++ .../apache/iotdb/db/integration/IoTDBDaemonIT.java | 14 +- .../db/integration/IoTDBDeleteStorageGroupIT.java | 2 +- .../db/integration/IoTDBDeleteTimeseriesIT.java | 2 +- .../db/integration/IoTDBEngineTimeGeneratorIT.java | 3 +- .../apache/iotdb/db/integration/IoTDBFillIT.java | 21 +- .../db/integration/IoTDBFloatPrecisionIT.java | 5 +- .../db/integration/IoTDBFlushQueryMergeIT.java | 6 +- .../iotdb/db/integration/IoTDBLargeDataIT.java | 12 +- .../apache/iotdb/db/integration/IoTDBLastIT.java | 4 +- .../iotdb/db/integration/IoTDBLimitSlimitIT.java | 11 +- .../iotdb/db/integration/IoTDBMergeTest.java | 2 +- .../iotdb/db/integration/IoTDBMetadataFetchIT.java | 2 +- .../iotdb/db/integration/IoTDBMultiDeviceIT.java | 3 +- .../iotdb/db/integration/IoTDBMultiSeriesIT.java | 8 +- .../db/integration/IoTDBMultiStatementsIT.java | 3 +- .../iotdb/db/integration/IoTDBNumberPathIT.java | 21 +- .../iotdb/db/integration/IoTDBQueryDemoIT.java | 2 +- .../iotdb/db/integration/IoTDBQuotedPathIT.java | 2 +- .../iotdb/db/integration/IoTDBRecoverIT.java | 4 +- .../db/integration/IoTDBRecoverUnclosedIT.java | 4 +- .../db/integration/IoTDBRemovePartitionIT.java | 7 +- .../IoTDBSameMeasurementsDifferentTypesIT.java | 3 +- .../iotdb/db/integration/IoTDBSeriesReaderIT.java | 41 ++ .../iotdb/db/integration/IoTDBSimpleQueryIT.java | 2 +- .../iotdb/db/integration/IoTDBTagAlterIT.java | 2 +- .../apache/iotdb/db/integration/IoTDBTagIT.java | 2 +- .../iotdb/db/integration/IoTDBVersionIT.java | 2 +- .../aggregation/IoTDBAggregationByLevelIT.java | 86 ++-- .../aggregation/IoTDBAggregationIT.java | 10 +- .../aggregation/IoTDBAggregationLargeDataIT.java | 7 +- .../db/integration/auth/IoTDBAuthorizationIT.java | 2 +- .../iotdb/db/metadata/MManagerBasicTest.java | 68 +++- .../org/apache/iotdb/db/metadata/MTreeTest.java | 29 +- .../apache/iotdb/db/metadata/MetaUtilsTest.java | 35 ++ .../apache/iotdb/db/metadata/PartialPathTest.java | 2 +- .../apache/iotdb/db/metadata/mnode/MNodeTest.java | 71 ++++ .../iotdb/db/qp/logical/IndexLogicalPlanTest.java | 5 +- .../db/qp/physical/PhysicalPlanSerializeTest.java | 140 +++---- .../iotdb/db/qp/physical/SerializationTest.java | 4 +- .../iotdb/db/qp/sql/IoTDBsqlVisitorTest.java | 4 +- .../iotdb/db/query/control/TracingManagerTest.java | 5 +- .../reader/series/SeriesAggregateReaderTest.java | 6 +- .../reader/series/SeriesReaderByTimestampTest.java | 6 +- .../db/query/reader/series/SeriesReaderTest.java | 6 +- .../query/reader/series/SeriesReaderTestUtil.java | 6 +- .../org/apache/iotdb/db/script/EnvScriptIT.java | 6 +- .../db/sync/receiver/load/FileLoaderTest.java | 8 +- .../recover/SyncReceiverLogAnalyzerTest.java | 7 +- .../receiver/recover/SyncReceiverLoggerTest.java | 6 +- .../db/sync/sender/manage/SyncFileManagerTest.java | 6 +- .../db/sync/sender/transfer/SyncClientTest.java | 6 +- .../apache/iotdb/db/tools/IoTDBWatermarkTest.java | 7 +- .../org/apache/iotdb/db/tools/MLogParserTest.java | 2 +- .../apache/iotdb/db/utils/FilePathUtilsTest.java | 3 +- .../org/apache/iotdb/db/utils/SchemaUtilsTest.java | 2 +- .../db/utils/datastructure/PrecisionTest.java | 9 +- .../apache/iotdb/db/writelog/PerformanceTest.java | 5 +- .../iotdb/db/writelog/WriteLogNodeManagerTest.java | 2 +- .../apache/iotdb/db/writelog/WriteLogNodeTest.java | 2 +- .../iotdb/db/writelog/recover/LogReplayerTest.java | 3 +- .../java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java | 2 +- .../apache/iotdb/session/IoTDBSessionSimpleIT.java | 20 + .../apache/iotdb/session/SessionCacheLeaderUT.java | 33 +- .../public/img/contributor-avatar/xww.jpg | Bin 0 -> 64538 bytes .../public/img/contributor-avatar/yrzh.jpg | Bin 0 -> 99556 bytes site/src/main/.vuepress/theme/components/Page.vue | 35 +- .../theme/global-components/Contributor.vue | 14 + .../apache/iotdb/spark/db/EnvironmentUtils.java | 2 +- .../spark/tsfile/qp/common/BasicOperator.java | 4 +- .../tsfile/qp/optimizer/RemoveNotOptimizer.java | 20 +- .../apache/iotdb/tsfile/compress/ICompressor.java | 6 +- .../iotdb/tsfile/compress/IUnCompressor.java | 6 +- .../tsfile/encoding/decoder/BitmapDecoder.java | 21 +- .../tsfile/encoding/decoder/LongRleDecoder.java | 3 +- .../tsfile/encoding/decoder/PlainDecoder.java | 3 +- .../encoding/encoder/RegularDataEncoder.java | 8 +- .../encoding/encoder/SinglePrecisionEncoderV1.java | 3 +- .../iotdb/tsfile/read/UnClosedTsFileReader.java | 4 +- .../read/expression/impl/GlobalTimeExpression.java | 2 +- .../query/dataset/DataSetWithoutTimeGenerator.java | 2 +- .../tsfile/read/reader/BatchDataIterator.java | 4 +- .../iotdb/tsfile/read/reader/LocalTsFileInput.java | 2 +- .../org/apache/iotdb/tsfile/utils/PublicBAOS.java | 4 + .../iotdb/tsfile/utils/RamUsageEstimator.java | 2 +- .../apache/iotdb/tsfile/write/TsFileWriter.java | 2 +- .../tsfile/write/chunk/ChunkGroupWriterImpl.java | 6 +- .../write/record/datapoint/BooleanDataPoint.java | 4 +- .../write/record/datapoint/DoubleDataPoint.java | 4 +- .../write/record/datapoint/FloatDataPoint.java | 4 +- .../write/record/datapoint/IntDataPoint.java | 4 +- .../write/record/datapoint/LongDataPoint.java | 4 +- .../write/record/datapoint/StringDataPoint.java | 4 +- .../iotdb/tsfile/encoding/SDTEncoderTest.java | 12 +- .../tsfile/encoding/bitpacking/IntPackerTest.java | 2 +- .../tsfile/encoding/bitpacking/LongPackerTest.java | 2 +- .../tsfile/encoding/decoder/BitmapDecoderTest.java | 4 +- .../tsfile/encoding/decoder/FloatDecoderTest.java | 4 +- .../encoding/decoder/GorillaDecoderV1Test.java | 4 +- .../tsfile/encoding/decoder/IntRleDecoderTest.java | 4 +- .../encoding/decoder/LongRleDecoderTest.java | 4 +- .../delta/DeltaBinaryEncoderIntegerTest.java | 10 +- .../decoder/delta/DeltaBinaryEncoderLongTest.java | 10 +- .../regular/RegularDataEncoderIntegerTest.java | 15 +- .../regular/RegularDataEncoderLongTest.java | 15 +- .../file/metadata/TimeSeriesMetadataTest.java | 2 +- .../tsfile/file/metadata/TsFileMetadataTest.java | 2 +- .../iotdb/tsfile/read/TimePlainEncodeReadTest.java | 3 +- .../tsfile/read/TimeSeriesMetadataReadTest.java | 2 +- .../tsfile/read/filter/GroupByFilterTest.java | 2 +- .../read/query/executor/QueryExecutorTest.java | 3 +- .../query/timegenerator/ReaderByTimestampTest.java | 3 +- .../TsFileGeneratorForSeriesReaderByTimestamp.java | 8 +- .../tsfile/read/reader/FakedMultiBatchReader.java | 4 +- .../apache/iotdb/tsfile/utils/BytesUtilsTest.java | 8 +- .../org/apache/iotdb/tsfile/utils/FileUtils.java | 2 +- .../tsfile/utils/ReadWriteStreamUtilsTest.java | 4 +- .../tsfile/utils/ReadWriteToBytesUtilsTest.java | 2 +- .../apache/iotdb/tsfile/utils/RecordUtilsTest.java | 3 +- .../org/apache/iotdb/tsfile/write/PerfTest.java | 2 +- .../iotdb/tsfile/write/ReadPageInMemTest.java | 2 +- .../iotdb/tsfile/write/TsFileReadWriteTest.java | 4 +- .../iotdb/tsfile/write/TsFileWriterTest.java | 2 +- .../org/apache/iotdb/tsfile/write/WriteTest.java | 4 +- 319 files changed, 2992 insertions(+), 2094 deletions(-) diff --cc pom.xml index e2ee6db,9e30952..b68e0ef --- a/pom.xml +++ b/pom.xml @@@ -100,7 -100,8 +100,9 @@@ <module>cross-tests</module> <module>zeppelin-interpreter</module> <module>client-py</module> + <module>metrics</module> + <module>compile-tools</module> + <module>client-cpp</module> </modules> <!-- Properties Management --> <properties> diff --cc server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java index f55532d,85fce24..4a0fd88 --- a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java @@@ -1101,8 -1099,28 +1102,29 @@@ public class PlanExecutor implements IP } @Override + public void insert(InsertRowsPlan plan) throws QueryProcessException { + boolean allSuccess = true; + for (int i = 0; i < plan.getInsertRowPlanList().size(); i++) { + if (plan.getResults().containsKey(i)) { + allSuccess = false; + continue; + } + try { + insert(plan.getInsertRowPlanList().get(i)); + plan.getResults().put(i, RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS)); + } catch (QueryProcessException e) { + plan.getResults().put(i, RpcUtils.getStatus(e.getErrorCode(), e.getMessage())); + allSuccess = false; + } + if (!allSuccess) { + throw new BatchProcessException(plan.getResults().values().toArray(new TSStatus[0])); + } + } + } + + @Override public void insert(InsertRowPlan insertRowPlan) throws QueryProcessException { + long startTime = System.currentTimeMillis(); try { insertRowPlan.setMeasurementMNodes( new MeasurementMNode[insertRowPlan.getMeasurements().length]); diff --cc server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java index 3a02261,60feccf..9559bfa --- a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java +++ b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java @@@ -1182,35 -1154,46 +1177,58 @@@ public class TSServiceImpl implements T req.getMeasurementsList().get(i).toArray(new String[0]), req.valuesList.get(i)); TSStatus status = checkAuthority(plan, req.getSessionId()); - if (status == null) { - status = executeNonQueryPlan(plan); - isAllSuccessful = - ((status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) - && isAllSuccessful); + if (status != null) { + insertRowsPlan.getResults().put(i, status); + allSuccess = false; } - statusList.add(status); + insertRowsPlan.addOneInsertRowPlan(plan, i); } catch (Exception e) { - isAllSuccessful = false; - statusList.add( - onNPEOrUnexpectedException(e, "inserting records", TSStatusCode.INTERNAL_SERVER_ERROR)); + allSuccess = false; + insertRowsPlan + .getResults() + .put( + i, + onNPEOrUnexpectedException( + e, "inserting records", TSStatusCode.INTERNAL_SERVER_ERROR)); } } - + long startTime = System.currentTimeMillis(); + TSStatus tsStatus = executeNonQueryPlan(insertRowsPlan); + + IoTDB.serverMetricManager.timer( + System.currentTimeMillis() - startTime, + TimeUnit.MILLISECONDS, + "insert_records_latency", + "sg", + "root", + "user", + sessionIdUsernameMap.get(req.getSessionId()), + "host", + config.getRpcAddress()); + - return isAllSuccessful - ? RpcUtils.getStatus(TSStatusCode.SUCCESS_STATUS) - : RpcUtils.getStatus(statusList); + return judgeFinalTsStatus( + allSuccess, tsStatus, insertRowsPlan.getResults(), req.deviceIds.size()); + } + + private TSStatus judgeFinalTsStatus( + boolean allSuccess, + TSStatus executeTsStatus, + Map<Integer, TSStatus> checkTsStatus, + int totalRowCount) { + + if (allSuccess) { + return executeTsStatus; + } + + if (executeTsStatus.subStatus == null) { + TSStatus[] tmpSubTsStatus = new TSStatus[totalRowCount]; + Arrays.fill(tmpSubTsStatus, RpcUtils.SUCCESS_STATUS); + executeTsStatus.subStatus = Arrays.asList(tmpSubTsStatus); + } + for (Entry<Integer, TSStatus> entry : checkTsStatus.entrySet()) { + executeTsStatus.subStatus.set(entry.getKey(), entry.getValue()); + } + return RpcUtils.getStatus(executeTsStatus.subStatus); } @Override
