I should have noted that this API isn't widely used AFAIK, so it probably wouldn't be that big a deal to change it. Personally, I'd be inclined to change it to return oid, version, and next (or oid and next). Client code could always call load to get the transaction id and data.

Thoughts?

Jim

On Apr 24, 2007, at 7:19 PM, Jim Fulton wrote:


There's a semi-formal api for iterating over the current records in a storage. It is best explained with an example:

            >>> next = None
            >>> while 1:
... oid, tid, data, next = storage.record_iternext (next)
            ...     # do things with oid, tid, and data
            ...     if next is None:
            ...         break

Basically, next captures iterator state and you call record_iternext repeatedly until next becomes None. This low-level API was designed to work with ZEO. Maybe some day, we'll build a higher-level API on top of it. The API is broken, because versions aren't returned. In fact, the current FileStorage implementation of this, which tries to ignore versions will fail if there are objects in the FileStorage that are creates in a uncommitted version. We either need to fix this API, or stop supporting versions. (Not that we're really supporting them very well now.)

Jim

--
Jim Fulton                      mailto:[EMAIL PROTECTED]                Python 
Powered!
CTO                             (540) 361-1714                  
http://www.python.org
Zope Corporation        http://www.zope.com             http://www.zope.org




--
Jim Fulton                      mailto:[EMAIL PROTECTED]                Python 
Powered!
CTO                             (540) 361-1714                  
http://www.python.org
Zope Corporation        http://www.zope.com             http://www.zope.org



_______________________________________________
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev

Reply via email to