diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2003-07-01 19:10:53 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2003-07-01 19:10:53 +0000 |
commit | e3b1b6c0cdc1ceda26053573af1da4f35ee8566d (patch) | |
tree | 9a4c13b8dde0b73cc78b418ba6beee6ef2ebc01a /src/backend/nodes/makefuncs.c | |
parent | 02b5d8e37195bc2432df37d248566506371f1c81 (diff) | |
download | postgresql-e3b1b6c0cdc1ceda26053573af1da4f35ee8566d.tar.gz postgresql-e3b1b6c0cdc1ceda26053573af1da4f35ee8566d.zip |
Aggregates can be polymorphic, using polymorphic implementation functions.
It also works to create a non-polymorphic aggregate from polymorphic
functions, should you want to do that. Regression test added, docs still
lacking. By Joe Conway, with some kibitzing from Tom Lane.
Diffstat (limited to 'src/backend/nodes/makefuncs.c')
-rw-r--r-- | src/backend/nodes/makefuncs.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/backend/nodes/makefuncs.c b/src/backend/nodes/makefuncs.c index 4683d36bfbc..38bd4ac6f6e 100644 --- a/src/backend/nodes/makefuncs.c +++ b/src/backend/nodes/makefuncs.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/nodes/makefuncs.c,v 1.39 2003/05/06 00:20:32 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/nodes/makefuncs.c,v 1.40 2003/07/01 19:10:52 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -251,3 +251,24 @@ makeTypeName(char *typnam) n->typmod = -1; return n; } + +/* + * makeFuncExpr - + * build an expression tree representing a function call. + * + * The argument expressions must have been transformed already. + */ +FuncExpr * +makeFuncExpr(Oid funcid, Oid rettype, List *args, CoercionForm fformat) +{ + FuncExpr *funcexpr; + + funcexpr = makeNode(FuncExpr); + funcexpr->funcid = funcid; + funcexpr->funcresulttype = rettype; + funcexpr->funcretset = false; /* only allowed case here */ + funcexpr->funcformat = fformat; + funcexpr->args = args; + + return funcexpr; +} |