Re: BUG #3459: Query Error : plan should not reference subplan's variable - Mailing list pgsql-bugs

From Tom Lane
Subject Re: BUG #3459: Query Error : plan should not reference subplan's variable
Date
Msg-id 10497.1184795061@sss.pgh.pa.us
Whole thread Raw
In response to BUG #3459: Query Error : plan should not reference subplan's variable  ("David Sanchez i Gregori" <delkos_2000@yahoo.es>)
List pgsql-bugs
"David Sanchez i Gregori" <delkos_2000@yahoo.es> 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;

      /*

pgsql-bugs by date:

Previous
From: "Jairo"
Date:
Subject: BUG #3471: Failed to set permissions on created files
Next
From: Wiktor Wodecki
Date:
Subject: chr() function leads to OOM / killed connection with 8.1, 8.2