aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/explain.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2002-12-13 19:46:01 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2002-12-13 19:46:01 +0000
commit3a4f7dde16ad81b2319b9a4924a6023710a2fefd (patch)
tree248cf66fd94d40072b5ba8bb8e5437a6ea8399e5 /src/backend/commands/explain.c
parent77b7a740f95250af7d78f69e9c906c3e53f32e7b (diff)
downloadpostgresql-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.c20
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++)