1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
create or replace function pgq_node.change_consumer_provider(
in i_queue_name text,
in i_consumer_name text,
in i_new_provider text,
out ret_code int4,
out ret_note text)
as $$
-- ----------------------------------------------------------------------
-- Function: pgq_node.change_consumer_provider(3)
--
-- Change provider for this consumer.
--
-- Parameters:
-- i_queue_name - queue name
-- i_consumer_name - consumer name
-- i_new_provider - node name for new provider
-- Returns:
-- ret_code - error code
-- 200 - ok
-- 404 - no such consumer or new node
-- ret_note - description
-- ----------------------------------------------------------------------
begin
perform 1 from pgq_node.node_location
where queue_name = i_queue_name
and node_name = i_new_provider;
if not found then
select 404, 'New node not found: ' || i_new_provider
into ret_code, ret_note;
return;
end if;
update pgq_node.local_state
set provider_node = i_new_provider,
uptodate = false
where queue_name = i_queue_name
and consumer_name = i_consumer_name;
if not found then
select 404, 'Unknown consumer: ' || i_queue_name || '/' || i_consumer_name
into ret_code, ret_note;
return;
end if;
select 200, 'Consumer provider node set to : ' || i_new_provider
into ret_code, ret_note;
return;
end;
$$ language plpgsql security definer;
|