diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2004-10-02 22:39:49 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2004-10-02 22:39:49 +0000 |
commit | 47aa95e951c8291239f15e400d767ea32b5be9b3 (patch) | |
tree | 978f2668fce7bd379efc85a4ce2ca4ff79086acf /src/backend/optimizer/util | |
parent | 19241421f250ce3041c55a0508530820d938c667 (diff) | |
download | postgresql-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.c | 12 |
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 *); |