Merge "Create new view for audio_artists_albums" into sc-dev
diff --git a/src/com/android/providers/media/DatabaseHelper.java b/src/com/android/providers/media/DatabaseHelper.java
index e996924..f853150 100644
--- a/src/com/android/providers/media/DatabaseHelper.java
+++ b/src/com/android/providers/media/DatabaseHelper.java
@@ -1231,6 +1231,25 @@
+ " AND volume_name IN " + filterVolumeNames
+ " GROUP BY artist_id");
+ db.execSQL("CREATE VIEW audio_artists_albums AS SELECT "
+ + " album_id AS " + Audio.Albums._ID
+ + ", album_id AS " + Audio.Albums.ALBUM_ID
+ + ", MIN(album) AS " + Audio.Albums.ALBUM
+ + ", album_key AS " + Audio.Albums.ALBUM_KEY
+ + ", artist_id AS " + Audio.Albums.ARTIST_ID
+ + ", artist AS " + Audio.Albums.ARTIST
+ + ", artist_key AS " + Audio.Albums.ARTIST_KEY
+ + ", (SELECT COUNT(*) FROM audio WHERE " + Audio.Albums.ALBUM_ID
+ + " = TEMP.album_id) AS " + Audio.Albums.NUMBER_OF_SONGS
+ + ", COUNT(DISTINCT _id) AS " + Audio.Albums.NUMBER_OF_SONGS_FOR_ARTIST
+ + ", MIN(year) AS " + Audio.Albums.FIRST_YEAR
+ + ", MAX(year) AS " + Audio.Albums.LAST_YEAR
+ + ", NULL AS " + Audio.Albums.ALBUM_ART
+ + " FROM audio TEMP"
+ + " WHERE is_music=1 AND is_pending=0 AND is_trashed=0"
+ + " AND volume_name IN " + filterVolumeNames
+ + " GROUP BY album_id, artist_id");
+
db.execSQL("CREATE VIEW audio_albums AS SELECT "
+ " album_id AS " + Audio.Albums._ID
+ ", album_id AS " + Audio.Albums.ALBUM_ID
@@ -1618,7 +1637,7 @@
static final int VERSION_R = 1115;
// Leave some gaps in database version tagging to allow R schema changes
// to go independent of S schema changes.
- static final int VERSION_S = 1208;
+ static final int VERSION_S = 1209;
static final int VERSION_LATEST = VERSION_S;
/**
@@ -1791,6 +1810,9 @@
if (fromVersion < 1208) {
updateUserId(db);
}
+ if (fromVersion < 1209) {
+ // Empty version bump to ensure views are recreated
+ }
// If this is the legacy database, it's not worth recomputing data
// values locally, since they'll be recomputed after the migration
diff --git a/src/com/android/providers/media/MediaProvider.java b/src/com/android/providers/media/MediaProvider.java
index 2a8cb3b..69efcae 100644
--- a/src/com/android/providers/media/MediaProvider.java
+++ b/src/com/android/providers/media/MediaProvider.java
@@ -4847,7 +4847,7 @@
}
case AUDIO_ARTISTS_ID_ALBUMS: {
if (type == TYPE_QUERY) {
- qb.setTables("audio_albums");
+ qb.setTables("audio_artists_albums");
qb.setProjectionMap(getProjectionMap(Audio.Artists.Albums.class));
final String artistId = uri.getPathSegments().get(3);