From 8e59100c7adc37e07305c6e1c0feadab0cb241d1 Mon Sep 17 00:00:00 2001 From: totaj Date: Thu, 16 Nov 2023 11:50:59 +0800 Subject: [PATCH] Fix create baseresult plan bug. --- src/gausskernel/optimizer/plan/createplan.cpp | 5 ++++- src/test/regress/expected/query_rewrite.out | 15 +++++++++++++++ src/test/regress/sql/query_rewrite.sql | 7 +++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/gausskernel/optimizer/plan/createplan.cpp b/src/gausskernel/optimizer/plan/createplan.cpp index a0028aad3..cbf3c2dd5 100755 --- a/src/gausskernel/optimizer/plan/createplan.cpp +++ b/src/gausskernel/optimizer/plan/createplan.cpp @@ -387,8 +387,11 @@ static Plan* create_plan_recurse(PlannerInfo* root, Path* best_path) Assert(IsA(best_path, ResultPath)); plan = (Plan*)create_result_plan(root, (ResultPath*)best_path); } - } else { + } else if (IsA(best_path, ResultPath)) { plan = (Plan*)create_result_plan(root, (ResultPath*)best_path); + } else { + Assert(IsA(best_path, Path)); + plan = create_scan_plan(root, best_path); } break; case T_ProjectSet: diff --git a/src/test/regress/expected/query_rewrite.out b/src/test/regress/expected/query_rewrite.out index c1a70b92c..2fceeef55 100755 --- a/src/test/regress/expected/query_rewrite.out +++ b/src/test/regress/expected/query_rewrite.out @@ -321,6 +321,21 @@ explain (verbose, costs off) select * from t2 where t2.c1 in (select t1.c1 from drop table if exists t1; drop table if exists t2; +CREATE TABLE table1 ( column63 INT , column44 INT ) ; +SELECT 1 FROM ( SELECT 1 FROM table1 WHERE NOT EXISTS ( SELECT 1 WHERE column63 = column44 ) ) AS alias1 ; + ?column? +---------- +(0 rows) + +insert into table1 values(2,3); +insert into table1 values(4,4); +SELECT 1 FROM ( SELECT 1 FROM table1 WHERE NOT EXISTS ( SELECT 1 WHERE column63 = column44 ) ) AS alias1 ; + ?column? +---------- + 1 +(1 row) + +drop table table1; drop schema query_rewrite cascade; NOTICE: drop cascades to 7 other objects DETAIL: drop cascades to table t3 diff --git a/src/test/regress/sql/query_rewrite.sql b/src/test/regress/sql/query_rewrite.sql index 03589f6d7..a44e11d5b 100644 --- a/src/test/regress/sql/query_rewrite.sql +++ b/src/test/regress/sql/query_rewrite.sql @@ -187,5 +187,12 @@ explain (verbose, costs off) select * from t2 where t2.c1 in (select t1.c1 from drop table if exists t1; drop table if exists t2; +CREATE TABLE table1 ( column63 INT , column44 INT ) ; +SELECT 1 FROM ( SELECT 1 FROM table1 WHERE NOT EXISTS ( SELECT 1 WHERE column63 = column44 ) ) AS alias1 ; +insert into table1 values(2,3); +insert into table1 values(4,4); +SELECT 1 FROM ( SELECT 1 FROM table1 WHERE NOT EXISTS ( SELECT 1 WHERE column63 = column44 ) ) AS alias1 ; +drop table table1; + drop schema query_rewrite cascade; reset current_schema;