BUG #11944: plpgsql if-case-then syntax error. - Mailing list pgsql-bugs

From jasen@treshna.com
Subject BUG #11944: plpgsql if-case-then syntax error.
Date
Msg-id 20141112044644.2524.61080@wrigleys.postgresql.org
Whole thread Raw
Responses Re: BUG #11944: plpgsql if-case-then syntax error.  (Pavel Stehule <pavel.stehule@gmail.com>)
List pgsql-bugs
The following bug has been logged on the website:

Bug reference:      11944
Logged by:          Jasen Betts
Email address:      jasen@treshna.com
PostgreSQL version: 9.1.13
Operating system:   linux
Description:

this does work

create function fails( a int) returns int language plpgsql as $$ begin
  if  CASE when a = 1 then true else false END
  then return 1; else  return 0;  end if ;
end $$;

parentheses can make it work.

create function fails_not( a int) returns int language plpgsql as $$ begin
  if ( CASE when a = 1 then true else false END )
  then return 1; else  return 0;  end if ;
end $$;

It seems to be the plpgsql parser not treating the CASE-END as atomic when
looking for the end of the IF xpression.

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #11905: "Error: Wrong key or corrupt data" with pgp_sym_decrypt when bytea size is 2^x - 6 where x >=14
Next
From: ipnb87@gmail.com
Date:
Subject: BUG #11948: Error when installing PostgreSQL 9.3 server