From 4ca7d148cb5f46b79b7da15d3330ac7361b85c21 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 15 Apr 2000 19:13:08 +0000
Subject: [PATCH] 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.

---
 src/backend/utils/error/elog.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index 8296b1d919f..82da3875a30 100644
--- a/src/backend/utils/error/elog.c
+++ b/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++)
-- 
GitLab