logswitch_start()

Slony-I 2.2.10 Documentation
Prev | Fast Backward | Chapter 8. Schema schemadoc | Fast Forward | Next

# 8.76. logswitch_start()

Function Properties

Language: PLPGSQL

Return Type: integer

logswitch_start() Initiate a log table switch if none is in progress

    DECLARE
    	v_current_status	int4;
    BEGIN
    	-- ----
    	-- Get the current log status.
    	-- ----
    	select last_value into v_current_status from sl_log_status;

    	-- ----
    	-- status = 0: sl_log_1 active, sl_log_2 clean
    	-- Initiate a switch to sl_log_2.
    	-- ----
    	if v_current_status = 0 then
    		perform "pg_catalog".setval('sl_log_status', 3);
    		perform registry_set_timestamp(
    				'logswitch.laststart', now());
    		raise notice 'Slony-I: Logswitch to sl_log_2 initiated';
    		return 2;
    	end if;

    	-- ----
    	-- status = 1: sl_log_2 active, sl_log_1 clean
    	-- Initiate a switch to sl_log_1.
    	-- ----
    	if v_current_status = 1 then
    		perform "pg_catalog".setval('sl_log_status', 2);
    		perform registry_set_timestamp(
    				'logswitch.laststart', now());
    		raise notice 'Slony-I: Logswitch to sl_log_1 initiated';
    		return 1;
    	end if;

    	raise exception 'Previous logswitch still in progress';
    END;

Prev | Home | Next
logswitch_finish() | Up | mergeset(p_add_id integer, p_set_id integer)