--- /dev/null
+import unittest\r
+import sys, os, glob\r
+\r
+try:\r
+ # For Pythons w/distutils pybsddb\r
+ from bsddb3 import db\r
+except ImportError:\r
+ # For Python 2.3\r
+ from bsddb import db\r
+\r
+\r
+#----------------------------------------------------------------------\r
+\r
+class pget_bugTestCase(unittest.TestCase):\r
+ """Verify that cursor.pget works properly"""\r
+ db_name = 'test-cursor_pget.db'\r
+\r
+ def setUp(self):\r
+ self.homeDir = os.path.join(os.path.dirname(sys.argv[0]), 'db_home')\r
+ try:\r
+ os.mkdir(self.homeDir)\r
+ except os.error:\r
+ pass\r
+ self.env = db.DBEnv()\r
+ self.env.open(self.homeDir, db.DB_CREATE | db.DB_INIT_MPOOL)\r
+ self.primary_db = db.DB(self.env)\r
+ self.primary_db.open(self.db_name, 'primary', db.DB_BTREE, db.DB_CREATE)\r
+ self.secondary_db = db.DB(self.env)\r
+ self.secondary_db.set_flags(db.DB_DUP)\r
+ self.secondary_db.open(self.db_name, 'secondary', db.DB_BTREE, db.DB_CREATE)\r
+ self.primary_db.associate(self.secondary_db, lambda key, data: data)\r
+ self.primary_db.put('salad', 'eggs')\r
+ self.primary_db.put('spam', 'ham')\r
+ self.primary_db.put('omelet', 'eggs')\r
+\r
+\r
+ def tearDown(self):\r
+ self.secondary_db.close()\r
+ self.primary_db.close()\r
+ self.env.close()\r
+ del self.secondary_db\r
+ del self.primary_db\r
+ del self.env\r
+ for file in glob.glob(os.path.join(self.homeDir, '*')):\r
+ os.remove(file)\r
+ os.removedirs(self.homeDir)\r
+\r
+ def test_pget(self):\r
+ cursor = self.secondary_db.cursor()\r
+\r
+ self.assertEquals(('eggs', 'salad', 'eggs'), cursor.pget(key='eggs', flags=db.DB_SET))\r
+ self.assertEquals(('eggs', 'omelet', 'eggs'), cursor.pget(db.DB_NEXT_DUP))\r
+ self.assertEquals(None, cursor.pget(db.DB_NEXT_DUP))\r
+\r
+ self.assertEquals(('ham', 'spam', 'ham'), cursor.pget('ham', 'spam', flags=db.DB_SET))\r
+ self.assertEquals(None, cursor.pget(db.DB_NEXT_DUP))\r
+\r
+ cursor.close()\r
+\r
+\r
+def test_suite():\r
+ return unittest.makeSuite(pget_bugTestCase)\r
+\r
+if __name__ == '__main__':\r
+ unittest.main(defaultTest='test_suite')\r
#error "eek! DBVER can't handle minor versions > 9"
#endif
-#define PY_BSDDB_VERSION "4.4.2"
+#define PY_BSDDB_VERSION "4.4.4"
static char *rcs_id = "$Id$";
int dlen = -1;
int doff = -1;
DBT key, pkey, data;
- static char* kwnames[] = { "key","data", "flags", "dlen", "doff",
- NULL };
+ static char* kwnames_keyOnly[] = { "key", "flags", "dlen", "doff", NULL };
+ static char* kwnames[] = { "key", "data", "flags", "dlen", "doff", NULL };
CLEAR_DBT(key);
CLEAR_DBT(data);
{
PyErr_Clear();
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Oi|ii:pget",
- &kwnames[1],
+ kwnames_keyOnly,
&keyobj, &flags, &dlen, &doff))
{
PyErr_Clear();