From 8e4fe3ba1ed8aa6bfa59b99555d67a864a2bee84 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sun, 1 Oct 2006 22:08:18 +0000
Subject: [PATCH] Do a CHECK_FOR_INTERRUPTS after emitting a message of less
 than ERROR severity.  This is to ensure the user can cancel a query that's
 spitting out lots of notice/warning messages, even if they're coming from a
 loop that doesn't otherwise contain a CHECK_FOR_INTERRUPTS.  Per gripe from
 Stephen Frost.

---
 src/backend/utils/error/elog.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index 2aff7f790aa..61c413b4be3 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -42,7 +42,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.174 2006/09/27 18:40:09 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/error/elog.c,v 1.175 2006/10/01 22:08:18 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -451,7 +451,14 @@ errfinish(int dummy,...)
 		abort();
 	}
 
-	/* We reach here if elevel <= WARNING. OK to return to caller. */
+	/*
+	 * We reach here if elevel <= WARNING. OK to return to caller.
+	 *
+	 * But check for cancel/die interrupt first --- this is so that the user
+	 * can stop a query emitting tons of notice or warning messages, even if
+	 * it's in a loop that otherwise fails to check for interrupts.
+	 */
+	CHECK_FOR_INTERRUPTS();
 }
 
 
-- 
GitLab