view sql/job-todo.sql @ 85:cf49ab595e2e default tip @

sciworkerd: avoid spawning several tasks
author David Demelier <markand@malikania.fr>
date Thu, 09 Mar 2023 10:43:48 +0100
parents 71cd8447e3a4
children
line wrap: on
line source

--
-- job-todo.sql -- list jobs to perform for a worker
--
-- Copyright (c) 2021-2023 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`.`rowid`
     , `job`.`tag`
     , `job`.`project_name`
  FROM `job`
 WHERE `job`.`rowid`
NOT IN (
       SELECT `jobresult`.`job_id`
         FROM `jobresult`
        WHERE `jobresult`.`worker_name` = ?
       )
   AND `job`.`date` >= (
                 SELECT `worker`.`date`
                   FROM `worker`
                  WHERE `worker`.`name` = ?
                       )