Bug 4201 - Deselecting all genres in Random Mix creates invalid SQL query, stops SS
: Deselecting all genres in Random Mix creates invalid SQL query, stops SS
Status: CLOSED FIXED
Product: Logitech Media Server
Classification: Unclassified
Component: Plugins
: 6.5.0
: All All
: P2 major (vote)
: ---
Assigned To: Dan Sully
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2006-09-23 06:44 UTC by Pete
Modified: 2008-12-18 11:11 UTC (History)
1 user (show)

See Also:
Category: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Pete 2006-09-23 06:44:57 UTC
In Browse -> Random Mix, "Select None" and then "Random songs/artists/..." stops the server with:

2006-09-23 14:58:19.0333 ERROR: Error executing 'SELECT me.id, me.url, me.content_type, me.title, me.titlesort, me.titlesearch, me.album, me.tracknum, me.timestamp, me.filesize, me.disc, me.thumb, me.remote, me.audio, me.audio_size, me.audio_offset, me.year, me.secs, me.cover, me.vbr_scale, me.bitrate, me.samplerate, me.samplesize, me.channels, me.block_alignment, me.endian, me.bpm, me.tagversion, me.drm, me.moodlogic_id, me.moodlogic_mixable, me.musicmagic_mixable, me.musicbrainz_id, me.playcount, me.lastplayed, me.lossless, me.lyrics, me.rating, me.replay_gain, me.replay_peak FROM tracks me LEFT JOIN genre_track genreTracks ON ( genreTracks.track = me.id ) WHERE ( audio = ? AND genreTracks.genre IN (  ) ) ORDER BY RAND() LIMIT 10': DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ) ORDER BY RAND() LIMIT 10' at line 1 at /somewhere/SlimServer_v6.5.0/CPAN/DBIx/Class/Storage/DBI.pm line 771.


2006-09-23 14:58:19.0575 Backtrace:

   frame 0: Slim::Schema::Storage::throw_exception (/somewhere/SlimServer_v6.5.0/CPAN/DBIx/Class/Storage/DBI.pm line 773)
   frame 1: DBIx::Class::Storage::DBI::_execute (/somewhere/SlimServer_v6.5.0/CPAN/DBIx/Class/Storage/DBI.pm line 826)
   frame 2: DBIx::Class::Storage::DBI::_select (/somewhere/SlimServer_v6.5.0/CPAN/DBIx/Class/Storage/DBI/Cursor.pm line 79)
   frame 3: DBIx::Class::Storage::DBI::Cursor::next (/somewhere/SlimServer_v6.5.0/CPAN/DBIx/Class/Cursor.pm line 69)
   frame 4: DBIx::Class::Cursor::all (/somewhere/SlimServer_v6.5.0/CPAN/DBIx/Class/Storage/DBI/Cursor.pm line 115)
   frame 5: DBIx::Class::Storage::DBI::Cursor::all (/somewhere/SlimServer_v6.5.0/CPAN/DBIx/Class/ResultSet.pm line 945)
   frame 6: DBIx::Class::ResultSet::all (/somewhere/SlimServer_v6.5.0/CPAN/DBIx/Class/ResultSet.pm line 143)
   frame 7: DBIx::Class::ResultSet::search (/somewhere/SlimServer_v6.5.0/CPAN/DBIx/Class/ResultSet.pm line 659)
   frame 8: DBIx::Class::ResultSet::slice (/somewhere/SlimServer_v6.5.0/Plugins/RandomPlay/Plugin.pm line 65)
   frame 9: Plugins::RandomPlay::Plugin::findAndAdd (/somewhere/SlimServer_v6.5.0/Plugins/RandomPlay/Plugin.pm line 301)
   frame 10: Plugins::RandomPlay::Plugin::playRandom (/somewhere/SlimServer_v6.5.0/Plugins/RandomPlay/Plugin.pm line 758)
   frame 11: Plugins::RandomPlay::Plugin::handleWebMix (/somewhere/SlimServer_v6.5.0/Plugins/RandomPlay/Plugin.pm line 796)
   frame 12: Plugins::RandomPlay::Plugin::handleWebSettings (/somewhere/SlimServer_v6.5.0/Slim/Web/HTTP.pm line 811)
   frame 13: Slim::Web::HTTP::generateHTTPResponse (/somewhere/SlimServer_v6.5.0/Slim/Web/HTTP.pm line 677)
   frame 14: Slim::Web::HTTP::processURL (/somewhere/SlimServer_v6.5.0/Slim/Web/HTTP.pm line 523)
   frame 15: Slim::Web::HTTP::processHTTP (/somewhere/SlimServer_v6.5.0/Slim/Networking/Select.pm line 238)
   frame 16: Slim::Networking::Select::select (/somewhere/SlimServer_v6.5.0/slimserver.pl line 487)
   frame 17: main::idle (/somewhere/SlimServer_v6.5.0/slimserver.pl line 440)
   frame 18: main::main (/somewhere/SlimServer_v6.5.0/slimserver.pl line 1039)
