1.50.  dropnode( integer )

Propriétés de la fonction
Langage: PLPGSQL
Type du code retour: bigint

Génère un événement DROP_NODE pour supprimer le nœud node_id de la réplication.

declare
        p_no_id                 alias for $1;
        v_node_row              record;
begin
        -- ----
        -- Grab the central configuration lock
        -- ----
        lock table sl_config_lock;

        -- ----
        -- Check that this got called on a different node
        -- ----
        if p_no_id = getLocalNodeId('_schemadoc') then
                raise exception 'Slony-I: DROP_NODE cannot initiate on the dropped node';
        end if;

        select * into v_node_row from sl_node
                        where no_id = p_no_id
                        for update;
        if not found then
                raise exception 'Slony-I: unknown node ID %', p_no_id;
        end if;

        -- ----
        -- Make sure we do not break other nodes subscriptions with this
        -- ----
        if exists (select true from sl_subscribe
                        where sub_provider = p_no_id)
        then
                raise exception 'Slony-I: Node % is still configured as a data provider',
                                p_no_id;
        end if;

        -- ----
        -- Make sure no set originates there any more
        -- ----
        if exists (select true from sl_set
                        where set_origin = p_no_id)
        then
                raise exception 'Slony-I: Node % is still origin of one or more sets',
                                p_no_id;
        end if;

        -- ----
        -- Call the internal drop functionality and generate the event
        -- ----
        perform dropNode_int(p_no_id);
        return  createEvent('_schemadoc', 'DROP_NODE',
                                                                        p_no_id);
end;