This is an automated email from the ASF dual-hosted git repository.

morrysnow pushed a commit to branch 2.0.1-rc04-patch
in repository https://gitbox.apache.org/repos/asf/doris.git

commit f579fd816b7f122f23bce0a5422022b15936f434
Author: morrySnow <101034200+morrys...@users.noreply.github.com>
AuthorDate: Mon Sep 11 18:03:46 2023 +0800

    [fix](block rule) throw npe when use Nereids explain or fallback (#24182)
---
 .../org/apache/doris/nereids/NereidsPlanner.java   |  4 +--
 .../java/org/apache/doris/qe/StmtExecutor.java     |  1 +
 .../sql_block_rule_p0/test_sql_block_rule.groovy   | 30 +++++++++++++---------
 3 files changed, 21 insertions(+), 14 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java
index 4bef000639..80031a46df 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/NereidsPlanner.java
@@ -79,7 +79,7 @@ public class NereidsPlanner extends Planner {
     public static final Logger LOG = 
LogManager.getLogger(NereidsPlanner.class);
     private CascadesContext cascadesContext;
     private final StatementContext statementContext;
-    private List<ScanNode> scanNodeList = null;
+    private final List<ScanNode> scanNodeList = Lists.newArrayList();
     private DescriptorTable descTable;
 
     private Plan parsedPlan;
@@ -130,7 +130,7 @@ public class NereidsPlanner extends Planner {
         }
         PlanFragment root = physicalPlanTranslator.translatePlan(physicalPlan);
 
-        scanNodeList = planTranslatorContext.getScanNodes();
+        scanNodeList.addAll(planTranslatorContext.getScanNodes());
         descTable = planTranslatorContext.getDescTable();
         fragments = new ArrayList<>(planTranslatorContext.getPlanFragments());
         for (int seq = 0; seq < fragments.size(); seq++) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java 
b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
index 06ed93ea09..fd992555b5 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java
@@ -2498,6 +2498,7 @@ public class StmtExecutor {
                     } catch (Exception e) {
                         LOG.warn("fall back to legacy planner, because: {}", 
e.getMessage(), e);
                         parsedStmt = null;
+                        planner = null;
                         context.getState().setNereids(false);
                         analyzer = new Analyzer(context.getEnv(), context);
                         analyze(context.getSessionVariable().toThrift());
diff --git 
a/regression-test/suites/sql_block_rule_p0/test_sql_block_rule.groovy 
b/regression-test/suites/sql_block_rule_p0/test_sql_block_rule.groovy
index 582fa7c705..768cbcf029 100644
--- a/regression-test/suites/sql_block_rule_p0/test_sql_block_rule.groovy
+++ b/regression-test/suites/sql_block_rule_p0/test_sql_block_rule.groovy
@@ -174,25 +174,31 @@ suite("test_sql_block_rule") {
         "enable"="true");
     """
 
-    test {
-        sql("""SELECT * FROM a_partitioned_table_for_sql_block_rule;""", false)
-
-        exception """sql hits sql block rule"""
-
+    try {
+        test {
+            sql("""SELECT * FROM a_partitioned_table_for_sql_block_rule;""", 
false)
+            exception """sql hits sql block rule"""
+        }
+    } finally {
+        sql """
+            drop SQL_BLOCK_RULE if exists test_rule_partition;
+        """
     }
 
     sql """
         CREATE SQL_BLOCK_RULE if not exists test_rule_tablet PROPERTIES ( 
"tablet_num" = "3", "global" = "true",
         "enable"="true");
     """
-
-    test {
-        sql("""SELECT * FROM a_partitioned_table_for_sql_block_rule;""", false)
-
-        exception """sql hits sql block rule"""
-
+    try {
+        test {
+            sql("""SELECT * FROM a_partitioned_table_for_sql_block_rule;""", 
false)
+            exception """sql hits sql block rule"""
+        }
+    } finally {
+        sql """
+            drop SQL_BLOCK_RULE if exists test_rule_tablet;
+        """
     }
 
 
-
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to