Re: BUG #18403: PL/pgSQL is reporting unexpected errors when processing DECLARE blocks with <

From Pavel Stehule
Subject Re: BUG #18403: PL/pgSQL is reporting unexpected errors when processing DECLARE blocks with <
Date
Msg-id CAFj8pRA5n-y1-GvffGgwVQZhuFp+3S5AgzY0Rr8SwqLyfwi9eA@mail.gmail.com
Whole thread Raw
In response to BUG #18403: PL/pgSQL is reporting unexpected errors when processing DECLARE blocks with <  ("David G. Johnston" <david.g.johnston@gmail.com>)
List 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;
$$;




David J.

pgsql-bugs by date:

Previous
From: "David G. Johnston"
Date:
Subject: BUG #18403: PL/pgSQL is reporting unexpected errors when processing DECLARE blocks with <
Next
From: Tom Lane
Date:
Subject: Re: BUG #18403: PL/pgSQL is reporting unexpected errors when processing DECLARE blocks with <