[ZODB-Dev] BTrees package problems

Jim Fulton jim at zope.com
Mon Jul 22 13:08:40 CEST 2013


On Sat, Jul 20, 2013 at 11:27 PM, Christian Tismer <tismer at stackless.com> wrote:
> The BTrees package is an attempt to isolate certain things from ZODB.
>
> While I appreciate the general intent, I cannot see the advantage at
> this point:
>
> - BTrees can be imported alone, yes. But it has the extensions prepared
>    with special ZODB slots, which makes this very questionable.
>
> - BTrees furthermore claims the BTrees global bame for it, all though it
>    is not a general BTree package, but for ZODB BTrees, only.

Yeah, I worried about this when we broke it out.

OTOH, there isn't much concern with namespace
pollution in the Python community. :/

> - BTrees has a serious bug, see the following example:
>
>> >>> from BTrees import OOBTree as BT
>> >>> t = BT.BTree()
>> >>> for num in range(100):
>> ...   k = str(num)
>> ...   t[k] = k
>> ...
>> >>> t._firstbucket._next = None
>> >>> len(t)
>> Bus error: 10
>> (tmp)minimax:doc tismer$

Ouch.

>
> So there is either an omission to make t._next() read-only, or a check
> of its validity is missing.

Yup.  OTOH, you're the first person to encounter this
after many years, so while this is bad, and needs to be
fixed, I'm not sure how serious it is as a practical matter.

> Actually, I would like to add a callable-check instead, to allow for more
> flexible derivatives.

I don't understand this.

>
> * this was my second little rant about ZODB. Not finished as it seems.
>
> please, see this again as my kraut way of showing interest in improving
> very good things.

:)

Jim

-- 
Jim Fulton
http://www.linkedin.com/in/jimfulton


More information about the ZODB-Dev mailing list