[FIX] search: when count=True, execute main query as a subquery to avoid side effects with offset and limit
bzr revid: rco@openerp.com-20130218145100-4q24j8ko9j9elwpw
This commit is contained in:
parent
4d242424cd
commit
0f43032b82
|
@ -4870,12 +4870,16 @@ class BaseModel(object):
|
||||||
limit_str = limit and ' limit %d' % limit or ''
|
limit_str = limit and ' limit %d' % limit or ''
|
||||||
offset_str = offset and ' offset %d' % offset or ''
|
offset_str = offset and ' offset %d' % offset or ''
|
||||||
where_str = where_clause and (" WHERE %s" % where_clause) or ''
|
where_str = where_clause and (" WHERE %s" % where_clause) or ''
|
||||||
|
query_str = 'SELECT "%s".id FROM ' % self._table + from_clause + where_str + order_by + limit_str + offset_str
|
||||||
|
|
||||||
if count:
|
if count:
|
||||||
cr.execute('SELECT count("%s".id) FROM ' % self._table + from_clause + where_str + limit_str + offset_str, where_clause_params)
|
# /!\ the main query must be executed as a subquery, otherwise
|
||||||
res = cr.fetchall()
|
# offset and limit apply to the result of count()!
|
||||||
return res[0][0]
|
cr.execute('SELECT count(*) FROM (%s) AS res' % query_str, where_clause_params)
|
||||||
cr.execute('SELECT "%s".id FROM ' % self._table + from_clause + where_str + order_by + limit_str + offset_str, where_clause_params)
|
res = cr.fetchone()
|
||||||
|
return res[0]
|
||||||
|
|
||||||
|
cr.execute(query_str, where_clause_params)
|
||||||
res = cr.fetchall()
|
res = cr.fetchall()
|
||||||
|
|
||||||
# TDE note: with auto_join, we could have several lines about the same result
|
# TDE note: with auto_join, we could have several lines about the same result
|
||||||
|
|
Loading…
Reference in New Issue