You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ch...@apache.org on 2021/02/25 08:06:34 UTC

[iotdb] 02/02: merge master

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 <xu...@gmail.com>
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