

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
1 message in org.python.python-bugs-list[ python-Bugs-788421 ] bsddb btree se...| From | Sent On | Attachments |
|---|---|---|
| SourceForge.net | Mar 16, 2004 2:59 am |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread Paste this link in email or IM: |
| Atom feed for this thread Paste this URL into your reader: |
| Subject: | [ python-Bugs-788421 ] bsddb btree set_location() semantics changed | Actions... |
|---|---|---|
| From: | SourceForge.net (nore...@sourceforge.net) | |
| Date: | Mar 16, 2004 2:59:24 am | |
| List: | org.python.python-bugs-list | |
Bugs item #788421, was opened at 2003-08-13 16:21 Message generated for change (Comment added) made by greg You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=105470&aid=788421&group_id=5470
Category: Extension Modules Group: Python 2.3 Status: Closed Resolution: Fixed Priority: 5 Submitted By: Gregory P. Smith (greg) Assigned to: Gregory P. Smith (greg) Summary: bsddb btree set_location() semantics changed
Initial Comment: In the old bsddb module a bsddb.btopen(..) database would return the next available key+value on a set_location(key) call when key did not exist in the database. In python 2.3 (pybsddb) it raises an exception and leaves the cursor at an unknown position in the database.
[reported by Anthony McDonaly on comp.lang.python]
import os import bsddb os.chdir('/tmp') my_data = bsddb.btopen('testing', 'c') for i in range(10):
... if i == 5: ... pass ... else: ... my_data['%d'%i] = '%d'%(i*i) ...
my_data.keys()
['0', '1', '2', '3', '4',
'6', '7', '8', '9']
my_data.sync()
my_data.set_location('5')
Traceback (most recent call last): File "<stdin>", line 1, in ? File "/space/python-2.3/lib/python2.3/bsddb/__init__.py", line 117, in set_location return self.dbc.set(key) _bsddb.DBNotFoundError: (-30991, 'DB_NOTFOUND: No matching key/data pair found')
Correct behaviour would have been to return ('6', '36')
----------------------------------------------------------------------
Comment By: Gregory P. Smith (greg)
Date: 2004-03-15 23:59
Message: Logged In: YES user_id=413
committed fix to head and release23-maint along with an associated fix for
set_range where it could free() memory that it doesn't own on non B-Tree
databases.
----------------------------------------------------------------------
Comment By: Gregory P. Smith (greg) Date: 2004-02-26 02:11
Message: Logged In: YES user_id=413
Yes this is a bug. The set_location() method should have been calling
set_range() rather than set() internally.
Fixing that exposed another bug: set_range() would crash when looking up a key
that exists in hash or rn databases.
Both bugs have been fixed to fix this one in python 2.4 & pybsddb CVS.
This bugfix should go into python 2.3.4.
----------------------------------------------------------------------
You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=105470&aid=788421&group_id=5470







