Re: gin index postgres 9.2

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.

In response to

Browse pgsql-general by date

  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