mirror of
https://github.com/postgres/postgres.git
synced 2025-07-07 00:36:50 +03:00
Detach constraints when partitions are detached
I (Álvaro) forgot to do this in eb7ed3f306
, leading to undroppable
constraints after partitions are detached. Repair.
Reported-by: Amit Langote
Author: Amit Langote
Discussion: https://postgr.es/m/c1c9b688-b886-84f7-4048-1e4ebe9b1d06@lab.ntt.co.jp
This commit is contained in:
@ -1414,3 +1414,18 @@ DETAIL: Key (a)=(4) already exists.
|
||||
create unique index on covidxpart (b) include (a); -- should fail
|
||||
ERROR: insufficient columns in UNIQUE constraint definition
|
||||
DETAIL: UNIQUE constraint on table "covidxpart" lacks column "a" which is part of the partition key.
|
||||
-- check that detaching a partition also detaches the primary key constraint
|
||||
create table parted_pk_detach_test (a int primary key) partition by list (a);
|
||||
create table parted_pk_detach_test1 partition of parted_pk_detach_test for values in (1);
|
||||
alter table parted_pk_detach_test1 drop constraint parted_pk_detach_test1_pkey; -- should fail
|
||||
ERROR: cannot drop inherited constraint "parted_pk_detach_test1_pkey" of relation "parted_pk_detach_test1"
|
||||
alter table parted_pk_detach_test detach partition parted_pk_detach_test1;
|
||||
alter table parted_pk_detach_test1 drop constraint parted_pk_detach_test1_pkey;
|
||||
drop table parted_pk_detach_test, parted_pk_detach_test1;
|
||||
create table parted_uniq_detach_test (a int unique) partition by list (a);
|
||||
create table parted_uniq_detach_test1 partition of parted_uniq_detach_test for values in (1);
|
||||
alter table parted_uniq_detach_test1 drop constraint parted_uniq_detach_test1_a_key; -- should fail
|
||||
ERROR: cannot drop inherited constraint "parted_uniq_detach_test1_a_key" of relation "parted_uniq_detach_test1"
|
||||
alter table parted_uniq_detach_test detach partition parted_uniq_detach_test1;
|
||||
alter table parted_uniq_detach_test1 drop constraint parted_uniq_detach_test1_a_key;
|
||||
drop table parted_uniq_detach_test, parted_uniq_detach_test1;
|
||||
|
@ -757,3 +757,17 @@ alter table covidxpart attach partition covidxpart4 for values in (4);
|
||||
insert into covidxpart values (4, 1);
|
||||
insert into covidxpart values (4, 1);
|
||||
create unique index on covidxpart (b) include (a); -- should fail
|
||||
|
||||
-- check that detaching a partition also detaches the primary key constraint
|
||||
create table parted_pk_detach_test (a int primary key) partition by list (a);
|
||||
create table parted_pk_detach_test1 partition of parted_pk_detach_test for values in (1);
|
||||
alter table parted_pk_detach_test1 drop constraint parted_pk_detach_test1_pkey; -- should fail
|
||||
alter table parted_pk_detach_test detach partition parted_pk_detach_test1;
|
||||
alter table parted_pk_detach_test1 drop constraint parted_pk_detach_test1_pkey;
|
||||
drop table parted_pk_detach_test, parted_pk_detach_test1;
|
||||
create table parted_uniq_detach_test (a int unique) partition by list (a);
|
||||
create table parted_uniq_detach_test1 partition of parted_uniq_detach_test for values in (1);
|
||||
alter table parted_uniq_detach_test1 drop constraint parted_uniq_detach_test1_a_key; -- should fail
|
||||
alter table parted_uniq_detach_test detach partition parted_uniq_detach_test1;
|
||||
alter table parted_uniq_detach_test1 drop constraint parted_uniq_detach_test1_a_key;
|
||||
drop table parted_uniq_detach_test, parted_uniq_detach_test1;
|
||||
|
Reference in New Issue
Block a user