[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnue] r7048 - trunk/gnue-appserver/src
From: |
reinhard |
Subject: |
[gnue] r7048 - trunk/gnue-appserver/src |
Date: |
Mon, 21 Feb 2005 01:48:57 -0600 (CST) |
Author: reinhard
Date: 2005-02-21 01:48:53 -0600 (Mon, 21 Feb 2005)
New Revision: 7048
Modified:
trunk/gnue-appserver/src/geasList.py
Log:
Replaced recursive algorithm for skipping records that don't fulfill the
appserver part of the condition by an interative algorithm. This should fix the
"maximum recursion depth" error when a condition with a calculated field is
applied to a very big result set.
Modified: trunk/gnue-appserver/src/geasList.py
===================================================================
--- trunk/gnue-appserver/src/geasList.py 2005-02-20 14:52:31 UTC (rev
7047)
+++ trunk/gnue-appserver/src/geasList.py 2005-02-21 07:48:53 UTC (rev
7048)
@@ -161,24 +161,22 @@
"""
record = self.__recordset.nextRecord ()
- self.__isComplete = record is None
- if record is not None:
+ while record is not None:
instance = geasInstance.geasInstance (self.__session, self.__connection,
record, self.__classdef)
- if self.__condition is not None:
- if not self.__condition.evaluate (instance):
- return self.__getInstance ()
+ if self.__condition is None or self.__condition.evaluate (instance):
+ return instance
+ record = self.__recordset.nextRecord ()
- return instance
+ # No more records
+ self.__isComplete = True
+ self.__length = len (self.__instances)
+ self.__recordset.close ()
+ self.__recordset = None
+ return None
- else:
- self.__length = len (self.__instances)
- self.__recordset.close ()
- self.__recordset = None
- return None
-
# ---------------------------------------------------------------------------
# Get a grouping sequence for an instance
# ---------------------------------------------------------------------------
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r7048 - trunk/gnue-appserver/src,
reinhard <=