From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Different gettext domain needed for error context |
Date: | 2012-04-14 21:54:29 |
Message-ID: | 13653.1334440469@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2012-04-14 22:03:03 | Re: Last gasp |
Previous Message | Robert Haas | 2012-04-14 21:48:31 | Re: BUG #6572: The example of SPI_execute is bogus |