diff options
-rw-r--r-- | Lib/bsddb/test/test_basics.py | 11 | ||||
-rw-r--r-- | Lib/bsddb/test/test_distributed_transactions.py | 4 | ||||
-rw-r--r-- | Misc/NEWS | 2 | ||||
-rw-r--r-- | Modules/_bsddb.c | 29 | ||||
-rw-r--r-- | setup.py | 2 |
5 files changed, 37 insertions, 11 deletions
diff --git a/Lib/bsddb/test/test_basics.py b/Lib/bsddb/test/test_basics.py index c5579de..b713496 100644 --- a/Lib/bsddb/test/test_basics.py +++ b/Lib/bsddb/test/test_basics.py @@ -1000,11 +1000,12 @@ class CrashAndBurn(unittest.TestCase) : # # See http://bugs.python.org/issue3307 # self.assertRaises(db.DBInvalidArgError, db.DB, None, 65535) - def test02_DBEnv_dealloc(self): - # http://bugs.python.org/issue3885 - import gc - self.assertRaises(db.DBInvalidArgError, db.DBEnv, ~db.DB_RPCCLIENT) - gc.collect() + if db.version() < (4, 8) : + def test02_DBEnv_dealloc(self): + # http://bugs.python.org/issue3885 + import gc + self.assertRaises(db.DBInvalidArgError, db.DBEnv, ~db.DB_RPCCLIENT) + gc.collect() #---------------------------------------------------------------------- diff --git a/Lib/bsddb/test/test_distributed_transactions.py b/Lib/bsddb/test/test_distributed_transactions.py index f864b88..c6243a2 100644 --- a/Lib/bsddb/test/test_distributed_transactions.py +++ b/Lib/bsddb/test/test_distributed_transactions.py @@ -35,7 +35,7 @@ class DBTxn_distributed(unittest.TestCase): db.DB_INIT_TXN | db.DB_INIT_LOG | db.DB_INIT_MPOOL | db.DB_INIT_LOCK, 0666) self.db = db.DB(self.dbenv) - self.db.set_re_len(db.DB_XIDDATASIZE) + self.db.set_re_len(db.DB_GID_SIZE) if must_open_db : if db.version() > (4,1) : txn=self.dbenv.txn_begin() @@ -76,7 +76,7 @@ class DBTxn_distributed(unittest.TestCase): # let them be garbage collected. for i in xrange(self.num_txns) : txn = self.dbenv.txn_begin() - gid = "%%%dd" %db.DB_XIDDATASIZE + gid = "%%%dd" %db.DB_GID_SIZE gid = adapt(gid %i) self.db.put(i, gid, txn=txn, flags=db.DB_APPEND) txns.add(gid) @@ -45,6 +45,8 @@ Library Extension Modules ----------------- +- Issue #6949: Allow the _bsddb extension to be built with db-4.8.x. + - Issue #8142: Update libffi to the 3.0.9 release. - Issue #1530559: When passing a non-integer argument to struct.pack with *any* diff --git a/Modules/_bsddb.c b/Modules/_bsddb.c index 5aedfca..9ae8e52 100644 --- a/Modules/_bsddb.c +++ b/Modules/_bsddb.c @@ -215,6 +215,10 @@ static PyObject* DBRepUnavailError; /* DB_REP_UNAVAIL */ #define DB_BUFFER_SMALL ENOMEM #endif +#if (DBVER < 48) +#define DB_GID_SIZE DB_XIDDATASIZE +#endif + /* --------------------------------------------------------------------- */ /* Structure definitions */ @@ -4501,7 +4505,11 @@ DBEnv_txn_recover(DBEnvObject* self) DBTxnObject *txn; #define PREPLIST_LEN 16 DB_PREPLIST preplist[PREPLIST_LEN]; +#if (DBVER < 48) long retp; +#else + u_int32_t retp; +#endif CHECK_ENV_NOT_CLOSED(self); @@ -4522,7 +4530,7 @@ DBEnv_txn_recover(DBEnvObject* self) flags=DB_NEXT; /* Prepare for next loop pass */ for (i=0; i<retp; i++) { gid=PyBytes_FromStringAndSize((char *)(preplist[i].gid), - DB_XIDDATASIZE); + DB_GID_SIZE); if (!gid) { Py_DECREF(list); return NULL; @@ -5047,6 +5055,7 @@ DBEnv_set_private(DBEnvObject* self, PyObject* private_obj) } +#if (DBVER < 48) static PyObject* DBEnv_set_rpc_server(DBEnvObject* self, PyObject* args, PyObject* kwargs) { @@ -5068,6 +5077,7 @@ DBEnv_set_rpc_server(DBEnvObject* self, PyObject* args, PyObject* kwargs) RETURN_IF_ERR(); RETURN_NONE(); } +#endif static PyObject* DBEnv_set_verbose(DBEnvObject* self, PyObject* args) @@ -5949,9 +5959,9 @@ DBTxn_prepare(DBTxnObject* self, PyObject* args) if (!PyArg_ParseTuple(args, "s#:prepare", &gid, &gid_size)) return NULL; - if (gid_size != DB_XIDDATASIZE) { + if (gid_size != DB_GID_SIZE) { PyErr_SetString(PyExc_TypeError, - "gid must be DB_XIDDATASIZE bytes long"); + "gid must be DB_GID_SIZE bytes long"); return NULL; } @@ -6541,8 +6551,10 @@ static PyMethodDef DBEnv_methods[] = { #endif {"set_get_returns_none",(PyCFunction)DBEnv_set_get_returns_none, METH_VARARGS}, {"txn_recover", (PyCFunction)DBEnv_txn_recover, METH_NOARGS}, +#if (DBVER < 48) {"set_rpc_server", (PyCFunction)DBEnv_set_rpc_server, METH_VARARGS||METH_KEYWORDS}, +#endif {"set_verbose", (PyCFunction)DBEnv_set_verbose, METH_VARARGS}, #if (DBVER >= 42) {"get_verbose", (PyCFunction)DBEnv_get_verbose, METH_VARARGS}, @@ -7091,6 +7103,7 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ ADD_INT(d, DB_MAX_PAGES); ADD_INT(d, DB_MAX_RECORDS); +#if (DBVER < 48) #if (DBVER >= 42) ADD_INT(d, DB_RPCCLIENT); #else @@ -7098,7 +7111,11 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ /* allow apps to be written using DB_RPCCLIENT on older Berkeley DB */ _addIntToDict(d, "DB_RPCCLIENT", DB_CLIENT); #endif +#endif + +#if (DBVER < 48) ADD_INT(d, DB_XA_CREATE); +#endif ADD_INT(d, DB_CREATE); ADD_INT(d, DB_NOMMAP); @@ -7115,7 +7132,13 @@ PyMODINIT_FUNC PyInit__bsddb(void) /* Note the two underscores */ ADD_INT(d, DB_INIT_TXN); ADD_INT(d, DB_JOINENV); +#if (DBVER >= 48) + ADD_INT(d, DB_GID_SIZE); +#else ADD_INT(d, DB_XIDDATASIZE); + /* Allow new code to work in old BDB releases */ + _addIntToDict(d, "DB_GID_SIZE", DB_XIDDATASIZE); +#endif ADD_INT(d, DB_RECOVER); ADD_INT(d, DB_RECOVER_FATAL); @@ -707,7 +707,7 @@ class PyBuildExt(build_ext): # a release. Most open source OSes come with one or more # versions of BerkeleyDB already installed. - max_db_ver = (4, 7) + max_db_ver = (4, 8) min_db_ver = (3, 3) db_setup_debug = False # verbose debug prints from this script? |