From 5e06dce821549ef76d73df84fdc7535cd6ff4ac3 Mon Sep 17 00:00:00 2001 From: Benny Malengier Date: Tue, 31 Mar 2009 21:32:35 +0000 Subject: [PATCH] 02880: old api use in import grdb svn: r12400 --- src/GrampsDbUtils/_GrampsBSDDB.py | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/GrampsDbUtils/_GrampsBSDDB.py b/src/GrampsDbUtils/_GrampsBSDDB.py index cc4e3402e..3dbd9e6df 100644 --- a/src/GrampsDbUtils/_GrampsBSDDB.py +++ b/src/GrampsDbUtils/_GrampsBSDDB.py @@ -417,7 +417,7 @@ class GrampsBSDDB(GrampsDbBase, UpdateCallback): # These env settings are only needed for Txn environment self.env.set_lk_max_locks(25000) self.env.set_lk_max_objects(25000) - self.env.set_flags(db.DB_LOG_AUTOREMOVE, 1) # clean up unused logs + self.set_auto_remove() # clean up unused logs # The DB_PRIVATE flag must go if we ever move to multi-user setup env_flags = db.DB_CREATE | db.DB_PRIVATE | \ @@ -2378,7 +2378,30 @@ class GrampsBSDDB(GrampsDbBase, UpdateCallback): print name, obj # Return the required tuple return (new_obj, note_handles) - + + def set_auto_remove(self): + """ + BSDDB change log settings using new method with renamed attributes + """ + if db.version() < (4, 7): + # by the book: old method with old attribute + self.env.set_flags(db.DB_LOG_AUTOREMOVE, 1) + else: # look at python interface + # TODO test with new version of pybsddb + try: + # try numeric compare, just first 2 digits + # this won't work with something like "4.10a", but + # hopefully they won't do that + old_version = map(int, db.__version__.split(".",2)[:2]) < (4, 7) + except: + # fallback, weak string compare + old_version = db.__version__ < "4.7" + if old_version: + # undocumented: old method with new attribute + self.env.set_flags(db.DB_LOG_AUTO_REMOVE, 1) + else: + # by the book: new method with new attribute + self.env.log_set_config(db.DB_LOG_AUTO_REMOVE, 1) class BdbTransaction(Transaction): def __init__(self, msg, db, batch=False, no_magic=False):