On Wed, May 25, 2016 at 8:09 PM, Tom Lane <[email protected]> wrote:
> "David G. Johnston" <[email protected]> writes: > > On Wed, May 25, 2016 at 7:42 PM, David G. Johnston < > > [email protected]> wrote: > >> What's the query with the revised parentheses? > > > Never mind...your right I doubt that it should matter. > > The parentheses in the original *definitely* matter, because by default > AND binds more tightly than OR. The larger number of rows in the second > query are perfectly plausible given the parenthesis-omission. > That's what I get for second-guessing myself... To be more precise the behavior shown is exhibited in the following three queries. SELECT true OR false OR false AND false AND false --> true SELECT true OR false OR (false AND false AND false) -->true or, more precisely: SELECT (true OR false) OR ((false AND false) AND false) -->true what is thus needed is: SELECT (true OR false OR false) AND false AND false --> false which is treated like SELECT (((true OR false) OR false) AND false) AND false --> false https://www.postgresql.org/docs/9.5/static/sql-syntax-lexical.html#SQL-PRECEDENCE-TABLE penance served... David J.
