sql/pgq: allow external ticker to specify tick_time
authorMarko Kreen <markokr@gmail.com>
Wed, 23 Apr 2008 15:01:09 +0000 (15:01 +0000)
committerMarko Kreen <markokr@gmail.com>
Wed, 23 Apr 2008 15:01:09 +0000 (15:01 +0000)
sql/pgq/functions/pgq.ticker.sql

index 9489d195bb55c89f5d68076865707362830f3df5..598f43ecd0954a28dc8fcb545f283200e4975611 100644 (file)
@@ -1,11 +1,9 @@
-create or replace function pgq.ticker(i_queue_name text, i_tick_id bigint)
+create or replace function pgq.ticker(i_queue_name text, i_tick_id bigint, i_orig_timestamp timestamptz)
 returns bigint as $$
 -- ----------------------------------------------------------------------
--- Function: pgq.ticker(2)
---
---     Insert a tick with a particular tick_id.
+-- Function: pgq.ticker(3)
 --
---     For external tickers.
+--     External ticker: Insert a tick with a particular tick_id and timestamp.
 --
 -- Parameters:
 --     i_queue_name     - Name of the queue
@@ -15,18 +13,37 @@ returns bigint as $$
 --     Tick id.
 -- ----------------------------------------------------------------------
 begin
-    insert into pgq.tick (tick_queue, tick_id)
-    select queue_id, i_tick_id
+    insert into pgq.tick (tick_queue, tick_id, tick_time)
+    select queue_id, i_tick_id, i_orig_timestamp
         from pgq.queue
         where queue_name = i_queue_name
           and queue_external_ticker;
     if not found then
-        raise exception 'queue not found';
+        raise exception 'queue not found or external ticker disabled: %', i_queue_name;
     end if;
     return i_tick_id;
 end;
 $$ language plpgsql security definer; -- unsure about access
 
+create or replace function pgq.ticker(i_queue_name text, i_tick_id bigint)
+returns bigint as $$
+-- ----------------------------------------------------------------------
+-- Function: pgq.ticker(2)
+--
+--     External ticker: insert a tick with a particular tick_id.
+--
+-- Parameters:
+--     i_queue_name     - Name of the queue
+--     i_tick_id        - Id of new tick.
+--
+-- Returns:
+--     Tick id.
+-- ----------------------------------------------------------------------
+begin
+    return pgq.ticker(i_queue_name, i_tick_id, now());
+end;
+$$ language plpgsql security definer; -- unsure about access
+
 create or replace function pgq.ticker(i_queue_name text)
 returns bigint as $$
 -- ----------------------------------------------------------------------