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/?a=commitdiff_plain;ds=sidebyside;h=a24e487d2c6c941767f7cba0a96aec0400be1aa7;p=mpd-feeder.git 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; }