From: | David Rowley <david(dot)rowley(at)2ndquadrant(dot)com> |
---|---|
To: | Rares Salcudean <rares(dot)salcudean(at)takeofflabs(dot)com> |
Cc: | PostgreSQL mailing lists <pgsql-bugs(at)lists(dot)postgresql(dot)org> |
Subject: | Re: PG11 - Multiple Key Range Partition |
Date: | 2019-07-09 23:32:54 |
Message-ID: | CAKJS1f-ScnpW_9-vDxLRs1YS+JWLPwq-qGYZEHvGkaus2Xj1zQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
On Tue, 9 Jul 2019 at 18:53, Rares Salcudean
<rares(dot)salcudean(at)takeofflabs(dot)com> wrote:
> The example you suggested:
>
> explain select * from scores where NOT(recent = true) and NOT(deleted = true) and played_at = '2018-03-02'
> explain select * from scores where NOT(recent) and NOT(deleted) and played_at = '2018-03-02'
>
> Yield the same result:
Works okay for me with:
create table rangep (a bool, b bool, c date) partition by range (a,b,c);
create table rangep1 partition of rangep for values from (false,
false, '2019-01-01') to (false,false,'2020-01-01');
create table rangep2 partition of rangep for values from (true, true,
'2019-01-01') to (true,true,'2020-01-01');
explain select * from rangep where not a and not b and c = '2019-07-10';
QUERY PLAN
--------------------------------------------------------------
Seq Scan on rangep1 (cost=0.00..40.00 rows=3 width=6)
Filter: ((NOT a) AND (NOT b) AND (c = '2019-07-10'::date))
(2 rows)
That's on master, but v10 and v11 still prune away rangep2.
It might help if you share which version you're using and a cutdown
version of the schema, just enough to show the issue.
--
David Rowley http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | Manuel Rigger | 2019-07-09 23:51:50 | ERROR: found unexpected null value in index |
Previous Message | Alvaro Herrera | 2019-07-09 23:04:14 | Re: perl issue |