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