From 5ec847432362d905e71fedd1182cdd3bb10b3120 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Sat, 19 May 2001 00:33:20 +0000
Subject: [PATCH] New comment.  This func/column things has always confused me.

/*
 *  parse function
 *  This code is confusing because the database can accept
 *  relation.column, column.function, or relation.column.function.
 *  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.
 *
 */
Node *
ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs,
                  bool agg_star, bool agg_distinct,
                  int precedence)
---
 src/backend/parser/parse_expr.c |  8 ++++----
 src/backend/parser/parse_func.c | 22 +++++++++++++---------
 src/include/parser/parse_func.h |  4 ++--
 3 files changed, 19 insertions(+), 15 deletions(-)

diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c
index 786be985200..08a2f5f2035 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 2d4ad1eeb88..b2310587260 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.
+ *	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 5ff0dd510cd..105781b96c3 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);
-- 
GitLab