From: | "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Lucas Possamai <drum(dot)lucas(at)gmail(dot)com>, Postgres General <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: gin index postgres 9.2 |
Date: | 2016-05-26 01:13:10 |
Message-ID: | CAKFQuwZa+t99UREs8XOyVs3KCDTLJHQAcxxe6QRnGUNnR1gQBA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Wed, May 25, 2016 at 8:09 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> "David G. Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> writes:
> > On Wed, May 25, 2016 at 7:42 PM, David G. Johnston <
> > david(dot)g(dot)johnston(at)gmail(dot)com> 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.
From | Date | Subject | |
---|---|---|---|
Next Message | Patrick Baker | 2016-05-26 04:04:56 | full text search index |
Previous Message | Tom Lane | 2016-05-26 00:09:19 | Re: gin index postgres 9.2 |