diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2002-05-12 20:10:05 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2002-05-12 20:10:05 +0000 |
commit | f9e4f611a18f64fd9106a72ec9af9e2220075780 (patch) | |
tree | bfbc1d3d9fb5a008d8fe3405dce3366659c7e7cc /src/backend/nodes/copyfuncs.c | |
parent | 71009354c848964e657e540e24dac6b4c9a81570 (diff) |
First pass at set-returning-functions in FROM, by Joe Conway with
some kibitzing from Tom Lane. Not everything works yet, and there's
no documentation or regression test, but let's commit this so Joe
doesn't need to cope with tracking changes in so many files ...
Diffstat (limited to 'src/backend/nodes/copyfuncs.c')
-rw-r--r-- | src/backend/nodes/copyfuncs.c | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index c461f147ef8..cfcf00a4d47 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.182 2002/04/28 19:54:28 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.183 2002/05/12 20:10:02 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -310,6 +310,23 @@ _copySubqueryScan(SubqueryScan *from) return newnode; } +/* ---------------- + * _copyFunctionScan + * ---------------- + */ +static FunctionScan * +_copyFunctionScan(FunctionScan *from) +{ + FunctionScan *newnode = makeNode(FunctionScan); + + /* + * copy node superclass fields + */ + CopyPlanFields((Plan *) from, (Plan *) newnode); + CopyScanFields((Scan *) from, (Scan *) newnode); + + return newnode; +} /* ---------------- * CopyJoinFields @@ -1083,7 +1100,7 @@ _copyRelOptInfo(RelOptInfo *from) Node_Copy(from, newnode, cheapest_total_path); newnode->pruneable = from->pruneable; - newnode->issubquery = from->issubquery; + newnode->rtekind = from->rtekind; Node_Copy(from, newnode, indexlist); newnode->pages = from->pages; newnode->tuples = from->tuples; @@ -1473,6 +1490,7 @@ _copyRangeTblEntry(RangeTblEntry *from) newnode->rtekind = from->rtekind; newnode->relid = from->relid; Node_Copy(from, newnode, subquery); + Node_Copy(from, newnode, funcexpr); newnode->jointype = from->jointype; Node_Copy(from, newnode, joinaliasvars); Node_Copy(from, newnode, alias); @@ -1690,6 +1708,17 @@ _copyRangeSubselect(RangeSubselect *from) return newnode; } +static RangeFunction * +_copyRangeFunction(RangeFunction *from) +{ + RangeFunction *newnode = makeNode(RangeFunction); + + Node_Copy(from, newnode, funccallnode); + Node_Copy(from, newnode, alias); + + return newnode; +} + static TypeCast * _copyTypeCast(TypeCast *from) { @@ -2621,6 +2650,9 @@ copyObject(void *from) case T_SubqueryScan: retval = _copySubqueryScan(from); break; + case T_FunctionScan: + retval = _copyFunctionScan(from); + break; case T_Join: retval = _copyJoin(from); break; @@ -3001,6 +3033,9 @@ copyObject(void *from) case T_RangeSubselect: retval = _copyRangeSubselect(from); break; + case T_RangeFunction: + retval = _copyRangeFunction(from); + break; case T_TypeName: retval = _copyTypeName(from); break; |