This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-4.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-4.1 by this push:
new c0dc6d9804c branch-4.1: [feat](routine_load) Support SHOW ROUTINE LOAD
TASK FOR <db>.<job_name> #64151 (#64403)
c0dc6d9804c is described below
commit c0dc6d9804cdea45ba74d4395801b2b06c3cf614
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue Jun 16 15:07:23 2026 +0800
branch-4.1: [feat](routine_load) Support SHOW ROUTINE LOAD TASK FOR
<db>.<job_name> #64151 (#64403)
Cherry-picked from #64151
Co-authored-by: re20052 <[email protected]>
---
.../antlr4/org/apache/doris/nereids/DorisParser.g4 | 3 ++-
.../doris/nereids/parser/LogicalPlanBuilder.java | 18 ++++++++++++++++--
.../plans/commands/ShowRoutineLoadTaskCommand.java | 19 ++++++++++++++++++-
.../routine_load/test_show_routine_load.groovy | 16 ++++++++++++++--
4 files changed, 50 insertions(+), 6 deletions(-)
diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4
b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4
index c03fed75549..d65dfdaac45 100644
--- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4
+++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4
@@ -513,7 +513,8 @@ supportedLoadStatement
| RESUME ALL ROUTINE LOAD
#resumeAllRoutineLoad
| STOP ROUTINE LOAD FOR label=multipartIdentifier
#stopRoutineLoad
| SHOW ALL? ROUTINE LOAD ((FOR label=multipartIdentifier) | (LIKE
STRING_LITERAL)?) #showRoutineLoad
- | SHOW ROUTINE LOAD TASK ((FROM | IN) database=identifier)? wildWhere?
#showRoutineLoadTask
+ | SHOW ROUTINE LOAD TASK ((FOR label=multipartIdentifier)
+ | (((FROM | IN) database=identifier)? wildWhere?))
#showRoutineLoadTask
| SHOW INVERTED INDEX ANALYZER
#showIndexAnalyzer
| SHOW INVERTED INDEX TOKENIZER
#showIndexTokenizer
| SHOW INVERTED INDEX TOKEN_FILTER
#showIndexTokenFilter
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
index 957c1e6bb12..b4c13e46544 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
@@ -9800,16 +9800,30 @@ public class LogicalPlanBuilder extends
DorisParserBaseVisitor<Object> {
@Override
public LogicalPlan
visitShowRoutineLoadTask(DorisParser.ShowRoutineLoadTaskContext ctx) {
+ if (ctx.label != null) {
+ List<String> labelParts = visitMultipartIdentifier(ctx.label);
+ String jobName;
+ String dbName = null;
+ if (labelParts.size() == 1) {
+ jobName = labelParts.get(0);
+ } else if (labelParts.size() == 2) {
+ dbName = labelParts.get(0);
+ jobName = labelParts.get(1);
+ } else {
+ throw new ParseException("only support [<db>.]<job_name>",
ctx.label);
+ }
+ LabelNameInfo labelNameInfo = new LabelNameInfo(dbName, jobName);
+ return new ShowRoutineLoadTaskCommand(labelNameInfo);
+ }
+
String dbName = null;
if (ctx.database != null) {
dbName = ctx.database.getText();
}
-
Expression whereClause = null;
if (ctx.wildWhere() != null) {
whereClause = getWildWhere(ctx.wildWhere());
}
-
return new ShowRoutineLoadTaskCommand(dbName, whereClause);
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowRoutineLoadTaskCommand.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowRoutineLoadTaskCommand.java
index 2c496f0b119..6225e6f9f4c 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowRoutineLoadTaskCommand.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/ShowRoutineLoadTaskCommand.java
@@ -33,6 +33,7 @@ import org.apache.doris.nereids.trees.expressions.EqualTo;
import org.apache.doris.nereids.trees.expressions.Expression;
import org.apache.doris.nereids.trees.expressions.literal.StringLikeLiteral;
import org.apache.doris.nereids.trees.plans.PlanType;
+import org.apache.doris.nereids.trees.plans.commands.info.LabelNameInfo;
import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor;
import org.apache.doris.qe.ConnectContext;
import org.apache.doris.qe.ShowResultSet;
@@ -68,14 +69,24 @@ public class ShowRoutineLoadTaskCommand extends ShowCommand
{
.build();
private final String dbName;
+ private final LabelNameInfo labelNameInfo;
private final Expression whereClause;
private String jobName;
private String dbFullName;
public ShowRoutineLoadTaskCommand(String dbName, Expression whereClause) {
+ this(dbName, null, whereClause);
+ }
+
+ public ShowRoutineLoadTaskCommand(LabelNameInfo labelNameInfo) {
+ this(null, labelNameInfo, null);
+ }
+
+ private ShowRoutineLoadTaskCommand(String dbName, LabelNameInfo
labelNameInfo, Expression whereClause) {
super(PlanType.SHOW_ROUTINE_LOAD_TASK_COMMAND);
this.dbName = dbName;
+ this.labelNameInfo = labelNameInfo;
this.whereClause = whereClause;
}
@@ -89,13 +100,19 @@ public class ShowRoutineLoadTaskCommand extends
ShowCommand {
* validate
*/
public void validate(ConnectContext ctx) throws AnalysisException {
- if (Strings.isNullOrEmpty(dbName)) {
+ dbFullName = labelNameInfo == null ? dbName : labelNameInfo.getDb();
+ if (Strings.isNullOrEmpty(dbFullName)) {
if (Strings.isNullOrEmpty(ctx.getDatabase())) {
throw new AnalysisException("please designate a database in
show stmt");
}
dbFullName = ctx.getDatabase();
}
+ if (labelNameInfo != null &&
!Strings.isNullOrEmpty(labelNameInfo.getLabel())) {
+ jobName = labelNameInfo.getLabel();
+ return;
+ }
+
if (!isWhereClauseValid(whereClause)) {
throw new AnalysisException("show routine load job only support
one equal expr "
+ "which is sames like JobName=\"ILoveDoris\"");
diff --git
a/regression-test/suites/load_p0/routine_load/test_show_routine_load.groovy
b/regression-test/suites/load_p0/routine_load/test_show_routine_load.groovy
index 9b01e226df7..f89e89a9dda 100644
--- a/regression-test/suites/load_p0/routine_load/test_show_routine_load.groovy
+++ b/regression-test/suites/load_p0/routine_load/test_show_routine_load.groovy
@@ -163,8 +163,20 @@ suite("test_show_routine_load","p0") {
sleep(5000)
count++
}
- res = sql "SHOW ROUTINE LOAD TASK WHERE JobName = \"testShow1\";"
- log.info("SHOW ROUTINE LOAD task result: ${res}".toString())
+ res = sql "SHOW ROUTINE LOAD TASK WHERE JobName = \"testShow1\""
+ assertTrue(res.size() == 1)
+
+ res = sql "SHOW ROUTINE LOAD TASK FROM ${db} WHERE JobName =
\"testShow1\""
+ assertTrue(res.size() == 1)
+
+ res = sql "SHOW ROUTINE LOAD TASK IN ${db} WHERE JobName =
\"testShow1\""
+ assertTrue(res.size() == 1)
+
+ res = sql "SHOW ROUTINE LOAD TASK FOR testShow1"
+ assertTrue(res.size() == 1)
+
+ res = sql "SHOW ROUTINE LOAD TASK FOR ${db}.testShow1"
+ log.info("SHOW ROUTINE LOAD TASK result: ${res}".toString())
assertTrue(res.size() == 1)
} finally {
sql "stop routine load for testShow"
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]