mirror of https://github.com/OCA/social.git
When searching for failed messages, [this line][1] made Odoo search messages in 2 steps:
1. Find which `mail.tracking.email` records are in those states.
2. Find which of them belong to the present `mail.message` records.
Step 2 could take a long time if there were a lot of failures in a DB. In our proven case, this made loading the `res.partner` form view take about ~6s per partner. It was also slowing down other views.
With this simple fix, [that nasty line linked above][1] is solved with just one query like this:
```SQL
SELECT "mail_message".id FROM "mail_tracking_email" as "mail_message__mail_tracking_ids","mail_message"
WHERE ("mail_message"."id"="mail_message__mail_tracking_ids"."maiL_message_id") AND (((("mail_message"."model" = 'res.partner') AND ("mail_message"."mail_tracking_needs_action" = true)) AND ("mail_message__mail_tracking_ids"."state" in ('rejected','error','bounced','soft-bounced','spam'))) AND ("mail_message"."res_id" in (1000)))
ORDER BY "mail_message"."id" DESC
```
Thus this makes the forms load at normal speed again.
[1]:
|
||
---|---|---|
.. | ||
__init__.py | ||
ir_config_parameter.py | ||
ir_mail_server.py | ||
mail_alias.py | ||
mail_bounced_mixin.py | ||
mail_mail.py | ||
mail_message.py | ||
mail_resend_message.py | ||
mail_thread.py | ||
mail_tracking_email.py | ||
mail_tracking_event.py | ||
res_partner.py |