clonenodefinish(p_no_provider integer, p_no_id integer)

8.36. clonenodefinish(p_no_provider integer, p_no_id integer)

Function Properties

Language: PLPGSQL

Return Type: integer

Internal part of cloneNodePrepare().

declare
	v_row			record;
begin
	-- ----
	-- Grab the central configuration lock
	-- ----
	lock table sl_config_lock;

	perform "pg_catalog".setval('sl_local_node_id', p_no_id);
	perform resetSession();
	for v_row in select sub_set from sl_subscribe
			where sub_receiver = p_no_id
	loop
		perform updateReloid(v_row.sub_set, p_no_id);
	end loop;

	perform RebuildListenEntries();

	delete from sl_confirm
		where con_received = p_no_id;
	insert into sl_confirm
		(con_origin, con_received, con_seqno, con_timestamp)
		select con_origin, p_no_id, con_seqno, con_timestamp
		from sl_confirm
		where con_received = p_no_provider;
	insert into sl_confirm
		(con_origin, con_received, con_seqno, con_timestamp)
		select p_no_provider, p_no_id, 
				(select max(ev_seqno) from sl_event
					where ev_origin = p_no_provider), current_timestamp;

	return 0;
end;