Christopher B. Browne's Home Page
cbbrowne@acm.org

8.54. dropnode_int(integer)

Function Properties

PLPGSQLinteger
internal function to process DROP_NODE event to drop node node_id from replication
    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;

Google
Contact me at cbbrowne@acm.org