(fix) BaseTrackCache: fix filterAndSort() to avoid unwanted extra tracks with extraFilter #15571
+12
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #14873 and similar symptoms in #14687 for me.
I only understand parts of BaseTrackCache, so I don't know how this can affect the 'dirty tracks' thing in real life.
The issue:
In #14687 tracks pop up in the Computer directory views that use LibraryTableModel.
Same for #14873, unrelated (older) tracks show up in Analyze view.
Root cause:
So called "extra filters" are sent to
SearchQueryParser::parseQuery(query, extraFilter)whereextraFilteris wrapped as SqlNode.In BaseTrackCache we add dirty tracks to the current view if they are missing but match the query -- however the extraFilter
SqlNode::match(pTrack)always returns true, making the check pointless because it adds dirty tracks even if they don't belong into the view.Fix:
refine that check and only consider
SqlNode::Match()if the extraFilter is empty.As far as I can tell, Analyze (and #14687) are the only features that make use of the extra filter.
But I'm not sure, so there may be side effects for other library views, too.