diff options
Diffstat (limited to 'src/backend/nodes/copyfuncs.c')
-rw-r--r-- | src/backend/nodes/copyfuncs.c | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index eb9bbe93658..da3bf7b7213 100644 --- a/src/backend/nodes/copyfuncs.c +++ b/src/backend/nodes/copyfuncs.c @@ -15,7 +15,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.220 2002/11/23 03:59:07 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.221 2002/11/24 21:52:13 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1148,7 +1148,9 @@ _copyRelOptInfo(RelOptInfo *from) newnode->baserestrictcost = from->baserestrictcost; newnode->outerjoinset = listCopy(from->outerjoinset); Node_Copy(from, newnode, joininfo); - Node_Copy(from, newnode, innerjoin); + + newnode->index_outer_relids = listCopy(from->index_outer_relids); + Node_Copy(from, newnode, index_inner_paths); return newnode; } @@ -1200,6 +1202,9 @@ _copyIndexOptInfo(IndexOptInfo *from) Node_Copy(from, newnode, indpred); newnode->unique = from->unique; + newnode->outer_relids = listCopy(from->outer_relids); + Node_Copy(from, newnode, inner_paths); + return newnode; } @@ -1262,8 +1267,6 @@ _copyIndexPath(IndexPath *from) Node_Copy(from, newnode, indexinfo); Node_Copy(from, newnode, indexqual); newnode->indexscandir = from->indexscandir; - newnode->joinrelids = listCopy(from->joinrelids); - newnode->alljoinquals = from->alljoinquals; newnode->rows = from->rows; return newnode; @@ -1491,6 +1494,25 @@ _copyJoinInfo(JoinInfo *from) return newnode; } +/* ---------------- + * _copyInnerIndexscanInfo + * ---------------- + */ +static InnerIndexscanInfo * +_copyInnerIndexscanInfo(InnerIndexscanInfo *from) +{ + InnerIndexscanInfo *newnode = makeNode(InnerIndexscanInfo); + + /* + * copy remainder of node + */ + newnode->other_relids = listCopy(from->other_relids); + newnode->isouterjoin = from->isouterjoin; + Node_Copy(from, newnode, best_innerpath); + + return newnode; +} + /* **************************************************************** * parsenodes.h copy functions * **************************************************************** @@ -2952,6 +2974,9 @@ copyObject(void *from) case T_IndexOptInfo: retval = _copyIndexOptInfo(from); break; + case T_InnerIndexscanInfo: + retval = _copyInnerIndexscanInfo(from); + break; /* * VALUE NODES |