summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Kreen2011-06-28 13:38:47 +0000
committerMarko Kreen2011-06-29 07:11:05 +0000
commitc63c5f332fd6c033ff89b49c919e3f232479822b (patch)
treeed66edfac11b16c5c0ed267ca8246ab4cd5ce9e1
parentc3374f5e733dfbf20e31feaa83203d531a77e5b9 (diff)
pgq_coop.register_subconsumer: make sure main consumer exists
-rw-r--r--sql/pgq_coop/functions/pgq_coop.register_subconsumer.sql4
-rw-r--r--sql/pgq_coop/sql/pgq_coop_test.sql3
2 files changed, 5 insertions, 2 deletions
diff --git a/sql/pgq_coop/functions/pgq_coop.register_subconsumer.sql b/sql/pgq_coop/functions/pgq_coop.register_subconsumer.sql
index 422e2a51..1a2de406 100644
--- a/sql/pgq_coop/functions/pgq_coop.register_subconsumer.sql
+++ b/sql/pgq_coop/functions/pgq_coop.register_subconsumer.sql
@@ -26,7 +26,9 @@ declare
r record;
begin
_subcon_name := i_consumer_name || '.' || i_subconsumer_name;
- -- er... shouldn't we lock the subscription table?
+
+ -- make sure main consumer exists
+ perform pgq.register_consumer(i_queue_name, i_consumer_name);
-- just go and register the subconsumer as a regular consumer
_subcon_result := pgq.register_consumer(i_queue_name, _subcon_name);
diff --git a/sql/pgq_coop/sql/pgq_coop_test.sql b/sql/pgq_coop/sql/pgq_coop_test.sql
index 651e9667..2a6ae616 100644
--- a/sql/pgq_coop/sql/pgq_coop_test.sql
+++ b/sql/pgq_coop/sql/pgq_coop_test.sql
@@ -9,7 +9,7 @@ select pgq.create_queue('testqueue');
update pgq.queue set queue_ticker_max_count = 1 where queue_name = 'testqueue';
-- register
-select pgq.register_consumer('testqueue', 'maincons');
+select pgq_coop.register_subconsumer('testqueue', 'maincons', 'subcons1');
select pgq_coop.register_subconsumer('testqueue', 'maincons', 'subcons1');
select pgq_coop.register_subconsumer('testqueue', 'maincons', 'subcons1');
select pgq_coop.register_subconsumer('testqueue', 'maincons', 'subcons2');
@@ -35,6 +35,7 @@ select pgq_coop.next_batch('testqueue', 'maincons', 'subcons2');
select pgq_coop.finish_batch(2);
-- test takeover
+select pgq_coop.next_batch('testqueue', 'maincons', 'subcons2', '1 hour');
update pgq.subscription set sub_active = '2005-01-01' where sub_batch is not null;
select pgq_coop.next_batch('testqueue', 'maincons', 'subcons2', '1 hour');