diff -up banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumArtistListModel.cs.sqlite-hints banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumArtistListModel.cs --- banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumArtistListModel.cs.sqlite-hints 2014-02-18 15:35:23.000000000 -0500 +++ banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumArtistListModel.cs 2016-02-12 13:49:54.560806549 -0500 @@ -46,7 +46,7 @@ namespace Banshee.Collection.Database ReloadFragmentFormat = @" FROM CoreArtists WHERE CoreArtists.ArtistID IN (SELECT CoreAlbums.ArtistID FROM CoreAlbums, CoreTracks, CoreCache{0} - WHERE CoreCache.ModelID = {1} AND + WHERE {4}(CoreCache.ModelID = {1}) AND CoreTracks.AlbumID = CoreAlbums.AlbumID AND EXISTS (SELECT 1 FROM CoreArtists WHERE ArtistID = CoreAlbums.ArtistID) AND CoreCache.ItemID = {2} {3}) diff -up banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumListModel.cs.sqlite-hints banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumListModel.cs --- banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumListModel.cs.sqlite-hints 2014-02-18 15:40:14.000000000 -0500 +++ banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumListModel.cs 2016-02-12 13:49:54.560806549 -0500 @@ -56,7 +56,7 @@ namespace Banshee.Collection.Database ReloadFragmentFormat = @" FROM CoreAlbums WHERE CoreAlbums.AlbumID IN (SELECT CoreTracks.AlbumID FROM CoreTracks, CoreCache{0} - WHERE CoreCache.ModelID = {1} AND + WHERE {4}(CoreCache.ModelID = {1}) AND CoreCache.ItemId = {2} {3}) ORDER BY CoreAlbums.TitleSortKey, CoreAlbums.ArtistNameSortKey"; } diff -up banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistListModel.cs.sqlite-hints banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistListModel.cs --- banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistListModel.cs.sqlite-hints 2014-02-18 15:35:23.000000000 -0500 +++ banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistListModel.cs 2016-02-12 13:49:54.560806549 -0500 @@ -49,7 +49,7 @@ namespace Banshee.Collection.Database ReloadFragmentFormat = @" FROM CoreArtists WHERE CoreArtists.ArtistID IN (SELECT CoreTracks.ArtistID FROM CoreTracks, CoreCache{0} - WHERE CoreCache.ModelID = {1} AND + WHERE {4}(CoreCache.ModelID = {1}) AND CoreCache.ItemID = {2} {3}) ORDER BY NameSortKey"; } diff -up banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseFilterListModel.cs.sqlite-hints banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseFilterListModel.cs --- banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseFilterListModel.cs.sqlite-hints 2014-02-18 15:35:23.000000000 -0500 +++ banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseFilterListModel.cs 2016-02-12 13:54:24.530444339 -0500 @@ -57,10 +57,10 @@ namespace Banshee.Collection.Database } protected readonly U select_all_item; - private HyenaSqliteConnection connection; + private BansheeDbConnection connection; public DatabaseFilterListModel (string name, string label, Banshee.Sources.DatabaseSource source, - DatabaseTrackListModel trackModel, HyenaSqliteConnection connection, SqliteModelProvider provider, U selectAllItem, string uuid) + DatabaseTrackListModel trackModel, BansheeDbConnection connection, SqliteModelProvider provider, U selectAllItem, string uuid) : base (trackModel) { this.source = source; @@ -124,7 +124,8 @@ namespace Banshee.Collection.Database "{0}.{1} AND CoreTracks.TrackID = {0}.{2}", FilteredModel.JoinTable, FilteredModel.JoinPrimaryKey, FilteredModel.JoinColumn) : "CoreTracks.TrackID", - filtered ? GetFilterFragment () : "" + filtered ? GetFilterFragment () : "", + connection.LikelihoodSupport ? "UNLIKELY" : "" ); } diff -up banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseQueryFilterModel.cs.sqlite-hints banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseQueryFilterModel.cs --- banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseQueryFilterModel.cs.sqlite-hints 2014-02-18 15:35:23.000000000 -0500 +++ banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseQueryFilterModel.cs 2016-02-12 13:52:27.749466163 -0500 @@ -37,6 +37,7 @@ using Hyena.Data.Sqlite; using Mono.Unix; using Banshee.ServiceStack; +using Banshee.Database; namespace Banshee.Collection.Database { @@ -51,7 +52,7 @@ namespace Banshee.Collection.Database private string select_all_fmt; public DatabaseQueryFilterModel (Banshee.Sources.DatabaseSource source, DatabaseTrackListModel trackModel, - HyenaSqliteConnection connection, string select_all_fmt, string uuid, QueryField field, string filter_column) + BansheeDbConnection connection, string select_all_fmt, string uuid, QueryField field, string filter_column) : base (field.Name, field.Label, source, trackModel, connection, QueryFilterInfo.CreateProvider (filter_column, field), new QueryFilterInfo (), String.Format ("{0}-{1}", uuid, field.Name)) { this.field = field; @@ -59,7 +60,7 @@ namespace Banshee.Collection.Database ReloadFragmentFormat = @" FROM CoreTracks, CoreCache{0} - WHERE CoreCache.ModelID = {1} AND CoreCache.ItemID = {2} {3} + WHERE {4}(CoreCache.ModelID = {1}) AND CoreCache.ItemID = {2} {3} ORDER BY Value"; QueryFields = new QueryFieldSet (query_filter_field); diff -up banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseYearListModel.cs.sqlite-hints banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseYearListModel.cs --- banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseYearListModel.cs.sqlite-hints 2014-02-18 15:35:23.000000000 -0500 +++ banshee-2.6.2/src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseYearListModel.cs 2016-02-12 13:49:54.561806540 -0500 @@ -47,7 +47,7 @@ namespace Banshee.Collection.Database FROM (SELECT MIN(CoreTracks.TrackID) AS TrackID, CoreTracks.Year FROM CoreTracks GROUP BY CoreTracks.Year) AS CoreTracks WHERE CoreTracks.Year IN (SELECT CoreTracks.Year FROM CoreTracks, CoreCache{0} - WHERE CoreCache.ModelID = {1} AND + WHERE {4}(CoreCache.ModelID = {1}) AND CoreCache.ItemID = {2} {3}) ORDER BY Year"; } diff -up banshee-2.6.2/src/Core/Banshee.Services/Banshee.Database/BansheeDbConnection.cs.sqlite-hints banshee-2.6.2/src/Core/Banshee.Services/Banshee.Database/BansheeDbConnection.cs --- banshee-2.6.2/src/Core/Banshee.Services/Banshee.Database/BansheeDbConnection.cs.sqlite-hints 2016-02-12 13:50:42.853383993 -0500 +++ banshee-2.6.2/src/Core/Banshee.Services/Banshee.Database/BansheeDbConnection.cs 2016-02-12 13:56:29.789348335 -0500 @@ -52,6 +52,20 @@ namespace Banshee.Database get { return configuration; } } + private bool? likelihood_support = null; + public bool LikelihoodSupport { + get { + if (!likelihood_support.HasValue) { + // emulate the SQLITE_VERSION_NUMBER macro + string[] v = Query ("SELECT sqlite_version ()").Split ('.'); + likelihood_support = (Int32.Parse (v[0]) * 1000000 + + Int32.Parse (v[1]) * 1000 + + Int32.Parse (v[2])) >= 3008001; + } + return likelihood_support.Value; + } + } + public BansheeDbConnection () : this (DatabaseFile) { validate_schema = ApplicationContext.CommandLine.Contains ("validate-db-schema");