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