SteveYurongSu commented on code in PR #14751:
URL: https://github.com/apache/iotdb/pull/14751#discussion_r1957499459


##########
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileAnalyzer.java:
##########
@@ -228,67 +460,121 @@ protected TsFileResource constructTsFileResource(
     return tsFileResource;
   }
 
-  protected void addTsFileResource(TsFileResource tsFileResource) {
+  private TreeSchemaAutoCreatorAndVerifier getOrCreateTreeSchemaVerifier() {
+    if (treeSchemaAutoCreatorAndVerifier == null) {
+      treeSchemaAutoCreatorAndVerifier = new 
TreeSchemaAutoCreatorAndVerifier(this);
+    }
+    return treeSchemaAutoCreatorAndVerifier;
+  }
+
+  private LoadTsFileTableSchemaCache getOrCreateTableSchemaCache() {
+    if (tableSchemaCache == null) {
+      tableSchemaCache = new LoadTsFileTableSchemaCache(metadata, context);
+    }
+    return tableSchemaCache;
+  }
+
+  private void autoCreateTableDatabaseIfAbsent(final String database) throws 
LoadAnalyzeException {
+    validateDatabaseName(database);
+    if (DataNodeTableCache.getInstance().isDatabaseExist(database)) {
+      return;
+    }
+
+    final CreateDBTask task =
+        new CreateDBTask(new TDatabaseSchema(database).setIsTableModel(true), 
true);
+    try {
+      final ListenableFuture<ConfigTaskResult> future =
+          task.execute(ClusterConfigTaskExecutor.getInstance());
+      final ConfigTaskResult result = future.get();
+      if (result.getStatusCode().getStatusCode() != 
TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
+        throw new LoadAnalyzeException(
+            String.format(
+                "Auto create database failed: %s, status code: %s",
+                database, result.getStatusCode()));
+      }
+    } catch (final Exception e) {
+      throw new LoadAnalyzeException("Auto create database failed because: " + 
e.getMessage());
+    }
+  }
+
+  private void addTsFileResource(TsFileResource tsFileResource) {
     if (isTableModelStatement) {
       loadTsFileTableStatement.addTsFileResource(tsFileResource);
     } else {
       loadTsFileTreeStatement.addTsFileResource(tsFileResource);
     }
   }
 
-  protected void addWritePointCount(long writePointCount) {
+  private static long getWritePointCount(
+      Map<IDeviceID, List<TimeseriesMetadata>> device2TimeseriesMetadata) {
+    return device2TimeseriesMetadata.values().stream()
+        .flatMap(List::stream)
+        .mapToLong(t -> t.getStatistics().getCount())
+        .sum();
+  }
+
+  private void addWritePointCount(long writePointCount) {
     if (isTableModelStatement) {
       loadTsFileTableStatement.addWritePointCount(writePointCount);
     } else {
       loadTsFileTreeStatement.addWritePointCount(writePointCount);
     }
   }
 
-  protected boolean isVerifySchema() {
-    return isVerifySchema;
+  private void setRealStatement(IAnalysis analysis) {
+    if (isTableModelStatement) {
+      // Do nothing by now.
+    } else {
+      analysis.setRealStatement(loadTsFileTreeStatement);
+    }
   }
 
-  protected boolean isConvertOnTypeMismatch() {
-    return isConvertOnTypeMismatch;
+  private void setTsFileModelInfoToStatement() {
+    if (isTableModelStatement) {
+      this.loadTsFileTableStatement.setIsTableModel(this.isTableModelTsFile);
+    } else {
+      this.loadTsFileTreeStatement.setIsTableModel(this.isTableModelTsFile);
+    }
   }
 
-  protected boolean isAutoCreateDatabase() {
-    return isAutoCreateDatabase;
-  }
+  private void executeTabletConversion(final IAnalysis analysis, final 
LoadAnalyzeException e) {
+    final LoadTsFileDataTypeConverter loadTsFileDataTypeConverter =
+        new LoadTsFileDataTypeConverter(isGeneratedByPipe);
 
-  protected int getDatabaseLevel() {
-    return databaseLevel;
-  }
+    // TODO: properly convert to tablet when there are both tree and table 
TsFiles in one statement

Review Comment:
   Please impl related logic in this PR



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to