diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2008-08-14 20:32:11 +0000 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2008-08-14 20:32:11 +0000 |
commit | f44f0ea87cf2a8c9b8b2bc250c92133e048f7c0c (patch) | |
tree | 80278d8b30c7f408616420e517d64e3f8b027845 /src/backend/rewrite/rewriteManip.c | |
parent | 1a3970f7fafe9e60a34b3fef88b8a3c7c1fb58e6 (diff) | |
download | postgresql-f44f0ea87cf2a8c9b8b2bc250c92133e048f7c0c.tar.gz postgresql-f44f0ea87cf2a8c9b8b2bc250c92133e048f7c0c.zip |
Fix pull_up_simple_union_all to copy all rtable entries from child subquery to
parent, not only those with RangeTblRefs. We need them in ExecCheckRTPerms.
Report by Brendan O'Shea. Back-patch to 8.2, where pull_up_simple_union_all
was introduced.
Diffstat (limited to 'src/backend/rewrite/rewriteManip.c')
-rw-r--r-- | src/backend/rewrite/rewriteManip.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/backend/rewrite/rewriteManip.c b/src/backend/rewrite/rewriteManip.c index 96bfdf5f3af..904ef93ef62 100644 --- a/src/backend/rewrite/rewriteManip.c +++ b/src/backend/rewrite/rewriteManip.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/rewrite/rewriteManip.c,v 1.102 2006/10/04 00:29:56 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/rewrite/rewriteManip.c,v 1.102.2.1 2008/08/14 20:32:11 heikki Exp $ * *------------------------------------------------------------------------- */ @@ -509,6 +509,25 @@ IncrementVarSublevelsUp(Node *node, int delta_sublevels_up, 0); } +/* + * IncrementVarSublevelsUp_rtable - + * Same as IncrementVarSublevelsUp, but to be invoked on a range table. + */ +void +IncrementVarSublevelsUp_rtable(List *rtable, int delta_sublevels_up, + int min_sublevels_up) +{ + IncrementVarSublevelsUp_context context; + + context.delta_sublevels_up = delta_sublevels_up; + context.min_sublevels_up = min_sublevels_up; + + range_table_walker(rtable, + IncrementVarSublevelsUp_walker, + (void *) &context, + 0); +} + /* * rangeTableEntry_used - detect whether an RTE is referenced somewhere |