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

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


The following commit(s) were added to refs/heads/master by this push:
     new d506eb78cb4 Load: Update TsFile Resource when 
enable_auto_create_schema and verify schema are FALSE in Analysis Stage (#12525)
d506eb78cb4 is described below

commit d506eb78cb4326f8fdca81d4b76bd3d9add8a21f
Author: Itami Sho <[email protected]>
AuthorDate: Tue May 14 19:55:50 2024 +0800

    Load: Update TsFile Resource when enable_auto_create_schema and verify 
schema are FALSE in Analysis Stage (#12525)
    
    Co-authored-by: Steve Yurong Su <[email protected]>
---
 .../plan/analyze/LoadTsfileAnalyzer.java           | 39 ++++++++++++----------
 1 file changed, 22 insertions(+), 17 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/LoadTsfileAnalyzer.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/LoadTsfileAnalyzer.java
index feb6c92bade..5506c0d0069 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/LoadTsfileAnalyzer.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/LoadTsfileAnalyzer.java
@@ -209,8 +209,6 @@ public class LoadTsfileAnalyzer {
       final TsFileSequenceReaderTimeseriesMetadataIterator 
timeseriesMetadataIterator =
           new TsFileSequenceReaderTimeseriesMetadataIterator(reader, true, 1);
 
-      long writePointCount = 0;
-
       // construct tsfile resource
       final TsFileResource tsFileResource = new TsFileResource(tsFile);
       if (!tsFileResource.resourceFileExists()) {
@@ -221,27 +219,34 @@ public class LoadTsfileAnalyzer {
         tsFileResource.deserialize();
       }
 
-      // auto create or verify schema
-      if (IoTDBDescriptor.getInstance().getConfig().isAutoCreateSchemaEnabled()
-          || loadTsFileStatement.isVerifySchema()) {
-        // check if the tsfile is empty
-        if (!timeseriesMetadataIterator.hasNext()) {
-          LOGGER.warn("device2TimeseriesMetadata is empty, because maybe the 
tsfile is empty");
-          return;
-        }
+      // check if the tsfile is empty
+      if (!timeseriesMetadataIterator.hasNext()) {
+        LOGGER.warn("device2TimeseriesMetadata is empty, because maybe the 
tsfile is empty");
+        return;
+      }
 
-        while (timeseriesMetadataIterator.hasNext()) {
-          Map<IDeviceID, List<TimeseriesMetadata>> device2TimeseriesMetadata =
-              timeseriesMetadataIterator.next();
+      long writePointCount = 0;
+
+      final boolean isAutoCreateSchemaOrVerifySchemaEnabled =
+          IoTDBDescriptor.getInstance().getConfig().isAutoCreateSchemaEnabled()
+              || loadTsFileStatement.isVerifySchema();
+      while (timeseriesMetadataIterator.hasNext()) {
+        final Map<IDeviceID, List<TimeseriesMetadata>> 
device2TimeseriesMetadata =
+            timeseriesMetadataIterator.next();
 
+        if (isAutoCreateSchemaOrVerifySchemaEnabled) {
           schemaAutoCreatorAndVerifier.autoCreateAndVerify(reader, 
device2TimeseriesMetadata);
+        }
 
-          if (!tsFileResource.resourceFileExists()) {
-            
TsFileResourceUtils.updateTsFileResource(device2TimeseriesMetadata, 
tsFileResource);
-          }
-          writePointCount += getWritePointCount(device2TimeseriesMetadata);
+        if (!tsFileResource.resourceFileExists()) {
+          TsFileResourceUtils.updateTsFileResource(device2TimeseriesMetadata, 
tsFileResource);
         }
 
+        // TODO: how to get the correct write point count when
+        //  !isAutoCreateSchemaOrVerifySchemaEnabled
+        writePointCount += getWritePointCount(device2TimeseriesMetadata);
+      }
+      if (isAutoCreateSchemaOrVerifySchemaEnabled) {
         
schemaAutoCreatorAndVerifier.flushAndClearDeviceIsAlignedCacheIfNecessary();
       }
 

Reply via email to