[IMP] models: do not prefetch too many records at once
authorRaphael Collet <rco@openerp.com>
Mon, 1 Sep 2014 09:39:03 +0000 (11:39 +0200)
committerRaphael Collet <rco@openerp.com>
Tue, 2 Sep 2014 12:11:11 +0000 (14:11 +0200)
openerp/models.py

index 018af58..eaf643e 100644 (file)
@@ -246,6 +246,9 @@ class NewId(object):
 IdType = (int, long, basestring, NewId)
 
 
+# maximum number of prefetched records
+PREFETCH_MAX = 200
+
 # special columns automatically created by the ORM
 LOG_ACCESS_COLUMNS = ['create_uid', 'create_date', 'write_uid', 'write_date']
 MAGIC_COLUMNS = ['id'] + LOG_ACCESS_COLUMNS
@@ -3137,6 +3140,9 @@ class BaseModel(object):
         # fetch the records of this model without field_name in their cache
         records = self._in_cache_without(field)
 
+        if len(records) > PREFETCH_MAX:
+            records = records[:PREFETCH_MAX] | self
+
         # by default, simply fetch field
         fnames = {field.name}