Re: pg_dump --if-exists --clean when drop index that is partition of a partitioned index - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: pg_dump --if-exists --clean when drop index that is partition of a partitioned index
Date
Msg-id CAFj8pRCjd9DV7Viov8WM7N0V1LLQ3OtXOpZ1qzy6eGUv_qVs0w@mail.gmail.com
Whole thread Raw
In response to pg_dump --if-exists --clean when drop index that is partition of a partitioned index  (jian he <jian.universality@gmail.com>)
Responses Re: pg_dump --if-exists --clean when drop index that is partition of a partitioned index
List pgsql-hackers
Hi

po 14. 4. 2025 v 7:54 odesílatel jian he <jian.universality@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)


pgsql-hackers by date:

Previous
From: jian he
Date:
Subject: pg_dump --if-exists --clean when drop index that is partition of a partitioned index
Next
From: Daniil Davydov
Date:
Subject: Re: Accessing an invalid pointer in BufferManagerRelation structure