Index: SQL/mysql/schema_3_up.sql =================================================================== --- SQL/mysql/schema_3_up.sql (revision 0) +++ SQL/mysql/schema_3_up.sql (revision 0) @@ -0,0 +1,3 @@ +-- Add contributor column to albums to enable sorting by artist (bug3255) + +ALTER TABLE albums ADD contributor int(10) unsigned; Property changes on: SQL/mysql/schema_3_up.sql ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:keywords + Id Author LastChangedDate LastChangedBy Name: svn:eol-style + native Index: SQL/mysql/schema_3_down.sql =================================================================== --- SQL/mysql/schema_3_down.sql (revision 0) +++ SQL/mysql/schema_3_down.sql (revision 0) @@ -0,0 +1,3 @@ +-- remove contributor column added for album sorting + +ALTER TABLE albums DROP contributor; Property changes on: SQL/mysql/schema_3_down.sql ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:keywords + Id Author LastChangedDate LastChangedBy Name: svn:eol-style + native Index: Slim/Schema/ResultSet/Album.pm =================================================================== --- Slim/Schema/ResultSet/Album.pm (revision 11091) +++ Slim/Schema/ResultSet/Album.pm (working copy) @@ -94,7 +94,7 @@ if ($sort =~ /contributor/) { - push @join, { 'contributorAlbums' => 'contributor' }; + push @join, 'contributor'; } if ($sort =~ /genre/) { Index: Slim/Schema/Album.pm =================================================================== --- Slim/Schema/Album.pm (revision 11091) +++ Slim/Schema/Album.pm (working copy) @@ -15,6 +15,7 @@ $class->add_columns(qw( id titlesort + contributor compilation year artwork @@ -30,6 +31,8 @@ $class->set_primary_key('id'); $class->add_unique_constraint('titlesearch' => [qw/id titlesearch/]); + $class->belongs_to('contributor' => 'Slim::Schema::Contributor'); + $class->has_many('tracks' => 'Slim::Schema::Track' => 'album'); $class->has_many('contributorAlbums' => 'Slim::Schema::ContributorAlbum' => 'album'); Index: Slim/Schema.pm =================================================================== --- Slim/Schema.pm (revision 11091) +++ Slim/Schema.pm (working copy) @@ -1211,6 +1211,7 @@ $::d_info && $_dump_postprocess_logic && msg("--- Album is a VA\n"); $albumObj->compilation(1); + $albumObj->contributor($vaObjId); $albumObj->update; } @@ -2039,6 +2040,16 @@ # Bug 2393 - was fixed here (now obsolete due to further code rework) $set{'compilation'} = $isCompilation; + # Bug 3255 - add album contributor which is either VA or the primary artist, used for sort by artist + if ($isCompilation && !scalar $contributors->{'ALBUMARTIST'}) { + + $set{'contributor'} = $self->variousArtistsObject->id; + + } elsif (blessed($contributor)) { + + $set{'contributor'} = $contributor->id; + } + $set{'musicbrainz_id'} = $attributes->{'MUSICBRAINZ_ALBUM_ID'}; # Handle album gain tags.