From 6d41bf2f5e98870da37376a28bae17d3e3f52132 Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Sat, 24 Aug 2013 22:18:49 +0200 Subject: [PATCH] Fix searching on is_multiple composite columns. --- src/calibre/db/fields.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/calibre/db/fields.py b/src/calibre/db/fields.py index 7ade57b1a2..8d818b716d 100644 --- a/src/calibre/db/fields.py +++ b/src/calibre/db/fields.py @@ -216,8 +216,16 @@ class CompositeField(OneToOneField): def iter_searchable_values(self, get_metadata, candidates, default_value=None): val_map = defaultdict(set) + splitter = self.table.metadata['is_multiple'].get('cache_to_list', None) for book_id in candidates: - val_map[self.get_value_with_cache(book_id, get_metadata)].add(book_id) + vals = self.get_value_with_cache(book_id, get_metadata) + if splitter: + vals = [vv.strip() for vv in vals.split(splitter)] + else: + vals = [vals] + for v in vals: + if v: + val_map[v].add(book_id) for val, book_ids in val_map.iteritems(): yield val, book_ids