All pastes #1575568 Raw Edit

Unnamed

public text v1 · immutable
#1575568 ·published 2009-09-22 19:08 UTC
rendered paste body
diff --git a/src/collection/sqlcollection/ScanResultProcessor.cpp b/src/collection/sqlcollection/ScanResultProcessor.cpp
index 0056c42..c36009f 100644
--- a/src/collection/sqlcollection/ScanResultProcessor.cpp
+++ b/src/collection/sqlcollection/ScanResultProcessor.cpp
@@ -389,7 +389,8 @@ ScanResultProcessor::addTrack( const QVariantMap &trackData, int albumArtistId )
     if( !m_artists.contains( trackData.value( Field::ARTIST ).toString() ) ||
         !m_genre.contains( trackData.value( Field::GENRE ).toString() )  ||
         !m_composer.contains( trackData.value( Field::COMPOSER ).toString() ) ||
-        !m_year.contains( trackData.value( Field::YEAR ).toString() ) )
+        !m_year.contains( trackData.value( Field::YEAR ).toString() ) ||
+        !compilationId )
             needToQuery = true;
 
     if( needToQuery )
@@ -590,10 +591,17 @@ ScanResultProcessor::databaseIdFetch( const QString &artist, const QString &genr
         query += QString( "SELECT id, CONCAT('ALBUMNAME_', name) AS name FROM albums_temp WHERE artist = %1 AND name = '%2' " )
                         .arg( QString::number( albumArtistId ), m_collection->escape( album ) );
 */
-    query += QString( "SELECT id, CONCAT('ARTISTNAME_', name) AS name FROM artists_temp WHERE name = '%1' " ).arg( m_collection->escape( artist ) );
-    query += QString( "UNION ALL SELECT id, CONCAT('GENRENAME_', name) AS name FROM genres_temp WHERE name = '%1' " ).arg( m_collection->escape( genre ) );
-    query += QString( "UNION ALL SELECT id, CONCAT('COMPOSERNAME_', name) AS name FROM composers_temp WHERE name = '%1' " ).arg( m_collection->escape( composer ) );
-    query += QString( "UNION ALL SELECT id, CONCAT('YEARSNAME_', name) AS name FROM years_temp WHERE name = '%1';" ).arg( m_collection->escape( year ) );
+    if( !m_artists.contains( artist ) )
+        query += QString( "UNION ALL SELECT id, CONCAT('ARTISTNAME_', name) AS name FROM artists_temp WHERE name = '%1' " ).arg( m_collection->escape( artist ) );
+    if( !m_genres.contains( genre ) )
+        query += QString( "UNION ALL SELECT id, CONCAT('GENRENAME_', name) AS name FROM genres_temp WHERE name = '%1' " ).arg( m_collection->escape( genre ) );
+    if( !m_composers.contains( composer ) )
+        query += QString( "UNION ALL SELECT id, CONCAT('COMPOSERNAME_', name) AS name FROM composers_temp WHERE name = '%1' " ).arg( m_collection->escape( composer ) );
+    if( !m_years.contains( year ) )
+        query += QString( "UNION ALL SELECT id, CONCAT('YEARSNAME_', name) AS name FROM years_temp WHERE name = '%1';" ).arg( m_collection->escape( year ) );
+    if( query.startsWith( "UNION ALL " ) )
+        query.remove( 0, 10 );
+        
     QStringList res = m_collection->query( query );
     int index = 0;
     QString first;