Jakob Egger <[email protected]> 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 ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers