Add missing fix_expr_references() step for the funcexpr of a
authorTom Lane <[email protected]>
Sat, 18 May 2002 00:42:55 +0000 (00:42 +0000)
committerTom Lane <[email protected]>
Sat, 18 May 2002 00:42:55 +0000 (00:42 +0000)
FunctionScan plan node.

src/backend/optimizer/plan/setrefs.c

index d05d14f3a80d2737afa9699b0804a000b527d9b7..045451be89d0305681a438c76e42698cae8e5267 100644 (file)
@@ -23,6 +23,7 @@
 #include "optimizer/planmain.h"
 #include "optimizer/tlist.h"
 #include "optimizer/var.h"
+#include "parser/parsetree.h"
 
 
 typedef struct
@@ -121,8 +122,16 @@ set_plan_references(Query *root, Plan *plan)
                        set_plan_references(root, ((SubqueryScan *) plan)->subplan);
                        break;
                case T_FunctionScan:
-                       fix_expr_references(plan, (Node *) plan->targetlist);
-                       fix_expr_references(plan, (Node *) plan->qual);
+                       {
+                               RangeTblEntry *rte;
+
+                               fix_expr_references(plan, (Node *) plan->targetlist);
+                               fix_expr_references(plan, (Node *) plan->qual);
+                               rte = rt_fetch(((FunctionScan *) plan)->scan.scanrelid,
+                                                          root->rtable);
+                               Assert(rte->rtekind == RTE_FUNCTION);
+                               fix_expr_references(plan, rte->funcexpr);
+                       }
                        break;
                case T_NestLoop:
                        set_join_references(root, (Join *) plan);