You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by li...@apache.org on 2023/06/13 02:47:38 UTC
[doris] branch master updated: [Improvement](meta) support return brief info of restore job (#20653)
This is an automated email from the ASF dual-hosted git repository.
lide pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new ee0e2b40da [Improvement](meta) support return brief info of restore job (#20653)
ee0e2b40da is described below
commit ee0e2b40da2a3d698222e3e6f4c989c35820ad84
Author: Yulei-Yang <yu...@gmail.com>
AuthorDate: Tue Jun 13 10:47:31 2023 +0800
[Improvement](meta) support return brief info of restore job (#20653)
---
.../sql-reference/Show-Statements/SHOW-RESTORE.md | 8 +++++-
.../sql-reference/Show-Statements/SHOW-RESTORE.md | 8 +++++-
fe/fe-core/src/main/cup/sql_parser.cup | 4 +++
.../org/apache/doris/analysis/ShowRestoreStmt.java | 29 ++++++++++++++++++++--
.../java/org/apache/doris/backup/RestoreJob.java | 26 +++++++++++++------
.../java/org/apache/doris/qe/ShowExecutor.java | 7 +++++-
6 files changed, 70 insertions(+), 12 deletions(-)
diff --git a/docs/en/docs/sql-manual/sql-reference/Show-Statements/SHOW-RESTORE.md b/docs/en/docs/sql-manual/sql-reference/Show-Statements/SHOW-RESTORE.md
index eb31e01866..d18a3f219b 100644
--- a/docs/en/docs/sql-manual/sql-reference/Show-Statements/SHOW-RESTORE.md
+++ b/docs/en/docs/sql-manual/sql-reference/Show-Statements/SHOW-RESTORE.md
@@ -37,7 +37,7 @@ This statement is used to view RESTORE tasks
grammar:
````SQL
-SHOW RESTORE [FROM DB_NAME]
+SHOW [BRIEF] RESTORE [FROM DB_NAME]
````
illustrate:
@@ -68,6 +68,12 @@ illustrate:
Status: If the job fails, display the failure message
Timeout: Job timeout, in seconds
+<version since="dev">
+
+ 2. brief: only show key information of RESTORE tasks, columns RestoreObjs, Progress, TaskErrMsg will not show
+
+</version>
+
### Example
1. View the latest RESTORE task under example_db.
diff --git a/docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-RESTORE.md b/docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-RESTORE.md
index 371d9725a7..ac7c8df8c9 100644
--- a/docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-RESTORE.md
+++ b/docs/zh-CN/docs/sql-manual/sql-reference/Show-Statements/SHOW-RESTORE.md
@@ -37,7 +37,7 @@ SHOW RESTORE
语法:
```SQL
-SHOW RESTORE [FROM DB_NAME]
+SHOW [BRIEF] RESTORE [FROM DB_NAME]
```
说明:
@@ -68,6 +68,12 @@ SHOW RESTORE [FROM DB_NAME]
Status: 如果作业失败,显示失败信息
Timeout: 作业超时时间,单位秒
+<version since="dev">
+
+ 2. brief: 仅返回精简格式的 RESTORE 任务信息,不包含 RestoreObjs, Progress, TaskErrMsg 三列
+
+</version>
+
### Example
1. 查看 example_db 下最近一次 RESTORE 任务。
diff --git a/fe/fe-core/src/main/cup/sql_parser.cup b/fe/fe-core/src/main/cup/sql_parser.cup
index b97a72f2b7..3d0f8dd392 100644
--- a/fe/fe-core/src/main/cup/sql_parser.cup
+++ b/fe/fe-core/src/main/cup/sql_parser.cup
@@ -3929,6 +3929,10 @@ show_param ::=
{:
RESULT = new ShowRestoreStmt(db, parser.where);
:}
+ | KW_BRIEF KW_RESTORE opt_db:db opt_wild_where
+ {:
+ RESULT = new ShowRestoreStmt(db, parser.where, true);
+ :}
| KW_BROKER
{:
RESULT = new ShowBrokerStmt();
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowRestoreStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowRestoreStmt.java
index 739cb504ad..3c1b34e49a 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowRestoreStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ShowRestoreStmt.java
@@ -35,6 +35,7 @@ import org.apache.doris.qe.ShowResultSetMetaData;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
+import java.util.List;
import java.util.function.Predicate;
public class ShowRestoreStmt extends ShowStmt {
@@ -45,17 +46,31 @@ public class ShowRestoreStmt extends ShowStmt {
.add("SnapshotFinishedTime").add("DownloadFinishedTime").add("FinishedTime").add("UnfinishedTasks")
.add("Progress").add("TaskErrMsg").add("Status").add("Timeout")
.build();
+ public static final ImmutableList<String> BRIEF_TITLE_NAMES = new ImmutableList.Builder<String>()
+ .add("JobId").add("Label").add("Timestamp").add("DbName").add("State")
+ .add("AllowLoad").add("ReplicationNum").add("ReplicaAllocation").add("ReserveReplica")
+ .add("ReserveDynamicPartitionEnable").add("CreateTime").add("MetaPreparedTime")
+ .add("SnapshotFinishedTime").add("DownloadFinishedTime").add("FinishedTime").add("UnfinishedTasks")
+ .add("Status").add("Timeout")
+ .build();
private String dbName;
private Expr where;
private String labelValue;
private boolean isAccurateMatch;
+ private boolean needBriefResult;
public ShowRestoreStmt(String dbName, Expr where) {
this.dbName = dbName;
this.where = where;
}
+ public ShowRestoreStmt(String dbName, Expr where, boolean needBriefResult) {
+ this.dbName = dbName;
+ this.where = where;
+ this.needBriefResult = needBriefResult;
+ }
+
public String getDbName() {
return dbName;
}
@@ -136,7 +151,9 @@ public class ShowRestoreStmt extends ShowStmt {
@Override
public ShowResultSetMetaData getMetaData() {
ShowResultSetMetaData.Builder builder = ShowResultSetMetaData.builder();
- for (String title : TITLE_NAMES) {
+
+ List<String> titleNames = needBriefResult ? BRIEF_TITLE_NAMES : TITLE_NAMES;
+ for (String title : titleNames) {
builder.addColumn(new Column(title, ScalarType.createVarchar(30)));
}
return builder.build();
@@ -145,7 +162,11 @@ public class ShowRestoreStmt extends ShowStmt {
@Override
public String toSql() {
StringBuilder builder = new StringBuilder();
- builder.append("SHOW RESTORE");
+ if (needBriefResult) {
+ builder.append("SHOW BRIEF RESTORE");
+ } else {
+ builder.append("SHOW RESTORE");
+ }
if (dbName != null) {
builder.append(" FROM `").append(dbName).append("` ");
}
@@ -168,6 +189,10 @@ public class ShowRestoreStmt extends ShowStmt {
return isAccurateMatch;
}
+ public boolean isNeedBriefResult() {
+ return needBriefResult;
+ }
+
public Expr getWhere() {
return where;
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java b/fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java
index e9e2eee824..2067625540 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java
@@ -1748,7 +1748,15 @@ public class RestoreJob extends AbstractJob {
allTabletCommitted(true /* is replay */);
}
- public List<String> getInfo() {
+ public List<String> getBriefInfo() {
+ return getInfo(true);
+ }
+
+ public List<String> getFullInfo() {
+ return getInfo(false);
+ }
+
+ public List<String> getInfo(boolean isBrief) {
List<String> info = Lists.newArrayList();
info.add(String.valueOf(jobId));
info.add(label);
@@ -1760,18 +1768,22 @@ public class RestoreJob extends AbstractJob {
info.add(replicaAlloc.toCreateStmt());
info.add(String.valueOf(reserveReplica));
info.add(String.valueOf(reserveDynamicPartitionEnable));
- info.add(getRestoreObjs());
+ if (!isBrief) {
+ info.add(getRestoreObjs());
+ }
info.add(TimeUtils.longToTimeString(createTime));
info.add(TimeUtils.longToTimeString(metaPreparedTime));
info.add(TimeUtils.longToTimeString(snapshotFinishedTime));
info.add(TimeUtils.longToTimeString(downloadFinishedTime));
info.add(TimeUtils.longToTimeString(finishedTime));
info.add(Joiner.on(", ").join(unfinishedSignatureToId.entrySet()));
- info.add(Joiner.on(", ").join(taskProgress.entrySet().stream().map(
- e -> "[" + e.getKey() + ": " + e.getValue().first + "/" + e.getValue().second + "]").collect(
- Collectors.toList())));
- info.add(Joiner.on(", ").join(taskErrMsg.entrySet().stream().map(n -> "[" + n.getKey() + ": " + n.getValue()
- + "]").collect(Collectors.toList())));
+ if (!isBrief) {
+ info.add(Joiner.on(", ").join(taskProgress.entrySet().stream().map(
+ e -> "[" + e.getKey() + ": " + e.getValue().first + "/" + e.getValue().second + "]").collect(
+ Collectors.toList())));
+ info.add(Joiner.on(", ").join(taskErrMsg.entrySet().stream().map(n -> "[" + n.getKey() + ": "
+ + n.getValue() + "]").collect(Collectors.toList())));
+ }
info.add(status.toString());
info.add(String.valueOf(timeoutMs / 1000));
return info;
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 c3662a248d..1ccf2be1b3 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
@@ -1927,7 +1927,12 @@ public class ShowExecutor {
List<RestoreJob> restoreJobs = jobs.stream().filter(job -> job instanceof RestoreJob)
.map(job -> (RestoreJob) job).collect(Collectors.toList());
- List<List<String>> infos = restoreJobs.stream().map(RestoreJob::getInfo).collect(Collectors.toList());
+ List<List<String>> infos;
+ if (showStmt.isNeedBriefResult()) {
+ infos = restoreJobs.stream().map(RestoreJob::getBriefInfo).collect(Collectors.toList());
+ } else {
+ infos = restoreJobs.stream().map(RestoreJob::getFullInfo).collect(Collectors.toList());
+ }
resultSet = new ShowResultSet(showStmt.getMetaData(), infos);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org