On Tue, Oct 09, 2018 at 07:20:40PM +0900, Amit Langote wrote:
> Sorry if I'm misunderstanding something, but why would we need a new
> clone? If we don't change pg_partition_tree() to only accept tables
> (regular/partitioned/foreign tables) as input, then the same code can work
> for indexes as well. As long as we store partition relationship in
> pg_inherits, same code should work for both.
Okay, I see what you are coming at. However, please note that even if I
can see the dependencies in pg_inherits for indexes, the patch still
needs some work I am afraid if your intention is to do so:
CREATE TABLE ptif_test (a int, b int) PARTITION BY range (a);
create index ptif_test_i on ptif_test (a);
CREATE TABLE ptif_test0 PARTITION OF ptif_test
FOR VALUES FROM (minvalue) TO (0) PARTITION BY list (b);
=# select relid::regclass, parentrelid::regclass from
pg_partition_tree('ptif_test'::regclass);
relid | parentrelid
------------+-------------
ptif_test | null
ptif_test0 | ptif_test
(2 rows)
=# select relid::regclass, parentrelid::regclass from
pg_partition_tree('ptif_test_i'::regclass);
relid | parentrelid
-------------+-------------
ptif_test_i | null
(1 row)
In this case I would have expected ptif_test0_a_idx to be listed, with
ptif_test_i as a parent.
isleaf is of course wrong if the input is a partitioned index, so more
regression tests to cover those cases would be nice.
--
Michael