* Turn the deadlock situation described in SF bug #775414 into a
DBDeadLockError exception.
* add the test case for my previous dbtables commit.
diff --git a/Lib/bsddb/__init__.py b/Lib/bsddb/__init__.py
index c004c08..d5ab000 100644
--- a/Lib/bsddb/__init__.py
+++ b/Lib/bsddb/__init__.py
@@ -344,6 +344,7 @@
else:
raise error, "cachesize must be >= 20480"
e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL)
+ e.set_lk_detect(db.DB_LOCK_DEFAULT)
return e
def _checkflag(flag, file):
diff --git a/Lib/bsddb/test/test_dbtables.py b/Lib/bsddb/test/test_dbtables.py
index 1128a5a..26e3d36 100644
--- a/Lib/bsddb/test/test_dbtables.py
+++ b/Lib/bsddb/test/test_dbtables.py
@@ -339,6 +339,16 @@
conditions={'Name': dbtables.LikeCond('%')},
mappings={'Access': increment_access})
+ try:
+ self.tdb.Modify(tabname,
+ conditions={'Name': dbtables.LikeCond('%')},
+ mappings={'Access': 'What is your quest?'})
+ except TypeError:
+ # success, the string value in mappings isn't callable
+ pass
+ else:
+ raise RuntimeError, "why was TypeError not raised for bad callable?"
+
# Delete key in select conditions
values = self.tdb.Select(
tabname, None,