From cb108ae99afe5562e02d29377c098449726a5064 Mon Sep 17 00:00:00 2001 From: Marko Kreen Date: Mon, 3 Mar 2008 16:00:20 +0000 Subject: [PATCH] pgq_set: is_root() functions --- sql/pgq_set/expected/pgq_set.out | 18 ++++++++++++++---- sql/pgq_set/functions/pgq_set.is_root.sql | 23 +++++++++++++++++++++++ sql/pgq_set/sql/pgq_set.sql | 6 +++++- sql/pgq_set/structure/functions.sql | 1 + 4 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 sql/pgq_set/functions/pgq_set.is_root.sql diff --git a/sql/pgq_set/expected/pgq_set.out b/sql/pgq_set/expected/pgq_set.out index cfb58c86..0eedf509 100644 --- a/sql/pgq_set/expected/pgq_set.out +++ b/sql/pgq_set/expected/pgq_set.out @@ -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: 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 index 00000000..864662f7 --- /dev/null +++ b/sql/pgq_set/functions/pgq_set.is_root.sql @@ -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; + diff --git a/sql/pgq_set/sql/pgq_set.sql b/sql/pgq_set/sql/pgq_set.sql index 4b2a6ff2..396d2c66 100644 --- a/sql/pgq_set/sql/pgq_set.sql +++ b/sql/pgq_set/sql/pgq_set.sql @@ -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); + diff --git a/sql/pgq_set/structure/functions.sql b/sql/pgq_set/structure/functions.sql index 6cf0dac5..70b44a91 100644 --- a/sql/pgq_set/structure/functions.sql +++ b/sql/pgq_set/structure/functions.sql @@ -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 -- 2.39.5