aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNeil Conway <neilc@samurai.com>2004-09-27 04:12:03 +0000
committerNeil Conway <neilc@samurai.com>2004-09-27 04:12:03 +0000
commit64a60590ba5da8026abb65a7abe8fce9e573c476 (patch)
treefbb640591745e267977b99289e25e6ef4694fb08 /src
parent0ed07d49d5b5aed54da02b9dfa87856ba09af859 (diff)
downloadpostgresql-64a60590ba5da8026abb65a7abe8fce9e573c476.tar.gz
postgresql-64a60590ba5da8026abb65a7abe8fce9e573c476.zip
A few minor list-related cleanups:
(1) Replace while loop with the new forboth() construct in parser/analyze.c (2) Replace lcons() with lappend() in SearchCatCacheList(). Since these now have the same performance, there is no reason to prefer lcons() in this case, and using lappend() leads to cleaner code. (3) Improve the name of the second parameter to for_each_cell()
Diffstat (limited to 'src')
-rw-r--r--src/backend/parser/analyze.c12
-rw-r--r--src/backend/utils/cache/catcache.c11
-rw-r--r--src/include/nodes/pg_list.h6
3 files changed, 13 insertions, 16 deletions
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
index d05be5de5d3..c3b547dd5b7 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/backend/parser/analyze.c,v 1.311 2004/08/29 05:06:44 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/parser/analyze.c,v 1.312 2004/09/27 04:12:02 neilc Exp $
*
*-------------------------------------------------------------------------
*/
@@ -2273,25 +2273,21 @@ getSetColTypes(ParseState *pstate, Node *node)
static void
applyColumnNames(List *dst, List *src)
{
- ListCell *dst_item = list_head(dst);
- ListCell *src_item = list_head(src);
+ ListCell *dst_item;
+ ListCell *src_item;
if (list_length(src) > list_length(dst))
ereport(ERROR,
(errcode(ERRCODE_SYNTAX_ERROR),
errmsg("CREATE TABLE AS specifies too many column names")));
- while (src_item != NULL && dst_item != NULL)
+ forboth(dst_item, dst, src_item, src)
{
TargetEntry *d = (TargetEntry *) lfirst(dst_item);
ColumnDef *s = (ColumnDef *) lfirst(src_item);
Assert(d->resdom && !d->resdom->resjunk);
-
d->resdom->resname = pstrdup(s->colname);
-
- dst_item = lnext(dst_item);
- src_item = lnext(src_item);
}
}
diff --git a/src/backend/utils/cache/catcache.c b/src/backend/utils/cache/catcache.c
index b66007c0693..0a11411e9a9 100644
--- a/src/backend/utils/cache/catcache.c
+++ b/src/backend/utils/cache/catcache.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/cache/catcache.c,v 1.116 2004/08/29 05:06:50 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/cache/catcache.c,v 1.117 2004/09/27 04:12:02 neilc Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1501,7 +1501,7 @@ SearchCatCacheList(CatCache *cache,
* worth fixing.
*/
ct->refcount++;
- ctlist = lcons(ct, ctlist);
+ ctlist = lappend(ctlist, ct);
nmembers++;
}
@@ -1522,16 +1522,17 @@ SearchCatCacheList(CatCache *cache,
cl->cl_magic = CL_MAGIC;
cl->my_cache = cache;
- DLInitElem(&cl->cache_elem, (void *) cl);
+ DLInitElem(&cl->cache_elem, cl);
cl->refcount = 0; /* for the moment */
cl->dead = false;
cl->ordered = ordered;
cl->nkeys = nkeys;
cl->hash_value = lHashValue;
cl->n_members = nmembers;
- /* The list is backwards because we built it with lcons */
+
+ Assert(nmembers == list_length(ctlist));
ctlist_item = list_head(ctlist);
- for (i = nmembers; --i >= 0;)
+ for (i = 0; i < nmembers; i++)
{
cl->members[i] = ct = (CatCTup *) lfirst(ctlist_item);
Assert(ct->c_list == NULL);
diff --git a/src/include/nodes/pg_list.h b/src/include/nodes/pg_list.h
index c35e7c64ba1..d8957b35223 100644
--- a/src/include/nodes/pg_list.h
+++ b/src/include/nodes/pg_list.h
@@ -30,7 +30,7 @@
* Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/nodes/pg_list.h,v 1.49 2004/08/29 05:06:57 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/nodes/pg_list.h,v 1.50 2004/09/27 04:12:03 neilc Exp $
*
*-------------------------------------------------------------------------
*/
@@ -167,8 +167,8 @@ extern int list_length(List *l);
* a convenience macro which loops through a list starting from a
* specified cell
*/
-#define for_each_cell(cell, l) \
- for ((cell) = (l); (cell) != NULL; (cell) = lnext(cell))
+#define for_each_cell(cell, initcell) \
+ for ((cell) = (initcell); (cell) != NULL; (cell) = lnext(cell))
/*
* forboth -