Function Properties
Language: PLPGSQL
Return Type: integer
setDropSequence_int (seq_id) This processes the SET_DROP_SEQUENCE event. On remote nodes that subscribe to the set containing sequence seq_id, drop the sequence from the replication set.declare p_seq_id alias for $1; v_set_id int4; v_local_node_id int4; v_set_origin int4; v_sub_provider int4; v_relkind char; v_sync_row record; begin -- ---- -- Grab the central configuration lock -- ---- lock table sl_config_lock; -- ---- -- Determine set id for this sequence -- ---- select seq_set into v_set_id from sl_sequence where seq_id = p_seq_id; -- ---- -- Ensure sequence exists -- ---- if not found then return 0; end if; -- ---- -- For sets with a remote origin, check that we are subscribed -- to that set. Otherwise we ignore the sequence because it might -- not even exist in our database. -- ---- v_local_node_id := getLocalNodeId('_schemadoc'); select set_origin into v_set_origin from sl_set where set_id = v_set_id; if not found then raise exception 'Slony-I: setDropSequence_int(): set % not found', v_set_id; end if; if v_set_origin != v_local_node_id then select sub_provider into v_sub_provider from sl_subscribe where sub_set = v_set_id and sub_receiver = getLocalNodeId('_schemadoc'); if not found then return 0; end if; end if; -- ---- -- drop the sequence from sl_sequence, sl_seqlog -- ---- delete from sl_seqlog where seql_seqid = p_seq_id; delete from sl_sequence where seq_id = p_seq_id; return p_seq_id; end;