diff options
| author | Shadowghost <Ghost_of_Stone@web.de> | 2026-01-17 19:39:12 +0100 |
|---|---|---|
| committer | Shadowghost <Ghost_of_Stone@web.de> | 2026-01-18 19:48:46 +0100 |
| commit | 89427af41cdcad519bf865ee14278acf1ce1baed (patch) | |
| tree | ea9bedf6384108441ed34cb9aa83bf19571feda2 /Jellyfin.Server.Implementations/Item/FolderAwareFilterExtensions.cs | |
| parent | 5996c4afce11249804d24f1caa3a99b390543c4d (diff) | |
Fixes after rebase
Diffstat (limited to 'Jellyfin.Server.Implementations/Item/FolderAwareFilterExtensions.cs')
| -rw-r--r-- | Jellyfin.Server.Implementations/Item/FolderAwareFilterExtensions.cs | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/Jellyfin.Server.Implementations/Item/FolderAwareFilterExtensions.cs b/Jellyfin.Server.Implementations/Item/FolderAwareFilterExtensions.cs index c63d99d54d..d7b2567f37 100644 --- a/Jellyfin.Server.Implementations/Item/FolderAwareFilterExtensions.cs +++ b/Jellyfin.Server.Implementations/Item/FolderAwareFilterExtensions.cs @@ -1,3 +1,5 @@ +#pragma warning disable RS0030 // Do not use banned APIs + using System; using System.Linq; using System.Linq.Expressions; @@ -24,17 +26,13 @@ internal static class FolderAwareFilterExtensions JellyfinDbContext context, Expression<Func<BaseItemEntity, bool>> condition) { + // Use correlated Any() subqueries instead of UNION + Contains for better index utilization var matchingIds = context.BaseItems.Where(condition).Select(b => b.Id); - var foldersWithMatchingDescendants = context.AncestorIds - .Where(a => matchingIds.Contains(a.ItemId)) - .Select(a => a.ParentItemId) - .Union(context.LinkedChildren - .Where(lc => matchingIds.Contains(lc.ChildId)) - .Select(lc => lc.ParentId)); return query.Where(e => matchingIds.Contains(e.Id) - || foldersWithMatchingDescendants.Contains(e.Id)); + || context.AncestorIds.Any(a => a.ParentItemId == e.Id && matchingIds.Contains(a.ItemId)) + || context.LinkedChildren.Any(lc => lc.ParentId == e.Id && matchingIds.Contains(lc.ChildId))); } /// <summary> @@ -51,15 +49,10 @@ internal static class FolderAwareFilterExtensions Expression<Func<BaseItemEntity, bool>> condition) { var matchingIds = context.BaseItems.Where(condition).Select(b => b.Id); - var foldersWithMatchingDescendants = context.AncestorIds - .Where(a => matchingIds.Contains(a.ItemId)) - .Select(a => a.ParentItemId) - .Union(context.LinkedChildren - .Where(lc => matchingIds.Contains(lc.ChildId)) - .Select(lc => lc.ParentId)); return query.Where(e => !matchingIds.Contains(e.Id) - && !foldersWithMatchingDescendants.Contains(e.Id)); + && !context.AncestorIds.Any(a => a.ParentItemId == e.Id && matchingIds.Contains(a.ItemId)) + && !context.LinkedChildren.Any(lc => lc.ParentId == e.Id && matchingIds.Contains(lc.ChildId))); } } |
