odoo/odoo#198443

Created by fw-bot
Merged at 5a61e440232b119f712ff9545ec3e535210bbb94

Statuses:

label
odoo-dev:saas-17.4-16.0-prefetch-new-lines-rco-416993-fw
head
91025f216d85b8aba0e9e67fd9c09f847bfb7d75
merged
8 months ago by Framework (ORM), Raphael Collet
odoo/odoo
16.0 #198124
17.0 #198202
saas-17.4 #198443
18.0 #198448
saas-18.1 #198454
saas-18.2 #198542
saas-18.3
saas-18.4
19.0
master #198749

[FW][FIX] core: prefetching of secondary new records

Consider a recordset of new records, and a loop like

for record in records:
    for line in record.line_ids:
        line.value

The implementation of record.line_ids does not actually prefetch all records. It actually fetches the field on the records' origin (their corresponding real records), but only assigns the current new record in cache. As the prefetching relies on the cached values of line_ids, the prefetching mechanism is actually broken on line.

The fix consists in assigning all the records to prefetch in this case. This does not add unexpected prefetching, since the origin records are prefetched as one batch anyway.

Forward-Port-Of: #198202
Forward-Port-Of: #198124