pgq.get_queue_info: report last tick in queue
authorMarko Kreen <markokr@gmail.com>
Fri, 4 Feb 2011 14:59:34 +0000 (16:59 +0200)
committerMarko Kreen <markokr@gmail.com>
Fri, 4 Feb 2011 14:59:34 +0000 (16:59 +0200)
sql/pgq/expected/pgq_core.out
sql/pgq/functions/pgq.get_queue_info.sql
sql/pgq/sql/pgq_core.sql

index 976726d2542778137ee190f7ceefc6368cbce7fc..48c02bd87683ebcfd69e0b600dc062db461aa02a 100644 (file)
@@ -85,11 +85,12 @@ select queue_name, consumer_name, prev_tick_id, tick_id, lag < '30 seconds' as l
 select queue_name, queue_ntables, queue_cur_table, queue_rotation_period,
        queue_switch_time <= now() as switch_time_exists,
        queue_external_ticker, queue_ticker_max_count, queue_ticker_max_lag,
-       queue_ticker_idle_period, ticker_lag < '2 hours' as ticker_lag_exists
+       queue_ticker_idle_period, ticker_lag < '2 hours' as ticker_lag_exists,
+       last_tick_id
   from pgq.get_queue_info() order by 1;
- queue_name | queue_ntables | queue_cur_table | queue_rotation_period | switch_time_exists | queue_external_ticker | queue_ticker_max_count | queue_ticker_max_lag | queue_ticker_idle_period | ticker_lag_exists 
-------------+---------------+-----------------+-----------------------+--------------------+-----------------------+------------------------+----------------------+--------------------------+-------------------
- myqueue    |             3 |               0 | @ 2 hours             | t                  | f                     |                    500 | @ 0                  | @ 0                      | t
+ queue_name | queue_ntables | queue_cur_table | queue_rotation_period | switch_time_exists | queue_external_ticker | queue_ticker_max_count | queue_ticker_max_lag | queue_ticker_idle_period | ticker_lag_exists | last_tick_id 
+------------+---------------+-----------------+-----------------------+--------------------+-----------------------+------------------------+----------------------+--------------------------+-------------------+--------------
+ myqueue    |             3 |               0 | @ 2 hours             | t                  | f                     |                    500 | @ 0                  | @ 0                      | t                 |            2
 (1 row)
 
 select queue_name, consumer_name, lag < '30 seconds' as lag_exists,
index b4a2f3c70bd65c117788c2843802a645205fa62a..fd3c6ad536ca2b45bf623ed1d4604d043afb7ff0 100644 (file)
@@ -1,3 +1,6 @@
+drop function if exists pgq.get_queue_info();
+drop function if exists pgq.get_queue_info(text);
+
 create or replace function pgq.get_queue_info(
     out queue_name                  text,
     out queue_ntables               integer,
@@ -11,7 +14,8 @@ create or replace function pgq.get_queue_info(
     out queue_ticker_idle_period    interval,
     out ticker_lag                  interval,
     out ev_per_sec                  float8,
-    out ev_new                bigint)
+    out ev_new                      bigint,
+    out last_tick_id                bigint)
 returns setof record as $$
 -- ----------------------------------------------------------------------
 -- Function: pgq.get_queue_info(0)
@@ -25,12 +29,12 @@ begin
     for queue_name, queue_ntables, queue_cur_table, queue_rotation_period,
         queue_switch_time, queue_external_ticker, queue_ticker_paused,
         queue_ticker_max_count, queue_ticker_max_lag, queue_ticker_idle_period,
-        ticker_lag, ev_per_sec, ev_new
+        ticker_lag, ev_per_sec, ev_new, last_tick_id
     in select
         f.queue_name, f.queue_ntables, f.queue_cur_table, f.queue_rotation_period,
         f.queue_switch_time, f.queue_external_ticker, f.queue_ticker_paused,
         f.queue_ticker_max_count, f.queue_ticker_max_lag, f.queue_ticker_idle_period,
-        f.ticker_lag, f.ev_per_sec, f.ev_new
+        f.ticker_lag, f.ev_per_sec, f.ev_new, f.last_tick_id
         from pgq.get_queue_info(null) f
     loop
         return next;
@@ -53,7 +57,8 @@ create or replace function pgq.get_queue_info(
     out queue_ticker_idle_period    interval,
     out ticker_lag                  interval,
     out ev_per_sec                  float8,
-    out ev_new                bigint)
+    out ev_new                      bigint,
+    out last_tick_id                bigint)
 returns setof record as $$
 -- ----------------------------------------------------------------------
 -- Function: pgq.get_queue_info(1)
@@ -111,6 +116,7 @@ begin
             ev_per_sec = null;
         end if;
         ev_new = pgq.seq_getval(_queue_event_seq) - _top_tick_event_seq;
+        last_tick_id = _top_tick_id;
         return next;
     end loop;
     return;
index 50878c53609deee8420fc5778e2f623b2556a4a3..533750305bb8d93a7b4ef5e136ed724e604eb2b1 100644 (file)
@@ -21,7 +21,8 @@ select queue_name, consumer_name, prev_tick_id, tick_id, lag < '30 seconds' as l
 select queue_name, queue_ntables, queue_cur_table, queue_rotation_period,
        queue_switch_time <= now() as switch_time_exists,
        queue_external_ticker, queue_ticker_max_count, queue_ticker_max_lag,
-       queue_ticker_idle_period, ticker_lag < '2 hours' as ticker_lag_exists
+       queue_ticker_idle_period, ticker_lag < '2 hours' as ticker_lag_exists,
+       last_tick_id
   from pgq.get_queue_info() order by 1;
 select queue_name, consumer_name, lag < '30 seconds' as lag_exists,
        last_seen < '30 seconds' as last_seen_exists,