pgq_set: is_root() functions
authorMarko Kreen <markokr@gmail.com>
Mon, 3 Mar 2008 16:00:20 +0000 (16:00 +0000)
committerMarko Kreen <markokr@gmail.com>
Mon, 3 Mar 2008 16:00:20 +0000 (16:00 +0000)
sql/pgq_set/expected/pgq_set.out
sql/pgq_set/functions/pgq_set.is_root.sql [new file with mode: 0644]
sql/pgq_set/sql/pgq_set.sql
sql/pgq_set/structure/functions.sql

index cfb58c8692c2998f6f9a9f9fd0f0d98ac758e54c..0eedf509a5eea95ffe63266d9eef0bd21d708692 100644 (file)
@@ -46,15 +46,25 @@ select * from pgq_set.get_member_info('aset');
  node3     | dbname=node3  | f
 (3 rows)
 
-select * from pgq_set.create_node('aset', 'root', 'node1', null, null, null);
+select * from pgq_set.create_node('aset', 'root', 'node1', 'worker', null, null, null);
  ret_code | ret_desc 
 ----------+----------
       200 | Ok
 (1 row)
 
 select * from pgq_set.get_node_info('aset');
- node_type | node_name | queue_name | global_watermark | local_watermark | completed_tick | provider_node | paused | resync | up_to_date | combined_set | combined_type | combined_queue 
------------+-----------+------------+------------------+-----------------+----------------+---------------+--------+--------+------------+--------------+---------------+----------------
- root      | node1     | aset       |                1 |                 |                |               | f      | f      | f          |              |               | 
+ node_type | node_name | queue_name | global_watermark | local_watermark | completed_tick | worker_name | provider_node | provider_location | paused | resync | up_to_date | combined_set | combined_type | combined_queue 
+-----------+-----------+------------+------------------+-----------------+----------------+-------------+---------------+-------------------+--------+--------+------------+--------------+---------------+----------------
+ root      | node1     | aset       |                1 |               1 |                | worker      |               |                   | f      | f      | f          |              |               | 
 (1 row)
 
+select * from pgq_set.is_root('q');
+ERROR:  set does not exist: q
+select * from pgq_set.is_root('aset');
+ is_root 
+---------
+ t
+(1 row)
+
+select * from pgq_set.is_root(null);
+ERROR:  set does not exist: <NULL>
diff --git a/sql/pgq_set/functions/pgq_set.is_root.sql b/sql/pgq_set/functions/pgq_set.is_root.sql
new file mode 100644 (file)
index 0000000..864662f
--- /dev/null
@@ -0,0 +1,23 @@
+create or replace function pgq_set.is_root(i_set_name text)
+returns bool as $$
+-- ----------------------------------------------------------------------
+-- Function: pgq_set.is_root(1)
+--
+--      Checs if node is root.
+--
+-- Parameters:
+--      i_set_name  - set name
+-- ----------------------------------------------------------------------
+declare
+    res bool;
+begin
+    select n.node_type = 'root' into res
+      from pgq_set.set_info n
+      where n.set_name = i_set_name;
+    if not found then
+        raise exception 'set does not exist: %', i_set_name;
+    end if;
+    return res;
+end;
+$$ language plpgsql;
+
index 4b2a6ff25f9be50bbf664366850d7590a5f2ec6b..396d2c66c813e2f66eab37fd2fe14279b7c18a0b 100644 (file)
@@ -2,7 +2,6 @@
 \set ECHO none
 \i ../txid/txid.sql
 \i ../pgq/pgq.sql
-\i ../londiste/londiste.sql
 \i structure/pgq_set.sql
 \i structure/functions.sql
 \set ECHO all
@@ -19,3 +18,8 @@ select * from pgq_set.get_member_info('aset');
 select * from pgq_set.create_node('aset', 'root', 'node1', 'worker', null, null, null);
 
 select * from pgq_set.get_node_info('aset');
+
+select * from pgq_set.is_root('q');
+select * from pgq_set.is_root('aset');
+select * from pgq_set.is_root(null);
+
index 6cf0dac5b7bb2e89d916792939e3a6e2c044661e..70b44a918770f8e2e6e2d286690ccbfffd39d592 100644 (file)
@@ -13,6 +13,7 @@
 
 -- Group: Node Info
 \i functions/pgq_set.get_node_info.sql
+\i functions/pgq_set.is_root.sql
 
 -- Group: Watermark tracking
 \i functions/pgq_set.set_subscriber_watermark.sql