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]

Reply via email to