Jakob Egger <ja...@eggerapps.at> writes:
> My PostgreSQL client checks the PG_DIAG_SEVERITY error field to determine the 
> error level.
> However, I have now learned that this field is localized. This means that a 
> server configured with --enable-nls might for example return the string 
> ERREUR instead of ERROR.

Check.

> So if I want to determine the error level, do I need to compare against all 
> localised variations in my app? Or is there another way?

Generally, we've presumed that clients don't really need to know the
difference between error levels, beyond the error-versus-notice
distinction that's embedded in the message type.  If you have an
application where that's actually important, it would be interesting to
know what it is.

> I browsed through the PostgreSQL source and discovered that 
> pq_parse_errornotice() (in src/backend/libpq/pqmq.c) uses the same naive 
> strcmp() approach to determine error level. This means that it will fail when 
> the server is compiled with --enable-nls. I am not sure what the impact of 
> this is, since I couldn't really figure out where that function is used.

Ooops.  Indeed, that is broken:

postgres=# select 1/0;  -- using French locale
ERREUR:  division par zéro
postgres=# set force_parallel_mode=1;
SET
postgres=# select stringu1::int2 from tenk1 where unique1 = 1;
ERREUR:  unknown error severity
CONTEXT:  parallel worker

Not sure what we ought to do about that, but we need to do something.

                        regards, tom lane


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to