aboutsummaryrefslogtreecommitdiff
path: root/src/backend/optimizer/util
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2004-10-02 22:39:49 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2004-10-02 22:39:49 +0000
commit47aa95e951c8291239f15e400d767ea32b5be9b3 (patch)
tree978f2668fce7bd379efc85a4ce2ca4ff79086acf /src/backend/optimizer/util
parent19241421f250ce3041c55a0508530820d938c667 (diff)
downloadpostgresql-47aa95e951c8291239f15e400d767ea32b5be9b3.tar.gz
postgresql-47aa95e951c8291239f15e400d767ea32b5be9b3.zip
Clean up handling of inherited-table update queries, per bug report
from Sebastian Böck. The fix involves being more consistent about when rangetable entries are copied or modified. Someday we really need to fix this stuff to not scribble on its input data structures in the first place...
Diffstat (limited to 'src/backend/optimizer/util')
-rw-r--r--src/backend/optimizer/util/clauses.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c
index de0e7a539c2..1f848cd9bdb 100644
--- a/src/backend/optimizer/util/clauses.c
+++ b/src/backend/optimizer/util/clauses.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/optimizer/util/clauses.c,v 1.180 2004/08/29 05:06:44 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/optimizer/util/clauses.c,v 1.181 2004/10/02 22:39:48 tgl Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
@@ -3254,10 +3254,20 @@ query_tree_mutator(Query *query,
CHECKFLATCOPY(newrte->subquery, rte->subquery, Query);
MUTATE(newrte->subquery, newrte->subquery, Query *);
}
+ else
+ {
+ /* else, copy RT subqueries as-is */
+ newrte->subquery = copyObject(rte->subquery);
+ }
break;
case RTE_JOIN:
if (!(flags & QTW_IGNORE_JOINALIASES))
MUTATE(newrte->joinaliasvars, rte->joinaliasvars, List *);
+ else
+ {
+ /* else, copy join aliases as-is */
+ newrte->joinaliasvars = copyObject(rte->joinaliasvars);
+ }
break;
case RTE_FUNCTION:
MUTATE(newrte->funcexpr, rte->funcexpr, Node *);