Handle ambiguous column names in queries involving 'any' field and a relation field #5541
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.
Description
Fixes a
sqlite3.OperationalError
that occurs when querying any field and a field that only exists in the relation table. For exaple, trying to list albums that contain keyword and contain a track with foo in its title:Root Cause
SQLite fails when JOINs contain ambiguous column references. This happened because:
album
,albumartist
andgenre
fields.title:foo
queries a field in theitems
table, which gotJOINed with
albums
album
) exist in bothitems
andalbums
tables, thus SQLite couldn't resolve which table's column to useChanges
LibModel
with consistent table qualificationfield_query()
- Creates table-qualified field queriesany_field_query()
- Creates multi-field OR queriesany_writable_media_field_query()
- Similar to the above but for BPD / media filesmatch_all_query()
- Creates multi-field AND queriesAnyFieldQuery
in favor of composedOrQuery
To Do
docs/
to describe it.)docs/changelog.rst
to the bottom of one of the lists near the top of the document.)