[IMP] models: ORM speedup

This branch is the combination of several optimizations in the ORM:

* store field values once in the cache: the cache reflects more
faithfully the database, only fields that explicitly depend on the
context have an extra indirection in the cache;

* delay recomputations by default: use method `recompute` to explicitly
flush out pending recomputations;

* delay updates in method `write`: updates are stored in a data
structure that can be flushed efficiently to the database with method
`flush` (which also flush out recomputations);

* make method `modified` take advantage of inverse fields to inverse
dependencies;

* filter records by evaluating a domain on records in Python;

* a computed field with `readonly=False` behaves like a normal field
with an onchange method;

* computed fields are computed in superuser mode by default.

Work done by Toufik Ben Jaa, Raphael Collet, Denis Ledoux and Fabien
Pinckaers.

closes odoo/odoo#35659

Signed-off-by: Denis Ledoux <beledouxdenis@users.noreply.github.com>
This commit is contained in:
Raphael Collet
2019-08-20 12:43:59 +00:00
committed by Denis Ledoux
parent e28d3aa4d3
commit 9920f20e4c
197 changed files with 3468 additions and 2083 deletions
+1 -1
View File
@@ -87,7 +87,7 @@ CREATE TABLE ir_model_data (
create_date timestamp without time zone,
write_date timestamp without time zone,
write_uid integer,
noupdate boolean,
noupdate boolean DEFAULT False,
name varchar NOT NULL,
date_init timestamp without time zone,
date_update timestamp without time zone,