diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2000-01-09 00:26:47 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2000-01-09 00:26:47 +0000 |
commit | 166b5c1def56a8c43536ac64bd0ba92517f67765 (patch) | |
tree | 09a047af2ae3b27e0c071a2fd1fbd32785a66190 /src/backend/nodes/copyfuncs.c | |
parent | 69d4299e3e534686274480ba245566914932c017 (diff) | |
download | postgresql-166b5c1def56a8c43536ac64bd0ba92517f67765.tar.gz postgresql-166b5c1def56a8c43536ac64bd0ba92517f67765.zip |
Another round of planner/optimizer work. This is just restructuring and
code cleanup; no major improvements yet. However, EXPLAIN does produce
more intuitive outputs for nested loops with indexscans now...
Diffstat (limited to 'src/backend/nodes/copyfuncs.c')
-rw-r--r-- | src/backend/nodes/copyfuncs.c | 54 |
1 files changed, 35 insertions, 19 deletions
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index 884926b9b62..53bb27e3294 100644 --- a/src/backend/nodes/copyfuncs.c +++ b/src/backend/nodes/copyfuncs.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.98 1999/12/13 01:26:53 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.99 2000/01/09 00:26:22 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -75,9 +75,9 @@ static void CopyPlanFields(Plan *from, Plan *newnode) { newnode->cost = from->cost; - newnode->plan_size = from->plan_size; + newnode->plan_rows = from->plan_rows; newnode->plan_width = from->plan_width; - newnode->plan_tupperpage = from->plan_tupperpage; + /* state is NOT copied */ newnode->targetlist = copyObject(from->targetlist); newnode->qual = copyObject(from->qual); newnode->lefttree = copyObject(from->lefttree); @@ -962,25 +962,44 @@ static RelOptInfo * _copyRelOptInfo(RelOptInfo *from) { RelOptInfo *newnode = makeNode(RelOptInfo); - int i, - len; - /* ---------------- - * copy remainder of node - * ---------------- - */ newnode->relids = listCopy(from->relids); - newnode->indexed = from->indexed; - newnode->pages = from->pages; - newnode->tuples = from->tuples; - newnode->size = from->size; + newnode->rows = from->rows; newnode->width = from->width; + Node_Copy(from, newnode, targetlist); Node_Copy(from, newnode, pathlist); + /* XXX cheapestpath should point to a member of pathlist? */ Node_Copy(from, newnode, cheapestpath); newnode->pruneable = from->pruneable; + newnode->indexed = from->indexed; + newnode->pages = from->pages; + newnode->tuples = from->tuples; + + Node_Copy(from, newnode, restrictinfo); + Node_Copy(from, newnode, joininfo); + Node_Copy(from, newnode, innerjoin); + + return newnode; +} + +/* ---------------- + * _copyIndexOptInfo + * ---------------- + */ +static IndexOptInfo * +_copyIndexOptInfo(IndexOptInfo *from) +{ + IndexOptInfo *newnode = makeNode(IndexOptInfo); + int i, + len; + + newnode->indexoid = from->indexoid; + newnode->pages = from->pages; + newnode->tuples = from->tuples; + if (from->classlist) { for (len = 0; from->classlist[len] != 0; len++) @@ -1015,10 +1034,6 @@ _copyRelOptInfo(RelOptInfo *from) newnode->indproc = from->indproc; Node_Copy(from, newnode, indpred); - Node_Copy(from, newnode, restrictinfo); - Node_Copy(from, newnode, joininfo); - Node_Copy(from, newnode, innerjoin); - return newnode; } @@ -1120,7 +1135,6 @@ _copyTidPath(TidPath *from) static void CopyJoinPathFields(JoinPath *from, JoinPath *newnode) { - Node_Copy(from, newnode, pathinfo); Node_Copy(from, newnode, outerjoinpath); Node_Copy(from, newnode, innerjoinpath); } @@ -1229,7 +1243,6 @@ _copyRestrictInfo(RestrictInfo *from) * ---------------- */ Node_Copy(from, newnode, clause); - newnode->selectivity = from->selectivity; Node_Copy(from, newnode, subclauseindices); newnode->mergejoinoperator = from->mergejoinoperator; newnode->left_sortop = from->left_sortop; @@ -1617,6 +1630,9 @@ copyObject(void *from) case T_Stream: retval = _copyStream(from); break; + case T_IndexOptInfo: + retval = _copyIndexOptInfo(from); + break; /* * PARSE NODES |