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 voidLANGUAGE 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