- assigned_to: nobody --> jcea
For a btree database,
btree.get(inexistent_record,DB_SET_RECNO)
should return None instead of DB_SET_RECNO (28)
The faulty code is in function DB_get around
if ((err == DB_NOTFOUND || err == DB_KEYEMPTY) && (dfltobj != NULL)) {
Here *dfltobj has value DB_SET_RECNO
No problem if argument is explicitely defined using flags=
Simple code showing the bug:
vvvvvvvvvvvvvvvvvvvv
import bsddb3.db as db
db.version() # (4, 7, 25)
b.set_flags(db.DB_RECNUM)
b.open(filename = None, dbtype = db.DB_BTREE, flags = db.DB_CREATE)
b.put("one","ONE")
b.get(1, db.DB_SET_RECNO) # good return: ('one', 'ONE')
b.get(123,flags=db.DB_SET_RECNO) # good None return
b.get(123, db.DB_SET_RECNO) # bad 28 return (because 28 is db.DB_SET_RECNO passed as default argument)
^^^^^^^^^^^^^^^^^^^^