Re: [PATCH] Add pg_get_subscription_ddl() function

From: Vaibhav Dalvi <vaibhav(dot)dalvi(at)enterprisedb(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Cc: Vaibhav Dalvi <vaibhav(dot)dalvi(at)enterprisedb(dot)com>
Subject: Re: [PATCH] Add pg_get_subscription_ddl() function
Date: 2025-11-06 14:58:31
Message-ID: CA+vB=AFHtLmW-6aRCNFUCB2q8=WfbU98fpLyvuJmz-QBOhXKnw@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi Hackers,

Please find the revised patch for the `pg_get_subscription_ddl()` function
attached.

Based on feedback, this version of the function now supports calling the
DDL retrieval
using either the subscription name or the OID, as shown in the examples
below:

```sql
postgres=# SELECT pg_get_subscription_ddl('testsub1');

pg_get_subscription_ddl
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE SUBSCRIPTION testsub1 CONNECTION 'dbname=db_doesnotexist'
PUBLICATION "testpub1" WITH (connect = false, slot_name = 'testsub1',
enabled = false, binary = false, streaming = parallel, synchronous_commit =
off, two_phase = off, disable_on_error = off, password_required = on,
run_as_owner = off, origin = any, failover = off, retain_dead_tuples = off,
max_retention_duration = 0);
(1 row)

postgres=# SELECT pg_get_subscription_ddl(16384);

pg_get_subscription_ddl
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE SUBSCRIPTION testsub1 CONNECTION 'dbname=db_doesnotexist'
PUBLICATION "testpub1" WITH (connect = false, slot_name = 'testsub1',
enabled = false, binary = false, streaming = parallel, synchronous_commit =
off, two_phase = off, disable_on_error = off, password_required = on,
run_as_owner = off, origin = any, failover = off, retain_dead_tuples = off,
max_retention_duration = 0);
(1 row)
```

I request your review of the updated patch.

Regards,
Vaibhav Dalvi
EnterpriseDB

On Thu, Nov 6, 2025 at 7:26 PM Vaibhav Dalvi <vaibhav(dot)dalvi(at)enterprisedb(dot)com>
wrote:

> Hi Hackers,
>
> Please find the revised patch for the `pg_get_subscription_ddl()` function
> attached.
>
> Based on feedback, this version of the function now supports calling the
> DDL retrieval
> using either the subscription name or the OID, as shown in the examples
> below:
>
> ```sql
> postgres=# SELECT pg_get_subscription_ddl('testsub1');
>
> pg_get_subscription_ddl
>
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> CREATE SUBSCRIPTION testsub1 CONNECTION 'dbname=db_doesnotexist'
> PUBLICATION "testpub1" WITH (connect = false, slot_name = 'testsub1',
> enabled = false, binary = false, streaming = parallel, synchronous_commit =
> off, two_phase = off, disable_on_error = off, password_required = on,
> run_as_owner = off, origin = any, failover = off, retain_dead_tuples = off,
> max_retention_duration = 0);
> (1 row)
>
> postgres=# SELECT pg_get_subscription_ddl(16384);
>
> pg_get_subscription_ddl
>
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> CREATE SUBSCRIPTION testsub1 CONNECTION 'dbname=db_doesnotexist'
> PUBLICATION "testpub1" WITH (connect = false, slot_name = 'testsub1',
> enabled = false, binary = false, streaming = parallel, synchronous_commit =
> off, two_phase = off, disable_on_error = off, password_required = on,
> run_as_owner = off, origin = any, failover = off, retain_dead_tuples = off,
> max_retention_duration = 0);
> (1 row)
> ```
>
> I request your review of the updated patch.
>
> Regards,
> Vaibhav Dalvi
> EnterpriseDB
>
> On Fri, Oct 31, 2025 at 4:27 PM Vaibhav Dalvi <
> vaibhav(dot)dalvi(at)enterprisedb(dot)com> wrote:
>
>> Hi Hackers,
>>
>> I am submitting a patch as a part of a larger Retail DDL functions
>> project described by Andrew Dunstan here
>> <https://www.postgresql.org/message-id/945db7c5-be75-45bf-b55b-cb1e56f2e3e9%40dunslane.net>
>> . This patch creates a
>> function pg_get_subscription_ddl, designed to retrieve the full DDL
>> statement for a subscription. Users can obtain the DDL by providing
>> the subscription name, like so:
>>
>> SELECT pg_get_subscription_ddl('testsub1');
>>
>>
>> pg_get_subscription_ddl
>>
>>
>>
>>
>> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>> CREATE SUBSCRIPTION testsub1 CONNECTION 'dbname=db_doesnotexist'
>> PUBLICATION "testpub1" WITH (connect = false, slot_name = 'testsub1',
>> enabled = false, binary = false, streaming = parallel, synchronous_commit =
>> off, two_phase = off, disable_on_error = off, password_required = on,
>> run_as_owner = off, origin = any, failover = off, retain_dead_tuples = off,
>> max_retention_duration = 0);
>> (1 row)
>>
>> This patch includes documentation, comments, and regression tests.
>>
>> Regards,
>> Vaibhav Dalvi
>> EnterpriseDB
>>
>>

Attachment Content-Type Size
v2-Add-pg_get_subscription_ddl-function.patch application/octet-stream 27.4 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2025-11-06 15:11:03 Re: Use stack-allocated StringInfoData
Previous Message Bryan Green 2025-11-06 14:56:14 Re: [Patch] Windows relation extension failure at 2GB and 4GB