Re: BUG #18403: PL/pgSQL is reporting unexpected errors when processing DECLARE blocks with <
От | Pavel Stehule |
---|---|
Тема | Re: BUG #18403: PL/pgSQL is reporting unexpected errors when processing DECLARE blocks with < |
Дата | |
Msg-id | CAFj8pRA5n-y1-GvffGgwVQZhuFp+3S5AgzY0Rr8SwqLyfwi9eA@mail.gmail.com обсуждение исходный текст |
Ответ на | BUG #18403: PL/pgSQL is reporting unexpected errors when processing DECLARE blocks with < ("David G. Johnston" <david.g.johnston@gmail.com>) |
Список | pgsql-bugs |
st 20. 3. 2024 v 21:47 odesílatel David G. Johnston <david.g.johnston@gmail.com> napsal:
On Wednesday, March 20, 2024, PG Bug reporting form <noreply@postgresql.org> wrote:The following bug has been logged on the website:
Bug reference: 18403
Logged by: Jiangshan Liu
Email address: jiangshan.liu@tju.edu.cn
PostgreSQL version: 15.2
Operating system: Ubuntu
Description:
Hi, I think PL/pgSQL is reporting unexpected errors when dealing with
DECLARE blocks paired with <<label>>.
I have approximated the program to a clean situation. When I execute this
program, the PL/pgSQL engine does not report errors to me:
DO $$
DECLARE
DECLARE
var1 INT = 1;
BEGIN
RAISE NOTICE '%', var1;
END;
$$;The failure to report an error here seems contrary to the documentation. When the end of the DO text is reached and only a single begin/end pair is seen the parser is being loose in being OK that one of the declares was not associated with a full block.
One block can have more DECLAREs
I am not sure if the empty list for DECLARE should be valid, but plpgsql parser allows it.
do $$
declare x int;
declare y int;
begin
x := 1; y := 1;
raise notice '% %', x,y;
end;
$$;
declare x int;
declare y int;
begin
x := 1; y := 1;
raise notice '% %', x,y;
end;
$$;
David J.
В списке pgsql-bugs по дате отправления: