mirror of
https://github.com/postgres/postgres.git
synced 2025-11-07 19:06:32 +03:00
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...
This commit is contained in:
@@ -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 *);
|
||||
|
||||
Reference in New Issue
Block a user