Re: BUG #18500: Detaching a partition with an index manually attached to the parent's index triggers Assert

Поиск
Список
Период
Сортировка
От Tender Wang
Тема Re: BUG #18500: Detaching a partition with an index manually attached to the parent's index triggers Assert
Дата
Msg-id CAHewXNnZhGT1eM58-=5MQQ=moJ4hjqd3aDscxPSmB+SzwN3oUQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: BUG #18500: Detaching a partition with an index manually attached to the parent's index triggers Assert  (Michael Paquier <michael@paquier.xyz>)
Ответы Re: BUG #18500: Detaching a partition with an index manually attached to the parent's index triggers Assert  (Michael Paquier <michael@paquier.xyz>)
Список pgsql-bugs
Hi, all

I found another crash case as below:
CREATE TABLE t (a integer) PARTITION BY RANGE (a);
CREATE TABLE tp (a integer PRIMARY KEY);
CREATE UNIQUE INDEX t_a_idx ON t (a);
ALTER TABLE t ATTACH PARTITION tp FOR VALUES FROM (0) TO (1000);
ALTER TABLE t DETACH PARTITION tp;

If index of parent is not created by adding constraint, it will trigger assert fail.

I look through the  DetachPartitionFinalize(). The logic of detach indexes finds a pg_inherits tuple,
then it goes to detach the constraint between parent and child. But in AttachPartitionEnsureIndexes(),
it check whether constraint of parent is valid or not. If it is valid, then the code will build constraint
connection between parent and child.

I think we can do this check in DetachPartitionFinalize(). We skip to detach the constraint if parent actually
does not have one. I try to fix theses issue in attached patch.

--
Tender Wang
OpenPie:  https://en.openpie.com/
Вложения

В списке pgsql-bugs по дате отправления:

Предыдущее
От: "David G. Johnston"
Дата:
Сообщение: Re: BUG #18502: Upsert on view returns 42P10 error when condition is an expression
Следующее
От: Michael Paquier
Дата:
Сообщение: Re: BUG #18500: Detaching a partition with an index manually attached to the parent's index triggers Assert