pgsql: Use correct text domain for errcontext() appearing within erepor

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Use correct text domain for errcontext() appearing within erepor
Дата
Msg-id E1YAiyo-0007Ru-76@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Use correct text domain for errcontext() appearing within ereport().

The mechanism added in commit dbdf9679d7d61b03a3bf73af9b095831b7010eb5
for associating the correct translation domain with errcontext strings
potentially fails in cases where errcontext() is used within an ereport()
macro.  Such usage was not originally envisioned for errcontext(), but we
do have a few places that do it.  In this situation, the intended comma
expression becomes just a couple of arguments to errfinish(), which the
compiler might choose to evaluate right-to-left.

Fortunately, in such cases the textdomain for the errcontext string must
be the same as for the surrounding ereport.  So we can fix this by letting
errstart initialize context_domain along with domain; then it will have
the correct value no matter which order the calls occur in.  (Note that
error stack callback functions are not invoked until errfinish, so normal
usage of errcontext won't affect what happens for errcontext calls within
the ereport macro.)

In passing, make sure that errcontext calls within the main backend set
context_domain to something non-NULL.  This isn't a live bug because
NULL would select the current textdomain() setting which should be the
right thing anyway --- but it seems better to handle this completely
consistently with the regular domain field.

Per report from Dmitry Voronin.  Backpatch to 9.3; before that, there
wasn't any attempt to ensure that errcontext strings were translated
in an appropriate domain.

Branch
------
REL9_3_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/19f326619696bfb1be9a3b80090e5f39e805b359

Modified Files
--------------
src/backend/utils/error/elog.c |   17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Stephen Frost
Дата:
Сообщение: pgsql: Skip dead backends in MinimumActiveBackends
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Use correct text domain for errcontext() appearing within erepor