aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2021-02-07 12:54:08 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2021-02-07 12:54:08 -0500
commit46f2971135984a2666a279faab8b61aa1f1904bd (patch)
treee076c818c325cd598de32b12f62671235062165d
parent2a7664a79c1668f83a658209c10bad6ebdc34a6b (diff)
downloadpostgresql-46f2971135984a2666a279faab8b61aa1f1904bd.tar.gz
postgresql-46f2971135984a2666a279faab8b61aa1f1904bd.zip
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.c6
-rw-r--r--src/test/regress/expected/with.out27
-rw-r--r--src/test/regress/sql/with.sql16
3 files changed, 0 insertions, 49 deletions
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index 9e0e360ff1a..98750113697 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -530,9 +530,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)
{
@@ -554,9 +551,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 2680b6394bb..2a2085556bb 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 ccf6d06fb9a..f85645efdee 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