Skip to content

Commit d7cff12

Browse files
committed
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
1 parent 9cb9233 commit d7cff12

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/include/utils/elog.h

+9-7
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,22 @@
4040
#define WARNING 19 /* Warnings. NOTICE is for expected messages
4141
* like implicit sequence creation by SERIAL.
4242
* WARNING is for unexpected messages. */
43+
#define PGWARNING 19 /* Must equal WARNING; see NOTE below. */
4344
#define WARNING_CLIENT_ONLY 20 /* Warnings to be sent to client as usual, but
4445
* never to the server log. */
4546
#define ERROR 21 /* user error - abort transaction; return to
4647
* known state */
47-
/* Save ERROR value in PGERROR so it can be restored when Win32 includes
48-
* modify it. We have to use a constant rather than ERROR because macros
49-
* are expanded only when referenced outside macros.
50-
*/
51-
#ifdef WIN32
52-
#define PGERROR 21
53-
#endif
48+
#define PGERROR 21 /* Must equal ERROR; see NOTE below. */
5449
#define FATAL 22 /* fatal error - abort process */
5550
#define PANIC 23 /* take down the other backends with me */
5651

52+
/*
53+
* NOTE: the alternate names PGWARNING and PGERROR are useful for dealing
54+
* with third-party headers that make other definitions of WARNING and/or
55+
* ERROR. One can, for example, re-define ERROR as PGERROR after including
56+
* such a header.
57+
*/
58+
5759

5860
/* macros for representing SQLSTATE strings compactly */
5961
#define PGSIXBIT(ch) (((ch) - '0') & 0x3F)

0 commit comments

Comments
 (0)