patch fixing the old RETURN NEXT bug

Поиск
Список
Период
Сортировка
От Sergey E. Koposov
Тема patch fixing the old RETURN NEXT bug
Дата
Msg-id Pine.LNX.4.44.0602121958090.15708-200000@lnfm1.sai.msu.ru
обсуждение исходный текст
Ответы Re: patch fixing the old RETURN NEXT bug  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: patch fixing the old RETURN NEXT bug  (Neil Conway <neilc@samurai.com>)
Re: patch fixing the old RETURN NEXT bug  (Bruce Momjian <pgman@candle.pha.pa.us>)
Список pgsql-patches
Hello All,

I'm proposing the fix of this bug:
http://archives.postgresql.org/pgsql-hackers/2005-02/msg00498.php

The exact SQL code exposing the error:

----------

create table usno (ra real, dec real, bmag real, rmag real,ipix int8);
CREATE OR REPLACE FUNCTION xxx(refcursor) RETURNS refcursor AS '
DECLARE query varchar;
BEGIN
query = ''SELECT * FROM usno'';
OPEN $1 FOR EXECUTE query;
RETURN $1;
END;
' LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION yyy() RETURNS SETOF usno AS '
DECLARE rec record;
DECLARE cur refcursor;
BEGIN
cur=xxx(''curs_name'');
LOOP
        FETCH cur into rec;
        EXIT WHEN NOT FOUND;
        RETURN NEXT rec;
END LOOP;
RETURN;
END;
' LANGUAGE plpgsql;

insert into usno values(1,2,3,4);
select * from yyy();
alter table usno add column errbox box;
select * from yyy();
alter table usno drop column errbox;
select * from yyy();

-------

The problem with that is in fact in pl_exec.c in function
compatible_tupdesc(), which do not check for the deleted attributes.

The patch is attached.

Regards,
    Sergey

*****************************************************
Sergey E. Koposov
Max Planck Institute for Astronomy
Web: http://lnfm1.sai.msu.ru/~math
E-mail: math@sai.msu.ru


Вложения

В списке pgsql-patches по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: [HACKERS] Spaces in psql output (Was: FW: PGBuildfarm
Следующее
От: Tom Lane
Дата:
Сообщение: Re: patch fixing the old RETURN NEXT bug