|
9 | 9 | *
|
10 | 10 | *
|
11 | 11 | * IDENTIFICATION
|
12 |
| - * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.76 2002/05/12 20:10:03 tgl Exp $ |
| 12 | + * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.77 2002/05/18 00:42:55 tgl Exp $ |
13 | 13 | *
|
14 | 14 | *-------------------------------------------------------------------------
|
15 | 15 | */
|
|
23 | 23 | #include"optimizer/planmain.h"
|
24 | 24 | #include"optimizer/tlist.h"
|
25 | 25 | #include"optimizer/var.h"
|
| 26 | +#include"parser/parsetree.h" |
26 | 27 |
|
27 | 28 |
|
28 | 29 | typedefstruct
|
@@ -121,8 +122,16 @@ set_plan_references(Query *root, Plan *plan)
|
121 | 122 | set_plan_references(root, ((SubqueryScan*)plan)->subplan);
|
122 | 123 | break;
|
123 | 124 | caseT_FunctionScan:
|
124 |
| -fix_expr_references(plan, (Node*)plan->targetlist); |
125 |
| -fix_expr_references(plan, (Node*)plan->qual); |
| 125 | +{ |
| 126 | +RangeTblEntry*rte; |
| 127 | + |
| 128 | +fix_expr_references(plan, (Node*)plan->targetlist); |
| 129 | +fix_expr_references(plan, (Node*)plan->qual); |
| 130 | +rte=rt_fetch(((FunctionScan*)plan)->scan.scanrelid, |
| 131 | +root->rtable); |
| 132 | +Assert(rte->rtekind==RTE_FUNCTION); |
| 133 | +fix_expr_references(plan,rte->funcexpr); |
| 134 | +} |
126 | 135 | break;
|
127 | 136 | caseT_NestLoop:
|
128 | 137 | set_join_references(root, (Join*)plan);
|
|