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)