diff sql/job-todo.sql @ 6:8c408176d2b1

scid: past jobs are not listed for new workers
author David Demelier <markand@malikania.fr>
date Wed, 23 Jun 2021 11:44:30 +0200
parents 9c4fea43803c
children de4bf839b565
line wrap: on
line diff
--- a/sql/job-todo.sql	Wed Jun 16 13:25:42 2021 +0200
+++ b/sql/job-todo.sql	Wed Jun 23 11:44:30 2021 +0200
@@ -1,11 +1,39 @@
-     SELECT job.id
-          , job.tag
-          , job.project_id
-       FROM job
-      WHERE job.id
-     NOT IN (
-            SELECT jobresult.job_id
-              FROM jobresult
-             WHERE jobresult.worker_id = ?
-     )
-      LIMIT ?
+--
+-- job-todo.sql -- list jobs to perform for a worker
+--
+-- Copyright (c) 2021 David Demelier <markand@malikania.fr>
+--
+-- Permission to use, copy, modify, and/or distribute this software for any
+-- purpose with or without fee is hereby granted, provided that the above
+-- copyright notice and this permission notice appear in all copies.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+-- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+-- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+-- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+-- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+-- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+--
+
+--
+-- This request won't list jobs that were created before the worker itself
+-- otherwise when adding a new worker it would need to run potentially a very
+-- high number of jobs
+--
+SELECT job.id
+     , job.tag
+     , job.project_id
+  FROM job
+ WHERE job.id
+NOT IN (
+       SELECT jobresult.job_id
+         FROM jobresult
+        WHERE jobresult.worker_id = ?
+       )
+   AND job.date >= (
+                 SELECT worker.date
+                   FROM worker
+                  WHERE worker.id = ?
+                 )
+ LIMIT ?