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

Поиск
Список
Период
Сортировка
От David Fetter
Тема BUG #6067: In PL/pgsql, EXISTS(SELECT ... INTO...) fails
Дата
Msg-id 201106172246.p5HMk2Qs041851@wwwmaster.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #6067: In PL/pgsql, EXISTS(SELECT ... INTO...) fails  (Pavel Stehule <pavel.stehule@gmail.com>)
Re: BUG #6067: In PL/pgsql, EXISTS(SELECT ... INTO...) fails  (Tom Lane <tgl@sss.pgh.pa.us>)
Список 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 по дате отправления:

Предыдущее
От: Greg Smith
Дата:
Сообщение: Re: could not read block XXXXX in file "base/YYYYY/ZZZZZZ": read only 160 of 8192 bytes
Следующее
От: Pavel Stehule
Дата:
Сообщение: Re: BUG #6067: In PL/pgsql, EXISTS(SELECT ... INTO...) fails