aboutsummaryrefslogtreecommitdiff
path: root/src/backend/rewrite/rewriteManip.c
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2008-08-14 20:31:59 +0000
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2008-08-14 20:31:59 +0000
commit763312d73d54b1a8931ae3f296ec506221fb89ef (patch)
tree74890916c94d359b4397eb7a6d4efabcefaafa3c /src/backend/rewrite/rewriteManip.c
parente9ec4bbffe1102bd1818a69ac9abf942bc17498f (diff)
downloadpostgresql-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.c21
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