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.c71
1 files changed, 52 insertions, 19 deletions
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c
index d6883bb339..808ffbd075 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.122 2000/09/20 15:28:01 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.123 2000/09/29 18:21:29 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -300,6 +300,31 @@ _copyTidScan(TidScan *from)
return newnode;
}
+/* ----------------
+ * _copySubqueryScan
+ * ----------------
+ */
+static SubqueryScan *
+_copySubqueryScan(SubqueryScan *from)
+{
+ SubqueryScan *newnode = makeNode(SubqueryScan);
+
+ /* ----------------
+ * copy node superclass fields
+ * ----------------
+ */
+ CopyPlanFields((Plan *) from, (Plan *) newnode);
+ CopyScanFields((Scan *) from, (Scan *) newnode);
+
+ /* ----------------
+ * copy remainder of node
+ * ----------------
+ */
+ Node_Copy(from, newnode, subplan);
+
+ return newnode;
+}
+
/* ----------------
* CopyJoinFields
@@ -913,6 +938,17 @@ _copyRangeTblRef(RangeTblRef *from)
return newnode;
}
+static FromExpr *
+_copyFromExpr(FromExpr *from)
+{
+ FromExpr *newnode = makeNode(FromExpr);
+
+ Node_Copy(from, newnode, fromlist);
+ Node_Copy(from, newnode, quals);
+
+ return newnode;
+}
+
static JoinExpr *
_copyJoinExpr(JoinExpr *from)
{
@@ -1025,9 +1061,11 @@ _copyRelOptInfo(RelOptInfo *from)
Node_Copy(from, newnode, cheapest_total_path);
newnode->pruneable = from->pruneable;
+ newnode->issubquery = from->issubquery;
newnode->indexed = from->indexed;
newnode->pages = from->pages;
newnode->tuples = from->tuples;
+ Node_Copy(from, newnode, subplan);
Node_Copy(from, newnode, baserestrictinfo);
newnode->baserestrictcost = from->baserestrictcost;
@@ -1306,7 +1344,7 @@ _copyRestrictInfo(RestrictInfo *from)
* ----------------
*/
Node_Copy(from, newnode, clause);
- newnode->isjoinqual = from->isjoinqual;
+ newnode->ispusheddown = from->ispusheddown;
Node_Copy(from, newnode, subclauseindices);
newnode->mergejoinoperator = from->mergejoinoperator;
newnode->left_sortop = from->left_sortop;
@@ -1392,22 +1430,14 @@ _copyRangeTblEntry(RangeTblEntry *from)
if (from->relname)
newnode->relname = pstrdup(from->relname);
newnode->relid = from->relid;
+ Node_Copy(from, newnode, subquery);
Node_Copy(from, newnode, alias);
Node_Copy(from, newnode, eref);
newnode->inh = from->inh;
newnode->inFromCl = from->inFromCl;
- newnode->skipAcl = from->skipAcl;
-
- return newnode;
-}
-
-static RowMark *
-_copyRowMark(RowMark *from)
-{
- RowMark *newnode = makeNode(RowMark);
-
- newnode->rti = from->rti;
- newnode->info = from->info;
+ newnode->checkForRead = from->checkForRead;
+ newnode->checkForWrite = from->checkForWrite;
+ newnode->checkAsUser = from->checkAsUser;
return newnode;
}
@@ -1674,8 +1704,8 @@ _copyQuery(Query *from)
Node_Copy(from, newnode, jointree);
Node_Copy(from, newnode, targetList);
- Node_Copy(from, newnode, qual);
- Node_Copy(from, newnode, rowMark);
+
+ newnode->rowMarks = listCopy(from->rowMarks);
Node_Copy(from, newnode, distinctClause);
Node_Copy(from, newnode, sortClause);
@@ -2493,6 +2523,9 @@ copyObject(void *from)
case T_TidScan:
retval = _copyTidScan(from);
break;
+ case T_SubqueryScan:
+ retval = _copySubqueryScan(from);
+ break;
case T_Join:
retval = _copyJoin(from);
break;
@@ -2575,6 +2608,9 @@ copyObject(void *from)
case T_RangeTblRef:
retval = _copyRangeTblRef(from);
break;
+ case T_FromExpr:
+ retval = _copyFromExpr(from);
+ break;
case T_JoinExpr:
retval = _copyJoinExpr(from);
break;
@@ -2881,9 +2917,6 @@ copyObject(void *from)
case T_CaseWhen:
retval = _copyCaseWhen(from);
break;
- case T_RowMark:
- retval = _copyRowMark(from);
- break;
case T_FkConstraint:
retval = _copyFkConstraint(from);
break;