Re: MERGE PARTITIONS and DEPENDS ON EXTENSION.

From: Matheus Alcantara <matheusssilv97(at)gmail(dot)com>
To: Kirill Reshke <reshkekirill(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: MERGE PARTITIONS and DEPENDS ON EXTENSION.
Date: 2026-03-11 15:12:49
Message-ID: 31d04a1b-c0cb-4e6f-a344-0db048a3b673@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On 10/03/26 14:53, Kirill Reshke wrote:
> Today, while reviewing another patch, I spotted PostgreSQL behaviour
> which I cannot tell if is correct.
>
> -- create relation
> reshke=# create table pt (i int) partition by range ( i);
> CREATE TABLE
>
> -- create partitions.
> reshke=# create table pt1 partition of pt for values from ( 1 ) to (2) ;
> CREATE TABLE
> reshke=# create table pt2 partition of pt for values from ( 2 ) to (3) ;
> CREATE TABLE
>
> -- manually add dependency on extension.
> reshke=# alter index pt1_i_idx depends on extension btree_gist ;
> ALTER INDEX
> reshke=# alter index pt2_i_idx depends on extension btree_gist ;
> ALTER INDEX
>
> At this point, `drop extension btree_gist` fails due to existing
> dependencies. However, after `alter table pt merge partitions ( pt1 ,
> pt2 ) into pt3;` there are no dependencies, and drop extension
> executes successfully.
>
> My first impression was that there is no issue as the user created a
> new database object, so should manually add dependency on extension.
> However I am not 100% in this reasoning.
>
> Any thoughts?
>

I'm also not sure if it's correct to assume that the dependency should
be manually added after a partition is merged or splited but I was
checking ATExecMergePartitions() and ATExecSplitPartition() and I
think that it's not complicated to implement this.

IIUC we just need to collect the extension dependencies before an
index is detached on MERGE and SPLIT operations and then apply the
dependency after the index is created on the new merged/splited
partition. The attached patch implement this.

Note that I'm using two different extensions for partition_merge and
partition_split tests because I was having deadlock issues when
running these tests in parallel using the same extension as a dependency.

--
Matheus Alcantara
EDB: https://www.enterprisedb.com

Attachment Content-Type Size
v1-0001-Preserve-extension-dependencies-on-indexes-during.patch text/plain 17.9 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2026-03-11 15:17:39 Re: n_dead_tup could be way off just after a vacuum
Previous Message Xuneng Zhou 2026-03-11 15:11:23 Re: Streamify more code paths