Kikyou1997 commented on code in PR #18801:
URL: https://github.com/apache/doris/pull/18801#discussion_r1171005344


##########
fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java:
##########
@@ -111,42 +147,37 @@ public void createAnalysisJob(AnalyzeStmt analyzeStmt) 
throws DdlException {
         analysisTaskInfos.values().forEach(taskScheduler::schedule);
     }
 
-    private void persistAnalysisJob(String catalogName, String db, TableName 
tbl,
-            long jobId) throws DdlException {
+    private void persistAnalysisJob(AnalysisTaskInfoBuilder taskInfoBuilder) 
throws DdlException {
         try {
-            AnalysisTaskInfo analysisTaskInfo = new 
AnalysisTaskInfoBuilder().setJobId(
-                            jobId).setTaskId(-1)
-                    .setCatalogName(catalogName).setDbName(db)
-                    .setTblName(tbl.getTbl())
-                    .setJobType(JobType.MANUAL)
-                    
.setAnalysisMethod(AnalysisMethod.FULL).setAnalysisType(AnalysisType.INDEX)
-                    .setScheduleType(ScheduleType.ONCE).build();
+            AnalysisTaskInfoBuilder jobInfoBuilder = 
taskInfoBuilder.deepCopy();
+            AnalysisTaskInfo analysisTaskInfo = 
jobInfoBuilder.setTaskId(-1).build();
             StatisticsRepository.persistAnalysisTask(analysisTaskInfo);
         } catch (Throwable t) {
             throw new DdlException(t.getMessage(), t);
         }
     }
 
-    private void createTaskForMVIdx(AnalyzeStmt analyzeStmt, String 
catalogName, String db, TableName tbl,
-            Map<Long, AnalysisTaskInfo> analysisTaskInfos, long jobId) throws 
DdlException {
-        if (!(analyzeStmt.isWholeTbl && 
analyzeStmt.getTable().getType().equals(TableType.OLAP))) {
-            return;
+    private void createTaskForMVIdx(TableIf table, AnalysisTaskInfoBuilder 
taskInfoBuilder,
+            Map<Long, AnalysisTaskInfo> analysisTaskInfos, AnalysisType 
analysisType) throws DdlException {
+        TableType type = table.getType();
+        if (analysisType != AnalysisType.INDEX || 
!type.equals(TableType.OLAP)) {
+            return; // not need to collect statistics for materialized view
         }
-        OlapTable olapTable = (OlapTable) analyzeStmt.getTable();
+
+        taskInfoBuilder.setAnalysisType(analysisType);
+        OlapTable olapTable = (OlapTable) table;
+
         try {
-            olapTable.readLock();
+            table.readLock();

Review Comment:
   Thought `table` and `olapTable` natively points to same object, but it still 
looks quite wired to lock on `table` and release lock on `olapTable`



##########
fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java:
##########
@@ -111,42 +147,37 @@ public void createAnalysisJob(AnalyzeStmt analyzeStmt) 
throws DdlException {
         analysisTaskInfos.values().forEach(taskScheduler::schedule);
     }
 
-    private void persistAnalysisJob(String catalogName, String db, TableName 
tbl,
-            long jobId) throws DdlException {
+    private void persistAnalysisJob(AnalysisTaskInfoBuilder taskInfoBuilder) 
throws DdlException {
         try {
-            AnalysisTaskInfo analysisTaskInfo = new 
AnalysisTaskInfoBuilder().setJobId(
-                            jobId).setTaskId(-1)
-                    .setCatalogName(catalogName).setDbName(db)
-                    .setTblName(tbl.getTbl())
-                    .setJobType(JobType.MANUAL)
-                    
.setAnalysisMethod(AnalysisMethod.FULL).setAnalysisType(AnalysisType.INDEX)
-                    .setScheduleType(ScheduleType.ONCE).build();
+            AnalysisTaskInfoBuilder jobInfoBuilder = 
taskInfoBuilder.deepCopy();
+            AnalysisTaskInfo analysisTaskInfo = 
jobInfoBuilder.setTaskId(-1).build();
             StatisticsRepository.persistAnalysisTask(analysisTaskInfo);
         } catch (Throwable t) {
             throw new DdlException(t.getMessage(), t);
         }
     }
 
-    private void createTaskForMVIdx(AnalyzeStmt analyzeStmt, String 
catalogName, String db, TableName tbl,
-            Map<Long, AnalysisTaskInfo> analysisTaskInfos, long jobId) throws 
DdlException {
-        if (!(analyzeStmt.isWholeTbl && 
analyzeStmt.getTable().getType().equals(TableType.OLAP))) {
-            return;
+    private void createTaskForMVIdx(TableIf table, AnalysisTaskInfoBuilder 
taskInfoBuilder,
+            Map<Long, AnalysisTaskInfo> analysisTaskInfos, AnalysisType 
analysisType) throws DdlException {
+        TableType type = table.getType();
+        if (analysisType != AnalysisType.INDEX || 
!type.equals(TableType.OLAP)) {
+            return; // not need to collect statistics for materialized view
         }
-        OlapTable olapTable = (OlapTable) analyzeStmt.getTable();
+
+        taskInfoBuilder.setAnalysisType(analysisType);
+        OlapTable olapTable = (OlapTable) table;
+
         try {
-            olapTable.readLock();
+            table.readLock();

Review Comment:
   Though  `table` and `olapTable` natively points to same object, but it still 
looks quite wired to lock on `table` and release lock on `olapTable`



-- 
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: commits-unsubscr...@doris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to