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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]