diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2021-02-07 12:54:08 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2021-02-07 12:54:08 -0500 |
commit | f94924f01e48b08c677eeeab20108bbbc0be52e6 (patch) | |
tree | 7b1c0cd99a385bef504b516b16fdd8712f56fb22 | |
parent | ce5f27fcae61526603915a266f36a3b2c6f6c6de (diff) | |
download | postgresql-f94924f01e48b08c677eeeab20108bbbc0be52e6.tar.gz |
Revert "Propagate CTE property flags when copying a CTE list into a rule."
This reverts commit ed290896335414c6c069b9ccae1f3dcdd2fac6ba 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
-rw-r--r-- | src/backend/rewrite/rewriteHandler.c | 6 | ||||
-rw-r--r-- | src/test/regress/expected/with.out | 27 | ||||
-rw-r--r-- | src/test/regress/sql/with.sql | 16 |
3 files changed, 0 insertions, 49 deletions
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c index e6bdf15e2d..ebb29e9aa3 100644 --- a/src/backend/rewrite/rewriteHandler.c +++ b/src/backend/rewrite/rewriteHandler.c @@ -525,9 +525,6 @@ rewriteRuleAction(Query *parsetree, * * This could possibly be fixed by using some sort of internally * 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) { @@ -549,9 +546,6 @@ rewriteRuleAction(Query *parsetree, /* OK, it's safe to combine the CTE lists */ sub_action->cteList = list_concat(sub_action->cteList, copyObject(parsetree->cteList)); - /* ... and don't forget about the associated flags */ - sub_action->hasRecursive |= parsetree->hasRecursive; - sub_action->hasModifyingCTE |= parsetree->hasModifyingCTE; } /* diff --git a/src/test/regress/expected/with.out b/src/test/regress/expected/with.out index 2680b6394b..2a2085556b 100644 --- a/src/test/regress/expected/with.out +++ b/src/test/regress/expected/with.out @@ -1672,33 +1672,6 @@ SELECT * FROM bug6051_2; 3 (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 WITH RECURSIVE t(a) AS ( SELECT 0 diff --git a/src/test/regress/sql/with.sql b/src/test/regress/sql/with.sql index ccf6d06fb9..f85645efde 100644 --- a/src/test/regress/sql/with.sql +++ b/src/test/regress/sql/with.sql @@ -773,22 +773,6 @@ INSERT INTO bug6051 SELECT * FROM t1; SELECT * FROM bug6051; 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 WITH RECURSIVE t(a) AS ( SELECT 0 |