Repair backupdb.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
Daira Hopwood 2015-07-16 17:55:02 +01:00
parent 57fc30be44
commit f423e72062

View File

@ -24,7 +24,7 @@ CREATE TABLE local_files
size INTEGER, -- os.stat(fn)[stat.ST_SIZE] size INTEGER, -- os.stat(fn)[stat.ST_SIZE]
mtime NUMBER, -- os.stat(fn)[stat.ST_MTIME] mtime NUMBER, -- os.stat(fn)[stat.ST_MTIME]
ctime NUMBER, -- os.stat(fn)[stat.ST_CTIME] ctime NUMBER, -- os.stat(fn)[stat.ST_CTIME]
fileid INTEGER,%s fileid INTEGER%s
); );
CREATE TABLE caps CREATE TABLE caps
@ -67,7 +67,7 @@ UPDATERS = {
} }
SCHEMA_v3 = MAIN_SCHEMA % (3, "\nversion INTEGER\n") + TABLE_DIRECTORY SCHEMA_v3 = MAIN_SCHEMA % (3, ",\nversion INTEGER\n") + TABLE_DIRECTORY
def get_backupdb(dbfile, stderr=sys.stderr, def get_backupdb(dbfile, stderr=sys.stderr,
@ -77,10 +77,10 @@ def get_backupdb(dbfile, stderr=sys.stderr,
try: try:
(sqlite3, db) = get_db(dbfile, stderr, create_version, updaters=UPDATERS, (sqlite3, db) = get_db(dbfile, stderr, create_version, updaters=UPDATERS,
just_create=just_create, dbname="backupdb") just_create=just_create, dbname="backupdb")
if create_version[1] == 2: if create_version[1] in (1, 2):
return BackupDB_v2(sqlite3, db) return BackupDB(sqlite3, db)
elif create_version[1] == 3: elif create_version[1] == 3:
return BackupDB_v3(sqlite3, db) return MagicFolderDB(sqlite3, db)
else: else:
print >>stderr, "invalid db schema version specified" print >>stderr, "invalid db schema version specified"
return None return None
@ -139,7 +139,7 @@ class DirectoryResult:
self.bdb.did_check_directory_healthy(self.dircap, results) self.bdb.did_check_directory_healthy(self.dircap, results)
class BackupDB_v2: class BackupDB:
VERSION = 2 VERSION = 2
NO_CHECK_BEFORE = 1*MONTH NO_CHECK_BEFORE = 1*MONTH
ALWAYS_CHECK_AFTER = 2*MONTH ALWAYS_CHECK_AFTER = 2*MONTH
@ -365,8 +365,8 @@ class BackupDB_v2:
self.connection.commit() self.connection.commit()
class BackupDB_v3(BackupDB_v2): class MagicFolderDB(BackupDB):
VERSION = 3 # XXX does this override the class var from parent class? VERSION = 3
def get_local_file_version(self, path): def get_local_file_version(self, path):
"""I will tell you the version of a local file tracked by our magic folder db. """I will tell you the version of a local file tracked by our magic folder db.