Fix: Ambiguous column error in card search with multiple terms #2194
+25
−6
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.
Problem
When searching cards with multiple terms, SQLite raised an ambiguous column error:
This occurred because each term in the search was calling
.mentioning()separately in a reduce loop:Each
.mentioning()call added anotherINNER JOINto thesearch_records_ftstable, creating duplicate joins with the same table name, which SQLite couldn't disambiguate.Solution
Combined all search terms into a single FTS query using the
ANDoperator before calling.mentioning()once:This ensures only one join to
search_records_ftsis created, regardless of the number of search terms.Also added FTS sanitization by escaping double quotes to prevent query syntax errors when users search for terms containing special characters like
O"Reillyoruser's input.