Re: [HACKERS] path toward faster partition pruning
От | Rajkumar Raghuwanshi |
---|---|
Тема | Re: [HACKERS] path toward faster partition pruning |
Дата | |
Msg-id | CAKcux6=vdLibaJwV-uhJ=98CTpTi24Oiipx3ZZj3qiqX9hcCsQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [HACKERS] path toward faster partition pruning (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>) |
Ответы |
Re: [HACKERS] path toward faster partition pruning
|
Список | pgsql-hackers |
On Mon, Oct 23, 2017 at 1:12 PM, Amit Langote <Langote_Amit_f8@lab.ntt.co.jp> wrote:
Thanks for updated patches, I am able to compile it on head.
The compiler I have here (gcc (GCC) 6.2.0) didn't complain like that for
this typedef redefinition introduced by the 0002 patch, but it seems that
it's not needed anyway, so got rid of that line in the attached updated patch.
Fixed one more useless diff in 0002, but no changes in any other patch
Thanks for updated patches, I am able to compile it on head.
While testing this, I got an observation, pruning is not scanning default partition leading to wrong output. below is test to reproduce this.
create table rp (a int, b varchar) partition by range (a);
create table rp_p1 partition of rp default;
create table rp_p2 partition of rp for values from (1) to (10);
create table rp_p3 partition of rp for values from (10) to (maxvalue);
insert into rp values (-1,'p1');
insert into rp values (1,'p2');
insert into rp values (11,'p3');
postgres=# select tableoid::regclass,* from rp;
tableoid | a | b
----------+----+----
rp_p2 | 1 | p2
rp_p3 | 11 | p3
rp_p1 | -1 | p1
(3 rows)
--with pruning
postgres=# explain (costs off) select * from rp where a <= 1;
QUERY PLAN
--------------------------
Append
-> Seq Scan on rp_p2
Filter: (a <= 1)
(3 rows)
postgres=# select * from rp where a <= 1;
a | b
---+----
1 | p2
(1 row)
create table rp (a int, b varchar) partition by range (a);
create table rp_p1 partition of rp default;
create table rp_p2 partition of rp for values from (1) to (10);
create table rp_p3 partition of rp for values from (10) to (maxvalue);
insert into rp values (-1,'p1');
insert into rp values (1,'p2');
insert into rp values (11,'p3');
postgres=# select tableoid::regclass,* from rp;
tableoid | a | b
----------+----+----
rp_p2 | 1 | p2
rp_p3 | 11 | p3
rp_p1 | -1 | p1
(3 rows)
--with pruning
postgres=# explain (costs off) select * from rp where a <= 1;
QUERY PLAN
--------------------------
Append
-> Seq Scan on rp_p2
Filter: (a <= 1)
(3 rows)
postgres=# select * from rp where a <= 1;
a | b
---+----
1 | p2
(1 row)
Thanks & Regards,
Rajkumar Raghuwanshi
QMG, EnterpriseDB Corporation
В списке pgsql-hackers по дате отправления: