From: Damyan Ivanov Date: Fri, 12 Nov 2021 06:42:35 +0000 (+0000) Subject: fix DB stats retrieval when no songs were queued recently X-Git-Url: https://git.ktnx.net/?p=mpd-feeder.git;a=commitdiff_plain;h=a24e487d2c6c941767f7cba0a96aec0400be1aa7 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? --- 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; }