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 <yulei.yang0...@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-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org