summaryrefslogtreecommitdiff
path: root/src/backend/nodes/copyfuncs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/nodes/copyfuncs.c')
-rw-r--r--src/backend/nodes/copyfuncs.c33
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