aboutsummaryrefslogtreecommitdiff
path: root/src/backend/rewrite/rewriteHandler.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2005-11-23 17:21:22 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2005-11-23 17:21:22 +0000
commitf1e08506e9f98ba46cf4feb904edbe0afe2c4b93 (patch)
tree7bb00fbb96ce069823a69e2a89c873dac8d39b5d /src/backend/rewrite/rewriteHandler.c
parent45722010efeedda925158fdb3046d6ed81c86474 (diff)
downloadpostgresql-f1e08506e9f98ba46cf4feb904edbe0afe2c4b93.tar.gz
postgresql-f1e08506e9f98ba46cf4feb904edbe0afe2c4b93.zip
Fix problems with rewriter failing to set Query.hasSubLinks when inserting
a SubLink expression into a rule query. Pre-8.1 we essentially did this unconditionally; 8.1 tries to do it only when needed, but was missing a couple of cases. Per report from Kyle Bateman. Add some regression test cases covering this area.
Diffstat (limited to 'src/backend/rewrite/rewriteHandler.c')
-rw-r--r--src/backend/rewrite/rewriteHandler.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index c10d4c923c4..969188acdb7 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/rewrite/rewriteHandler.c,v 1.158.2.1 2005/11/22 18:23:16 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/rewrite/rewriteHandler.c,v 1.158.2.2 2005/11/23 17:21:22 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -374,6 +374,14 @@ rewriteRuleAction(Query *parsetree,
sub_action->jointree->fromlist =
list_concat(newjointree, sub_action->jointree->fromlist);
+
+ /*
+ * There could have been some SubLinks in newjointree, in which
+ * case we'd better mark the sub_action correctly.
+ */
+ if (parsetree->hasSubLinks && !sub_action->hasSubLinks)
+ sub_action->hasSubLinks =
+ checkExprHasSubLink((Node *) newjointree);
}
}