1.53.  dropnode_int( integer )

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

Fonction interne pour traiter l'événement DROP_NODE, pour supprimer le nœud node_id de la réplication.

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

        -- ----
        -- If the dropped node is a remote node, clean the configuration
        -- from all traces for it.
        -- ----
        if p_no_id <> getLocalNodeId('_schemadoc') then
                delete from sl_subscribe
                                where sub_receiver = p_no_id;
                delete from sl_listen
                                where li_origin = p_no_id
                                        or li_provider = p_no_id
                                        or li_receiver = p_no_id;
                delete from sl_path
                                where pa_server = p_no_id
                                        or pa_client = p_no_id;
                delete from sl_confirm
                                where con_origin = p_no_id
                                        or con_received = p_no_id;
                delete from sl_event
                                where ev_origin = p_no_id;
                delete from sl_node
                                where no_id = p_no_id;

                return p_no_id;
        end if;

        -- ----
        -- This is us ... deactivate the node for now, the daemon
        -- will call uninstallNode() in a separate transaction.
        -- ----
        update sl_node
                        set no_active = false
                        where no_id = p_no_id;

        -- Rewrite sl_listen table
        perform RebuildListenEntries();

        return p_no_id;
end;