diff options
Diffstat (limited to 'src/include/utils/elog.h')
-rw-r--r-- | src/include/utils/elog.h | 88 |
1 files changed, 29 insertions, 59 deletions
diff --git a/src/include/utils/elog.h b/src/include/utils/elog.h index 4ff69daf3b9..d244b1c0ac5 100644 --- a/src/include/utils/elog.h +++ b/src/include/utils/elog.h @@ -124,8 +124,8 @@ #define ereport_domain(elevel, domain, ...) \ do { \ pg_prevent_errno_in_scope(); \ - if (errstart(elevel, __FILE__, __LINE__, PG_FUNCNAME_MACRO, domain)) \ - __VA_ARGS__, errfinish(0); \ + if (errstart(elevel, domain)) \ + __VA_ARGS__, errfinish(__FILE__, __LINE__, PG_FUNCNAME_MACRO); \ if (__builtin_constant_p(elevel) && (elevel) >= ERROR) \ pg_unreachable(); \ } while(0) @@ -134,8 +134,8 @@ do { \ const int elevel_ = (elevel); \ pg_prevent_errno_in_scope(); \ - if (errstart(elevel_, __FILE__, __LINE__, PG_FUNCNAME_MACRO, domain)) \ - __VA_ARGS__, errfinish(0); \ + if (errstart(elevel_, domain)) \ + __VA_ARGS__, errfinish(__FILE__, __LINE__, PG_FUNCNAME_MACRO); \ if (elevel_ >= ERROR) \ pg_unreachable(); \ } while(0) @@ -146,34 +146,33 @@ #define TEXTDOMAIN NULL -extern bool errstart(int elevel, const char *filename, int lineno, - const char *funcname, const char *domain); -extern void errfinish(int dummy,...); +extern bool errstart(int elevel, const char *domain); +extern void errfinish(const char *filename, int lineno, const char *funcname); -extern int errcode(int sqlerrcode); +extern void errcode(int sqlerrcode); -extern int errcode_for_file_access(void); -extern int errcode_for_socket_access(void); +extern void errcode_for_file_access(void); +extern void errcode_for_socket_access(void); -extern int errmsg(const char *fmt,...) pg_attribute_printf(1, 2); -extern int errmsg_internal(const char *fmt,...) pg_attribute_printf(1, 2); +extern void errmsg(const char *fmt,...) pg_attribute_printf(1, 2); +extern void errmsg_internal(const char *fmt,...) pg_attribute_printf(1, 2); -extern int errmsg_plural(const char *fmt_singular, const char *fmt_plural, +extern void errmsg_plural(const char *fmt_singular, const char *fmt_plural, unsigned long n,...) pg_attribute_printf(1, 4) pg_attribute_printf(2, 4); -extern int errdetail(const char *fmt,...) pg_attribute_printf(1, 2); -extern int errdetail_internal(const char *fmt,...) pg_attribute_printf(1, 2); +extern void errdetail(const char *fmt,...) pg_attribute_printf(1, 2); +extern void errdetail_internal(const char *fmt,...) pg_attribute_printf(1, 2); -extern int errdetail_log(const char *fmt,...) pg_attribute_printf(1, 2); +extern void errdetail_log(const char *fmt,...) pg_attribute_printf(1, 2); -extern int errdetail_log_plural(const char *fmt_singular, +extern void errdetail_log_plural(const char *fmt_singular, const char *fmt_plural, unsigned long n,...) pg_attribute_printf(1, 4) pg_attribute_printf(2, 4); -extern int errdetail_plural(const char *fmt_singular, const char *fmt_plural, +extern void errdetail_plural(const char *fmt_singular, const char *fmt_plural, unsigned long n,...) pg_attribute_printf(1, 4) pg_attribute_printf(2, 4); -extern int errhint(const char *fmt,...) pg_attribute_printf(1, 2); +extern void errhint(const char *fmt,...) pg_attribute_printf(1, 2); /* * errcontext() is typically called in error context callback functions, not @@ -185,22 +184,22 @@ extern int errhint(const char *fmt,...) pg_attribute_printf(1, 2); */ #define errcontext set_errcontext_domain(TEXTDOMAIN), errcontext_msg -extern int set_errcontext_domain(const char *domain); +extern void set_errcontext_domain(const char *domain); -extern int errcontext_msg(const char *fmt,...) pg_attribute_printf(1, 2); +extern void errcontext_msg(const char *fmt,...) pg_attribute_printf(1, 2); -extern int errhidestmt(bool hide_stmt); -extern int errhidecontext(bool hide_ctx); +extern void errhidestmt(bool hide_stmt); +extern void errhidecontext(bool hide_ctx); -extern int errbacktrace(void); +extern void errbacktrace(void); -extern int errfunction(const char *funcname); -extern int errposition(int cursorpos); +extern void errfunction(const char *funcname); +extern void errposition(int cursorpos); -extern int internalerrposition(int cursorpos); -extern int internalerrquery(const char *query); +extern void internalerrposition(int cursorpos); +extern void internalerrquery(const char *query); -extern int err_generic_string(int field, const char *str); +extern void err_generic_string(int field, const char *str); extern int geterrcode(void); extern int geterrposition(void); @@ -212,37 +211,8 @@ extern int getinternalerrposition(void); * elog(ERROR, "portal \"%s\" not found", stmt->portalname); *---------- */ -/* - * Using variadic macros, we can give the compiler a hint about the - * call not returning when elevel >= ERROR. See comments for ereport(). - * Note that historically elog() has called elog_start (which saves errno) - * before evaluating "elevel", so we preserve that behavior here. - */ -#ifdef HAVE__BUILTIN_CONSTANT_P #define elog(elevel, ...) \ - do { \ - pg_prevent_errno_in_scope(); \ - elog_start(__FILE__, __LINE__, PG_FUNCNAME_MACRO); \ - elog_finish(elevel, __VA_ARGS__); \ - if (__builtin_constant_p(elevel) && (elevel) >= ERROR) \ - pg_unreachable(); \ - } while(0) -#else /* !HAVE__BUILTIN_CONSTANT_P */ -#define elog(elevel, ...) \ - do { \ - pg_prevent_errno_in_scope(); \ - elog_start(__FILE__, __LINE__, PG_FUNCNAME_MACRO); \ - { \ - const int elevel_ = (elevel); \ - elog_finish(elevel_, __VA_ARGS__); \ - if (elevel_ >= ERROR) \ - pg_unreachable(); \ - } \ - } while(0) -#endif /* HAVE__BUILTIN_CONSTANT_P */ - -extern void elog_start(const char *filename, int lineno, const char *funcname); -extern void elog_finish(int elevel, const char *fmt,...) pg_attribute_printf(2, 3); + ereport(elevel, errmsg_internal(__VA_ARGS__)) /* Support for constructing error strings separately from ereport() calls */ |