Re: How to drop a subscription inside a stored procedure?
От | Adrian Klaver |
---|---|
Тема | Re: How to drop a subscription inside a stored procedure? |
Дата | |
Msg-id | df9a3d36-25a4-d8a4-ae4c-8f2b6f6e49a9@aklaver.com обсуждение исходный текст |
Ответ на | How to drop a subscription inside a stored procedure? (Thomas Kellerer <shammat@gmx.net>) |
Ответы |
Re: How to drop a subscription inside a stored procedure?
|
Список | pgsql-general |
On 6/10/22 05:57, Thomas Kellerer wrote: > I am trying to write a stored procedure (Postgres 13) to enable > non-superusers to re-create a subscription. > > However, the "drop subscription" part results in this error: > > ERROR: DROP SUBSCRIPTION cannot be executed from a function > CONTEXT: SQL statement "drop subscription if exists my_replication" > > I first thought that the initial SELECT to fetch all replicated tables, > starts an implicit transaction, so I removed everything else from the procedure, > including the dynamic SQL. > > But even this very simple implementation: > > create or replace procedure drop_subscription() > as > $$ > begin > drop subscription if exists test_subscription; > end; > $$ > security definer > language plpgsql; > > > fails with that error. > > Is there any way, I can provide a stored procedure to do this? From the docs: https://www.postgresql.org/docs/current/sql-dropsubscription.html "DROP SUBSCRIPTION cannot be executed inside a transaction block if the subscription is associated with a replication slot. (You can use ALTER SUBSCRIPTION to unset the slot.)" I have not tested but you might try the ALTER SUBSCRIPTION first, though note the caveats here: https://www.postgresql.org/docs/current/sql-altersubscription.html > > Regards > Thomas > > -- Adrian Klaver adrian.klaver@aklaver.com
В списке pgsql-general по дате отправления: