From a24e487d2c6c941767f7cba0a96aec0400be1aa7 Mon Sep 17 00:00:00 2001 From: Damyan Ivanov Date: Fri, 12 Nov 2021 06:42:35 +0000 Subject: [PATCH] fix DB stats retrieval when no songs were queued recently strangely one of the totals was getting undef and broke the division perhaps the UNION is not working as expected? --- lib/App/MPD/Feeder.pm | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/lib/App/MPD/Feeder.pm b/lib/App/MPD/Feeder.pm index 4285e70..c23b4b4 100644 --- a/lib/App/MPD/Feeder.pm +++ b/lib/App/MPD/Feeder.pm @@ -248,7 +248,6 @@ SQL $sql =~ s/^SELECT .+$/SELECT COUNT(DISTINCT s.path)/m; $sql =~ s/^ORDER BY .+$//m; $sql =~ s/^LIMIT .+$//m; - $log->debug($sql); my $sth = $db->prepare_cached($sql); pop @params; $sth->execute(@params); @@ -258,26 +257,22 @@ SQL $sth = $db->prepare_cached('SELECT COUNT(*) FROM songs'); $sth->execute; my $total = ($sth->fetchrow_array)[0]; + $sth->finish; $log->debug( sprintf( "Number of songs meeting the criteria: %d out of total %d (%5.2f%%)", $count, $total, 100.0 * $count / $total ) ); - $sth->finish; $sql = <prepare_cached($sql); $sth->execute($opt->min_song_interval); $count = ($sth->fetchrow_array)[0]; - $total = ($sth->fetchrow_array)[0]; $sth->finish; $log->debug( @@ -292,41 +287,43 @@ SQL SELECT COUNT(*) FROM artists ar WHERE (ar.last_queued IS NULL OR ar.last_queued < CURRENT_TIMESTAMP - (? || ' seconds')::interval) -UNION -SELECT COUNT(*) -FROM artists SQL $sth = $db->prepare_cached($sql); $sth->execute($opt->min_artist_interval); $count = ($sth->fetchrow_array)[0]; + $sth->finish; + + $sth = $db->prepare_cached('SELECT COUNT(*) FROM artists'); + $sth->execute; $total = ($sth->fetchrow_array)[0]; + $sth->finish; $log->debug( sprintf( "Number of artists not queued soon: %d out of total %d (%5.2f%%)", $count, $total, 100.0 * $count / $total ) ); - $sth->finish; $sql = <prepare_cached($sql); $sth->execute($opt->min_album_interval); $count = ($sth->fetchrow_array)[0]; + $sth->finish; + + $sth = $db->prepare_cached('SELECT COUNT(*) FROM albums'); + $sth->execute; $total = ($sth->fetchrow_array)[0]; + $sth->finish; $log->debug( sprintf( "Number of albums not queued soon: %d out of total %d (%5.2f%%)", $count, $total, 100.0 * $count / $total ) ); - $sth->finish; undef $sth; } -- 2.39.2