| Slony-I 2.0.3_RC2 Documentation | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 1. Schema schemadoc | Fast Forward | Next |
Function Properties
Language: PLPGSQL
Return Type: SET OF integer
ReachableFromNode(receiver, blacklist) Find all nodes that <receiver> can receive events from without using nodes in <blacklist> as a relay.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 ;