Index: mfd/plugins/mmusic/mmusic.cpp
===================================================================
--- mfd/plugins/mmusic/mmusic.cpp	(revision 9744)
+++ mfd/plugins/mmusic/mmusic.cpp	(working copy)
@@ -526,7 +526,7 @@
     
     MSqlQuery query(MSqlQuery::InitCon());
     
-    query.exec("SELECT intid, filename FROM musicmetadata ;");
+    query.exec("SELECT song_id, filename FROM music_songs ;");
     
     if(query.isActive())
     {
@@ -544,7 +544,7 @@
 
                     ++count;
                     MSqlQuery delete_query(MSqlQuery::InitCon());
-                    delete_query.prepare("DELETE FROM musicmetadata WHERE intid = ?");
+                    delete_query.prepare("DELETE FROM music_songs WHERE song_id = ?");
                     delete_query.bindValue(0, query.value(0).toUInt());
                     delete_query.exec();
                     log(QString("removed item %1 (\"%2\") from the database")
@@ -556,7 +556,7 @@
     }
     else
     {
-        warning("something wrong with your musicmetadata table");
+        warning("something wrong with your music_songs table");
     }
     
     if(count > 0)
@@ -638,13 +638,13 @@
     
     MSqlQuery query(MSqlQuery::InitCon());
     
-    query.exec("SELECT COUNT(filename) FROM musicmetadata;");
+    query.exec("SELECT COUNT(filename) FROM music_songs;");
     
     if(!query.isActive())
     {
         if(!sent_musicmetadata_table_warning)
         {
-            warning("cannot get data from a table called musicmetadata");
+            warning("cannot get data from a table called music_songs");
             sent_musicmetadata_table_warning = true;
         }
         return false;
@@ -977,14 +977,30 @@
 
     MSqlQuery query(MSqlQuery::InitCon());
 
-    query.prepare("SELECT intid, artist, album, title, genre, "
+/*    query.prepare("SELECT intid, artist, album, title, genre, "
                   "year, tracknum, length, rating, "
                   "lastplay, playcount, mythdigest, size, date_added, "
                   "date_modified, format, description, comment, "
                   "compilation, composer, disc_count, disc_number, "
                   "track_count, start_time, stop_time, eq_preset, "
                   "relative_volume, sample_rate, bpm "
-                  "FROM musicmetadata WHERE filename = ? ;");
+                  "FROM musicmetadata WHERE filename = ? ;");*/
+    query.prepare("SELECT music_songs.song_id, music_artists.artist_name, "
+		  "music_albums.album_name, music_songs.name, "
+		  "music_genres.genre, music_songs.year, "
+		  "music_songs.track, music_songs.length, "
+		  "music_songs.rating, music_songs.lastplay, "
+		  "music_songs.numplays, music_songs.mythdigest,"
+		  "music_songs.size, music_songs.date_entered, "
+		  "music_songs.date_modified, music_songs.format, "
+		  "music_songs.description, music_songs.comment, "
+		  "music_songs.compilation, music_artists_1.artist_name AS composer, "
+		  "music_songs.disc_count, music_songs.disc_number, "
+		  "music_songs.track_count, music_songs.start_time, "
+		  "music_songs.stop_time, music_songs.eq_preset, "
+		  "music_songs.relative_volume, music_songs.bitrate, "
+		  "music_songs.bpm "
+		  "FROM (((music_songs INNER JOIN music_albums ON music_songs.album_id = music_albums.album_id) INNER JOIN music_artists ON music_songs.artist_id = music_artists.artist_id) INNER JOIN music_genres ON music_songs.genre_id = music_genres.genre_id) INNER JOIN music_artists AS music_artists_1 ON music_songs.compilationartist_id = music_artists_1.artist_id WHERE FILENAME = ? ;");
 
     query.bindValue(0, sqlfilename.utf8());
     
@@ -1198,7 +1214,7 @@
         
         MSqlQuery query(MSqlQuery::InitCon());
 
-        query.prepare("INSERT INTO musicmetadata (filename, mythdigest) "
+        query.prepare("INSERT INTO music_songs(filename, mythdigest) "
                       "values ( ? , ?)");
 
         query.bindValue(0, sqlfilename.utf8());
@@ -1213,7 +1229,7 @@
             return NULL;
         }
         
-        query.prepare("SELECT intid FROM musicmetadata "
+        query.prepare("SELECT song_id FROM music_songs "
                                "WHERE mythdigest = ? ;");
         query.bindValue(0, new_item->getMythDigest());
         query.exec();
@@ -1322,26 +1338,26 @@
 
     MSqlQuery query(MSqlQuery::InitCon());
 
-    query.prepare("UPDATE musicmetadata SET "
-                  "title = ? , "
-                  "artist = ? , "
-                  "album = ? , "
-                  "genre = ? , "
+    query.prepare("UPDATE music_songs SET "
+                  "name = ? , "
+                  "artist_id = ? , "
+                  "album_id = ? , "
+                  "genre_id = ? , "
                   "year = ? , "
-                  "tracknum = ? , "
+                  "track = ? , "
                   "length = ? , "
                   "rating = ? , "
                   "lastplay = ? , "
-                  "playcount = ? , "
+                  "numplays = ? , "
                   "mythdigest = ? , "
                   "size = ? , "
-                  "date_added = ? , "
+                  "date_entered = ? , "
                   "date_modified = ? , "
                   "format = ? , "
                   "description = ? , "
                   "comment = ? , "
                   "compilation = ? , "
-                  "composer = ? , "
+                  "compilationartist_id = ? , "
                   "disc_count = ? , "
                   "disc_number = ? , "
                   "track_count = ? , "
@@ -1349,9 +1365,9 @@
                   "stop_time = ? , "
                   "eq_preset = ? , "
                   "relative_volume = ? , "
-                  "sample_rate = ? , "
+                  "bitrate = ? , "
                   "bpm = ?  "
-                  "WHERE intid = ? ;");
+                  "WHERE song_id = ? ;");
 
     query.bindValue(0,  an_item->getTitle().utf8());
     query.bindValue(1,  an_item->getArtist().utf8());
@@ -1467,14 +1483,12 @@
 
     MSqlQuery query(MSqlQuery::InitCon());
 
-    query.prepare("SELECT name, songlist, playlistid FROM musicplaylist "
+    query.prepare("SELECT playlist_name, playlist_songs, playlist_id FROM music_saved_playlists "
                   "WHERE name != ? "
-                  "AND name != ? "
-                  "AND hostname = ? ;");
+                  "AND name != ? ;");
         
     query.bindValue(0, "backup_playlist_storage");
     query.bindValue(1, "default_playlist_storage");
-    query.bindValue(2, hostname);
         
     query.exec();
 
@@ -1617,8 +1631,8 @@
     
     MSqlQuery query(MSqlQuery::InitCon());
 
-    query.prepare("UPDATE musicplaylist SET songlist = ?, name = ? WHERE "
-                  "playlistid = ? ;");
+    query.prepare("UPDATE music_saved_playlists SET playlist_songs = ?, playlist_name = ? WHERE "
+                  "playlist_id = ? ;");
 
     query.bindValue(0, db_song_list_string);
     query.bindValue(1, a_playlist->getName().utf8());
@@ -1665,7 +1679,7 @@
     
     MSqlQuery query(MSqlQuery::InitCon());
 
-    query.prepare("INSERT INTO musicplaylist (name, hostname, songlist) values (?, ?, ?) ; ");
+    query.prepare("INSERT INTO music_saved_playlists (playlist_name, hostname, playlist_songs) values (?, ?, ?) ; ");
 
     query.bindValue(0, a_playlist->getName().utf8());
     query.bindValue(1, hostname);
@@ -1681,7 +1695,7 @@
         return;
     }
     
-    query.prepare("SELECT playlistid FROM musicplaylist WHERE name = ? AND hostname = ? AND songlist = ? ; ");
+    query.prepare("SELECT playlist_id FROM music_saved_playlists WHERE playlist_name = ? AND hostname = ? AND playlist_songs = ? ; ");
 
     query.bindValue(0, a_playlist->getName().utf8());
     query.bindValue(1, hostname);
@@ -1776,7 +1790,7 @@
 
     MSqlQuery query(MSqlQuery::InitCon());
 
-    query.prepare("DELETE FROM musicplaylist WHERE playlistid = ? ; ");
+    query.prepare("DELETE FROM music_saved_playlists WHERE playlist_id = ? ; ");
 
     query.bindValue(0, playlist_database_id);
         
Index: mfd/dbcheck.cpp
===================================================================
--- mfd/dbcheck.cpp	(revision 9744)
+++ mfd/dbcheck.cpp	(working copy)
@@ -9,7 +9,7 @@
 #include "mythtv/mythcontext.h"
 #include "mythtv/mythdbcon.h"
 
-const QString currentDatabaseVersion = "1005";
+const QString currentDatabaseVersion = "1007";
 
 static void UpdateDBVersionNumber(const QString &newnumber)
 {
@@ -323,5 +323,50 @@
 
         performActualUpdate(updates, "1005", dbver);
     }
+    
+    
+        if (dbver == "1005")
+	    {
+            const QString updates[] = {
+"DROP TABLE musicmetadata;",
+"DROP TABLE musicplaylist;",
+"CREATE TABLE music_albums (album_id int(11) NOT NULL auto_increment, album_name varchar(255) NOT NULL default '', album_art text NOT NULL, PRIMARY KEY  (album_id));",
+"CREATE TABLE music_artists (artist_id int(11) NOT NULL auto_increment, artist_name varchar(255) default NULL, PRIMARY KEY  (artist_id));",
+"CREATE TABLE music_currentsong (song_id int(11) NOT NULL default '0', pl_id int(11) NOT NULL default '0', random tinyint(3) NOT NULL default '0');",
+"CREATE TABLE music_genres (genre_id int(11) NOT NULL auto_increment, genre varchar(25) NOT NULL default '', PRIMARY KEY  (genre_id));",
+"CREATE TABLE music_playhistory (play_id int(11) NOT NULL auto_increment, song_id int(11) default NULL, date_played datetime default NULL, PRIMARY KEY  (play_id));",
+"CREATE TABLE music_playlist (pl_id int(11) NOT NULL auto_increment, song_id int(11) default NULL, PRIMARY KEY  (pl_id));",
+"CREATE TABLE music_saved_playlists (playlist_id int(11) NOT NULL auto_increment, playlist_name varchar(255) default NULL, playlist_songs text, date_created datetime default NULL, time int(11) default NULL, songcount smallint(8) default NULL, hostname VARCHAR(255), PRIMARY KEY (playlist_id));",
+"CREATE TABLE music_songs (song_id int(11) NOT NULL auto_increment, artist_id int(11) NOT NULL default '0', compilationartist_id int(11) NOT NULL default '0', album_id int(11) NOT NULL default '0', genre_id int(11) NOT NULL default '0', year smallint(6) NOT NULL default '0', lastplay datetime default NULL, date_entered datetime default NULL, date_modified datetime default NULL, name varchar(255) default NULL, track smallint(6) NOT NULL default '0', length int(11) NOT NULL default '0', size int(11) NOT NULL default '0', bitrate int(11) NOT NULL default '0', type varchar(4) default NULL, numplays int(11) NOT NULL default '0', rating tinyint(4) NOT NULL default '0', filename text, format varchar(4) NOT NULL default '0', compilation tinyint default 0, PRIMARY KEY  (song_id));",
+"CREATE TABLE music_stats (num_artists smallint(5) unsigned NOT NULL default '0', num_albums smallint(5) unsigned NOT NULL default '0', num_songs mediumint(8) unsigned NOT NULL default '0', num_genres tinyint(3) unsigned NOT NULL default '0', total_time varchar(12) NOT NULL default '0', total_size varchar(10) NOT NULL default '0');",
+"RENAME TABLE smartplaylist TO music_smartplaylist;",
+"RENAME TABLE smartplaylistitem TO music_smartplaylistitem;",
+"RENAME TABLE smartplaylistcategory TO music_smartplaylistcategory;",
+""
+};
+        performActualUpdate(updates, "1006", dbver);
+    }
+
+        if (dbver == "1006")
+	    {
+	    //Database Updates for use in the MFD
+            const QString updates[] = {
+"ALTER TABLE music_songs ADD mythdigest      VARCHAR(255);",
+"ALTER TABLE music_songs ADD description     VARCHAR(255);",
+"ALTER TABLE music_songs ADD comment         VARCHAR(255);",
+"ALTER TABLE music_songs ADD disc_count      SMALLINT UNSIGNED DEFAULT 0;",
+"ALTER TABLE music_songs ADD disc_number     SMALLINT UNSIGNED DEFAULT 0;",
+"ALTER TABLE music_songs ADD track_count     SMALLINT UNSIGNED DEFAULT 0;",
+"ALTER TABLE music_songs ADD start_time      INT UNSIGNED DEFAULT 0;",
+"ALTER TABLE music_songs ADD stop_time       INT UNSIGNED;",
+"ALTER TABLE music_songs ADD eq_preset       VARCHAR(255);",
+"ALTER TABLE music_songs ADD relative_volume TINYINT DEFAULT 0;",
+"ALTER TABLE music_songs ADD bpm             SMALLINT UNSIGNED;",
+"ALTER TABLE music_songs ADD INDEX (mythdigest);",
+""
+};
+        performActualUpdate(updates, "1007", dbver);
+    }
+
 }
 