[...]

Plugins/RandomPlay/Plugin.pm states:
        # Initialize find to only include user's selected genres.  If they've deselected
        # all genres, this clause will be ignored by find, so all genres will be used.
        my $filteredGenres = getFilteredGenres($client);

        my $find = {
            'genreTracks.genre' => { 'in' => $filteredGenres }
        };

However, this doesn't seem to be the case. Fix is trivial, but it might be a good idea 
to see if the  behaviour expected in the comment is assumed anywhere else...
Comment 1 Pete 2006-09-23 14:20:35 UTC
Another Random Mix issue: "LEFT JOIN genre_track genreTracks ON"-logic appears to be missing when using "Random years":

2006-09-23 23:14:41.2309 SELECT me.id, me.name, me.namesort, me.namesearch, me.moodlogic_id, me.moodlogic_mixable, me.musicmagic_mixable FROM genres me: 
2006-09-23 23:14:41.2617 SELECT me.id, me.name, me.namesort, me.namesearch, me.moodlogic_id, me.moodlogic_mixable, me.musicmagic_mixable FROM genres me: 
2006-09-23 23:14:41.2856 SELECT me.id, me.url, me.content_type, me.title, me.titlesort, me.titlesearch, me.album, me.tracknum, me.timestamp, me.filesize, me.disc, me.thumb, me.remote, me.audio, me.audio_size, me.audio_offset, me.year, me.secs, me.cover, me.vbr_scale, me.bitrate, me.samplerate, me.samplesize, me.channels, me.block_alignment, me.endian, me.bpm, me.tagversion, me.drm, me.moodlogic_id, me.moodlogic_mixable, me.musicmagic_mixable, me.musicbrainz_id, me.playcount, me.lastplayed, me.lossless, me.lyrics, me.rating, me.replay_gain, me.replay_peak FROM tracks me WHERE ( ( ( genreTracks.genre = ? ) ) ): '14'
2006-09-23 23:14:41.2877 ERROR: Error executing 'SELECT me.id, me.url, me.content_type, me.title, me.titlesort, me.titlesearch, me.album, me.tracknum, me.timestamp, me.filesize, me.disc, me.thumb, me.remote, me.audio, me.audio_size, me.audio_offset, me.year, me.secs, me.cover, me.vbr_scale, me.bitrate, me.samplerate, me.samplesize, me.channels, me.block_alignment, me.endian, me.bpm, me.tagversion, me.drm, me.moodlogic_id, me.moodlogic_mixable, me.musicmagic_mixable, me.musicbrainz_id, me.playcount, me.lastplayed, me.lossless, me.lyrics, me.rating, me.replay_gain, me.replay_peak FROM tracks me WHERE ( ( ( genreTracks.genre = ? ) ) )': DBD::mysql::st execute failed: Unknown column 'genreTracks.genre' in 'where clause' at /somewhere/SlimServer_v6.5.0/CPAN/DBIx/Class/Storage/DBI.pm line 771.

2006-09-23 23:14:41.2885 ERROR: Backtrace follows:

