Optimization of composite column evaluation: don't compute the user_categories, as they cannot appear in a composite column.

This commit is contained in:
Charles Haley 2011-04-11 16:28:50 +01:00
parent f979f0d357
commit 3a2a3f1b4f
2 changed files with 14 additions and 11 deletions

View File

@ -191,7 +191,8 @@ class CacheRow(list): # {{{
if is_comp: if is_comp:
id = list.__getitem__(self, 0) id = list.__getitem__(self, 0)
self._must_do = False self._must_do = False
mi = self.db.get_metadata(id, index_is_id=True) mi = self.db.get_metadata(id, index_is_id=True,
get_user_categories=False)
for c in self._composites: for c in self._composites:
self[c] = mi.get(self._composites[c]) self[c] = mi.get(self._composites[c])
return list.__getitem__(self, col) return list.__getitem__(self, col)

View File

@ -823,7 +823,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
pass pass
return (path, mi, sequence) return (path, mi, sequence)
def get_metadata(self, idx, index_is_id=False, get_cover=False): def get_metadata(self, idx, index_is_id=False, get_cover=False,
get_user_categories=True):
''' '''
Convenience method to return metadata as a :class:`Metadata` object. Convenience method to return metadata as a :class:`Metadata` object.
Note that the list of formats is not verified. Note that the list of formats is not verified.
@ -882,16 +883,17 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
user_cats = self.prefs['user_categories'] user_cats = self.prefs['user_categories']
user_cat_vals = {} user_cat_vals = {}
for ucat in user_cats: if get_user_categories:
res = [] for ucat in user_cats:
for name,cat,ign in user_cats[ucat]: res = []
v = mi.get(cat, None) for name,cat,ign in user_cats[ucat]:
if isinstance(v, list): v = mi.get(cat, None)
if name in v: if isinstance(v, list):
if name in v:
res.append([name,cat])
elif name == v:
res.append([name,cat]) res.append([name,cat])
elif name == v: user_cat_vals[ucat] = res
res.append([name,cat])
user_cat_vals[ucat] = res
mi.user_categories = user_cat_vals mi.user_categories = user_cat_vals
if get_cover: if get_cover: