diff --git a/lib/Minion/Backend/Pg.pm b/lib/Minion/Backend/Pg.pm index 9ac18c3..3a09e40 100644 --- a/lib/Minion/Backend/Pg.pm +++ b/lib/Minion/Backend/Pg.pm @@ -224,16 +224,17 @@ sub stats { my $self = shift; my $stats = $self->pg->db->query( - "SELECT COUNT(*) FILTER (WHERE state = 'inactive' AND (expires IS NULL OR expires > NOW())) AS inactive_jobs, - COUNT(*) FILTER (WHERE state = 'active') AS active_jobs, COUNT(*) FILTER (WHERE state = 'failed') AS failed_jobs, - COUNT(*) FILTER (WHERE state = 'finished') AS finished_jobs, - COUNT(*) FILTER (WHERE state = 'inactive' AND delayed > NOW()) AS delayed_jobs, + "SELECT + (SELECT COUNT(*) FROM minion_jobs WHERE state = 'inactive' AND (expires IS NULL OR expires > NOW())) AS inactive_jobs, + (SELECT COUNT(*) FROM minion_jobs WHERE state = 'active') AS active_jobs, + (SELECT COUNT(*) FROM minion_jobs WHERE state = 'failed') AS failed_jobs, + (SELECT COUNT(*) FROM minion_jobs WHERE state = 'finished') AS finished_jobs, + (SELECT COUNT(*) FROM minion_jobs WHERE state = 'inactive' AND delayed > NOW()) AS delayed_jobs, (SELECT COUNT(*) FROM minion_locks WHERE expires > NOW()) AS active_locks, - COUNT(DISTINCT worker) FILTER (WHERE state = 'active') AS active_workers, + (SELECT COUNT(DISTINCT worker) FROM minion_jobs mj WHERE state = 'active') AS active_workers, (SELECT CASE WHEN is_called THEN last_value ELSE 0 END FROM minion_jobs_id_seq) AS enqueued_jobs, (SELECT COUNT(*) FROM minion_workers) AS workers, - EXTRACT(EPOCH FROM NOW() - PG_POSTMASTER_START_TIME()) AS uptime - FROM minion_jobs" + EXTRACT(EPOCH FROM NOW() - PG_POSTMASTER_START_TIME()) AS uptime" )->hash; $stats->{inactive_workers} = $stats->{workers} - $stats->{active_workers};