account_statement_base_completion: useless query

Bug #1287708 reported by Guewen Baconnier @ Camptocamp
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Banking Addons
New
Undecided
Guewen Baconnier @ Camptocamp

Bug Description

See:
http://bazaar.launchpad.net/~banking-addons-team/banking-addons/bank-statement-reconcile-70/view/head:/account_statement_base_completion/statement.py#L317

The key 'partner_memoizer' is never set in the context, so a search on all the partners is always executed.
Then, the full list of IDs is used in the next query in "WHERE id IN %s" which is really inefficient.

I guess this is dead code and propose to remove it completely.

If someone claims that there is a reason to have this key in the context (used by another module I may be unaware of), then the former search is still useless as we already know the IDs.

In all cases, a search should be done to apply the record rules, but *after* the big query so it will be done only on a subset of a few IDs.

Revision history for this message
Guewen Baconnier @ Camptocamp (gbaconnier-c2c) wrote :

Hmm in fact it is set. In the method itself:

        # We memoize allowed partner
        if not context.get('partner_memoizer'):
            context['partner_memoizer'] = tuple(self.pool['res.partner'].search(cr, uid, []))
        if not context['partner_memoizer']:
            return res

But I have some doubt on the efficiency of such a thing as anyway it always searches all the ids.

Changed in banking-addons:
assignee: nobody → Guewen Baconnier @ Camptocamp (gbaconnier-c2c)
description: updated
Revision history for this message
Guewen Baconnier @ Camptocamp (gbaconnier-c2c) wrote :

Tested with the related branch on a database with 480'000 partners on a small bank statement with only 8 lines:
Current code: 132 seconds to complete
Branch in my code: 129 seconds to complete
The lines did not autocomplete though, that means that more queries would have been issued with lines that are matched.

The current code using the big filter on all the ids seems a bit clunky to me, but changing in now will maybe not improve the performance.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.