← Back to team overview

c2c-oerpscenario team mailing list archive

[Bug 715749] Re: [trunk] [5.0] [6.0] keep ids order on read method with an _inherits object

 

Just for the record, this is the comment I added on Quentin's merge
proposals against 5.0 and 6.0, where he added in-memory sorting of
read's result:

~~~
Quentin, thank you for the merge proposal, however we cannot accept such a change in stable branches, like 5.0 or 6.0. 
You may want to re-submit against the trunk version only.

But even for trunk, this in-memory sorting of the results of read() can be a performance problem, and this is the reason why read() does not re-sort the result when it returns them.
Read() is basically a "SELECT [fields] from table where id in [ids]" which postgres has no reason to sort in the order of [ids]. To be able to do that, read() should receive the sort order to use, and thus pass it in the SELECT query.

This requires an API change, and in order to avoid duplicating the
features of search() there, it would probably make sense to implement
this as part of a new combined search_read() method, that would do both
things at the same time, using postgres to implement the ordering
efficiently.

Hope this helps.

-- 
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.
https://bugs.launchpad.net/bugs/715749

Title:
  [trunk] [5.0] [6.0] keep ids order on read method with an _inherits
  object

Status in OpenERP Server:
  Confirmed

Bug description:
  On v.5 and v.6 trunk.

  When you give a list of ids on read function of an _inherits object
  (like product.product), the read function returns automatically a list
  of dictionnaries sorted by id (for product.product) even if you give a
  not sorted list of id.

  To see that, on a new db with demo data, create a XML-RPC script which
  search all products with 'pc' in their name. This search function
  returns you a list of ids sorted by id. Take this list of ids and
  sorted it again with the biggest id at first and the smallest at last.

  Give this new sorted list to the read function and see the result of
  this function : the list of result is sorted by id (with the smallest
  id at first).

  It's a bug because the read function doesn't keep the order of ids
  give to the function.



Follow ups

References