aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Marshall <jmarshall@xbmc.org>2013-12-29 10:15:08 +1300
committerJonathan Marshall <jmarshall@xbmc.org>2013-12-29 10:15:08 +1300
commita1f845c2f07504fb0fe2c04cef5597d0da6f7da0 (patch)
treed286da0e8f312b6cfc1df74fb1da32c0cc898c24
parent30c9e1b15e5850648dfc647ed3a4140c84ba06c5 (diff)
[musicdb] use a temporary table for the updating of strJoinPhrase in song_artist and album_artist, as mysql can't handle (potentially) circular updates
-rw-r--r--xbmc/music/MusicDatabase.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/xbmc/music/MusicDatabase.cpp b/xbmc/music/MusicDatabase.cpp
index 3dbb28e49c..f53e1dd3ce 100644
--- a/xbmc/music/MusicDatabase.cpp
+++ b/xbmc/music/MusicDatabase.cpp
@@ -4098,8 +4098,8 @@ bool CMusicDatabase::UpdateOldVersion(int version)
m_pDS->next();
}
// drop the last separator if more than one
- m_pDS->exec("UPDATE song_artist SET strJoinPhrase = '' WHERE 100*idSong+iOrder IN (select 100*idSong+max(iOrder) FROM song_artist GROUP BY idSong)");
- m_pDS->exec("UPDATE album_artist SET strJoinPhrase = '' WHERE 100*idAlbum+iOrder IN (select 100*idAlbum+max(iOrder) FROM album_artist GROUP BY idAlbum)");
+ m_pDS->exec("UPDATE song_artist SET strJoinPhrase = '' WHERE 100*idSong+iOrder IN (SELECT id FROM (SELECT 100*idSong+max(iOrder) AS id FROM song_artist GROUP BY idSong) AS sub)");
+ m_pDS->exec("UPDATE album_artist SET strJoinPhrase = '' WHERE 100*idAlbum+iOrder IN (SELECT id FROM (SELECT 100*idAlbum+max(iOrder) AS id FROM album_artist GROUP BY idAlbum) AS sub)");
}
if (version < 43)
{ // (re)create triggers