Hello

I found a bug in plpgsql parser.


create table t(a int, b int);

postgres=# \sf fx
CREATE OR REPLACE FUNCTION public.fx()
 RETURNS void
 LANGUAGE plpgsql
AS $function$
declare r record;
begin
  r := (10,20)::t;
  if true then
    raise notice '% %', r.c, r.b;
  end if;
end;
$function$

postgres=# select fx();
ERROR:  record "r" has no field "c"
CONTEXT:  SQL statement "SELECT r.c"
PL/pgSQL function "fx" line 4 during function entry

it reports a bug on line 4, but it should to be 6

postgres=# \sf+ fx
        CREATE OR REPLACE FUNCTION public.fx()
         RETURNS void
         LANGUAGE plpgsql
1       AS $function$
2       declare r record;
3       begin
4         r := (10,20)::t;
5         if true then
6           raise notice '% %', r.c, r.b;
7         end if;
8       end;
9       $function$

Regards

Pavel Stehule

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to