Fix cte with subquery failed.
This commit is contained in:
@ -1904,9 +1904,9 @@ void SS_process_ctes(PlannerInfo* root)
|
|||||||
Query* subquery = NULL;
|
Query* subquery = NULL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ignore SELECT CTEs that are not actually referenced anywhere.
|
* Ignore SELECT CTEs that are not actually referenced anywhere or already inlined.
|
||||||
*/
|
*/
|
||||||
if (cte->cterefcount == 0 && cmdType == CMD_SELECT) {
|
if ((cte->cterefcount == 0 && cmdType == CMD_SELECT) || cte->cterefcount == -1) {
|
||||||
/* Make a dummy entry in cte_plan_ids */
|
/* Make a dummy entry in cte_plan_ids */
|
||||||
root->cte_plan_ids = lappend_int(root->cte_plan_ids, -1);
|
root->cte_plan_ids = lappend_int(root->cte_plan_ids, -1);
|
||||||
continue;
|
continue;
|
||||||
|
@ -25,6 +25,77 @@ WHERE
|
|||||||
------
|
------
|
||||||
(0 rows)
|
(0 rows)
|
||||||
|
|
||||||
|
with alias11 as(select 1 alias1 from fulljoin_test),
|
||||||
|
alias25 as(select * from (with alias19 as (select rownum from fulljoin_test2)select * from alias19)alias18)
|
||||||
|
select * from alias11,alias25 full join fulljoin_test3 on 1=1 full join fulljoin_test4 on 1=1 where 1=1;
|
||||||
|
alias1 | rownum | d_id | w_id | w_ytd
|
||||||
|
--------+--------+------+------+-------
|
||||||
|
(0 rows)
|
||||||
|
|
||||||
|
explain (costs off) with alias11 as(select 1 alias1 from fulljoin_test),
|
||||||
|
alias25 as(select * from (with alias19 as (select rownum from fulljoin_test2)select * from alias19)alias18)
|
||||||
|
select * from alias11,alias25 full join fulljoin_test3 on 1=1 full join fulljoin_test4 on 1=1 where 1=1;
|
||||||
|
QUERY PLAN
|
||||||
|
--------------------------------------------------------------------------------------
|
||||||
|
Nested Loop
|
||||||
|
CTE alias25
|
||||||
|
-> CTE Scan on alias19
|
||||||
|
CTE alias19
|
||||||
|
-> Seq Scan on fulljoin_test2
|
||||||
|
-> Result
|
||||||
|
-> Append
|
||||||
|
-> Nested Loop Left Join
|
||||||
|
CTE alias25
|
||||||
|
-> CTE Scan on alias19
|
||||||
|
CTE alias19
|
||||||
|
-> Seq Scan on fulljoin_test2
|
||||||
|
-> Result
|
||||||
|
-> Append
|
||||||
|
-> Nested Loop Left Join
|
||||||
|
CTE alias25
|
||||||
|
-> CTE Scan on alias19
|
||||||
|
CTE alias19
|
||||||
|
-> Seq Scan on fulljoin_test2
|
||||||
|
-> CTE Scan on alias25
|
||||||
|
-> Materialize
|
||||||
|
-> Seq Scan on fulljoin_test3
|
||||||
|
-> Nested Loop Left Anti Full Join
|
||||||
|
CTE alias25
|
||||||
|
-> CTE Scan on alias19
|
||||||
|
CTE alias19
|
||||||
|
-> Seq Scan on fulljoin_test2
|
||||||
|
-> Seq Scan on fulljoin_test3
|
||||||
|
-> CTE Scan on alias25
|
||||||
|
-> Materialize
|
||||||
|
-> Seq Scan on fulljoin_test4
|
||||||
|
-> Nested Loop Left Anti Full Join
|
||||||
|
CTE alias25
|
||||||
|
-> CTE Scan on alias19
|
||||||
|
CTE alias19
|
||||||
|
-> Seq Scan on fulljoin_test2
|
||||||
|
-> Seq Scan on fulljoin_test4
|
||||||
|
-> Materialize
|
||||||
|
-> Result
|
||||||
|
-> Append
|
||||||
|
-> Nested Loop Left Join
|
||||||
|
CTE alias25
|
||||||
|
-> CTE Scan on alias19
|
||||||
|
CTE alias19
|
||||||
|
-> Seq Scan on fulljoin_test2
|
||||||
|
-> CTE Scan on alias25
|
||||||
|
-> Materialize
|
||||||
|
-> Seq Scan on fulljoin_test3
|
||||||
|
-> Nested Loop Left Anti Full Join
|
||||||
|
CTE alias25
|
||||||
|
-> CTE Scan on alias19
|
||||||
|
CTE alias19
|
||||||
|
-> Seq Scan on fulljoin_test2
|
||||||
|
-> Seq Scan on fulljoin_test3
|
||||||
|
-> CTE Scan on alias25
|
||||||
|
-> Materialize
|
||||||
|
-> Seq Scan on fulljoin_test
|
||||||
|
(57 rows)
|
||||||
|
|
||||||
drop table fulljoin_test;
|
drop table fulljoin_test;
|
||||||
drop table fulljoin_test2;
|
drop table fulljoin_test2;
|
||||||
drop table fulljoin_test3;
|
drop table fulljoin_test3;
|
||||||
|
@ -1004,7 +1004,7 @@ test: cost_model
|
|||||||
test: base_update
|
test: base_update
|
||||||
test: seqscan_fusion
|
test: seqscan_fusion
|
||||||
|
|
||||||
test: union_null_01
|
test: union_null_01 fulljoin_rewrite
|
||||||
|
|
||||||
# var selectivity
|
# var selectivity
|
||||||
test: var_eq_const_selectivity
|
test: var_eq_const_selectivity
|
||||||
@ -1022,7 +1022,6 @@ test: rename_table
|
|||||||
|
|
||||||
# debug instrument
|
# debug instrument
|
||||||
test: test_debug5
|
test: test_debug5
|
||||||
test: fulljoin_rewrite
|
|
||||||
|
|
||||||
# fix echo infos
|
# fix echo infos
|
||||||
test: gstrace_options
|
test: gstrace_options
|
||||||
|
@ -26,6 +26,14 @@ WHERE
|
|||||||
alias9.alias8 = 2
|
alias9.alias8 = 2
|
||||||
OR alias9.alias7 = 2;
|
OR alias9.alias7 = 2;
|
||||||
|
|
||||||
|
with alias11 as(select 1 alias1 from fulljoin_test),
|
||||||
|
alias25 as(select * from (with alias19 as (select rownum from fulljoin_test2)select * from alias19)alias18)
|
||||||
|
select * from alias11,alias25 full join fulljoin_test3 on 1=1 full join fulljoin_test4 on 1=1 where 1=1;
|
||||||
|
|
||||||
|
explain (costs off) with alias11 as(select 1 alias1 from fulljoin_test),
|
||||||
|
alias25 as(select * from (with alias19 as (select rownum from fulljoin_test2)select * from alias19)alias18)
|
||||||
|
select * from alias11,alias25 full join fulljoin_test3 on 1=1 full join fulljoin_test4 on 1=1 where 1=1;
|
||||||
|
|
||||||
drop table fulljoin_test;
|
drop table fulljoin_test;
|
||||||
|
|
||||||
drop table fulljoin_test2;
|
drop table fulljoin_test2;
|
||||||
|
Reference in New Issue
Block a user