declare
p_pa_server alias for $1;
p_pa_client alias for $2;
v_row record;
begin
-- ----
-- Grab the central configuration lock
-- ----
lock table sl_config_lock;
-- ----
-- There should be no existing subscriptions. Auto unsubscribing
-- is considered too dangerous.
-- ----
for v_row in select sub_set, sub_provider, sub_receiver
from sl_subscribe
where sub_provider = p_pa_server
and sub_receiver = p_pa_client
loop
raise exception
'Slony-I: Path cannot be dropped, subscription of set % needs it',
v_row.sub_set;
end loop;
-- ----
-- Drop all sl_listen entries that depend on this path
-- ----
for v_row in select li_origin, li_provider, li_receiver
from sl_listen
where li_provider = p_pa_server
and li_receiver = p_pa_client
loop
perform dropListen(
v_row.li_origin, v_row.li_provider, v_row.li_receiver);
end loop;
-- ----
-- Now drop the path and create the event
-- ----
perform dropPath_int(p_pa_server, p_pa_client);
-- Rewrite sl_listen table
perform RebuildListenEntries();
return createEvent ('_schemadoc', 'DROP_PATH',
p_pa_server::text, p_pa_client::text);
end; |