diff --git a/src/NzbDrone.Core/Datastore/Extensions/BuilderExtensions.cs b/src/NzbDrone.Core/Datastore/Extensions/BuilderExtensions.cs index e48ef63fcd..fe650a61cf 100644 --- a/src/NzbDrone.Core/Datastore/Extensions/BuilderExtensions.cs +++ b/src/NzbDrone.Core/Datastore/Extensions/BuilderExtensions.cs @@ -72,6 +72,15 @@ public static SqlBuilder LeftJoin(this SqlBuilder builder, Expres return builder.LeftJoin($"\"{rightTable}\" ON {wb.ToString()}"); } + public static SqlBuilder InnerJoin(this SqlBuilder builder, Expression> filter) + { + var wb = GetWhereBuilder(builder.DatabaseType, filter, false, builder.Sequence); + + var rightTable = TableMapping.Mapper.TableNameMapping(typeof(TRight)); + + return builder.InnerJoin($"\"{rightTable}\" ON {wb}"); + } + public static SqlBuilder GroupBy(this SqlBuilder builder, Expression> property) { var table = TableMapping.Mapper.TableNameMapping(typeof(TModel)); diff --git a/src/NzbDrone.Core/Download/Pending/PendingReleaseRepository.cs b/src/NzbDrone.Core/Download/Pending/PendingReleaseRepository.cs index d38a382c14..232527ff8a 100644 --- a/src/NzbDrone.Core/Download/Pending/PendingReleaseRepository.cs +++ b/src/NzbDrone.Core/Download/Pending/PendingReleaseRepository.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using NzbDrone.Core.Datastore; using NzbDrone.Core.Messaging.Events; +using NzbDrone.Core.Movies; namespace NzbDrone.Core.Download.Pending { @@ -30,7 +31,11 @@ public List AllByMovieId(int movieId) public List WithoutFallback() { - return Query(x => x.Reason != PendingReleaseReason.Fallback); + var builder = new SqlBuilder(_database.DatabaseType) + .InnerJoin((p, m) => p.MovieId == m.Id) + .Where(p => p.Reason != PendingReleaseReason.Fallback); + + return Query(builder); } } } diff --git a/src/NzbDrone.Core/Download/Pending/PendingReleaseService.cs b/src/NzbDrone.Core/Download/Pending/PendingReleaseService.cs index d24e89cebc..9ea33e5ce9 100644 --- a/src/NzbDrone.Core/Download/Pending/PendingReleaseService.cs +++ b/src/NzbDrone.Core/Download/Pending/PendingReleaseService.cs @@ -254,10 +254,7 @@ private List IncludeRemoteMovies(List releases, { foreach (var movie in knownRemoteMovies.Values.Select(v => v.Movie)) { - if (!movieMap.ContainsKey(movie.Id)) - { - movieMap[movie.Id] = movie; - } + movieMap.TryAdd(movie.Id, movie); } } @@ -273,7 +270,7 @@ private List IncludeRemoteMovies(List releases, // Just in case the movie was removed, but wasn't cleaned up yet (housekeeper will clean it up) if (movie == null) { - return null; + continue; } // Languages will be empty if added before upgrading to v4, reparsing the languages if they're empty will set it to Unknown or better.