8
8
*
9
9
*
10
10
* IDENTIFICATION
11
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.103 2001/05/18 21:24:19 momjian Exp $
11
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.104 2001/05/18 22:35:50 momjian Exp $
12
12
*
13
13
*-------------------------------------------------------------------------
14
14
*/
@@ -75,7 +75,7 @@ ParseNestedFuncOrColumn(ParseState *pstate, Attr *attr, int precedence)
75
75
(Node * ) attr -> paramNo ,
76
76
EXPR_RELATION_FIRST );
77
77
78
- retval = ParseFuncOrColumn (pstate , strVal (lfirst (attr -> attrs )),
78
+ retval = ParseColumnOrFunc (pstate , strVal (lfirst (attr -> attrs )),
79
79
makeList1 (param ),
80
80
false, false,
81
81
precedence );
@@ -86,7 +86,7 @@ ParseNestedFuncOrColumn(ParseState *pstate, Attr *attr, int precedence)
86
86
87
87
ident -> name = attr -> relname ;
88
88
ident -> isRel = TRUE;
89
- retval = ParseFuncOrColumn (pstate , strVal (lfirst (attr -> attrs )),
89
+ retval = ParseColumnOrFunc (pstate , strVal (lfirst (attr -> attrs )),
90
90
makeList1 (ident ),
91
91
false, false,
92
92
precedence );
@@ -95,7 +95,7 @@ ParseNestedFuncOrColumn(ParseState *pstate, Attr *attr, int precedence)
95
95
/* Do more attributes follow this one? */
96
96
foreach (mutator_iter , lnext (attr -> attrs ))
97
97
{
98
- retval = ParseFuncOrColumn (pstate , strVal (lfirst (mutator_iter )),
98
+ retval = ParseColumnOrFunc (pstate , strVal (lfirst (mutator_iter )),
99
99
makeList1 (retval ),
100
100
false, false,
101
101
precedence );
@@ -235,10 +235,13 @@ agg_select_candidate(Oid typeid, CandidateList candidates)
235
235
236
236
237
237
/*
238
- * parse function
238
+ * parse function
239
+ * This code is confusing code because the database can accept relation.column
240
+ * column.function, or relation.column.function.
241
+ * Funcname is the first parameter, and fargs are the rest.
239
242
*/
240
243
Node *
241
- ParseFuncOrColumn (ParseState * pstate , char * funcname , List * fargs ,
244
+ ParseColumnOrFunc (ParseState * pstate , char * funcname , List * fargs ,
242
245
bool agg_star , bool agg_distinct ,
243
246
int precedence )
244
247
{
@@ -486,7 +489,7 @@ ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs,
486
489
}
487
490
else
488
491
{
489
- elog (ERROR , "ParseFuncOrColumn : unexpected node type %d" ,
492
+ elog (ERROR , "ParseColumnOrFunc : unexpected node type %d" ,
490
493
nodeTag (rteorjoin ));
491
494
rte = NULL ; /* keep compiler quiet */
492
495
}
@@ -1535,7 +1538,7 @@ make_arguments(ParseState *pstate,
1535
1538
/*
1536
1539
** setup_field_select
1537
1540
** Build a FieldSelect node that says which attribute to project to.
1538
- ** This routine is called by ParseFuncOrColumn () when we have found
1541
+ ** This routine is called by ParseColumnOrFunc () when we have found
1539
1542
** a projection on a function result or parameter.
1540
1543
*/
1541
1544
static FieldSelect *
0 commit comments