Re: BUG #18000: Access method used by matview can be dropped leaving broken matview

Поиск
Список
Период
Сортировка
От Nathan Bossart
Тема Re: BUG #18000: Access method used by matview can be dropped leaving broken matview
Дата
Msg-id 20230627170348.GA1461334@nathanxps13
обсуждение исходный текст
Ответ на Re: BUG #18000: Access method used by matview can be dropped leaving broken matview  (Michael Paquier <michael@paquier.xyz>)
Ответы Re: BUG #18000: Access method used by matview can be dropped leaving broken matview  (Michael Paquier <michael@paquier.xyz>)
Список pgsql-bugs
On Tue, Jun 27, 2023 at 01:50:15PM +0900, Michael Paquier wrote:
> In order to do something about that, I think that we should just do
> something similar to schema changes where we switch the dependency
> with a changeDependencyFor(), and that the best spot is
> swap_relation_files(), where the pg_class tuple of the old relation
> has its persistence, tablespace and AM updated according to the
> rewrite.  One reason is that there were discussions where it could
> make sense to update a table AM on CLUSTER or VACUUM, for example, so
> that would cover this spot, but that's only hypothetical currently.

Agreed.

> The path of a relation rewrite cares also about tablespaces, however
> only shared dependency entries for relations without storage matter,
> so as a tablespace is not dropped when it should not.  That's where
> SetRelationTableSpace() does this work.

I looked into the tablespace path, too.  Since materialized views have
storage, we don't have to worry about ALTER MATERIALIZED VIEW SET
TABLESPACE losing the dependency records (that IIUC won't exist anyway), as
dropping the tablespace will fail because it won't be empty.  This feels
kind of fragile, but I don't have a better proposal at the moment.

> (Note that a patch has been recently proposed to add AMs to
> partitioned tables, which I think is also impacted by the same issue,
> and we would need to be more careful in this second case, but that's
> work for 17~).

I haven't looked at the patch, but assuming it's not calling
finish_heap_swap(), it might be okay.  But it does seem prudent to check
that the dependency records are handled correctly.

-- 
Nathan Bossart
Amazon Web Services: https://aws.amazon.com



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

Предыдущее
От: PG Bug reporting form
Дата:
Сообщение: BUG #18002: Duplicate entries of row possible even after having primary key
Следующее
От: Andres Freund
Дата:
Сообщение: Re: BUG #18000: Access method used by matview can be dropped leaving broken matview