Wed Nov 10 23:34:13 PST 2004
- Previous message: [Slony1-commit] By cbbrowne: Fixed typos, added further schema documentation to C
- Next message: [Slony1-commit] By cbbrowne: Add in debugging code, comment out actual execution of
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Log Message:
-----------
Fixes to RebuildListenEntries() as it was adding sl_listen entries not
yet supported by sl_path entries.
Modified Files:
--------------
slony1-engine/src/backend:
slony1_funcs.sql (r1.37 -> r1.38)
-------------- next part --------------
Index: slony1_funcs.sql
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/backend/slony1_funcs.sql,v
retrieving revision 1.37
retrieving revision 1.38
diff -Lsrc/backend/slony1_funcs.sql -Lsrc/backend/slony1_funcs.sql -u -w -r1.37 -r1.38
--- src/backend/slony1_funcs.sql
+++ src/backend/slony1_funcs.sql
@@ -1348,7 +1348,7 @@
'Process DROP_PATH event to drop path from pa_server to pa_client';
-- ----------------------------------------------------------------------
--- FUNCTION storeListen (li_origin, li_provider, li_receiver)
+-- FUNCTION storeListen (origin, provider, receiver)
--
-- Generate the STORE_LISTEN event.
-- ----------------------------------------------------------------------
@@ -1356,13 +1356,13 @@
returns bigint
as '
declare
- p_li_origin alias for $1;
- p_li_provider alias for $2;
- p_li_receiver alias for $3;
+ p_origin alias for $1;
+ p_provider alias for $2;
+ p_receiver alias for $3;
begin
- perform @NAMESPACE at .storeListen_int (p_li_origin, p_li_provider, p_li_receiver);
+ perform @NAMESPACE at .storeListen_int (p_origin, p_provider, p_receiver);
return @NAMESPACE at .createEvent (''_ at CLUSTERNAME@'', ''STORE_LISTEN'',
- p_li_origin, p_li_provider, p_li_receiver);
+ p_origin, p_provider, p_receiver);
end;
' language plpgsql
called on null input;
@@ -1790,12 +1790,7 @@
perform @NAMESPACE at .moveSet_int(p_set_id, v_local_node_id,
p_new_origin);
- for v_sub_row in select sub_provider, sub_receiver
- from @NAMESPACE at .sl_subscribe
- where sub_set = p_set_id
- loop
- perform @NAMESPACE at .GenerateListensOnSubscribe(v_sub_row.sub_provider, v_sub_row.sub_receiver)
- done;
+ perform @NAMESPACE at .RebuildListenEntries();
-- ----
-- At this time we hold access exclusive locks for every table
@@ -3665,7 +3660,7 @@
-- ----
-- Submit listen management events
-- ----
- perform @NAMESPACE at .GenerateListensOnSubscribe(p_sub_provider, p_sub_receiver);
+ perform @NAMESPACE at .RebuildListenEntries();
-- ----
-- Create the SUBSCRIBE_SET event
@@ -4513,41 +4508,52 @@
as '
declare
v_row record;
- v_row2 record;
- v_row3 record;
v_origin int4;
v_receiver int4;
v_done boolean;
begin
+ return 0;
-- 0. Drop out listens
delete from @NAMESPACE at .sl_listen;
-- 1. Add listens pointed out by subscriptions - sl_listen
- select @NAMESPACE at .storelisten(sub_provider, sub_provider, sub_receiver)
- from @NAMESPACE at .sl_subscribe;
+ -- @NAMESPACE at .storelisten(origin, provider, receiver)
+ perform @NAMESPACE at .storelisten(sub_provider, sub_provider, sub_receiver)
+ from @NAMESPACE at .sl_subscribe s
+ where exists (select true from @NAMESPACE at .sl_path p where
+ p.pa_server = s.sub_provider and
+ p.pa_client = s.sub_receiver);
-- 2. Add direct listens pointed out in sl_path
- select @NAMESPACE at .storelisten(pa_server, pa_server, pa_client)
+ perform @NAMESPACE at .storelisten(pa_server, pa_server, pa_client)
from @NAMESPACE at .sl_path path
where not exists (select true from @NAMESPACE at .sl_listen listen
where path.pa_server = listen.li_origin and
- path.pa_client = listen.li_reciever);
+ path.pa_client = listen.li_receiver);
-- 3. Iterate until we cannot iterate any more...
-- Add in indirect listens based on what is in sl_listen and sl_path
v_done := ''f'';
while not v_done loop
- select @NAMESPACE at .storelisten(li_origin,pa_server,pa_client)
+ v_done := ''t'';
+ for v_row in select li_origin, pa_server, pa_client
from @NAMESPACE at .sl_path path, @NAMESPACE at .sl_listen listen
where
- li_reciever = pa_server
+ li_receiver = pa_server
and not exists (select true from @NAMESPACE at .sl_listen listen2
- where listen2.li_origin = listen.origin and
- listen2.li_reciever = path.pa_client);
-
+ where listen2.li_origin = listen.li_origin and
+ listen2.li_receiver = path.pa_client)
+ and exists (select true from @NAMESPACE at .sl_path p
+ where p.pa_server = path.pa_server and
+ p.pa_client = path.pa_client )
+ loop
+ perform @NAMESPACE at .storelisten(v_row.li_origin,v_row.pa_server,v_row.pa_client);
+ v_done := ''f'';
+ end loop;
end loop;
+ return 0;
end;
' language plpgsql;
- Previous message: [Slony1-commit] By cbbrowne: Fixed typos, added further schema documentation to C
- Next message: [Slony1-commit] By cbbrowne: Add in debugging code, comment out actual execution of
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-commit mailing list