[Zodb-checkins] CVS: Packages/bsddb3Storage - Full.py:1.26
barry@digicool.com
barry@digicool.com
Fri, 15 Jun 2001 14:29:37 -0400 (EDT)
Update of /cvs-repository/Packages/bsddb3Storage/bsddb3Storage
In directory korak.digicool.com:/tmp/cvs-serv26524
Modified Files:
Full.py
Log Message:
history(): Jim says that the `version' argument is a bug, and should
be ignored. This simplifies the logic a bit.
--- Updated File Full.py in package Packages/bsddb3Storage --
--- Full.py 2001/06/14 20:47:37 1.25
+++ Full.py 2001/06/15 18:29:37 1.26
@@ -845,49 +845,49 @@
def history(self, oid, version=None, size=1, filter=None):
self._lock_acquire()
try:
- # Find the vid for the version
- if version is None:
- tvid = None
- version = ''
- elif version == '':
- tvid = 0
- else:
- # BAW: for now, let KeyErrors percolate up
- tvid = self._vids[version]
- # Start with the most recent revision of the object, then search
- # the transaction records backwards finding revisions in the
- # selected version.
+ # Jim says:
+ #
+ # This documentation is wrong. I think that the version should
+ # be ignored. It really shouldn't be in the signature. Zope
+ # never passes the version argument.
+ #
+ # so we ignore `version', which makes our lives a bit easier. We
+ # start with the most recent revision of the object, then search
+ # the transaction records backwards until we find enough records.
history = []
revid = self._serials[oid]
# BAW: Again, let KeyErrors percolate up
while len(history) < size:
+ # Some information comes out of the revision metadata...
vid, nvrevid, lrevid, previd = struct.unpack(
'>8s8s8s8s', self._metadata[oid+revid])
- if tvid is None or vid == ZERO or tvid == vid:
- # Get transaction metadata, which we need to fill in the
- # appropriate HistoryEntry slots.
- txnmeta = self._txnMetadata[revid]
- userlen, desclen = struct.unpack('>II', txnmeta[1:9])
- user = txnmeta[9:9+userlen]
- desc = txnmeta[9+userlen:9+userlen+desclen]
- # Now get the pickle size
- data = self._pickles[oid+lrevid]
- # Create a HistoryEntry structure, which turns out to be a
- # dictionary with some specifically named entries (BAW:
- # although this poorly documented).
- if vid == ZERO:
- retvers = ''
- else:
- retvers = version
- d = {'time' : TimeStamp(revid).timeTime(),
- 'user_name' : user,
- 'description': desc,
- 'serial' : revid,
- 'version' : retvers,
- 'size' : len(data),
- }
- if filter is None or filter(d):
- history.append(d)
+ # ...while other information comes out of the transaction
+ # metadata.
+ txnmeta = self._txnMetadata[revid]
+ userlen, desclen = struct.unpack('>II', txnmeta[1:9])
+ user = txnmeta[9:9+userlen]
+ desc = txnmeta[9+userlen:9+userlen+desclen]
+ # Now get the pickle size
+ data = self._pickles[oid+lrevid]
+ # Create a HistoryEntry structure, which turns out to be a
+ # dictionary with some specifically named entries (BAW:
+ # although this poorly documented).
+ if vid == ZERO:
+ retvers = ''
+ else:
+ retvers = self._versions[vid]
+ # The HistoryEntry object
+ d = {'time' : TimeStamp(revid).timeTime(),
+ 'user_name' : user,
+ 'description': desc,
+ 'serial' : revid,
+ 'version' : retvers,
+ 'size' : len(data),
+ }
+ if filter is None or filter(d):
+ history.append(d)
+ # Chase the link backwards to the next most historical
+ # revision, stopping when we've reached the end.
if previd == ZERO:
break
revid = previd