diff options
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/executor/executor.h | 2 | ||||
-rw-r--r-- | src/include/parser/parse_coerce.h | 2 | ||||
-rw-r--r-- | src/include/parser/parse_node.h | 2 | ||||
-rw-r--r-- | src/include/parser/scanner.h | 2 | ||||
-rw-r--r-- | src/include/utils/elog.h | 88 |
5 files changed, 33 insertions, 63 deletions
diff --git a/src/include/executor/executor.h b/src/include/executor/executor.h index 94890512dc8..cd0e6439cde 100644 --- a/src/include/executor/executor.h +++ b/src/include/executor/executor.h @@ -546,7 +546,7 @@ exec_rt_fetch(Index rti, EState *estate) extern Relation ExecGetRangeTableRelation(EState *estate, Index rti); -extern int executor_errposition(EState *estate, int location); +extern void executor_errposition(EState *estate, int location); extern void RegisterExprContextCallback(ExprContext *econtext, ExprContextCallbackFunction function, diff --git a/src/include/parser/parse_coerce.h b/src/include/parser/parse_coerce.h index 8686eaacbc9..a3295b3fa45 100644 --- a/src/include/parser/parse_coerce.h +++ b/src/include/parser/parse_coerce.h @@ -61,7 +61,7 @@ extern Node *coerce_to_specific_type_typmod(ParseState *pstate, Node *node, Oid targetTypeId, int32 targetTypmod, const char *constructName); -extern int parser_coercion_errposition(ParseState *pstate, +extern void parser_coercion_errposition(ParseState *pstate, int coerce_location, Node *input_expr); diff --git a/src/include/parser/parse_node.h b/src/include/parser/parse_node.h index d25819aa28b..b223b595423 100644 --- a/src/include/parser/parse_node.h +++ b/src/include/parser/parse_node.h @@ -307,7 +307,7 @@ typedef struct ParseCallbackState extern ParseState *make_parsestate(ParseState *parentParseState); extern void free_parsestate(ParseState *pstate); -extern int parser_errposition(ParseState *pstate, int location); +extern void parser_errposition(ParseState *pstate, int location); extern void setup_parser_errposition_callback(ParseCallbackState *pcbstate, ParseState *pstate, int location); diff --git a/src/include/parser/scanner.h b/src/include/parser/scanner.h index a27352afc14..02ae10a2250 100644 --- a/src/include/parser/scanner.h +++ b/src/include/parser/scanner.h @@ -140,7 +140,7 @@ extern core_yyscan_t scanner_init(const char *str, extern void scanner_finish(core_yyscan_t yyscanner); extern int core_yylex(core_YYSTYPE *lvalp, YYLTYPE *llocp, core_yyscan_t yyscanner); -extern int scanner_errposition(int location, core_yyscan_t yyscanner); +extern void scanner_errposition(int location, core_yyscan_t yyscanner); extern void setup_scanner_errposition_callback(ScannerCallbackState *scbstate, core_yyscan_t yyscanner, int location); 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 */ |