Loading time was mesured on the loading of a second database (identical to the
first one), i.e. by passing -d xx,yy on the command line, using cProfile. The
databases were installed with sale, mrp, and the crm.
The cProfile code is commited as part of this patch and should be removed (or
maybe guarded by some command-line flag) (just as the commenting-out of the
cron startup).
The patch was also applied on top of the trunk-simple-table-stats-vmt branch
which provides SQL queries counters.
Results indicate that the number of SQL queries are reduced from about 2100 to
27. Loading time is reduced from 1.3s to 0.26s (i.e. improved by 5).
Changes:
All calls to ir_model_fields to fetch manual (custom) fields are done in a
single call (prior to instanciate all models).
Checks for empty module descriptions are not done unless we are in init or
update mode. (The behavior was the opposite, which was probably a mistake).
Some calls to ir_translation, passing en_US because there was no lang in the
context, are not done anymore.
The improved time is also a result of a change in the decimal_precision module
where precision_get fetches all digits/applications instead of one at a time
(and thus implements its own caching instead of relying on
openerp.tools.ormache).
bzr revid: vmt@openerp.com-20121211105954-lwgs5js7yw3tzghs
when test is run right at the boundary between two seconds, after rounding to second generated date and reference date could differ.
check that generated date is within a small range (date created before and date created after) instead of equal to reference
bzr revid: xmo@openerp.com-20121210165006-y720xrwlo37sjwm8
expression.parse: refactored the main parsing loop, now using source and result stacks. Leaf elements are encapsulated into a specific object, allowing to delegate the join condition formation, working table management and table aliases generation to them. The parsing is now a simple loop taking a leaf, doing one action on it, and putting the result back to be analyzed or in the results. This allows to avoid having nested loops and uncontrolled results.
Other modifications :
- updated the generation of order_by to take into account the table now referred using aliases
- updated Query object to use the aliases
- fixed an outstanding bug about _order, now handled as order. This means that putting direct SQL into _order of models will not be supported anymore, because of the computing complexity now that we have multiple joins in queries. The branch holds the patch from Paulius Sladkevičius
- updated and added tests
- added a basic documentation for the freature
lp bug: https://launchpad.net/bugs/1070757 fixed
bzr revid: tde@openerp.com-20121210154652-6sab9usb38i7adlh
mail_thread
- updated the message_unread function field, now returning a domain on mail_message notifications. This domain is quite complex and redundant, but mandatory in 7.0 considering the limitations of _auto_join
- message_ids is now using auto_join
- removed message_comment_ids field, not necessary and that lead to confusing data on kanban views
mail_message:
- notifications_ids is now using auto_join
- refactored the todo, now delegated to the notifications
- the favorite_user_ids field is therefore removed, and various methods updated
- updated _search_to_read and _search_starred to return a domain on notifications
- updated the domains of the mailboxes accordingly
bzr revid: tde@openerp.com-20121210154452-ngy6lw1jg97ib5gn