Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> writes:
> 3. In the callback function, call a new function to set the domain to be
> used for the errcontext() calls in that callback:
> /* use the right domain to translate the errcontext() calls */
> set_errtextdomain();
> errcontext("PL/Perl anonymous code block");
> Attached is a patch using this approach, I like it the most.
I don't like it at all. It seems horridly error-prone to me: there
*will* be sins of omission all over the place.
I really think we need to change errcontext itself to pass the correct
domain. If we are going to require a domain to be provided (and this
does require that, for correct operation), then we need to break any
code that doesn't provide it in a visible fashion.
A possibly more attractive alternative is to redefine errcontext
with a macro that allows TEXTDOMAIN to be passed in behind-the-scenes,
thus keeping source-level compatibility. We can do this with the same
type of hack we've used for many years for elog():
#define errcontext set_errcontext_domain(TEXTDOMAIN), errcontext_msg
where the actual message-passing function is now called errcontext_msg.
regards, tom lane