postgres - CASE evaluates subexpression that is not needed todetermine the result - Mailing list pgsql-bugs

From Kamenoqd Zelen
Subject postgres - CASE evaluates subexpression that is not needed todetermine the result
Date
Msg-id CAJVAX4iRStCBv6wziJVDPOy6-fnhdALuxRnXodkBYenEN4m+Pw@mail.gmail.com
Whole thread Raw
Responses Re: postgres - CASE evaluates subexpression that is not needed todetermine the result  (Pavel Stehule <pavel.stehule@gmail.com>)
Re: postgres - CASE evaluates subexpression that is not needed to determine the result  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
Hello,
I have the following 3 examples of case expressions in postgres, which I would expect to evaluate in the same way. However the first and the third give ERROR: invalid input syntax for integer: "2017.7". The second one returns true. Why is the difference?

Postgres documentation states:

"A CASE expression does not evaluate any subexpressions that are not needed to determine the result."

select case when 0 = 0 then 1 < 2

        when 0 = 2 then 2000 = ('2017.7')::bigint

    end;


select case when 0 = 0 then 1 < 2

        when 0 = 2 then 2000 = ('2017.7'||'')::bigint 

    end;


select case when (array[1,2])[1] =1 then 1 < 2

        when (array[1,2])[1] = 2 then 2000 = ('2017.7'||'')::bigint 

    end;

pgsql-bugs by date:

Previous
From: Andres Freund
Date:
Subject: Re: BUG #15486: PG11 jit on 50x slower than jit off
Next
From: Pavel Stehule
Date:
Subject: Re: postgres - CASE evaluates subexpression that is not needed todetermine the result