]> granicus.if.org Git - postgresql/commitdiff
elog(NOTICE) during COPY incorrectly reset lineno to 0, causing any
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 15 Apr 2000 19:13:08 +0000 (19:13 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 15 Apr 2000 19:13:08 +0000 (19:13 +0000)
subsequent elogs() in the same COPY operation to display the wrong
line number.  Fix is to clear lineno only when elog level is such
that we will not return to caller.

src/backend/utils/error/elog.c

index 8296b1d919fe0832ef04557a245244167f4183a1..82da3875a30fe78dd33298020c3e6d7b308faae1 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.56 2000/04/12 17:15:55 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/error/elog.c,v 1.57 2000/04/15 19:13:08 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -197,8 +197,9 @@ elog(int lev, const char *fmt,...)
        if (lineno)
        {
                sprintf(bp, "copy: line %d, ", lineno);
-               bp = fmt_buf + strlen(fmt_buf);
-               lineno = 0;
+               bp += strlen(bp);
+               if (lev == ERROR || lev >= FATAL)
+                       lineno = 0;
        }
 
        for (cp = fmt; *cp; cp++)