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

kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new b8ed0a3c956  [minor](stats) Add start/end time for analyze job, 
precise to seconds of TableStats update time #27123 (#27185)
b8ed0a3c956 is described below

commit b8ed0a3c9560596ab9c766d8e6a04f404def1b2b
Author: AKIRA <[email protected]>
AuthorDate: Fri Nov 17 22:54:06 2023 +0900

     [minor](stats) Add start/end time for analyze job, precise to seconds of 
TableStats update time #27123 (#27185)
---
 .../java/org/apache/doris/analysis/ShowAnalyzeStmt.java  | 11 ++---------
 .../org/apache/doris/analysis/ShowTableStatsStmt.java    | 11 +++++++++--
 .../src/main/java/org/apache/doris/qe/ShowExecutor.java  | 10 ++++++++++
 .../java/org/apache/doris/statistics/AnalysisInfo.java   | 16 ++++++++++++++++
 .../org/apache/doris/statistics/AnalysisManager.java     |  8 ++++----
 5 files changed, 41 insertions(+), 15 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowAnalyzeStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowAnalyzeStmt.java
index 1ff6cb37f13..82ffddff1e0 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowAnalyzeStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowAnalyzeStmt.java
@@ -60,6 +60,8 @@ public class ShowAnalyzeStmt extends ShowStmt {
             .add("state")
             .add("progress")
             .add("schedule_type")
+            .add("start_time")
+            .add("end_time")
             .build();
 
     private long jobId;
@@ -208,15 +210,6 @@ public class ShowAnalyzeStmt extends ShowStmt {
         }
     }
 
-    private int analyzeColumn(String columnName) throws AnalysisException {
-        for (String title : TITLE_NAMES) {
-            if (title.equalsIgnoreCase(columnName)) {
-                return TITLE_NAMES.indexOf(title);
-            }
-        }
-        throw new AnalysisException("Title name[" + columnName + "] does not 
exist");
-    }
-
     @Override
     public String toSql() {
         StringBuilder sb = new StringBuilder();
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowTableStatsStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowTableStatsStmt.java
index fe499fa1b08..7cf34dcad30 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowTableStatsStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowTableStatsStmt.java
@@ -37,7 +37,9 @@ import org.apache.doris.statistics.TableStatsMeta;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 
-import java.sql.Date;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -131,6 +133,7 @@ public class ShowTableStatsStmt extends ShowStmt {
     }
 
     public ShowResultSet constructResultSet(TableStatsMeta tableStatistic) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd 
HH:mm:ss");
         if (tableStatistic == null) {
             return new ShowResultSet(getMetaData(), new ArrayList<>());
         }
@@ -139,7 +142,11 @@ public class ShowTableStatsStmt extends ShowStmt {
         row.add(String.valueOf(tableStatistic.updatedRows));
         row.add(String.valueOf(tableStatistic.queriedTimes.get()));
         row.add(String.valueOf(tableStatistic.rowCount));
-        row.add(new Date(tableStatistic.updatedTime).toString());
+        LocalDateTime dateTime =
+                
LocalDateTime.ofInstant(Instant.ofEpochMilli(tableStatistic.updatedTime),
+                        java.time.ZoneId.systemDefault());
+        String formattedDateTime = dateTime.format(formatter);
+        row.add(formattedDateTime);
         row.add(tableStatistic.analyzeColumns().toString());
         row.add(tableStatistic.jobType.toString());
         result.add(row);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java 
b/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java
index d7adcf85ca7..575d1ed6270 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java
@@ -232,6 +232,7 @@ import java.net.URLConnection;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -2587,6 +2588,7 @@ public class ShowExecutor {
         List<AnalysisInfo> results = Env.getCurrentEnv().getAnalysisManager()
                 .showAnalysisJob(showStmt);
         List<List<String>> resultRows = Lists.newArrayList();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd 
HH:mm:ss");
         for (AnalysisInfo analysisInfo : results) {
             List<String> row = new ArrayList<>();
             row.add(String.valueOf(analysisInfo.jobId));
@@ -2610,6 +2612,14 @@ public class ShowExecutor {
             row.add(analysisInfo.state.toString());
             
row.add(Env.getCurrentEnv().getAnalysisManager().getJobProgress(analysisInfo.jobId));
             row.add(analysisInfo.scheduleType.toString());
+            LocalDateTime startTime =
+                    
LocalDateTime.ofInstant(Instant.ofEpochMilli(analysisInfo.createTime),
+                            java.time.ZoneId.systemDefault());
+            LocalDateTime endTime =
+                    
LocalDateTime.ofInstant(Instant.ofEpochMilli(analysisInfo.endTime),
+                            java.time.ZoneId.systemDefault());
+            row.add(startTime.format(formatter));
+            row.add(endTime.format(formatter));
             resultRows.add(row);
         }
         resultSet = new ShowResultSet(showStmt.getMetaData(), resultRows);
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisInfo.java 
b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisInfo.java
index 82dd036c3ab..248714b27f7 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisInfo.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisInfo.java
@@ -187,6 +187,12 @@ public class AnalysisInfo implements Writable {
      */
     public final long tblUpdateTime;
 
+    @SerializedName("createTime")
+    public final long createTime = System.currentTimeMillis();
+
+    @SerializedName("endTime")
+    public long endTime;
+
     public AnalysisInfo(long jobId, long taskId, List<Long> taskIds, long 
catalogId, long dbId, long tblId,
             Map<String, Set<String>> colToPartitions, Set<String> 
partitionNames, String colName, Long indexId,
             JobType jobType, AnalysisMode analysisMode, AnalysisMethod 
analysisMethod, AnalysisType analysisType,
@@ -322,4 +328,14 @@ public class AnalysisInfo implements Writable {
         }
         return analysisInfo;
     }
+
+    public void markFinished() {
+        state = AnalysisState.FINISHED;
+        endTime = System.currentTimeMillis();
+    }
+
+    public void markFailed() {
+        state = AnalysisState.FAILED;
+        endTime = System.currentTimeMillis();
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java 
b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java
index d5b85bfaca6..a7eed48c469 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java
@@ -174,9 +174,9 @@ public class AnalysisManager implements Writable {
             }
             if (allFinished) {
                 if (hasFailure) {
-                    job.state = AnalysisState.FAILED;
+                    job.markFailed();
                 } else {
-                    job.state = AnalysisState.FINISHED;
+                    job.markFinished();
                     try {
                         updateTableStats(job);
                     } catch (Throwable e) {
@@ -223,9 +223,9 @@ public class AnalysisManager implements Writable {
                     taskMap.size() - failedCount, failedCount, 0, 
taskMap.size());
             if (failedCount > 0) {
                 job.message = reason.toString();
-                job.state = AnalysisState.FAILED;
+                job.markFailed();
             } else {
-                job.state = AnalysisState.FINISHED;
+                job.markFinished();
             }
             autoJobs.offer(job);
             systemJobInfoMap.remove(info.jobId);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to