Re: Parethesis don't work correctly in where clause - Mailing list pgsql-bugs

From Casey Allen Shobe
Subject Re: Parethesis don't work correctly in where clause
Date
Msg-id 1720D5C9CF7AD411B30700010226ECC90832C3F9@atlexchange.internal.secureworks.net
Whole thread Raw
In response to Parethesis don't work correctly in where clause  (Casey Allen Shobe <cshobe@secureworks.com>)
List pgsql-bugs
Ahh, thank you.  I completely missed that typo.

I'm sorry for the bother with the false bug.  I'm quite happy that there
actually wasn't one :-).

- Casey

-----Original Message-----
From: Oliver Elphick [mailto:olly@lfix.co.uk]
Sent: 17. apr=EDl 2003 10:48
To: Casey Allen Shobe
Cc: 'pgsql-bugs@postgresql.org'
Subject: Re: [BUGS] Parethesis don't work correctly in where clause


On Thu, 2003-04-17 at 09:23, Casey Allen Shobe wrote:

> I have a query with:
> where "n"."revision" =3D 2
...
> However, if I add:
> and (
>         "t"."name" =3D 'nibc'
>     and    "n"."identifier" =3D 1274
> ) or (
>         "t"."name" =3D 'client'
>     and    "n"."identifier" =3D 383
> )
> PostgreSQL returns only the revision 2 tuple for nibc 1274, but also a
> revision 1 tuple for client 383.  ONLY things matching revision 2 should
be
> found, but for some reason the "n"."revision" =3D 2 isn't being applied
> globally, but only to the first set of parenthesis.

This is simply a matter of boolean logic and the precedence of the AND
and OR operators.

If you instead force the operator precedence and add=20

and ((
                "t"."name" =3D 'nibc'
        and     "n"."identifier" =3D 1274
) or (
                "t"."name" =3D 'client'
        and     "n"."identifier" =3D 383
))

it should work, no?

--=20
Oliver Elphick                                Oliver.Elphick@lfix.co.uk
Isle of Wight, UK                             http://www.lfix.co.uk/oliver
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839  932A 614D 4C34 3E1D 0C1C
                 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
     "But as many as received him, to them gave he power to=20
      become the sons of God, even to them that believe on=20
      his name."    John 1:12=20

pgsql-bugs by date:

Previous
From: Oliver Elphick
Date:
Subject: Re: Parethesis don't work correctly in where clause
Next
From: pgsql-bugs@postgresql.org
Date:
Subject: Bug #948: Postgresql server abruptly shutdown now database doesnt start