Unexpected behavior with CASE statement - Mailing list pgsql-general

From Jimmy Choi
Subject Unexpected behavior with CASE statement
Date
Msg-id 5770602b0710031205s1e81ff77h5a4eb23d806fa790@mail.gmail.com
Whole thread Raw
Responses Re: Unexpected behavior with CASE statement
Re: Unexpected behavior with CASE statement
List pgsql-general
Suppose I have the following table named "metrics":

metric_type | val
------------+-----
 0          | 1
 0          | 1
 1          | 0
 1          | 3

Now suppose I run the following simple query:

select
   metric_type,
   case metric_type
      when 0 then
         sum (1 / val)
      when 1 then
         sum (val)
   end as result
from metrics
group by metric_type

I expect to get the following result set:

metric_type | result
------------+-------
    0       |   2
    1       |   3

But in reality I get the following error:

    ERROR: division by zero
    SQL state: 22012

So it appears that Postgres executes all cases and select the result
in the end. Is this expected behavior?

Thanks
- Jimmy

pgsql-general by date:

Previous
From: Richard Huxton
Date:
Subject: Re: PITR Recovery and out-of-sync indexes
Next
From: Brian Wipf
Date:
Subject: Re: PITR and Compressed WALS