PG_DIAG_SEVERITY and a possible bug in pq_parse_errornotice()

Jakob Egger <jakob@eggerapps.at>

From: Jakob Egger <jakob@eggerapps.at>
To: "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2016-08-25T15:22:38Z
Lists: pgsql-hackers
Hi,

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.

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?

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.

Best regards,
Jakob