Thread: BUG #3065: Bug in stored procedure EXEPTION handling or in plpgsql ?

BUG #3065: Bug in stored procedure EXEPTION handling or in plpgsql ?

From
"Fridman Garri"
Date:
The following bug has been logged online:

Bug reference:      3065
Logged by:          Fridman Garri
Email address:      garri@wanadoo.nl
PostgreSQL version: 8.2.0
Operating system:   WinXP-Prof SP2
Description:        Bug in stored procedure EXEPTION handling or in plpgsql
?
Details:

If I call "select message from mytest(5);" from command line or from Admin
III when a programm terminates with a Message:
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.

Stored Procedure "mytest" Created Successfully before running of examples.


Examples of situation:
-- Example 1: no Crash
select message from mytest(-1);


-- Example 2: no Crash
select message from mytest(0);

-- Example 3: no Crash
select message from mytest(2);

-- Example 4: Crash !!!
select message from mytest(5);


-- Used Stored Procedure --
CREATE OR REPLACE FUNCTION mytest(IN amount "int4", OUT message "varchar")
AS

$BODY$

DECLARE
myid integer;
BEGIN
            message = 'no errors';

            IF amount > 0
            THEN
                  SELECT id INTO myid FROM client WHERE id = 1;
            END IF;

            IF amount = 0 OR amount = 5
            THEN
                  RAISE EXCEPTION 'error: amount = %', amount;
            END IF;

EXCEPTION
        WHEN OTHERS THEN
                  message = SQLERRM;
END;


$BODY$
  LANGUAGE 'plpgsql';
ALTER FUNCTION mytest(IN amount "int4", OUT message "varchar") OWNER TO
garri


Best regards.
Garri Fridman.