pgq_node.drop_node: fix bugs in recent changes
authorMarko Kreen <markokr@gmail.com>
Wed, 7 Dec 2011 11:50:47 +0000 (13:50 +0200)
committerMarko Kreen <markokr@gmail.com>
Wed, 7 Dec 2011 11:50:47 +0000 (13:50 +0200)
Add function to regtests to avoid such problems in future.

sql/pgq_node/expected/pgq_node_test.out
sql/pgq_node/functions/pgq_node.drop_node.sql
sql/pgq_node/functions/pgq_node.unregister_location.sql
sql/pgq_node/sql/pgq_node_test.sql

index fe0b60e8cb30ff3cada3f0319a0ddf7b8d3f5118..1e69d3d93885700109529c4b8595cbd28bdbf1b9 100644 (file)
@@ -420,4 +420,58 @@ select * from pgq_node.get_worker_state('mqueue');
       100 | Ok       | leaf      | node2     |             13 | node1         | dbname=node1      | f      | f        |           | node2_worker |                  |              13 |                 | aqueue         | branch
 (1 row)
 
+select * from pgq_node.drop_node('asd', 'asd');
+ ret_code |      ret_note      
+----------+--------------------
+      304 | No such queue: asd
+(1 row)
+
+select * from pgq_node.drop_node('mqueue', 'node3');
+ ret_code |   ret_note   
+----------+--------------
+      200 | Node dropped
+(1 row)
+
+select * from pgq_node.drop_node('mqueue', 'node2');
+ ret_code |   ret_note   
+----------+--------------
+      200 | Node dropped
+(1 row)
+
+select * from pgq_node.drop_node('mqueue', 'node1');
+ ret_code |       ret_note        
+----------+-----------------------
+      304 | No such queue: mqueue
+(1 row)
+
+select * from pgq_node.drop_node('aqueue', 'node5');
+ ret_code |   ret_note   
+----------+--------------
+      200 | Node dropped
+(1 row)
+
+select * from pgq_node.drop_node('aqueue', 'node4');
+ ret_code |   ret_note   
+----------+--------------
+      200 | Node dropped
+(1 row)
+
+select * from pgq_node.drop_node('aqueue', 'node1');
+ ret_code |   ret_note   
+----------+--------------
+      200 | Node dropped
+(1 row)
+
+select * from pgq_node.drop_node('aqueue', 'node2');
+ ret_code |       ret_note        
+----------+-----------------------
+      304 | No such queue: aqueue
+(1 row)
+
+select * from pgq_node.drop_node('aqueue', 'node3');
+ ret_code |       ret_note        
+----------+-----------------------
+      304 | No such queue: aqueue
+(1 row)
+
 \q
index 631e365ba87808415d7e56c2c94e790a169fc67c..19c291639361d95c9d060738ba928b19f8892c80 100644 (file)
@@ -69,7 +69,7 @@ begin
 
     -- let the unregister_location send event if needed
     select f.ret_code, f.ret_note
-        from pgq_node.unregister_location(i_queue_name, i_node_name)
+        from pgq_node.unregister_location(i_queue_name, i_node_name) f
         into ret_code, ret_note;
 
     select 200, 'Node dropped' into ret_code, ret_note;
index 7314c5aec17169a505adc3aa2ad78eb1336fea26..787250563e391ba7a5224317c1a9b86868fee928 100644 (file)
@@ -29,8 +29,13 @@ declare
     sub          record;
     node         record;
 begin
-    select * into node from pgq_node.node_info
-      where queue_name = i_queue_name;
+    select n.node_name, n.node_type, s.provider_node
+        into node
+        from pgq_node.node_info n
+        left join pgq_node.local_state s
+        on (s.consumer_name = n.worker_name
+            and s.queue_name = n.queue_name)
+        where n.queue_name = i_queue_name;
     if found then
         if node.node_name = i_node_name then
             select 403, 'Cannot drop nodes own location' into ret_code, ret_note;
index 2999ad44d78880f2a2e166289ad350a662a67d9a..9f01271803e8c2b2cb19b4c07a37880ac3911725 100644 (file)
@@ -98,6 +98,16 @@ select * from pgq_node.register_location('mqueue', 'node3', 'dbname=node3', fals
 select * from pgq_node.create_node('mqueue', 'leaf', 'node2', 'node2_worker', 'node1', 13, 'aqueue');
 select * from pgq_node.get_worker_state('mqueue');
 
+select * from pgq_node.drop_node('asd', 'asd');
+select * from pgq_node.drop_node('mqueue', 'node3');
+select * from pgq_node.drop_node('mqueue', 'node2');
+select * from pgq_node.drop_node('mqueue', 'node1');
+select * from pgq_node.drop_node('aqueue', 'node5');
+select * from pgq_node.drop_node('aqueue', 'node4');
+select * from pgq_node.drop_node('aqueue', 'node1');
+select * from pgq_node.drop_node('aqueue', 'node2');
+select * from pgq_node.drop_node('aqueue', 'node3');
+
 \q
 
 select * from pgq_node.subscribe_node('aqueue', 'node2');