pgq.maint_operations: don't do rotate_step2, if nothing to rotate
authorMarko Kreen <markokr@gmail.com>
Fri, 3 Sep 2010 14:03:16 +0000 (17:03 +0300)
committerMarko Kreen <markokr@gmail.com>
Fri, 3 Sep 2010 14:03:16 +0000 (17:03 +0300)
sql/pgq/functions/pgq.maint_operations.sql

index 53aad8c643cb358e9beeb500f2c08da0e2040c0d..d03b5bd65ac833842524817a54eab1f056da8093 100644 (file)
@@ -17,8 +17,10 @@ returns setof record as $$
 -- ----------------------------------------------------------------------
 declare
     ops text[];
+    nrot int4;
 begin
     -- rotate step 1
+    nrot := 0;
     func_name := 'pgq.maint_rotate_tables_step1';
     for func_arg in
         select queue_name from pgq.queue
@@ -27,13 +29,16 @@ begin
                 and queue_switch_time + queue_rotation_period < current_timestamp
             order by 1
     loop
+        nrot := nrot + 1;
         return next;
     end loop;
 
     -- rotate step 2
-    func_name := 'pgq.maint_rotate_tables_step2';
-    func_arg := NULL;
-    return next;
+    if nrot > 0 then
+        func_name := 'pgq.maint_rotate_tables_step2';
+        func_arg := NULL;
+        return next;
+    end if;
 
     -- check if extra field exists
     perform 1 from pg_attribute