From: | Amit Langote <Langote_Amit_f8(at)lab(dot)ntt(dot)co(dot)jp> |
---|---|
To: | Ashutosh Bapat <ashutosh(dot)bapat(at)enterprisedb(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Dropping partitioned table drops a previously detached partition |
Date: | 2017-06-13 04:55:20 |
Message-ID: | cc836835-b3bc-13ac-337c-ac8589fcb624@lab.ntt.co.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi Ashutosh,
On 2017/06/12 20:56, Ashutosh Bapat wrote:
> Hi,
> If we detach a partition and drop the corresponding partitioned table,
> it drops the once-partition now-standalone table as well.
Thanks for the report. Looks like 8b4d582d279d78 missed the bit about
drop_parent_dependency() that you describe in your analysis below.
> The reason for this is as follows
> An AUTO dependency is recorded between a partitioned table and partition. In
> case of inheritance we record a NORMAL dependency between parent
> and child. While
> detaching a partition, we call RemoveInheritance(), which should have taken
> care of removing this dependency. But it removes the dependencies which are
> marked as NORMAL. When we changed the dependency for partitioned case from
> NORMAL to AUTO by updating StoreCatalogInheritance1(), this function was not
> updated. This caused the dependency to linger behind even after
> detaching the
> partition, thus causing the now standalone table (which was once a
> partition)
> to be dropped when the parent partitioned table is dropped. This patch fixes
> RemoveInheritance() to choose appropriate dependency.
>
> Attached patch 0001 to fix this.
Looks good to me. Perhaps, the example in your email could be added as a
test case.
> I see a similar issue-in-baking in case we change the type of
> dependency recorded between a table and the composite type associated
> with using CREATE TABLE ... OF command. 0002 patch addresses the
> potential issue by using a macro while creating and dropping the
> dependency in corresponding functions. There might be more such
> places, but I haven't searched for those.
Might be a good idea too.
Adding this to the open items list.
Thanks,
Amit
From | Date | Subject | |
---|---|---|---|
Next Message | Petr Jelinek | 2017-06-13 05:55:01 | Re: pg_subscription_rel entry can be updated concurrently |
Previous Message | Ashutosh Bapat | 2017-06-13 04:50:23 | Re: PG10 Partitioned tables and relation_is_updatable() |