pgq: customizable maintenance functions
authorMarko Kreen <markokr@gmail.com>
Wed, 1 Sep 2010 14:28:55 +0000 (17:28 +0300)
committerMarko Kreen <markokr@gmail.com>
Wed, 1 Sep 2010 14:28:55 +0000 (17:28 +0300)
sql/pgq/expected/pgq_core.out
sql/pgq/functions/pgq.maint_rotate_tables.sql
sql/pgq/sql/pgq_core.sql
sql/pgq/structure/func_internal.sql

index 1d0831b50f946694258d5e69766399383f1afed8..31ecd02fe3b704f69d86cb27e18c7230e1659d4b 100644 (file)
@@ -244,13 +244,13 @@ update pgq.queue set queue_rotation_period = '0 seconds';
 select queue_name, pgq.maint_rotate_tables_step1(queue_name) from pgq.queue;
  queue_name | maint_rotate_tables_step1 
 ------------+---------------------------
- myqueue    |                         1
+ myqueue    |                         0
 (1 row)
 
 select pgq.maint_rotate_tables_step2();
  maint_rotate_tables_step2 
 ---------------------------
-                         1
+                         0
 (1 row)
 
 -- test extra
@@ -374,3 +374,28 @@ select pgq.insert_event('myqueue', 'test', 'event3');
 (1 row)
 
 end;
+select * from pgq.maint_operations();
+           func_name           | func_arg 
+-------------------------------+----------
+ pgq.maint_rotate_tables_step1 | myqueue
+ pgq.maint_rotate_tables_step2 | 
+(2 rows)
+
+alter table pgq.queue add column queue_extra_maint text[];
+select * from pgq.maint_operations();
+           func_name           | func_arg 
+-------------------------------+----------
+ pgq.maint_rotate_tables_step1 | myqueue
+ pgq.maint_rotate_tables_step2 | 
+(2 rows)
+
+update pgq.queue set queue_extra_maint = array['baz', 'foo.bar'];
+select * from pgq.maint_operations();
+           func_name           | func_arg 
+-------------------------------+----------
+ pgq.maint_rotate_tables_step1 | myqueue
+ pgq.maint_rotate_tables_step2 | 
+ baz                           | myqueue
+ foo.bar                       | myqueue
+(4 rows)
+
index d24f09c8e599b8527cb4430fbca8005449eca656..b11ee510a226cda054d93694788e0d370b57ec13 100644 (file)
@@ -9,7 +9,7 @@ returns integer as $$
 --      i_queue_name        - Name of the queue
 --
 -- Returns:
---      1 if rotation happened, otherwise 0.
+--      0
 -- ----------------------------------------------------------------------
 declare
     badcnt          integer;
@@ -87,7 +87,7 @@ begin
         where tick_queue = cf.queue_id
           and txid_snapshot_xmin(tick_snapshot) < cf.queue_switch_step2;
 
-    return 1;
+    return 0;
 end;
 $$ language plpgsql; -- need admin access
 
@@ -104,7 +104,7 @@ begin
     update pgq.queue
        set queue_switch_step2 = txid_current()
      where queue_switch_step2 is null;
-    return 1;
+    return 0;
 end;
 $$ language plpgsql; -- need admin access
 
index dfc4bd9e5f473c4fc0c2e8cfec33d16710593567..c4f4b4cd63e70e0e21c5623af1bd9d53a6fa9fee 100644 (file)
@@ -111,4 +111,9 @@ select pgq.insert_event('myqueue', 'test', 'event2');
 select pgq.insert_event('myqueue', 'test', 'event3');
 end;
 
+select * from pgq.maint_operations();
+alter table pgq.queue add column queue_extra_maint text[];
+select * from pgq.maint_operations();
+update pgq.queue set queue_extra_maint = array['baz', 'foo.bar'];
+select * from pgq.maint_operations();
 
index e8ce09538c0a23d66f82d49788f48e5611f37334..8f042df8c0a7ee39f914eada24db0faf04e4a35d 100644 (file)
@@ -19,6 +19,7 @@
 \i functions/pgq.maint_retry_events.sql
 \i functions/pgq.maint_rotate_tables.sql
 \i functions/pgq.maint_tables_to_vacuum.sql
+\i functions/pgq.maint_operations.sql
 
 -- Group: Random utility functions