[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
r6850 - in trunk/gnue-appserver: . src/language
From: |
johannes |
Subject: |
r6850 - in trunk/gnue-appserver: . src/language |
Date: |
Mon, 3 Jan 2005 13:48:57 -0600 (CST) |
Author: johannes
Date: 2005-01-03 13:48:56 -0600 (Mon, 03 Jan 2005)
New Revision: 6850
Modified:
trunk/gnue-appserver/BUGS
trunk/gnue-appserver/src/language/ObjectList.py
Log:
using negative indices to ObjectLists - as returned by Session.find () - is
working as intended now
Modified: trunk/gnue-appserver/BUGS
===================================================================
--- trunk/gnue-appserver/BUGS 2005-01-03 19:13:56 UTC (rev 6849)
+++ trunk/gnue-appserver/BUGS 2005-01-03 19:48:56 UTC (rev 6850)
@@ -28,9 +28,6 @@
* There is no way to do a fulltext-search (has to be implemented in gnue-common
first)
-* If an ObjectList returned by a Session.find () has more than 10 items using
- an index of -1 does *not* give the last instance, but only the 10th.
-
* If appserver comes to sort a list of objects, NULL values are always
'first'. This might differ from the sort order given by the backend database
in use. (ROADMAP item for 0.4)
Modified: trunk/gnue-appserver/src/language/ObjectList.py
===================================================================
--- trunk/gnue-appserver/src/language/ObjectList.py 2005-01-03 19:13:56 UTC
(rev 6849)
+++ trunk/gnue-appserver/src/language/ObjectList.py 2005-01-03 19:48:56 UTC
(rev 6850)
@@ -44,6 +44,7 @@
self.__list = []
self.__list_id = None
+ self.__cacheStep = CACHE_STEP
self.__buildList ()
@@ -73,8 +74,14 @@
def __getitem__ (self, index):
try:
if type (index) == SliceType:
+ if index.start < 0:
+ self.__fillup ()
+
return self.__list [index.start:index.stop]
else:
+ if index < 0:
+ self.__fillup ()
+
return self.__list [index]
except:
@@ -108,11 +115,15 @@
sm = self.__session.getSessionManager ()
sid = self.__session.getSessionId ()
- rset = sm.fetch (sid, self.__list_id, len (self.__list), CACHE_STEP, 0)
+ rset = sm.fetch (sid, self.__list_id, len (self.__list),
self.__cacheStep,0)
for row in rset:
obj = Object (self.__session, self.classname, row [0])
self.__list.append (obj)
+ # We double the cache-size for the next call to fetch (). This boosts
+ # performance for fetching larger lists
+ self.__cacheStep *= 2
+
# fix for gnue-common 0.5.1 release (will be removed for later releases
# of gnue-common)
self.__length = len (self.__list)
@@ -120,3 +131,10 @@
# return number of updated rows
return len (rset)
+
+ def __fillup (self):
+
+ if len (self.__list) < len (self):
+ while self._populateList ():
+ pass
+
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- r6850 - in trunk/gnue-appserver: . src/language,
johannes <=