Thread: postgres - CASE evaluates subexpression that is not needed todetermine the result
postgres - CASE evaluates subexpression that is not needed todetermine the result
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;
Re: postgres - CASE evaluates subexpression that is not needed todetermine the result
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;
Re: postgres - CASE evaluates subexpression that is not needed to determine the result
Kamenoqd Zelen <kamenoqd@gmail.com> writes: > 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? Constant subexpressions get folded regardless of location. regards, tom lane