commit-gnue
[Top][All Lists]
Advanced

[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
   # ---------------------------------------------------------------------------





reply via email to

[Prev in Thread] Current Thread [Next in Thread]