Thread: BUG #16048: SQLSTATE 22P05 is not captured in exception clause

BUG #16048: SQLSTATE 22P05 is not captured in exception clause

From
PG Bug reporting form
Date:
The following bug has been logged on the website:

Bug reference:      16048
Logged by:          Fabio Henrique Gibon
Email address:      fabiogibon@gmail.com
PostgreSQL version: 12.0
Operating system:   Windows
Description:

Hi,
 
        I have a database using LATIN1 (and I can't change it), so, when the
user informar a invalid character it is not captured in exception clause.
See a short sample:

DO $$
DECLARE 
   v varchar;

BEGIN

   v := 'ABCŸ';

EXCEPTION

WHEN others THEN
RAISE INFO 'Error State: %', SQLSTATE;

END$$;


I tried in old versions (9.0, 9.6,...) and the result is the same. The error
is propagated, disregarding the exception treatement.


Re: BUG #16048: SQLSTATE 22P05 is not captured in exception clause

From
Tom Lane
Date:
PG Bug reporting form <noreply@postgresql.org> writes:
>         I have a database using LATIN1 (and I can't change it), so, when the
> user informar a invalid character it is not captured in exception clause.
> See a short sample:

> DO $$
> DECLARE 
>    v varchar;
> BEGIN
>    v := 'ABCŸ';
> EXCEPTION
> WHEN others THEN
> RAISE INFO 'Error State: %', SQLSTATE;
> END$$;

Sorry, that's not a bug, and you're going to have to find some other
way to deal with the issue.  This error will be thrown while trying to
convert the incoming query string to the database encoding, long before
anything in the server would be able to recognize that this even is a
DO command, let alone is one containing an exception clause.

Exception clauses don't work for syntax errors either, for largely
similar reasons.

            regards, tom lane