diff --git a/src/calibre/db/backend.py b/src/calibre/db/backend.py index 9a13f4fd21..3a8bca7df1 100644 --- a/src/calibre/db/backend.py +++ b/src/calibre/db/backend.py @@ -515,6 +515,7 @@ class DB(object): # }}} def initialize_custom_columns(self): # {{{ + self.custom_columns_deleted = False with self.conn: # Delete previously marked custom columns for record in self.conn.get( @@ -537,6 +538,7 @@ class DB(object): DROP TABLE IF EXISTS {lt}; '''.format(table=table, lt=lt) ) + self.custom_columns_deleted = True self.conn.execute('DELETE FROM custom_columns WHERE mark_for_delete=1') # Load metadata for custom columns diff --git a/src/calibre/db/cache.py b/src/calibre/db/cache.py index ce7b48193f..6caa277508 100644 --- a/src/calibre/db/cache.py +++ b/src/calibre/db/cache.py @@ -107,6 +107,9 @@ class Cache(object): self._search_api = Search(self, 'saved_searches', self.field_metadata.get_search_terms()) self.initialize_dynamic() + if self.backend.custom_columns_deleted: + self.mark_as_dirty(self.all_book_ids()) + self.backend.custom_columns_deleted = False @write_api def initialize_dynamic(self): @@ -1547,7 +1550,6 @@ class Cache(object): @write_api def delete_custom_column(self, label=None, num=None): self.backend.delete_custom_column(label, num) - self._mark_as_dirty(self._all_book_ids()) @write_api def create_custom_column(self, label, name, datatype, is_multiple, editable=True, display={}):