Re: [PATCH] Add pg_get_trigger_ddl() to retrieve the CREATE TRIGGER statement

jian he <jian.universality@gmail.com>

From: jian he <jian.universality@gmail.com>
To: Philip Alger <paalger0@gmail.com>
Cc: pgsql-hackers@postgresql.org
Date: 2025-10-14T02:28:10Z
Lists: pgsql-hackers
On Tue, Oct 14, 2025 at 9:59 AM Philip Alger <paalger0@gmail.com> wrote:
>
> Hello,
>
> I am submitting 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_trigger_ddl, designed to retrieve the full DDL statement for a trigger. Users can obtain the DDL by providing the table and trigger names, like the following:
>
>     SELECT pg_get_trigger_ddl('my_table_name', 'my_trigger_name');
>
> While pg_get_triggerdef currently provides a similar SQL statement, it requires the trigger's OID, making it less convenient. This function simplifies this by allowing direct input of the table and trigger names, eliminating the need to find the OID beforehand. I opted not to include the "pretty" formatting capability that pg_get_triggerdef offers.
>
> This patch includes documentation, comments, and regression tests, all of which have run successfully.
>

I just did a quick test.

src1=# SELECT pg_get_trigger_ddl(2, 'foo_trigger');
ERROR:  trigger "foo_trigger" for table "(null)" does not exist
src1=# SELECT pg_get_trigger_ddl(0, 'foo_trigger');
ERROR:  trigger "foo_trigger" for table "(null)" does not exist

this error message is use facing, is the above error message what we expected?