Add function to regtests to avoid such problems in future.
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
-- 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;
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;
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');