diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2002-12-13 19:46:01 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2002-12-13 19:46:01 +0000 |
commit | 3a4f7dde16ad81b2319b9a4924a6023710a2fefd (patch) | |
tree | 248cf66fd94d40072b5ba8bb8e5437a6ea8399e5 /src/backend/commands/explain.c | |
parent | 77b7a740f95250af7d78f69e9c906c3e53f32e7b (diff) | |
download | postgresql-3a4f7dde16ad81b2319b9a4924a6023710a2fefd.tar.gz postgresql-3a4f7dde16ad81b2319b9a4924a6023710a2fefd.zip |
Phase 3 of read-only-plans project: ExecInitExpr now builds expression
execution state trees, and ExecEvalExpr takes an expression state tree
not an expression plan tree. The plan tree is now read-only as far as
the executor is concerned. Next step is to begin actually exploiting
this property.
Diffstat (limited to 'src/backend/commands/explain.c')
-rw-r--r-- | src/backend/commands/explain.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index c587765bd5a..1f9e7543d6f 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -5,7 +5,7 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994-5, Regents of the University of California * - * $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.96 2002/12/12 15:49:24 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.97 2002/12/13 19:45:49 tgl Exp $ * */ @@ -582,26 +582,24 @@ explain_outNode(StringInfo str, if (plan->initPlan) { List *saved_rtable = es->rtable; - List *pslist = planstate->initPlan; List *lst; for (i = 0; i < indent; i++) appendStringInfo(str, " "); appendStringInfo(str, " InitPlan\n"); - foreach(lst, plan->initPlan) + foreach(lst, planstate->initPlan) { - SubPlanExpr *subplan = (SubPlanExpr *) lfirst(lst); - SubPlanState *subplanstate = (SubPlanState *) lfirst(pslist); + SubPlanExprState *sps = (SubPlanExprState *) lfirst(lst); + SubPlanExpr *sp = (SubPlanExpr *) sps->xprstate.expr; - es->rtable = subplan->rtable; + es->rtable = sp->rtable; for (i = 0; i < indent; i++) appendStringInfo(str, " "); appendStringInfo(str, " -> "); - explain_outNode(str, subplan->plan, - subplanstate->planstate, + explain_outNode(str, sp->plan, + sps->planstate, NULL, indent + 4, es); - pslist = lnext(pslist); } es->rtable = saved_rtable; } @@ -689,8 +687,8 @@ explain_outNode(StringInfo str, appendStringInfo(str, " SubPlan\n"); foreach(lst, planstate->subPlan) { - SubPlanState *sps = (SubPlanState *) lfirst(lst); - SubPlanExpr *sp = (SubPlanExpr *) sps->ps.plan; + SubPlanExprState *sps = (SubPlanExprState *) lfirst(lst); + SubPlanExpr *sp = (SubPlanExpr *) sps->xprstate.expr; es->rtable = sp->rtable; for (i = 0; i < indent; i++) |