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

From: "David Fetter" <dfetter(at)vmware(dot)com>
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #6067: In PL/pgsql, EXISTS(SELECT ... INTO...) fails
Date: 2011-06-17 22:46:02
Message-ID: 201106172246.p5HMk2Qs041851@wwwmaster.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs


The following bug has been logged online:

Bug reference: 6067
Logged by: David Fetter
Email address: dfetter(at)vmware(dot)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.

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Marinos Yannikos 2011-06-18 02:55:59 Re: Ident authentication fails due to bind error on server (8.4.8)
Previous Message Merlin Moncure 2011-06-17 20:53:18 Re: could not read block XXXXX in file "base/YYYYY/ZZZZZZ": read only 160 of 8192 bytes