diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/error/elog.c | 21 | ||||
-rw-r--r-- | src/include/utils/elog.h | 1 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 97014c1a5a5..8a6b6905079 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -1330,6 +1330,27 @@ errhint(const char *fmt,...) return 0; /* return value does not matter */ } +/* + * errhint_internal --- add a hint error message text to the current error + * + * Non-translated version of errhint(), see also errmsg_internal(). + */ +int +errhint_internal(const char *fmt,...) +{ + ErrorData *edata = &errordata[errordata_stack_depth]; + MemoryContext oldcontext; + + recursion_depth++; + CHECK_STACK_DEPTH(); + oldcontext = MemoryContextSwitchTo(edata->assoc_context); + + EVALUATE_MESSAGE(edata->domain, hint, false, false); + + MemoryContextSwitchTo(oldcontext); + recursion_depth--; + return 0; /* return value does not matter */ +} /* * errhint_plural --- add a hint error message text to the current error, diff --git a/src/include/utils/elog.h b/src/include/utils/elog.h index 855c147325b..a5313c5d2d5 100644 --- a/src/include/utils/elog.h +++ b/src/include/utils/elog.h @@ -195,6 +195,7 @@ extern int 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 int errhint_internal(const char *fmt,...) pg_attribute_printf(1, 2); extern int errhint_plural(const char *fmt_singular, const char *fmt_plural, unsigned long n,...) pg_attribute_printf(1, 4) pg_attribute_printf(2, 4); |