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) > > >