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]