mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-31 14:37:24 +02:00
Revert "Propagate CTE property flags when copying a CTE list into a rule."
This reverts commit ed29089633
and
equivalent back-branch commits. The issue is subtler than I thought,
and it's far from new, so just before a release deadline is no time
to be fooling with it. We'll consider what to do at a bit more
leisure.
Discussion: https://postgr.es/m/CAJcOf-fAdj=nDKMsRhQzndm-O13NY4dL6xGcEvdX5Xvbbi0V7g@mail.gmail.com
This commit is contained in:
parent
ce5f27fcae
commit
f94924f01e
@ -525,9 +525,6 @@ rewriteRuleAction(Query *parsetree,
|
|||||||
*
|
*
|
||||||
* This could possibly be fixed by using some sort of internally
|
* This could possibly be fixed by using some sort of internally
|
||||||
* generated ID, instead of names, to link CTE RTEs to their CTEs.
|
* generated ID, instead of names, to link CTE RTEs to their CTEs.
|
||||||
* However, decompiling the results would be quite confusing; note the
|
|
||||||
* merge of hasRecursive flags below, which could change the apparent
|
|
||||||
* semantics of such redundantly-named CTEs.
|
|
||||||
*/
|
*/
|
||||||
foreach(lc, parsetree->cteList)
|
foreach(lc, parsetree->cteList)
|
||||||
{
|
{
|
||||||
@ -549,9 +546,6 @@ rewriteRuleAction(Query *parsetree,
|
|||||||
/* OK, it's safe to combine the CTE lists */
|
/* OK, it's safe to combine the CTE lists */
|
||||||
sub_action->cteList = list_concat(sub_action->cteList,
|
sub_action->cteList = list_concat(sub_action->cteList,
|
||||||
copyObject(parsetree->cteList));
|
copyObject(parsetree->cteList));
|
||||||
/* ... and don't forget about the associated flags */
|
|
||||||
sub_action->hasRecursive |= parsetree->hasRecursive;
|
|
||||||
sub_action->hasModifyingCTE |= parsetree->hasModifyingCTE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1672,33 +1672,6 @@ SELECT * FROM bug6051_2;
|
|||||||
3
|
3
|
||||||
(3 rows)
|
(3 rows)
|
||||||
|
|
||||||
-- silly example to verify that hasModifyingCTE flag is propagated
|
|
||||||
CREATE TEMP TABLE bug6051_3 AS
|
|
||||||
select a from generate_series(11,13) as a;
|
|
||||||
CREATE RULE bug6051_3_ins AS ON INSERT TO bug6051_3 DO INSTEAD
|
|
||||||
SELECT i FROM bug6051_2;
|
|
||||||
BEGIN; SET LOCAL force_parallel_mode = on;
|
|
||||||
WITH t1 AS ( DELETE FROM bug6051_3 RETURNING * )
|
|
||||||
INSERT INTO bug6051_3 SELECT * FROM t1;
|
|
||||||
i
|
|
||||||
---
|
|
||||||
1
|
|
||||||
2
|
|
||||||
3
|
|
||||||
1
|
|
||||||
2
|
|
||||||
3
|
|
||||||
1
|
|
||||||
2
|
|
||||||
3
|
|
||||||
(9 rows)
|
|
||||||
|
|
||||||
COMMIT;
|
|
||||||
SELECT * FROM bug6051_3;
|
|
||||||
a
|
|
||||||
---
|
|
||||||
(0 rows)
|
|
||||||
|
|
||||||
-- a truly recursive CTE in the same list
|
-- a truly recursive CTE in the same list
|
||||||
WITH RECURSIVE t(a) AS (
|
WITH RECURSIVE t(a) AS (
|
||||||
SELECT 0
|
SELECT 0
|
||||||
|
@ -773,22 +773,6 @@ INSERT INTO bug6051 SELECT * FROM t1;
|
|||||||
SELECT * FROM bug6051;
|
SELECT * FROM bug6051;
|
||||||
SELECT * FROM bug6051_2;
|
SELECT * FROM bug6051_2;
|
||||||
|
|
||||||
-- silly example to verify that hasModifyingCTE flag is propagated
|
|
||||||
CREATE TEMP TABLE bug6051_3 AS
|
|
||||||
select a from generate_series(11,13) as a;
|
|
||||||
|
|
||||||
CREATE RULE bug6051_3_ins AS ON INSERT TO bug6051_3 DO INSTEAD
|
|
||||||
SELECT i FROM bug6051_2;
|
|
||||||
|
|
||||||
BEGIN; SET LOCAL force_parallel_mode = on;
|
|
||||||
|
|
||||||
WITH t1 AS ( DELETE FROM bug6051_3 RETURNING * )
|
|
||||||
INSERT INTO bug6051_3 SELECT * FROM t1;
|
|
||||||
|
|
||||||
COMMIT;
|
|
||||||
|
|
||||||
SELECT * FROM bug6051_3;
|
|
||||||
|
|
||||||
-- a truly recursive CTE in the same list
|
-- a truly recursive CTE in the same list
|
||||||
WITH RECURSIVE t(a) AS (
|
WITH RECURSIVE t(a) AS (
|
||||||
SELECT 0
|
SELECT 0
|
||||||
|
Loading…
Reference in New Issue
Block a user