"David Sanchez i Gregori" <[EMAIL PROTECTED]> writes:
> Description:        Query Error : plan should not reference subplan's
> variable

If it helps, I've applied the attached patch to fix this.

> I found these error in all 8.x on Windows XP SP 2 (32 bits) , Linux 32 bits,
> and Linux AMD64.

AFAICT the bug is new in 8.1.  If you can reproduce something of the
sort in 8.0.x, please submit a test case.

                        regards, tom lane

Index: src/backend/optimizer/plan/subselect.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/optimizer/plan/subselect.c,v
retrieving revision 1.112.2.1
diff -c -r1.112.2.1 subselect.c
*** src/backend/optimizer/plan/subselect.c      6 Dec 2006 19:40:08 -0000       
1.112.2.1
--- src/backend/optimizer/plan/subselect.c      18 Jul 2007 21:23:41 -0000
***************
*** 1306,1315 ****
        Param      *prm;
  
        /*
!        * Set up for a new level of subquery.  This is just to keep
!        * SS_finalize_plan from becoming confused.
         */
-       PlannerQueryLevel++;
        PlannerInitPlan = NIL;
  
        /*
--- 1306,1319 ----
        Param      *prm;
  
        /*
!        * We must run SS_finalize_plan(), since that's normally done before a
!        * subplan gets put into the initplan list.  However it will try to 
attach
!        * any pre-existing initplans to this one, which we don't want (they are
!        * siblings not children of this initplan).  So, a quick kluge to hide
!        * them.  (This is something else that could perhaps be cleaner if we 
did
!        * extParam/allParam processing in setrefs.c instead of here?  See notes
!        * for materialize_finished_plan.)
         */
        PlannerInitPlan = NIL;
  
        /*
***************
*** 1317,1324 ****
         */
        SS_finalize_plan(plan, root->parse->rtable);
  
!       /* Return to outer subquery context */
!       PlannerQueryLevel--;
        PlannerInitPlan = saved_initplan;
  
        /*
--- 1321,1327 ----
         */
        SS_finalize_plan(plan, root->parse->rtable);
  
!       /* Restore outer initplan list */
        PlannerInitPlan = saved_initplan;
  
        /*

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Reply via email to