diff options
Diffstat (limited to 'src/include/c.h')
-rw-r--r-- | src/include/c.h | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/include/c.h b/src/include/c.h index 9b7fe87f32b..c38ef8aed3e 100644 --- a/src/include/c.h +++ b/src/include/c.h @@ -36,9 +36,10 @@ * 8) random stuff * 9) system-specific hacks * - * NOTE: since this file is included by both frontend and backend modules, it's - * almost certainly wrong to put an "extern" declaration here. typedefs and - * macros are the kind of thing that might go here. + * NOTE: since this file is included by both frontend and backend modules, + * it's usually wrong to put an "extern" declaration here, unless it's + * ifdef'd so that it's seen in only one case or the other. + * typedefs and macros are the kind of thing that might go here. * *---------------------------------------------------------------- */ @@ -748,6 +749,18 @@ typedef NameData *Name; #endif /* USE_ASSERT_CHECKING && !FRONTEND */ /* + * ExceptionalCondition is compiled into the backend whether or not + * USE_ASSERT_CHECKING is defined, so as to support use of extensions + * that are built with that #define with a backend that isn't. Hence, + * we should declare it as long as !FRONTEND. + */ +#ifndef FRONTEND +extern void ExceptionalCondition(const char *conditionName, + const char *errorType, + const char *fileName, int lineNumber) pg_attribute_noreturn(); +#endif + +/* * Macros to support compile-time assertion checks. * * If the "condition" (a compile-time-constant expression) evaluates to false, |