]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Add macro PGWARNING, and make PGERROR available on all platforms.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 11 Apr 2021 17:22:56 +0000 (13:22 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 11 Apr 2021 17:22:56 +0000 (13:22 -0400)
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

index 9acb57a27b542ec76a0755cd3285c102bac6c329..f53607e12eb81de91cd4e933a210dddf7588a980 100644 (file)
 #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)