Hi

po 14. 4. 2025 v 7:54 odesílatel jian he <jian.universal...@gmail.com>
napsal:

> hi.
>
> CREATE TABLE tp(c int, a int, b int) PARTITION BY RANGE (b);
> CREATE TABLE tp_1(c int, a int, b int);
> ALTER TABLE tp ATTACH PARTITION tp_1 FOR VALUES FROM (0) TO (1);
> CREATE INDEX t_a_idx ON tp_1(a);
> CREATE INDEX tp_a_idx ON tp(a);
>
> pg_dump  --schema=public --if-exists --clean --no-statistics
> --no-owner --no-data --table-and-children=tp > 1.sql
> pg_dump output file 1.sql excerpts:
> ----
> DROP INDEX IF EXISTS public.t_a_idx;
> DROP INDEX IF EXISTS public.tp_a_idx;
> DROP TABLE IF EXISTS public.tp_1;
> DROP TABLE IF EXISTS public.tp;
> ----
> if you execute the
> DROP INDEX IF EXISTS public.t_a_idx;
>
> ERROR:  cannot drop index t_a_idx because index tp_a_idx requires it
> HINT:  You can drop index tp_a_idx instead.
>
> Is this pg_dump output what we expected?
>
>
It is a bug, I think, the implementation of these parts of code is older
than partitioning support, and doesn't do necessary detach.

regards

Pavel



>
> SELECT * FROM pg_partition_tree('tp_a_idx');
>   relid   | parentrelid | isleaf | level
> ----------+-------------+--------+-------
>  tp_a_idx |             | f      |     0
>  t_a_idx  | tp_a_idx    | t      |     1
> (2 rows)
>
>
>

Reply via email to