From f062eec6398e59f8636b00ef922be48a0f69c772 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Wed, 6 Aug 2014 18:48:35 +0200 Subject: [PATCH] [FIX] orm: _compute_related: ensure prefetch is done in batch Due to the use of a sudo env, the records were being added to the sudo cache one by one instead of all at once. This meant the prefetching was not able to load all records at once, leading to prohibitive times when processing thousands of records. --- openerp/fields.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openerp/fields.py b/openerp/fields.py index 71ded7c4a5e..4cfb2879747 100644 --- a/openerp/fields.py +++ b/openerp/fields.py @@ -418,9 +418,9 @@ class Field(object): def _compute_related(self, records): """ Compute the related field `self` on `records`. """ - for record in records: + for record, sudo_record in zip(records, records.sudo()): # bypass access rights check when traversing the related path - value = record.sudo() if record.id else record + value = sudo_record if record.id else record # traverse the intermediate fields, and keep at most one record for name in self.related[:-1]: value = value[name][:1]