diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c index 786be98520..08a2f5f203 100644 --- a/src/backend/parser/parse_expr.c +++ b/src/backend/parser/parse_expr.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.94 2001/05/18 22:35:50 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.95 2001/05/19 00:33:20 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -173,7 +173,7 @@ transformExpr(ParseState *pstate, Node *expr, int precedence) a->lexpr, precedence); - result = ParseColumnOrFunc(pstate, + result = ParseFuncOrColumn(pstate, "nullvalue", makeList1(lexpr), false, false, @@ -186,7 +186,7 @@ transformExpr(ParseState *pstate, Node *expr, int precedence) a->lexpr, precedence); - result = ParseColumnOrFunc(pstate, + result = ParseFuncOrColumn(pstate, "nonnullvalue", makeList1(lexpr), false, false, @@ -273,7 +273,7 @@ transformExpr(ParseState *pstate, Node *expr, int precedence) lfirst(args) = transformExpr(pstate, (Node *) lfirst(args), precedence); - result = ParseColumnOrFunc(pstate, + result = ParseFuncOrColumn(pstate, fn->funcname, fn->args, fn->agg_star, diff --git a/src/backend/parser/parse_func.c b/src/backend/parser/parse_func.c index 2d4ad1eeb8..b231058726 100644 --- a/src/backend/parser/parse_func.c +++ b/src/backend/parser/parse_func.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.105 2001/05/18 22:54:23 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.106 2001/05/19 00:33:20 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -75,7 +75,7 @@ ParseNestedFuncOrColumn(ParseState *pstate, Attr *attr, int precedence) (Node *) attr->paramNo, EXPR_RELATION_FIRST); - retval = ParseColumnOrFunc(pstate, strVal(lfirst(attr->attrs)), + retval = ParseFuncOrColumn(pstate, strVal(lfirst(attr->attrs)), makeList1(param), false, false, precedence); @@ -86,7 +86,7 @@ ParseNestedFuncOrColumn(ParseState *pstate, Attr *attr, int precedence) ident->name = attr->relname; ident->isRel = TRUE; - retval = ParseColumnOrFunc(pstate, strVal(lfirst(attr->attrs)), + retval = ParseFuncOrColumn(pstate, strVal(lfirst(attr->attrs)), makeList1(ident), false, false, precedence); @@ -95,7 +95,7 @@ ParseNestedFuncOrColumn(ParseState *pstate, Attr *attr, int precedence) /* Do more attributes follow this one? */ foreach(mutator_iter, lnext(attr->attrs)) { - retval = ParseColumnOrFunc(pstate, strVal(lfirst(mutator_iter)), + retval = ParseFuncOrColumn(pstate, strVal(lfirst(mutator_iter)), makeList1(retval), false, false, precedence); @@ -236,14 +236,18 @@ agg_select_candidate(Oid typeid, CandidateList candidates) /* * parse function - * This code is confusing code because the database can accept + * This code is confusing because the database can accept * relation.column, column.function, or relation.column.function. - * It can also be called as func(col) or func(col,col). + * In these cases, funcname is the last parameter, and fargs are + * the rest. + * + * It can also be called as func(col) or func(col,col). + * In this case, Funcname is the part before parens, and fargs + * are the part in parens. * - * Funcname is the first parameter, and fargs are the rest. */ Node * -ParseColumnOrFunc(ParseState *pstate, char *funcname, List *fargs, +ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs, bool agg_star, bool agg_distinct, int precedence) { @@ -491,7 +495,7 @@ ParseColumnOrFunc(ParseState *pstate, char *funcname, List *fargs, } else { - elog(ERROR, "ParseColumnOrFunc: unexpected node type %d", + elog(ERROR, "ParseFuncOrColumn: unexpected node type %d", nodeTag(rteorjoin)); rte = NULL; /* keep compiler quiet */ } @@ -1540,7 +1544,7 @@ make_arguments(ParseState *pstate, /* ** setup_field_select ** Build a FieldSelect node that says which attribute to project to. - ** This routine is called by ParseColumnOrFunc() when we have found + ** This routine is called by ParseFuncOrColumn() when we have found ** a projection on a function result or parameter. */ static FieldSelect * diff --git a/src/include/parser/parse_func.h b/src/include/parser/parse_func.h index 5ff0dd510c..105781b96c 100644 --- a/src/include/parser/parse_func.h +++ b/src/include/parser/parse_func.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: parse_func.h,v 1.30 2001/05/18 22:35:51 momjian Exp $ + * $Id: parse_func.h,v 1.31 2001/05/19 00:33:20 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -40,7 +40,7 @@ typedef struct _CandidateList extern Node *ParseNestedFuncOrColumn(ParseState *pstate, Attr *attr, int precedence); -extern Node *ParseColumnOrFunc(ParseState *pstate, +extern Node *ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs, bool agg_star, bool agg_distinct, int precedence);