Re: a few small bugs in plpgsql
От | Robert Haas |
---|---|
Тема | Re: a few small bugs in plpgsql |
Дата | |
Msg-id | AANLkTikNufRjcHRd1nNNwKxhWovD_4sZ5A3RpW1mbPoM@mail.gmail.com обсуждение исходный текст |
Ответ на | a few small bugs in plpgsql (Pavel Stehule <pavel.stehule@gmail.com>) |
Ответы |
Re: a few small bugs in plpgsql
Re: a few small bugs in plpgsql |
Список | pgsql-hackers |
On Thu, Oct 7, 2010 at 2:53 PM, Pavel Stehule <pavel.stehule@gmail.com> wrote: > Hello, > > today I found a few bugs: > > a) parser allow a labels on invalid positions with strange runtime bug: > > postgres=# CREATE OR REPLACE FUNCTION foo() > RETURNS void AS $$ > BEGIN > FOR i IN 1..2 > <<<invalidLabel>> > LOOP > RAISE NOTICE '%',i; > END LOOP; > END; > $$ LANGUAGE plpgsql; > CREATE FUNCTION > > ERROR: column "invalidlabel" does not exist > LINE 2: <<<invalidLabel>> > ^ > QUERY: SELECT 2 > <<<invalidLabel>> > CONTEXT: PL/pgSQL function "foo" line 3 at FOR with integer loop variable > postgres=# I'm not sure if I'd call that a bug, but it does look like a somewhat odd error message, at least at first glance. > b) SRF functions must not be finished by RETURN statement - I know, so > there is outer default block, but it looks like inconsistency for SRF > functions, because you can use a RETURN NEXT without RETURN. It maybe > isn't bug - but I am filling it as inconsistency. > > postgres=# CREATE OR REPLACE FUNCTION fg(OUT i int) > RETURNS SETOF int AS $$ > BEGIN > FOR i IN 1..3 > LOOP fg.i := i; > RETURN NEXT; > END LOOP; > END; > $$ LANGUAGE plpgsql; > CREATE FUNCTION > > postgres=# select fg(); > fg > ---- > 1 > 2 > 3 > (3 rows) I don't see what's wrong with this. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise Postgres Company
В списке pgsql-hackers по дате отправления: