weizhengte commented on code in PR #8862:
URL: https://github.com/apache/doris/pull/8862#discussion_r935838686


##########
fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsJob.java:
##########
@@ -265,4 +273,86 @@ public static StatisticsJob fromAnalyzeStmt(AnalyzeStmt 
stmt) throws AnalysisExc
         Map<String, String> properties = stmt.getProperties();
         return new StatisticsJob(dbId, tblIds, tableIdToPartitionName, 
tableIdToColumnName, properties);
     }
+
+    public List<Comparable> getShowInfo(@Nullable Long tableId) throws 
AnalysisException {
+        List<Comparable> result = Lists.newArrayList();
+
+        result.add(Long.toString(id));
+
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd 
HH:mm:ss.SSS");
+        result.add(TimeUtils.longToTimeString(createTime, dateFormat));
+        result.add(startTime != -1L ? TimeUtils.longToTimeString(startTime, 
dateFormat) : "N/A");
+        result.add(finishTime != -1L ? TimeUtils.longToTimeString(finishTime, 
dateFormat) : "N/A");
+
+        StringBuilder sb = new StringBuilder();
+        for (String errorMsg : errorMsgs) {
+            sb.append(errorMsg).append("\n");
+        }
+        result.add(sb.toString());
+
+        int totalTaskNum = 0;
+        int finishedTaskNum = 0;
+        Map<Long, Set<String>> tblIdToCols = Maps.newHashMap();
+
+        for (StatisticsTask task : tasks) {
+            List<StatisticsDesc> statsDescs = task.getStatsDescs();
+
+            if (!statsDescs.isEmpty()) {
+                // The same task has the same stats properties
+                StatsCategory statsCategory = 
statsDescs.get(0).getStatsCategory();
+                long tblId = statsCategory.getTableId();
+
+                if (tableId == null || tableId == tblId) {
+                    totalTaskNum++;
+                    if (task.getTaskState() == 
StatisticsTask.TaskState.FINISHED) {
+                        finishedTaskNum++;
+                    }
+
+                    String col = statsCategory.getColumnName();
+                    if (Strings.isNullOrEmpty(col)) {
+                        continue;
+                    }
+                    if (tblIdToCols.containsKey(tblId)) {
+                        tblIdToCols.get(tblId).add(col);
+                    } else {
+                        Set<String> cols = Sets.newHashSet();
+                        cols.add(col);
+                        tblIdToCols.put(tblId, cols);
+                    }
+                }
+            }
+        }
+
+        List<String> scope = Lists.newArrayList();
+        Database db = Env.getCurrentEnv()
+                .getInternalDataSource().getDbOrAnalysisException(dbId);
+        for (Long tblId : tblIds) {
+            try {
+                Table table = db.getTableOrAnalysisException(tblId);
+                List<Column> baseSchema = table.getBaseSchema();
+                Set<String> cols = tblIdToCols.get(tblId);
+                if (cols != null) {
+                    if (baseSchema.size() == cols.size()) {
+                        scope.add(table.getName() + "(*)");
+                    } else {
+                        scope.add(table.getName() + "(" + 
StringUtils.join(cols.toArray(), ",") + ")");
+                    }
+                }
+            } catch (AnalysisException e) {
+                // catch this exception when table is dropped
+                LOG.info("get table failed, tableId: " + tblId, e);
+            }
+        }
+
+        result.add(StringUtils.join(scope.toArray(), ","));
+        result.add(finishedTaskNum + "/" + totalTaskNum);
+
+        if (totalTaskNum == finishedTaskNum) {

Review Comment:
   a statistical job will be divided into multiple tasks to execute, so the job 
status is finished means that all tasks have been finished.



-- 
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