SQLSTATE again - Mailing list pgsql-patches

From Pavel Stehule
Subject SQLSTATE again
Date
Msg-id Pine.LNX.4.44.0505300858440.11699-200000@kix.fsv.cvut.cz
Whole thread Raw
Responses Re: SQLSTATE again  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-patches
Hello

I changed implementation of SQLSTATE from block scope variables on
function scope variables. I am not sure if it's moust elegant solution,
but is very similar Oracle behavior (there is session scope variable)

CREATE OR REPLACE FUNCTION ff() RETURNS void AS $$
BEGIN
  RAISE NOTICE 'No exception: % %', SQLSTATE, SQLERRM;
  DECLARE x integer;
  BEGIN
    x := 10/0;
    EXCEPTION WHEN OTHERS THEN
    BEGIN
      RAISE NOTICE 'Div: % %', SQLSTATE, SQLERRM;
        BEGIN
          RAISE NOTICE 'Div2: % %', SQLSTATE, SQLERRM;
          RAISE EXCEPTION 'My user exception';
        EXCEPTION WHEN OTHERS THEN
          RAISE NOTICE 'User: % %', SQLSTATE, SQLERRM;
        END;
        RAISE NOTICE '1: % %', SQLSTATE, SQLERRM;
    END;
    RAISE NOTICE '2: % %', SQLSTATE, SQLERRM;
  END;
  RAISE NOTICE '3: % %', SQLSTATE, SQLERRM;
END;
$$ LANGUAGE plpgsql;
select ff();


NOTICE:  No exception: 00000 Successful completion
NOTICE:  Div: 22012 division by zero
NOTICE:  Div2: 22012 division by zero
NOTICE:  User: P0001 My user exception
NOTICE:  1: 00000 Successful completion
NOTICE:  2: 00000 Successful completion
NOTICE:  3: 00000 Successful completion

Any comments?

Regards
Pavel Stehule



Attachment

pgsql-patches by date:

Previous
From: Neil Conway
Date:
Subject: Re: O_DIRECT for WAL writes
Next
From: Neil Conway
Date:
Subject: Re: skip FK trigger on UPDATE