Skip to content

Commit

Permalink
Fixed #29997 -- Allowed combining SearchQuerys with different configs.
Browse files Browse the repository at this point in the history
Seems to be a needless restriction in
978a00e.
  • Loading branch information
jaap3 authored and timgraham committed Nov 30, 2018
1 parent 793a71b commit 8a1a919
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 6 deletions.
2 changes: 0 additions & 2 deletions django/contrib/postgres/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,6 @@ def _combine(self, other, connector, reversed):
'SearchQuery can only be combined with other SearchQuerys, '
'got {}.'.format(type(other))
)
if not self.config == other.config:
raise TypeError("SearchQuery configs don't match.")
if reversed:
return CombinedSearchQuery(other, connector, self, self.config)
return CombinedSearchQuery(self, connector, other, self.config)
Expand Down
20 changes: 16 additions & 4 deletions tests/postgres_tests/test_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,12 +276,24 @@ def test_query_invert(self):
searched = Line.objects.filter(character=self.minstrel, dialogue__search=~SearchQuery('kneecaps'))
self.assertCountEqual(searched, [self.verse0, self.verse2])

def test_query_config_mismatch(self):
with self.assertRaisesMessage(TypeError, "SearchQuery configs don't match."):
Line.objects.filter(
dialogue__search=SearchQuery('kneecaps', config='german') |
def test_combine_different_configs(self):
searched = Line.objects.filter(
dialogue__search=(
SearchQuery('cadeau', config='french') |
SearchQuery('nostrils', config='english')
)
)
self.assertCountEqual(searched, [self.french, self.verse2])

@skipUnlessDBFeature('has_phraseto_tsquery')
def test_combine_raw_phrase(self):
searched = Line.objects.filter(
dialogue__search=(
SearchQuery('burn:*', search_type='raw', config='simple') |
SearchQuery('rode forth from Camelot', search_type='phrase')
)
)
self.assertCountEqual(searched, [self.verse0, self.verse1, self.verse2])

def test_query_combined_mismatch(self):
msg = "SearchQuery can only be combined with other SearchQuerys, got"
Expand Down

0 comments on commit 8a1a919

Please sign in to comment.