*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.28 1998/01/09 05:48:10 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.29 1998/01/11 20:01:53 momjian Exp $
*
*-------------------------------------------------------------------------
*/
newnode->cost = from->cost;
newnode->plan_size = from->plan_size;
newnode->plan_width = from->plan_width;
+ newnode->plan_tupperpage = from->plan_tupperpage;
newnode->state = from->state;
newnode->targetlist = copyObject(from->targetlist);
newnode->qual = copyObject(from->qual);
* ----------------
*/
Node_Copy(from, newnode, unionplans);
+ Node_Copy(from, newnode, unionrts);
newnode->unionrelid = from->unionrelid;
Node_Copy(from, newnode, unionrtentries);
Node_Copy(from, newnode, unionstate);
* ----------------
*/
CopyPlanFields((Plan *) from, (Plan *) newnode);
- CopyScanFields(from, newnode);
+ CopyScanFields((Scan *) from, (Scan *) newnode);
return newnode;
}
_copyMergeJoin(MergeJoin *from)
{
MergeJoin *newnode = makeNode(MergeJoin);
- List *newlist;
/* ----------------
* copy node superclass fields
Node_Copy(from, newnode, mergeclauses);
newnode->mergesortop = from->mergesortop;
- newlist = NIL;
newnode->mergerightorder = (Oid *) palloc(sizeof(Oid) * 2);
newnode->mergerightorder[0] = from->mergerightorder[0];
* ----------------
*/
Node_Copy(from, newnode, sortstate);
-
+ Node_Copy(from, newnode, psortstate);
+ newnode->cleaned = from->cleaned;
+
return newnode;
}
Group *newnode = makeNode(Group);
CopyPlanFields((Plan *) from, (Plan *) newnode);
- CopyTempFields((Temp *) from, (Temp *) newnode);
-
+
newnode->tuplePerGroup = from->tuplePerGroup;
newnode->numCols = from->numCols;
newnode->grpColIdx = palloc (from->numCols * sizeof (AttrNumber));
int i;
CopyPlanFields((Plan *) from, (Plan *) newnode);
- CopyTempFields((Temp *) from, (Temp *) newnode);
newnode->numAgg = from->numAgg;
newnode->aggs = palloc(sizeof(Aggreg *));
for (i = 0; i < from->numAgg; i++)
- {
newnode->aggs[i] = copyObject(from->aggs[i]);
- }
Node_Copy(from, newnode, aggstate);
{
GroupClause *newnode = makeNode(GroupClause);
+ Node_Copy(from, newnode, entry);
newnode->grpOpoid = from->grpOpoid;
- newnode->entry = copyObject(from->entry);
return newnode;
}
* copy remainder of node
* ----------------
*/
+ newnode->uniqueAttr = pstrdup(from->uniqueAttr);
+ newnode->uniqueAttrNum = from->uniqueAttrNum;
Node_Copy(from, newnode, uniquestate);
return newnode;
newnode->reslen = from->reslen;
if (from->resname != NULL)
- {
- newnode->resname = palloc(strlen(from->resname) + 1);
- strcpy(newnode->resname, from->resname);
- }
- else
- newnode->resname = (char *) NULL;
-
+ newnode->resname = pstrdup(from->resname);
newnode->reskey = from->reskey;
newnode->reskeyop = from->reskeyop;
newnode->resjunk = from->resjunk;
newnode->fj_results = (DatumPtr)
palloc((from->fj_nNodes) * sizeof(Datum));
-
- newnode->fj_alwaysDone = (BoolPtr)
- palloc((from->fj_nNodes) * sizeof(bool));
-
memmove(from->fj_results,
newnode->fj_results,
(from->fj_nNodes) * sizeof(Datum));
+ newnode->fj_alwaysDone = (BoolPtr)
+ palloc((from->fj_nNodes) * sizeof(bool));
memmove(from->fj_alwaysDone,
newnode->fj_alwaysDone,
(from->fj_nNodes) * sizeof(bool));
/* ----------------
* XXX super cheesy hack until parser/planner
* puts in the right values here.
+ *
+ * But I like cheese.
* ----------------
*/
if (!from->constisnull && cached_type != from->consttype)
}
newnode->constisnull = from->constisnull;
newnode->constbyval = from->constbyval;
+ newnode->constisset = from->constisset;
+ newnode->constiscast = from->constiscast;
return newnode;
}
newnode->paramid = from->paramid;
if (from->paramname != NULL)
- {
newnode->paramname = pstrdup(from->paramname);
- }
- else
- newnode->paramname = (char *) NULL;
-
newnode->paramtype = from->paramtype;
Node_Copy(from, newnode, param_tlist);
newnode->aggname = pstrdup(from->aggname);
newnode->basetype = from->basetype;
newnode->aggtype = from->aggtype;
- newnode->usenulls = from->usenulls;
-
Node_Copy(from, newnode, target);
-
newnode->aggno = from->aggno;
+ newnode->usenulls = from->usenulls;
return newnode;
}
* copy remainder of node
* ----------------
*/
- newnode->refelemtype = from->refelemtype;
newnode->refattrlength = from->refattrlength;
newnode->refelemlength = from->refelemlength;
+ newnode->refelemtype = from->refelemtype;
newnode->refelembyval = from->refelembyval;
Node_Copy(from, newnode, refupperindexpr);
newnode->tuples = from->tuples;
newnode->size = from->size;
newnode->width = from->width;
- newnode->indproc = from->indproc;
-
Node_Copy(from, newnode, targetlist);
Node_Copy(from, newnode, pathlist);
Node_Copy(from, newnode, unorderedpath);
Node_Copy(from, newnode, cheapestpath);
newnode->pruneable = from->pruneable;
- newnode->relam = from->relam;
if (from->classlist)
{
;
newnode->classlist = (Oid *) palloc(sizeof(Oid) * (len + 1));
for (i = 0; i < len; i++)
- {
newnode->classlist[i] = from->classlist[i];
- }
newnode->classlist[len] = 0;
}
;
newnode->indexkeys = (int *) palloc(sizeof(int) * (len + 1));
for (i = 0; i < len; i++)
- {
newnode->indexkeys[i] = from->indexkeys[i];
- }
newnode->indexkeys[len] = 0;
}
+ newnode->relam = from->relam;
+ newnode->indproc = from->indproc;
+ Node_Copy(from, newnode, indpred);
+
if (from->ordering)
{
for (len = 0; from->ordering[len] != 0; len++)
;
newnode->ordering = (Oid *) palloc(sizeof(Oid) * (len + 1));
for (i = 0; i < len; i++)
- {
newnode->ordering[i] = from->ordering[i];
- }
newnode->ordering[len] = 0;
}
newnode->p_ordering.ord.sortop =
(Oid *) palloc(sizeof(Oid) * (len + 1));
for (i = 0; i < len; i++)
- {
newnode->p_ordering.ord.sortop[i] = ordering[i];
- }
newnode->p_ordering.ord.sortop[len] = 0;
}
- else
- {
- newnode->p_ordering.ord.sortop = NULL;
- }
}
else
{
;
newnode->indexkeys = (int *) palloc(sizeof(int) * (len + 1));
for (i = 0; i < len; i++)
- {
newnode->indexkeys[i] = from->indexkeys[i];
- }
newnode->indexkeys[len] = 0;
}
* copy remainder of node
* ----------------
*/
+ CopyJoinMethodFields((JoinMethod *)from, (JoinMethod *)newnode);
newnode->hashop = from->hashop;
return newnode;
* copy remainder of node
* ----------------
*/
+ CopyJoinMethodFields((JoinMethod *)from, (JoinMethod *)newnode);
Node_Copy(from, newnode, m_ordering);
return newnode;
newnode->pathptr = from->pathptr;
newnode->cinfo = from->cinfo;
newnode->clausetype = from->clausetype;
- newnode->groupup = from->groupup;
- newnode->groupcost = from->groupcost;
- newnode->groupsel = from->groupsel;
+
newnode->upstream = (StreamPtr) NULL; /* only copy nodes
* downwards! */
Node_Copy(from, newnode, downstream);
if (newnode->downstream)
((Stream *) newnode->downstream)->upstream = (Stream *) newnode;
+ newnode->groupup = from->groupup;
+ newnode->groupcost = from->groupcost;
+ newnode->groupsel = from->groupsel;
+
return newnode;
}
{
RangeTblEntry *newnode = makeNode(RangeTblEntry);
- memcpy(newnode, from, sizeof(RangeTblEntry));
if (from->relname)
newnode->relname = pstrdup(from->relname);
if (from->refname)
newnode->refname = pstrdup(from->refname);
+ newnode->relid = from->relid;
+ newnode->inh = from->inh;
+ newnode->inFromCl = from->inFromCl;
+
return newnode;
}
TypeName *newnode = makeNode(TypeName);
if (from->name)
- {
newnode->name = pstrdup(from->name);
- }
- else
- {
- from->name = (char *) 0;
- }
+ newnode->timezone = from->timezone;
newnode->setof = from->setof;
Node_Copy(from, newnode, arrayBounds);
newnode->typlen = from->typlen;
{
NotifyStmt *from_notify = (NotifyStmt *) from->utilityStmt;
NotifyStmt *n = makeNode(NotifyStmt);
- int length = strlen(from_notify->relname);
- n->relname = palloc(length + 1);
- strcpy(n->relname, from_notify->relname);
+ n->relname = pstrdup(from_notify->relname);
newnode->utilityStmt = (Node *) n;
}
newnode->resultRelation = from->resultRelation;
- /* probably should dup this string instead of just pointing */
- /* to the old one --djm */
if (from->into)
- {
newnode->into = pstrdup(from->into);
- }
- else
- {
- newnode->into = (char *) 0;
- }
newnode->isPortal = from->isPortal;
newnode->isBinary = from->isBinary;
newnode->unionall = from->unionall;
if (from->uniqueFlag)
- {
- newnode->uniqueFlag = (char *) palloc(strlen(from->uniqueFlag) + 1);
- strcpy(newnode->uniqueFlag, from->uniqueFlag);
- }
- else
- newnode->uniqueFlag = NULL;
+ newnode->uniqueFlag = pstrdup(from->uniqueFlag);
Node_Copy(from, newnode, sortClause);
Node_Copy(from, newnode, rtable);
Node_Copy(from, newnode, targetList);
Node_Copy(from, newnode, qual);
Node_Copy(from, newnode, groupClause);
- Node_Copy(from, newnode, havingQual); /* currently ignored */
+ Node_Copy(from, newnode, havingQual);
newnode->qry_numAgg = from->qry_numAgg;
if (from->qry_numAgg > 0)
for (i=0; i < from->qry_numAgg; i++)
newnode->qry_aggs[i] = _copyAggreg(from->qry_aggs[i]);
}
- else
- newnode->qry_aggs = NULL;
if (from->unionClause)
{
temp_list = lappend(temp_list,copyObject(lfirst(ulist)));
newnode->unionClause = temp_list;
}
- else
- newnode->unionClause = NULL;
return newnode;
}