BUG #6067: In PL/pgsql, EXISTS(SELECT ... INTO...) fails - Mailing list pgsql-bugs

From David Fetter
Subject BUG #6067: In PL/pgsql, EXISTS(SELECT ... INTO...) fails
Date
Msg-id 201106172246.p5HMk2Qs041851@wwwmaster.postgresql.org
Whole thread Raw
Responses Re: BUG #6067: In PL/pgsql, EXISTS(SELECT ... INTO...) fails
Re: BUG #6067: In PL/pgsql, EXISTS(SELECT ... INTO...) fails
List pgsql-bugs
The following bug has been logged online:

Bug reference:      6067
Logged by:          David Fetter
Email address:      dfetter@vmware.com
PostgreSQL version: 9.0.4
Operating system:   Linux
Description:        In PL/pgsql, EXISTS(SELECT ... INTO...) fails
Details:

Here's some example code that reproduces the problem:

CREATE OR REPLACE FUNCTION foo()
RETURNS void
LANGUAGE plpgsql
AS $$
DECLARE
    i int;
BEGIN
    IF EXISTS (SELECT 1 INTO STRICT i) THEN
        RAISE NOTICE '%', a;
    END IF;
    RETURN;
END;
$$;
ERROR:  syntax error at or near "i"
LINE 8:     IF EXISTS (SELECT 1 INTO STRICT i) THEN
                                            ^

This came up in a case where there was an IF block that checked some
conditions before checking whether there was a row.  If it found a row, it
was supposed to use it in an EXCEPTION.  Instead, I had to do the query
unconditionally, check the FOUND block in a separate nested IF statement,
and generally uglify the code.

Not everybody in IRC agreed that this is a bug, though.

pgsql-bugs by date:

Previous
From: Greg Smith
Date:
Subject: Re: could not read block XXXXX in file "base/YYYYY/ZZZZZZ": read only 160 of 8192 bytes
Next
From: Pavel Stehule
Date:
Subject: Re: BUG #6067: In PL/pgsql, EXISTS(SELECT ... INTO...) fails