diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2008-08-14 20:31:59 +0000 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2008-08-14 20:31:59 +0000 |
commit | 763312d73d54b1a8931ae3f296ec506221fb89ef (patch) | |
tree | 74890916c94d359b4397eb7a6d4efabcefaafa3c /src/backend/rewrite/rewriteManip.c | |
parent | e9ec4bbffe1102bd1818a69ac9abf942bc17498f (diff) | |
download | postgresql-763312d73d54b1a8931ae3f296ec506221fb89ef.tar.gz postgresql-763312d73d54b1a8931ae3f296ec506221fb89ef.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 63a8ba2bd05..27ccb9b9aaa 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.107 2008/01/01 19:45:51 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/rewrite/rewriteManip.c,v 1.107.2.1 2008/08/14 20:31:59 heikki Exp $ * *------------------------------------------------------------------------- */ @@ -533,6 +533,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 |