2006-09-23 23:14:41.2890 Backtrace:

   frame 0: Slim::Schema::Storage::throw_exception (/somewhere/SlimServer_v6.5.0/CPAN/DBIx/Class/Storage/DBI.pm line 773)
   frame 1: DBIx::Class::Storage::DBI::_execute (/somewhere/SlimServer_v6.5.0/CPAN/DBIx/Class/Storage/DBI.pm line 826)
   frame 2: DBIx::Class::Storage::DBI::_select (/somewhere/SlimServer_v6.5.0/CPAN/DBIx/Class/Storage/DBI.pm line 852)
   frame 3: DBIx::Class::Storage::DBI::select_single (/somewhere/SlimServer_v6.5.0/Slim/Schema/Storage.pm line 50)
   frame 4: Slim::Schema::Storage::select_single (/somewhere/SlimServer_v6.5.0/CPAN/DBIx/Class/ResultSet.pm line 509)
   frame 5: DBIx::Class::ResultSet::single (/somewhere/SlimServer_v6.5.0/Plugins/RandomPlay/Plugin.pm line 172)
   frame 6: Plugins::RandomPlay::Plugin::getRandomYear (/somewhere/SlimServer_v6.5.0/Plugins/RandomPlay/Plugin.pm line 291)
   frame 7: Plugins::RandomPlay::Plugin::playRandom (/somewhere/SlimServer_v6.5.0/Plugins/RandomPlay/Plugin.pm line 758)
   frame 8: Plugins::RandomPlay::Plugin::handleWebMix (/somewhere/SlimServer_v6.5.0/Plugins/RandomPlay/Plugin.pm line 796)
   frame 9: Plugins::RandomPlay::Plugin::handleWebSettings (/somewhere/SlimServer_v6.5.0/Slim/Web/HTTP.pm line 811)
   frame 10: Slim::Web::HTTP::generateHTTPResponse (/somewhere/SlimServer_v6.5.0/Slim/Web/HTTP.pm line 677)
   frame 11: Slim::Web::HTTP::processURL (/somewhere/SlimServer_v6.5.0/Slim/Web/HTTP.pm line 523)
   frame 12: Slim::Web::HTTP::processHTTP (/somewhere/SlimServer_v6.5.0/Slim/Networking/Select.pm line 238)
   frame 13: Slim::Networking::Select::select (/somewhere/SlimServer_v6.5.0/slimserver.pl line 487)
   frame 14: main::idle (/somewhere/SlimServer_v6.5.0/slimserver.pl line 440)
   frame 15: main::main (/somewhere/SlimServer_v6.5.0/slimserver.pl line 1039)



Am I the only one using Random Mix, or is my setup broken somehow?
Comment 2 Chris Owens 2006-09-25 17:21:32 UTC
You could be the only one, but that doesn't mean it's not a bug.  :)

Ross, please have a look at reproducing this one as well.
Comment 3 Chris Owens 2006-09-29 09:46:17 UTC
I clicked 'Select None' and hit '+' next to 'songs' to add the resulting mix to my playlist and Slimserver crashed.

The following information is part of the event: Carp::Clan::__ANON__(): Error executing 'SELECT me.id, me.url, me.content_type, me.title, me.titlesort, me.titlesearch, me.album, me.tracknum, me.timestamp, me.filesize, me.disc, me.thumb, me.remote, me.audio, me.audio_size, me.audio_offset, me.year, me.secs, me.cover, me.vbr_scale, me.bitrate, me.samplerate, me.samplesize, me.channels, me.block_alignment, me.endian, me.bpm, me.tagversion, me.drm, me.moodlogic_id, me.moodlogic_mixable, me.musicmagic_mixable, me.musicbrainz_id, me.playcount, me.lastplayed, me.lossless, me.lyrics, me.rating, me.replay_gain, me.replay_peak FROM tracks me LEFT JOIN genre_track genreTracks ON ( genreTracks.track = me.id ) WHERE ( audio = ? AND genreTracks.genre IN (  ) ) ORDER BY RAND() LIMIT 10': DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ) ORDER BY RAND() LIMIT 10' at line 1 at C:\Program Files\SlimServer\server\CPAN/DBIx/Class/Storage/DBI.pm line 771.
Comment 4 Dan Sully 2006-09-29 10:14:28 UTC
Fixed in change 10098
Comment 5 Ross Levine 2006-10-09 18:59:46 UTC
Verified to be fixed in SlimServer 6.5.1 - 10266 - Windows XP - EN - cp1252
Comment 6 James Richardson 2008-12-15 12:31:29 UTC
This bug has been fixed in the 7.3.0 release version of SqueezeCenter!

Please download the new version from http://www.slimdevices.com/su_downloads.html if you haven't already.  

If you are still experiencing this problem, feel free to reopen the bug with your new comments and we'll have another look.