Vacuum the SQLite DB after running the garbage collector

This commit is contained in:
Eelco Dolstra 2012-09-13 14:33:41 -04:00
parent 2923b55f9d
commit e6e495649c
3 changed files with 12 additions and 0 deletions

View file

@ -740,6 +740,9 @@ void LocalStore::collectGarbage(const GCOptions & options, GCResults & results)
printMsg(lvlError, format("deleting unused links...")); printMsg(lvlError, format("deleting unused links..."));
removeUnusedLinks(state); removeUnusedLinks(state);
} }
/* While we're at it, vacuum the database. */
if (options.action == GCOptions::gcDeleteDead) vacuumDB();
} }

View file

@ -1703,4 +1703,11 @@ void LocalStore::upgradeStore6()
} }
void LocalStore::vacuumDB()
{
if (sqlite3_exec(db, "vacuum;", 0, 0, 0) != SQLITE_OK)
throwSQLiteError(db, "vacuuming SQLite database");
}
} }

View file

@ -195,6 +195,8 @@ public:
void clearFailedPaths(const PathSet & paths); void clearFailedPaths(const PathSet & paths);
void vacuumDB();
private: private:
Path schemaPath; Path schemaPath;