diff --git a/src/calibre/db/tests/legacy.py b/src/calibre/db/tests/legacy.py index 2d8bf466f6..c936367ba4 100644 --- a/src/calibre/db/tests/legacy.py +++ b/src/calibre/db/tests/legacy.py @@ -192,6 +192,7 @@ class LegacyTest(BaseTest): 'has_id':[(1,), (2,), (3,), (9999,)], 'id':[(1,), (2,), (0,),], 'index':[(1,), (2,), (3,), ], + 'row':[(1,), (2,), (3,), ], 'is_empty':[()], 'count':[()], 'all_author_names':[()], @@ -254,6 +255,12 @@ class LegacyTest(BaseTest): o = {type('')(k) if isinstance(k, bytes) else k:set(v) if isinstance(v, list) else v for k, v in o.iteritems()} n = {k:set(v) if isinstance(v, list) else v for k, v in n.iteritems()} self.assertEqual(o, n) + + ndb.search('title:Unknown') + db.search('title:Unknown') + self.assertEqual(db.row(3), ndb.row(3)) + self.assertRaises(ValueError, ndb.row, 2) + self.assertRaises(ValueError, db.row, 2) db.close() # }}} diff --git a/src/calibre/db/view.py b/src/calibre/db/view.py index 2a578215ce..43243318d5 100644 --- a/src/calibre/db/view.py +++ b/src/calibre/db/view.py @@ -178,9 +178,13 @@ class View(object): return self._map_filtered[idx] def id_to_index(self, book_id): - return self._map.index(book_id) + return self._map_filtered.index(book_id) row = index_to_id + def index(self, book_id, cache=False): + x = self._map if cache else self._map_filtered + return x.index(book_id) + def _get(self, field, idx, index_is_id=True, default_value=None, fmt=lambda x:x): id_ = idx if index_is_id else self.index_to_id(idx) if index_is_id and not self.cache.has_id(id_):