diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2004-06-01 04:47:46 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2004-06-01 04:47:46 +0000 |
commit | e590ceecf135491743580df0a13bf9e8353f4564 (patch) | |
tree | 0df43c5fafd1952c291493ac4bf8758fc3d6ce24 /src/backend/optimizer/util | |
parent | 962a94bb5a3604f4c4f2defa84872c02829f2fc5 (diff) | |
download | postgresql-e590ceecf135491743580df0a13bf9e8353f4564.tar.gz postgresql-e590ceecf135491743580df0a13bf9e8353f4564.zip |
Just about there on de-FastList-ification.
Diffstat (limited to 'src/backend/optimizer/util')
-rw-r--r-- | src/backend/optimizer/util/clauses.c | 68 | ||||
-rw-r--r-- | src/backend/optimizer/util/plancat.c | 12 | ||||
-rw-r--r-- | src/backend/optimizer/util/var.c | 10 |
3 files changed, 43 insertions, 47 deletions
diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c index a3389607b6e..bf12320626d 100644 --- a/src/backend/optimizer/util/clauses.c +++ b/src/backend/optimizer/util/clauses.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/util/clauses.c,v 1.172 2004/05/30 23:40:30 neilc Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/util/clauses.c,v 1.173 2004/06/01 04:47:45 tgl Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -846,24 +846,21 @@ is_pseudo_constant_clause_relids(Node *clause, Relids relids) List * pull_constant_clauses(List *quals, List **constantQual) { - FastList constqual, - restqual; + List *constqual = NIL, + *restqual = NIL; ListCell *q; - FastListInit(&constqual); - FastListInit(&restqual); - foreach(q, quals) { Node *qual = (Node *) lfirst(q); if (is_pseudo_constant_clause(qual)) - FastAppend(&constqual, qual); + constqual = lappend(constqual, qual); else - FastAppend(&restqual, qual); + restqual = lappend(restqual, qual); } - *constantQual = FastListValue(&constqual); - return FastListValue(&restqual); + *constantQual = constqual; + return restqual; } @@ -1411,7 +1408,7 @@ eval_const_expressions_mutator(Node *node, List *active_fns) CaseExpr *caseexpr = (CaseExpr *) node; CaseExpr *newcase; Node *newarg; - FastList newargs; + List *newargs; Node *defresult; Const *const_input; ListCell *arg; @@ -1421,7 +1418,7 @@ eval_const_expressions_mutator(Node *node, List *active_fns) active_fns); /* Simplify the WHEN clauses */ - FastListInit(&newargs); + newargs = NIL; foreach(arg, caseexpr->args) { /* Simplify this alternative's condition and result */ @@ -1434,7 +1431,7 @@ eval_const_expressions_mutator(Node *node, List *active_fns) if (casewhen->expr == NULL || !IsA(casewhen->expr, Const)) { - FastAppend(&newargs, casewhen); + newargs = lappend(newargs, casewhen); continue; } const_input = (Const *) casewhen->expr; @@ -1446,13 +1443,13 @@ eval_const_expressions_mutator(Node *node, List *active_fns) * Found a TRUE condition. If it's the first (un-dropped) * alternative, the CASE reduces to just this alternative. */ - if (FastListValue(&newargs) == NIL) + if (newargs == NIL) return (Node *) casewhen->result; /* * Otherwise, add it to the list, and drop all the rest. */ - FastAppend(&newargs, casewhen); + newargs = lappend(newargs, casewhen); break; } @@ -1464,13 +1461,13 @@ eval_const_expressions_mutator(Node *node, List *active_fns) * If no non-FALSE alternatives, CASE reduces to the default * result */ - if (FastListValue(&newargs) == NIL) + if (newargs == NIL) return defresult; /* Otherwise we need a new CASE node */ newcase = makeNode(CaseExpr); newcase->casetype = caseexpr->casetype; newcase->arg = (Expr *) newarg; - newcase->args = FastListValue(&newargs); + newcase->args = newargs; newcase->defresult = (Expr *) defresult; return (Node *) newcase; } @@ -1479,10 +1476,10 @@ eval_const_expressions_mutator(Node *node, List *active_fns) ArrayExpr *arrayexpr = (ArrayExpr *) node; ArrayExpr *newarray; bool all_const = true; - FastList newelems; + List *newelems; ListCell *element; - FastListInit(&newelems); + newelems = NIL; foreach(element, arrayexpr->elements) { Node *e; @@ -1491,13 +1488,13 @@ eval_const_expressions_mutator(Node *node, List *active_fns) active_fns); if (!IsA(e, Const)) all_const = false; - FastAppend(&newelems, e); + newelems = lappend(newelems, e); } newarray = makeNode(ArrayExpr); newarray->array_typeid = arrayexpr->array_typeid; newarray->element_typeid = arrayexpr->element_typeid; - newarray->elements = FastListValue(&newelems); + newarray->elements = newelems; newarray->multidims = arrayexpr->multidims; if (all_const) @@ -1510,10 +1507,10 @@ eval_const_expressions_mutator(Node *node, List *active_fns) { CoalesceExpr *coalesceexpr = (CoalesceExpr *) node; CoalesceExpr *newcoalesce; - FastList newargs; + List *newargs; ListCell *arg; - FastListInit(&newargs); + newargs = NIL; foreach(arg, coalesceexpr->args) { Node *e; @@ -1530,15 +1527,15 @@ eval_const_expressions_mutator(Node *node, List *active_fns) { if (((Const *) e)->constisnull) continue; /* drop null constant */ - if (FastListValue(&newargs) == NIL) + if (newargs == NIL) return e; /* first expr */ } - FastAppend(&newargs, e); + newargs = lappend(newargs, e); } newcoalesce = makeNode(CoalesceExpr); newcoalesce->coalescetype = coalesceexpr->coalescetype; - newcoalesce->args = FastListValue(&newargs); + newcoalesce->args = newargs; return (Node *) newcoalesce; } if (IsA(node, FieldSelect)) @@ -2971,16 +2968,17 @@ expression_tree_mutator(Node *node, * NOTE: this would fail badly on a list with integer * elements! */ - FastList resultlist; + List *resultlist; ListCell *temp; - FastListInit(&resultlist); + resultlist = NIL; foreach(temp, (List *) node) { - FastAppend(&resultlist, - mutator((Node *) lfirst(temp), context)); + resultlist = lappend(resultlist, + mutator((Node *) lfirst(temp), + context)); } - return (Node *) FastListValue(&resultlist); + return (Node *) resultlist; } break; case T_FromExpr: @@ -3063,7 +3061,7 @@ query_tree_mutator(Query *query, void *context, int flags) { - FastList newrt; + List *newrt; ListCell *rt; Assert(query != NULL && IsA(query, Query)); @@ -3083,7 +3081,7 @@ query_tree_mutator(Query *query, MUTATE(query->limitOffset, query->limitOffset, Node *); MUTATE(query->limitCount, query->limitCount, Node *); MUTATE(query->in_info_list, query->in_info_list, List *); - FastListInit(&newrt); + newrt = NIL; foreach(rt, query->rtable) { RangeTblEntry *rte = (RangeTblEntry *) lfirst(rt); @@ -3113,9 +3111,9 @@ query_tree_mutator(Query *query, MUTATE(newrte->funcexpr, rte->funcexpr, Node *); break; } - FastAppend(&newrt, newrte); + newrt = lappend(newrt, newrte); } - query->rtable = FastListValue(&newrt); + query->rtable = newrt; return query; } diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c index e7ff6bfbe9d..a819d08d447 100644 --- a/src/backend/optimizer/util/plancat.c +++ b/src/backend/optimizer/util/plancat.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/util/plancat.c,v 1.93 2004/05/30 23:40:31 neilc Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/util/plancat.c,v 1.94 2004/06/01 04:47:45 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -192,12 +192,10 @@ build_physical_tlist(Query *root, RelOptInfo *rel) Index varno = rel->relid; RangeTblEntry *rte = rt_fetch(varno, root->rtable); Relation relation; - FastList tlist; + List *tlist = NIL; int attrno, numattrs; - FastListInit(&tlist); - Assert(rte->rtekind == RTE_RELATION); relation = heap_open(rte->relid, AccessShareLock); @@ -211,11 +209,11 @@ build_physical_tlist(Query *root, RelOptInfo *rel) if (att_tup->attisdropped) { /* found a dropped col, so punt */ - FastListInit(&tlist); + tlist = NIL; break; } - FastAppend(&tlist, + tlist = lappend(tlist, create_tl_element(makeVar(varno, attrno, att_tup->atttypid, @@ -226,7 +224,7 @@ build_physical_tlist(Query *root, RelOptInfo *rel) heap_close(relation, AccessShareLock); - return FastListValue(&tlist); + return tlist; } /* diff --git a/src/backend/optimizer/util/var.c b/src/backend/optimizer/util/var.c index cae304f3e09..e46655e17db 100644 --- a/src/backend/optimizer/util/var.c +++ b/src/backend/optimizer/util/var.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/util/var.c,v 1.58 2004/05/30 23:40:31 neilc Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/util/var.c,v 1.59 2004/06/01 04:47:46 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -43,7 +43,7 @@ typedef struct typedef struct { - FastList varlist; + List *varlist; bool includeUpperVars; } pull_var_clause_context; @@ -446,11 +446,11 @@ pull_var_clause(Node *node, bool includeUpperVars) { pull_var_clause_context context; - FastListInit(&context.varlist); + context.varlist = NIL; context.includeUpperVars = includeUpperVars; pull_var_clause_walker(node, &context); - return FastListValue(&context.varlist); + return context.varlist; } static bool @@ -461,7 +461,7 @@ pull_var_clause_walker(Node *node, pull_var_clause_context *context) if (IsA(node, Var)) { if (((Var *) node)->varlevelsup == 0 || context->includeUpperVars) - FastAppend(&context->varlist, node); + context->varlist = lappend(context->varlist, node); return false; } return expression_tree_walker(node, pull_var_clause_walker, |