1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-17 17:02:08 +03:00

As someone asked for this feature - patch for 1.09 follows.

Now You can do queries like

select sum(some_func(x)) from ...
select min(table1.x + table2.y) from table1, table2 where ...

and so on.

Vadim
This commit is contained in:
Bruce Momjian
1996-11-30 17:49:02 +00:00
parent 87352726b2
commit f0a9e64afd
3 changed files with 52 additions and 14 deletions

View File

@ -6,7 +6,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/parser.c,v 1.12 1996/11/25 03:03:48 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/parser.c,v 1.13 1996/11/30 17:49:02 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@ -434,13 +434,16 @@ ParseAgg(char *aggname, Oid basetype, Node *target)
fintype = aggform->aggfinaltype;
xfn1 = aggform->aggtransfn1;
if (nodeTag(target) != T_Var)
elog(WARN, "parser: aggregate can only be applied on an attribute");
if (nodeTag(target) != T_Var && nodeTag(target) != T_Expr)
elog(WARN, "parser: aggregate can only be applied on an attribute or expression");
/* only aggregates with transfn1 need a base type */
if (OidIsValid(xfn1)) {
basetype = aggform->aggbasetype;
vartype = ((Var*)target)->vartype;
if (nodeTag(target) == T_Var)
vartype = ((Var*)target)->vartype;
else
vartype = ((Expr*)target)->typeOid;
if (basetype != vartype) {
Type tp1, tp2, get_id_type();