This is an automated email from the ASF dual-hosted git repository. morrysnow 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 a538b4922c [fix](block rule) throw npe when use Nereids explain or fallback (#24182) a538b4922c is described below commit a538b4922c15afa04ae2c655149ccb990010c089 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 8d3dca1068..41d532f769 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 @@ -81,7 +81,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; @@ -132,7 +132,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 9ea8805dd8..3a56a31323 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 @@ -2569,6 +2569,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