1.82.  reachablefromnode( integer, integer[] )

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

Trouve tous les nœuds dont <receiver> peut recevoir des événements sans utiliser les nœuds dans <blacklist> comme relai.

declare
        v_node alias for $1 ;
        v_blacklist alias for $2 ;
        v_ignore int4[] ;
        v_reachable_edge_last int4[] ;
        v_reachable_edge_new int4[] default '{}' ;
        v_server record ;
begin
        v_reachable_edge_last := array[v_node] ;
        v_ignore := v_blacklist || array[v_node] ;
        return next v_node ;
        while v_reachable_edge_last != '{}' loop
                v_reachable_edge_new := '{}' ;
                for v_server in select pa_server as no_id
                        from sl_path
                        where pa_client = ANY(v_reachable_edge_last) and pa_server != ALL(v_ignore)
                loop
                        if v_server.no_id != ALL(v_ignore) then
                                v_ignore := v_ignore || array[v_server.no_id] ;
                                v_reachable_edge_new := v_reachable_edge_new || array[v_server.no_id] ;
                                return next v_server.no_id ;
                        end if ;
                end loop ;
                v_reachable_edge_last := v_reachable_edge_new ;
        end loop ;
        return ;
end ;