From d7cff12c4c035b7cf12bb8454824f48f13018730 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 11 Apr 2021 13:22:56 -0400 Subject: [PATCH] Add macro PGWARNING, and make PGERROR available on all platforms. We'd previously noted the need for coping with Windows headers that provide some other definition of macro "ERROR" than elog.h does. It turns out that R also wants to define ERROR, and WARNING too. PL/R has been working around this in a hacky way that broke when we recently changed the numeric value of ERROR. To let them have a more future-proof solution, provide an alternate macro PGWARNING for WARNING, and make PGERROR visible always, not only when #ifdef WIN32. Discussion: https://postgr.es/m/CADK3HHK6iMChd1yoOqssxBn5Z14Zar8Ztr3G-N_fuG7F8YTP3w@mail.gmail.com --- src/include/utils/elog.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/include/utils/elog.h b/src/include/utils/elog.h index 9acb57a27b..f53607e12e 100644 --- a/src/include/utils/elog.h +++ b/src/include/utils/elog.h @@ -40,20 +40,22 @@ #define WARNING 19 /* Warnings. NOTICE is for expected messages * like implicit sequence creation by SERIAL. * WARNING is for unexpected messages. */ +#define PGWARNING 19 /* Must equal WARNING; see NOTE below. */ #define WARNING_CLIENT_ONLY 20 /* Warnings to be sent to client as usual, but * never to the server log. */ #define ERROR 21 /* user error - abort transaction; return to * known state */ -/* Save ERROR value in PGERROR so it can be restored when Win32 includes - * modify it. We have to use a constant rather than ERROR because macros - * are expanded only when referenced outside macros. - */ -#ifdef WIN32 -#define PGERROR 21 -#endif +#define PGERROR 21 /* Must equal ERROR; see NOTE below. */ #define FATAL 22 /* fatal error - abort process */ #define PANIC 23 /* take down the other backends with me */ +/* + * NOTE: the alternate names PGWARNING and PGERROR are useful for dealing + * with third-party headers that make other definitions of WARNING and/or + * ERROR. One can, for example, re-define ERROR as PGERROR after including + * such a header. + */ + /* macros for representing SQLSTATE strings compactly */ #define PGSIXBIT(ch) (((ch) - '0') & 0x3F)