aboutsummaryrefslogtreecommitdiff
path: root/src/backend/optimizer/plan/setrefs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/optimizer/plan/setrefs.c')
-rw-r--r--src/backend/optimizer/plan/setrefs.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c
index 075c6a339df..0688d86b1b1 100644
--- a/src/backend/optimizer/plan/setrefs.c
+++ b/src/backend/optimizer/plan/setrefs.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/optimizer/plan/setrefs.c,v 1.106 2005/04/06 16:34:05 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/optimizer/plan/setrefs.c,v 1.107 2005/04/19 22:35:16 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -107,6 +107,21 @@ set_plan_references(Plan *plan, List *rtable)
fix_expr_references(plan,
(Node *) ((IndexScan *) plan)->indxqualorig);
break;
+ case T_BitmapIndexScan:
+ /* no need to fix targetlist and qual */
+ Assert(plan->targetlist == NIL);
+ Assert(plan->qual == NIL);
+ fix_expr_references(plan,
+ (Node *) ((BitmapIndexScan *) plan)->indxqual);
+ fix_expr_references(plan,
+ (Node *) ((BitmapIndexScan *) plan)->indxqualorig);
+ break;
+ case T_BitmapHeapScan:
+ fix_expr_references(plan, (Node *) plan->targetlist);
+ fix_expr_references(plan, (Node *) plan->qual);
+ fix_expr_references(plan,
+ (Node *) ((BitmapHeapScan *) plan)->bitmapqualorig);
+ break;
case T_TidScan:
fix_expr_references(plan, (Node *) plan->targetlist);
fix_expr_references(plan, (Node *) plan->qual);
@@ -225,6 +240,16 @@ set_plan_references(Plan *plan, List *rtable)
foreach(l, ((Append *) plan)->appendplans)
set_plan_references((Plan *) lfirst(l), rtable);
break;
+ case T_BitmapAnd:
+ /* BitmapAnd works like Append */
+ foreach(l, ((BitmapAnd *) plan)->bitmapplans)
+ set_plan_references((Plan *) lfirst(l), rtable);
+ break;
+ case T_BitmapOr:
+ /* BitmapOr works like Append */
+ foreach(l, ((BitmapOr *) plan)->bitmapplans)
+ set_plan_references((Plan *) lfirst(l), rtable);
+ break;
default:
elog(ERROR, "unrecognized node type: %d",
(int) nodeTag(plan));