Clean up some code that had gotten a bit ugly through repeated revisions.
authorTom Lane
Fri, 2 Apr 2004 21:05:32 +0000 (21:05 +0000)
committerTom Lane
Fri, 2 Apr 2004 21:05:32 +0000 (21:05 +0000)
src/backend/parser/analyze.c

index 75f4f65d78a7644cfe8e3c69d04ef1bfde0ad164..2330bf18d43d8d34e4867813f87f237c14a1ddd3 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/backend/parser/analyze.c,v 1.297 2004/01/23 02:13:12 neilc Exp $
+ * $PostgreSQL: pgsql/src/backend/parser/analyze.c,v 1.298 2004/04/02 21:05:32 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -506,7 +506,8 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt,
    List       *sub_namespace;
    List       *icolumns;
    List       *attrnos;
-   List       *attnos;
+   List       *icols;          /* to become ListCell */
+   List       *attnos;         /* to become ListCell */
    List       *tl;
 
    qry->commandType = CMD_INSERT;
@@ -665,39 +666,35 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt,
    /*
     * Prepare columns for assignment to target table.
     */
+   icols = icolumns;
    attnos = attrnos;
-   /* cannot use foreach here because of possible lremove */
-   tl = qry->targetList;
-   while (tl)
+   foreach(tl, qry->targetList)
    {
        TargetEntry *tle = (TargetEntry *) lfirst(tl);
        ResTarget  *col;
 
-       /* must advance tl before lremove possibly pfree's it */
-       tl = lnext(tl);
-
-       if (icolumns == NIL || attnos == NIL)
+       if (icols == NIL || attnos == NIL)
            ereport(ERROR,
                    (errcode(ERRCODE_SYNTAX_ERROR),
             errmsg("INSERT has more expressions than target columns")));
 
-       col = (ResTarget *) lfirst(icolumns);
+       col = (ResTarget *) lfirst(icols);
        Assert(IsA(col, ResTarget));
 
        Assert(!tle->resdom->resjunk);
        updateTargetListEntry(pstate, tle, col->name, lfirsti(attnos),
                              col->indirection);
 
-       icolumns = lnext(icolumns);
+       icols = lnext(icols);
        attnos = lnext(attnos);
    }
 
    /*
     * Ensure that the targetlist has the same number of entries that were
     * present in the columns list.  Don't do the check unless an explicit
-    * columns list was given, though. statements.
+    * columns list was given, though.
     */
-   if (stmt->cols != NIL && (icolumns != NIL || attnos != NIL))
+   if (stmt->cols != NIL && (icols != NIL || attnos != NIL))
        ereport(ERROR,
                (errcode(ERRCODE_SYNTAX_ERROR),
             errmsg("INSERT has more target columns than expressions")));