diff options
Diffstat (limited to 'src/backend/optimizer/plan/setrefs.c')
-rw-r--r-- | src/backend/optimizer/plan/setrefs.c | 27 |
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)); |