diff options
author | Vadim B. Mikheev <vadim4o@yahoo.com> | 1998-02-13 03:27:47 +0000 |
---|---|---|
committer | Vadim B. Mikheev <vadim4o@yahoo.com> | 1998-02-13 03:27:47 +0000 |
commit | dc892fd39023ba05cc0c9c349441955e7080e88f (patch) | |
tree | 3d39ca4fc1a5c04ff9d7a81380d63d5cb994a650 /src/backend/nodes/copyfuncs.c | |
parent | 1a105cefbd4769a1ef857f94a71faed6cb76717b (diff) | |
download | postgresql-dc892fd39023ba05cc0c9c349441955e7080e88f.tar.gz postgresql-dc892fd39023ba05cc0c9c349441955e7080e88f.zip |
Support for subselects.
(Have to re-visit readfuncs.c)
Diffstat (limited to 'src/backend/nodes/copyfuncs.c')
-rw-r--r-- | src/backend/nodes/copyfuncs.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index 7cd00218c0a..35dec7f1d96 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.37 1998/02/10 04:00:44 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.38 1998/02/13 03:27:42 vadim Exp $ * *------------------------------------------------------------------------- */ @@ -79,6 +79,8 @@ listCopy(List *list) static void CopyPlanFields(Plan *from, Plan *newnode) { + extern List *SS_pull_subplan (void *expr); + newnode->cost = from->cost; newnode->plan_size = from->plan_size; newnode->plan_width = from->plan_width; @@ -88,6 +90,15 @@ CopyPlanFields(Plan *from, Plan *newnode) newnode->qual = copyObject(from->qual); newnode->lefttree = copyObject(from->lefttree); newnode->righttree = copyObject(from->righttree); + newnode->extParam = listCopy (from->extParam); + newnode->locParam = listCopy (from->locParam); + newnode->chgParam = listCopy (from->chgParam); + Node_Copy(from, newnode, initPlan); + if ( from->subPlan != NULL ) + newnode->subPlan = SS_pull_subplan (newnode->qual); + else + newnode->subPlan = NULL; + newnode->nParamExec = from->nParamExec; } /* ---------------- @@ -575,6 +586,22 @@ _copyHash(Hash *from) return newnode; } +static SubPlan * +_copySubPlan(SubPlan *from) +{ + SubPlan *newnode = makeNode(SubPlan); + + Node_Copy(from, newnode, plan); + newnode->plan_id = from->plan_id; + Node_Copy(from, newnode, rtable); + newnode->setParam = listCopy (from->setParam); + newnode->parParam = listCopy (from->parParam); + Node_Copy(from, newnode, sublink); + newnode->shutdown = from->shutdown; + + return newnode; +} + /* **************************************************************** * primnodes.h copy functions * **************************************************************** @@ -1661,6 +1688,9 @@ copyObject(void *from) case T_Hash: retval = _copyHash(from); break; + case T_SubPlan: + retval = _copySubPlan(from); + break; /* * PRIMITIVE NODES |