1.40.  ddlscript_prepare_int( integer, integer )

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

Fait le travail préparatoire pour un script DDL, restaure les triggers/règles dans leur état original.

declare
        p_set_id                        alias for $1;
        p_only_on_node          alias for $2;
        v_set_origin            int4;
        v_no_id                         int4;
        v_row                           record;
begin
        -- ----
        -- Grab the central configuration lock
        -- ----
        lock table sl_config_lock;

        -- ----
        -- Check that we either are the set origin or a current
        -- subscriber of the set.
        -- ----
        v_no_id := getLocalNodeId('_schemadoc');
        select set_origin into v_set_origin
                        from sl_set
                        where set_id = p_set_id
                        for update;
        if not found then
                raise exception 'Slony-I: set % not found', p_set_id;
        end if;
        if v_set_origin <> v_no_id
                        and not exists (select 1 from sl_subscribe
                                                where sub_set = p_set_id
                                                and sub_receiver = v_no_id)
        then
                return 0;
        end if;

        -- ----
        -- If execution on only one node is requested, check that
        -- we are that node.
        -- ----
        if p_only_on_node > 0 and p_only_on_node <> v_no_id then
                return 0;
        end if;

        -- ----
        -- Restore all original triggers and rules of all sets
        -- ----
        for v_row in select * from sl_table
        loop
                perform alterTableRestore(v_row.tab_id);
        end loop;
        return p_set_id;
end;