From 3bf1bfc2ddb27ff206a942c718e4e3da5dbc8f1c Mon Sep 17 00:00:00 2001
From: Jim Fulton <jim@zope.com>
Date: Sun, 26 Oct 2008 00:36:46 +0000
Subject: [PATCH] Changed transaction records to support multiple iteration.

---
 src/ZODB/FileStorage/FileStorage.py | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/ZODB/FileStorage/FileStorage.py b/src/ZODB/FileStorage/FileStorage.py
index 93a4632d..f7cdd26f 100644
--- a/src/ZODB/FileStorage/FileStorage.py
+++ b/src/ZODB/FileStorage/FileStorage.py
@@ -1626,8 +1626,7 @@ class FileIterator(FileStorageFormatter):
         raise ZODB.interfaces.StorageStopIteration()
 
 
-class TransactionRecord(BaseStorage.TransactionRecord, FileStorageFormatter):
-    """Iterate over the transactions in a FileStorage file."""
+class TransactionRecord(BaseStorage.TransactionRecord):
 
     def __init__(self, tid, status, user, desc, ext, pos, tend, file, tpos):
         BaseStorage.TransactionRecord.__init__(
@@ -1637,6 +1636,18 @@ class TransactionRecord(BaseStorage.TransactionRecord, FileStorageFormatter):
         self._file = file
         self._tpos = tpos
 
+    def __iter__(self):
+        return TransactionRecordIterator(self)
+
+class TransactionRecordIterator(FileStorageFormatter):
+    """Iterate over the transactions in a FileStorage file."""
+
+    def __init__(self, record):
+        self._file = record._file
+        self._pos = record._pos
+        self._tpos = record._tpos
+        self._tend = record._tend
+
     def __iter__(self):
         return self
 
-- 
2.30.9