elog(NOTICE) during COPY incorrectly reset lineno to 0, causing any

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.
REL7_0_PATCHES
Tom Lane 26 years ago
parent ffc9812451
commit 4ca7d148cb
  1. 7
      src/backend/utils/error/elog.c

@ -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++)

Loading…
Cancel
Save