Thread: BUG #7574: CASE in WHERE condition change result set

BUG #7574: CASE in WHERE condition change result set

From
urvancevav@gmail.com
Date:
The following bug has been logged on the website:

Bug reference:      7574
Logged by:          Andrei
Email address:      urvancevav@gmail.com
PostgreSQL version: 9.2.1
Operating system:   3.2.0-31-generic #50-Ubuntu SMP Fri Sep 7 16:16:45
Description:        =


in query like this:
select
  departure0_.departure_id as departure1_87_,
-- a lot of other fields
-- ...
           case =

                when departure0_1_.departure_id is not null then 1 =

                when departure0_.departure_id is not null then 0 =

            end as clazz_ =

        from
            departure departure0_ =

        left outer join
            local_inv_departure departure0_1_ =

                on departure0_.departure_id=3Ddeparture0_1_.departure_id =

        where
            case =

                when departure0_1_.departure_id is not null then 1 =

                when departure0_.departure_id is not null then 0 =

            end=3D0

CASE operator in the WHERE condition actually sets clazz_ to 0 instead of
filtering it.

Re: BUG #7574: CASE in WHERE condition change result set

From
Alvaro Herrera
Date:
Excerpts from urvancevav's message of vie sep 28 05:58:42 -0300 2012:
> The following bug has been logged on the website:
>=20
> Bug reference:      7574
> Logged by:          Andrei
> Email address:      urvancevav@gmail.com
> PostgreSQL version: 9.2.1
> Operating system:   3.2.0-31-generic #50-Ubuntu SMP Fri Sep 7 16:16:45
> Description:       =20
>=20
> in query like this:

> [ snipped ]

> CASE operator in the WHERE condition actually sets clazz_ to 0 instead =
of
> filtering it.

Can you please provide a complete example?  That would be something that
someone else can load into an empty database and observe the failure.

--=20
=C3=81lvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services