diff options
Diffstat (limited to 'src/backend/parser/analyze.c')
-rw-r--r-- | src/backend/parser/analyze.c | 158 |
1 files changed, 79 insertions, 79 deletions
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c index 21af9402095..9e5f83071fc 100644 --- a/src/backend/parser/analyze.c +++ b/src/backend/parser/analyze.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.41 1997/09/08 20:56:25 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/analyze.c,v 1.42 1997/09/08 21:46:00 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -44,54 +44,54 @@ #include "port-protos.h" /* strdup() */ /* convert the parse tree into a query tree */ -static Query *transformStmt(ParseState * pstate, Node * stmt); - -static Query *transformDeleteStmt(ParseState * pstate, DeleteStmt * stmt); -static Query *transformInsertStmt(ParseState * pstate, AppendStmt *stmt); -static Query *transformIndexStmt(ParseState * pstate, IndexStmt * stmt); -static Query *transformExtendStmt(ParseState * pstate, ExtendStmt * stmt); -static Query *transformRuleStmt(ParseState * query, RuleStmt * stmt); -static Query *transformSelectStmt(ParseState * pstate, RetrieveStmt * stmt); -static Query *transformUpdateStmt(ParseState * pstate, ReplaceStmt * stmt); -static Query *transformCursorStmt(ParseState * pstate, CursorStmt * stmt); -static Node *handleNestedDots(ParseState * pstate, Attr *attr, int *curr_resno); +static Query *transformStmt(ParseState *pstate, Node *stmt); + +static Query *transformDeleteStmt(ParseState *pstate, DeleteStmt *stmt); +static Query *transformInsertStmt(ParseState *pstate, AppendStmt *stmt); +static Query *transformIndexStmt(ParseState *pstate, IndexStmt *stmt); +static Query *transformExtendStmt(ParseState *pstate, ExtendStmt *stmt); +static Query *transformRuleStmt(ParseState *query, RuleStmt *stmt); +static Query *transformSelectStmt(ParseState *pstate, RetrieveStmt *stmt); +static Query *transformUpdateStmt(ParseState *pstate, ReplaceStmt *stmt); +static Query *transformCursorStmt(ParseState *pstate, CursorStmt *stmt); +static Node *handleNestedDots(ParseState *pstate, Attr *attr, int *curr_resno); #define EXPR_COLUMN_FIRST 1 #define EXPR_RELATION_FIRST 2 -static Node *transformExpr(ParseState * pstate, Node * expr, int precedence); -static Node *transformIdent(ParseState * pstate, Node * expr, int precedence); - -static void makeRangeTable(ParseState * pstate, char *relname, List * frmList); -static List *expandAllTables(ParseState * pstate); -static char *figureColname(Node * expr, Node * resval); -static List *makeTargetNames(ParseState * pstate, List * cols); -static List *transformTargetList(ParseState * pstate, List * targetlist); +static Node *transformExpr(ParseState *pstate, Node *expr, int precedence); +static Node *transformIdent(ParseState *pstate, Node *expr, int precedence); + +static void makeRangeTable(ParseState *pstate, char *relname, List *frmList); +static List *expandAllTables(ParseState *pstate); +static char *figureColname(Node *expr, Node *resval); +static List *makeTargetNames(ParseState *pstate, List *cols); +static List *transformTargetList(ParseState *pstate, List *targetlist); static TargetEntry * -make_targetlist_expr(ParseState * pstate, - char *colname, Node * expr, - List * arrayRef); +make_targetlist_expr(ParseState *pstate, + char *colname, Node *expr, + List *arrayRef); static bool inWhereClause = false; -static Node *transformWhereClause(ParseState * pstate, Node * a_expr); +static Node *transformWhereClause(ParseState *pstate, Node *a_expr); static List * -transformGroupClause(ParseState * pstate, List * grouplist, - List * targetlist); +transformGroupClause(ParseState *pstate, List *grouplist, + List *targetlist); static List * -transformSortClause(ParseState * pstate, - List * orderlist, List * targetlist, +transformSortClause(ParseState *pstate, + List *orderlist, List *targetlist, char *uniqueFlag); -static void parseFromClause(ParseState * pstate, List * frmList); +static void parseFromClause(ParseState *pstate, List *frmList); static Node * -ParseFunc(ParseState * pstate, char *funcname, - List * fargs, int *curr_resno); +ParseFunc(ParseState *pstate, char *funcname, + List *fargs, int *curr_resno); static List *setup_tlist(char *attname, Oid relid); static List *setup_base_tlist(Oid typeid); static void -make_arguments(int nargs, List * fargs, Oid * input_typeids, - Oid * function_typeids); -static void AddAggToParseState(ParseState * pstate, Aggreg *aggreg); -static void finalizeAggregates(ParseState * pstate, Query * qry); -static void parseCheckAggregates(ParseState * pstate, Query * qry); +make_arguments(int nargs, List *fargs, Oid *input_typeids, + Oid *function_typeids); +static void AddAggToParseState(ParseState *pstate, Aggreg *aggreg); +static void finalizeAggregates(ParseState *pstate, Query *qry); +static void parseCheckAggregates(ParseState *pstate, Query *qry); static ParseState *makeParseState(void); /***************************************************************************** @@ -135,7 +135,7 @@ makeParseState(void) * CALLER is responsible for freeing the QueryTreeList* returned */ QueryTreeList * -parse_analyze(List * pl) +parse_analyze(List *pl) { QueryTreeList *result; ParseState *pstate; @@ -166,7 +166,7 @@ parse_analyze(List * pl) * into a Query tree. */ static Query * -transformStmt(ParseState * pstate, Node * parseTree) +transformStmt(ParseState *pstate, Node *parseTree) { Query *result = NULL; @@ -271,7 +271,7 @@ transformStmt(ParseState * pstate, Node * parseTree) * transforms a Delete Statement */ static Query * -transformDeleteStmt(ParseState * pstate, DeleteStmt * stmt) +transformDeleteStmt(ParseState *pstate, DeleteStmt *stmt) { Query *qry = makeNode(Query); @@ -300,7 +300,7 @@ transformDeleteStmt(ParseState * pstate, DeleteStmt * stmt) * transform an Insert Statement */ static Query * -transformInsertStmt(ParseState * pstate, AppendStmt *stmt) +transformInsertStmt(ParseState *pstate, AppendStmt *stmt) { Query *qry = makeNode(Query); /* make a new query tree */ @@ -335,7 +335,7 @@ transformInsertStmt(ParseState * pstate, AppendStmt *stmt) * transforms the qualification of the index statement */ static Query * -transformIndexStmt(ParseState * pstate, IndexStmt * stmt) +transformIndexStmt(ParseState *pstate, IndexStmt *stmt) { Query *q; @@ -357,7 +357,7 @@ transformIndexStmt(ParseState * pstate, IndexStmt * stmt) * */ static Query * -transformExtendStmt(ParseState * pstate, ExtendStmt * stmt) +transformExtendStmt(ParseState *pstate, ExtendStmt *stmt) { Query *q; @@ -378,7 +378,7 @@ transformExtendStmt(ParseState * pstate, ExtendStmt * stmt) * trees which is transformed into a list of query trees. */ static Query * -transformRuleStmt(ParseState * pstate, RuleStmt * stmt) +transformRuleStmt(ParseState *pstate, RuleStmt *stmt) { Query *q; List *actions; @@ -426,7 +426,7 @@ transformRuleStmt(ParseState * pstate, RuleStmt * stmt) * */ static Query * -transformSelectStmt(ParseState * pstate, RetrieveStmt * stmt) +transformSelectStmt(ParseState *pstate, RetrieveStmt *stmt) { Query *qry = makeNode(Query); @@ -478,7 +478,7 @@ transformSelectStmt(ParseState * pstate, RetrieveStmt * stmt) * */ static Query * -transformUpdateStmt(ParseState * pstate, ReplaceStmt * stmt) +transformUpdateStmt(ParseState *pstate, ReplaceStmt *stmt) { Query *qry = makeNode(Query); @@ -513,7 +513,7 @@ transformUpdateStmt(ParseState * pstate, ReplaceStmt * stmt) * */ static Query * -transformCursorStmt(ParseState * pstate, CursorStmt * stmt) +transformCursorStmt(ParseState *pstate, CursorStmt *stmt) { Query *qry = makeNode(Query); @@ -571,7 +571,7 @@ transformCursorStmt(ParseState * pstate, CursorStmt * stmt) * here. */ static Node * -transformExpr(ParseState * pstate, Node * expr, int precedence) +transformExpr(ParseState *pstate, Node *expr, int precedence) { Node *result = NULL; @@ -791,7 +791,7 @@ transformExpr(ParseState * pstate, Node * expr, int precedence) } static Node * -transformIdent(ParseState * pstate, Node * expr, int precedence) +transformIdent(ParseState *pstate, Node *expr, int precedence) { Ident *ident = (Ident *) expr; RangeTblEntry *rte; @@ -856,7 +856,7 @@ transformIdent(ParseState * pstate, Node * expr, int precedence) * */ static void -parseFromClause(ParseState * pstate, List * frmList) +parseFromClause(ParseState *pstate, List *frmList) { List *fl; @@ -893,7 +893,7 @@ parseFromClause(ParseState * pstate, List * frmList) * from-clause. */ static void -makeRangeTable(ParseState * pstate, char *relname, List * frmList) +makeRangeTable(ParseState *pstate, char *relname, List *frmList) { RangeTblEntry *rte; @@ -919,7 +919,7 @@ makeRangeTable(ParseState * pstate, char *relname, List * frmList) * returns the Oid of the type of the expression. (Used for typechecking.) */ Oid -exprType(Node * expr) +exprType(Node *expr) { Oid type = (Oid) 0; @@ -967,7 +967,7 @@ exprType(Node * expr) * relations in the range table) */ static List * -expandAllTables(ParseState * pstate) +expandAllTables(ParseState *pstate) { List *target = NIL; List *legit_rtable = NIL; @@ -1033,7 +1033,7 @@ expandAllTables(ParseState * pstate) * */ static char * -figureColname(Node * expr, Node * resval) +figureColname(Node *expr, Node *resval) { switch (nodeTag(expr)) { @@ -1067,7 +1067,7 @@ figureColname(Node * expr, Node * resval) * (used exclusively for inserts) */ static List * -makeTargetNames(ParseState * pstate, List * cols) +makeTargetNames(ParseState *pstate, List *cols) { List *tl = NULL; @@ -1110,7 +1110,7 @@ makeTargetNames(ParseState * pstate, List * cols) * turns a list of ResTarget's into a list of TargetEntry's */ static List * -transformTargetList(ParseState * pstate, List * targetlist) +transformTargetList(ParseState *pstate, List *targetlist) { List *p_target = NIL; List *tail_p_target = NIL; @@ -1397,10 +1397,10 @@ transformTargetList(ParseState * pstate, List * targetlist) * arrayRef is a list of transformed A_Indices */ static TargetEntry * -make_targetlist_expr(ParseState * pstate, +make_targetlist_expr(ParseState *pstate, char *colname, - Node * expr, - List * arrayRef) + Node *expr, + List *arrayRef) { Oid type_id, attrtype; @@ -1607,7 +1607,7 @@ make_targetlist_expr(ParseState * pstate, * */ static Node * -transformWhereClause(ParseState * pstate, Node * a_expr) +transformWhereClause(ParseState *pstate, Node *a_expr) { Node *qual; @@ -1639,7 +1639,7 @@ transformWhereClause(ParseState * pstate, Node * a_expr) * */ static TargetEntry * -find_targetlist_entry(ParseState * pstate, SortGroupBy * sortgroupby, List * tlist) +find_targetlist_entry(ParseState *pstate, SortGroupBy *sortgroupby, List *tlist) { List *i; int real_rtable_pos = 0, @@ -1716,7 +1716,7 @@ any_ordering_op(int restype) * */ static List * -transformGroupClause(ParseState * pstate, List * grouplist, List * targetlist) +transformGroupClause(ParseState *pstate, List *grouplist, List *targetlist) { List *glist = NIL, *gl = NIL; @@ -1756,8 +1756,8 @@ transformGroupClause(ParseState * pstate, List * grouplist, List * targetlist) * */ static List * -transformSortClause(ParseState * pstate, - List * orderlist, List * targetlist, +transformSortClause(ParseState *pstate, + List *orderlist, List *targetlist, char *uniqueFlag) { List *sortlist = NIL; @@ -1872,7 +1872,7 @@ transformSortClause(ParseState * pstate, ** a tree with of Iter and Func nodes. */ static Node * -handleNestedDots(ParseState * pstate, Attr *attr, int *curr_resno) +handleNestedDots(ParseState *pstate, Attr *attr, int *curr_resno) { List *mutator_iter; Node *retval = NULL; @@ -1915,9 +1915,9 @@ handleNestedDots(ParseState * pstate, Attr *attr, int *curr_resno) */ static void make_arguments(int nargs, - List * fargs, - Oid * input_typeids, - Oid * function_typeids) + List *fargs, + Oid *input_typeids, + Oid *function_typeids) { /* @@ -2016,10 +2016,10 @@ setup_base_tlist(Oid typeid) * This routine returns NULL if it can't handle the projection (eg. sets). */ static Node * -ParseComplexProjection(ParseState * pstate, +ParseComplexProjection(ParseState *pstate, char *funcname, - Node * first_arg, - bool * attisset) + Node *first_arg, + bool *attisset) { Oid argtype; Oid argrelid; @@ -2174,7 +2174,7 @@ ParseComplexProjection(ParseState * pstate, } static Node * -ParseFunc(ParseState * pstate, char *funcname, List * fargs, int *curr_resno) +ParseFunc(ParseState *pstate, char *funcname, List *fargs, int *curr_resno) { Oid rettype = (Oid) 0; Oid argrelid = (Oid) 0; @@ -2524,7 +2524,7 @@ ParseFunc(ParseState * pstate, char *funcname, List * fargs, int *curr_resno) * SIDE EFFECT: aggno in target list entry will be modified */ static void -AddAggToParseState(ParseState * pstate, Aggreg *aggreg) +AddAggToParseState(ParseState *pstate, Aggreg *aggreg) { List *ag; int i; @@ -2562,7 +2562,7 @@ AddAggToParseState(ParseState * pstate, Aggreg *aggreg) * are used in the proper place. */ static void -finalizeAggregates(ParseState * pstate, Query * qry) +finalizeAggregates(ParseState *pstate, Query *qry) { List *l; int i; @@ -2584,7 +2584,7 @@ finalizeAggregates(ParseState * pstate, Query * qry) * Returns true if any aggregate found. */ static bool -contain_agg_clause(Node * clause) +contain_agg_clause(Node *clause) { if (clause == NULL) return FALSE; @@ -2642,12 +2642,12 @@ contain_agg_clause(Node * clause) * returns true if the expression does not contain non-group columns. */ static bool -exprIsAggOrGroupCol(Node * expr, List * groupClause) +exprIsAggOrGroupCol(Node *expr, List *groupClause) { List *gl; if (expr == NULL || IsA(expr, Const) || - IsA(expr, Param) || IsA(expr, Aggreg)) + IsA(expr, Param) ||IsA(expr, Aggreg)) return TRUE; foreach(gl, groupClause) @@ -2676,12 +2676,12 @@ exprIsAggOrGroupCol(Node * expr, List * groupClause) * returns true if the TargetEntry is Agg or GroupCol. */ static bool -tleIsAggOrGroupCol(TargetEntry * tle, List * groupClause) +tleIsAggOrGroupCol(TargetEntry *tle, List *groupClause) { Node *expr = tle->expr; List *gl; - if (expr == NULL || IsA(expr, Const) || IsA(expr, Param)) + if (expr == NULL || IsA(expr, Const) ||IsA(expr, Param)) return TRUE; foreach(gl, groupClause) @@ -2719,7 +2719,7 @@ tleIsAggOrGroupCol(TargetEntry * tle, List * groupClause) * here when the target list and the qualifications are finalized. */ static void -parseCheckAggregates(ParseState * pstate, Query * qry) +parseCheckAggregates(ParseState *pstate, Query *qry) { List *tl; |