mirror of
https://github.com/ankitects/anki.git
synced 2025-09-21 15:32:23 -04:00
delete tombstones in integrity check as we can guarantee a full sync; optimize
This commit is contained in:
parent
1ddf1be747
commit
feadce76f3
1 changed files with 15 additions and 4 deletions
19
anki/deck.py
19
anki/deck.py
|
@ -3113,7 +3113,8 @@ where id = :id""", fid=f.id, cmid=m.cardModels[0].id, id=id)
|
||||||
if quick:
|
if quick:
|
||||||
num = 4
|
num = 4
|
||||||
else:
|
else:
|
||||||
num = 8
|
num = 9
|
||||||
|
oldSize = os.stat(self.path)[stat.ST_SIZE]
|
||||||
self.startProgress(num)
|
self.startProgress(num)
|
||||||
self.updateProgress(_("Checking integrity..."))
|
self.updateProgress(_("Checking integrity..."))
|
||||||
if self.s.scalar("pragma integrity_check") != "ok":
|
if self.s.scalar("pragma integrity_check") != "ok":
|
||||||
|
@ -3233,8 +3234,21 @@ where cards.cardModelId = cardModels.id)""")
|
||||||
# rebuild
|
# rebuild
|
||||||
self.updateProgress(_("Rebuilding types..."))
|
self.updateProgress(_("Rebuilding types..."))
|
||||||
self.rebuildTypes()
|
self.rebuildTypes()
|
||||||
|
# since we can ensure the updated version will be propagated to
|
||||||
|
# all locations, we can forget old tombstones
|
||||||
|
for k in ("cards", "facts", "models", "media"):
|
||||||
|
self.s.statement("delete from %sDeleted" % k)
|
||||||
# force a full sync
|
# force a full sync
|
||||||
self.setSchemaModified()
|
self.setSchemaModified()
|
||||||
|
# and finally, optimize
|
||||||
|
self.updateProgress(_("Optimizing..."))
|
||||||
|
self.optimize()
|
||||||
|
newSize = os.stat(self.path)[stat.ST_SIZE]
|
||||||
|
save = (oldSize - newSize)/1024
|
||||||
|
txt = _("Database rebuilt and optimized.")
|
||||||
|
if save > 0:
|
||||||
|
txt += "\n" + _("Saved %dKB.") % save
|
||||||
|
problems.append(txt)
|
||||||
# update deck and save
|
# update deck and save
|
||||||
if not quick:
|
if not quick:
|
||||||
self.flushMod()
|
self.flushMod()
|
||||||
|
@ -3251,12 +3265,9 @@ original layout of the facts has been lost."""))
|
||||||
return "ok"
|
return "ok"
|
||||||
|
|
||||||
def optimize(self):
|
def optimize(self):
|
||||||
oldSize = os.stat(self.path)[stat.ST_SIZE]
|
|
||||||
self.s.commit()
|
self.s.commit()
|
||||||
self.s.statement("vacuum")
|
self.s.statement("vacuum")
|
||||||
self.s.statement("analyze")
|
self.s.statement("analyze")
|
||||||
newSize = os.stat(self.path)[stat.ST_SIZE]
|
|
||||||
return oldSize - newSize
|
|
||||||
|
|
||||||
# Undo/redo
|
# Undo/redo
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
Loading…
Reference in a new issue