Обсуждение: BUG #16048: SQLSTATE 22P05 is not captured in exception clause

Поиск
Список
Период
Сортировка

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

От
PG Bug reporting form
Дата:
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

От
Tom Lane
Дата:
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