"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