BUG #11944: plpgsql if-case-then syntax error.

Started by Jasen Bettsover 11 years ago2 messagesbugs
Jump to latest
#1Jasen Betts
jasen@treshna.com

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.

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

#2Pavel Stehule
pavel.stehule@gmail.com
In reply to: Jasen Betts (#1)
Re: BUG #11944: plpgsql if-case-then syntax error.

2014-11-12 5:46 GMT+01:00 <jasen@treshna.com>:

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.

yes, it is true. plpgsql parser doesn't understand to SQL and mechanically
searching ending keywords in expected level of parentheses. There is a
problem in fact, so SQL CASE, and PLpgSQL CASE uses same keyword.

Regards

Pavel

Show quoted text

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