summaryrefslogtreecommitdiff
path: root/odoo/models.py
diff options
context:
space:
mode:
authorRaphael Collet <rco@odoo.com>2020-06-17 16:48:27 +0000
committerRaphael Collet <rco@odoo.com>2020-08-18 13:02:41 +0000
commit69869ab681e2271ae802ca3ab7285ee83580208d (patch)
tree341e265274c89177361498f411e20277f64a5b61 /odoo/models.py
parent0f7f163d2e2bb9cc38f2b037dae6df2eae9466a4 (diff)
[IMP] core: introduce subqueries in search
Make the method `_search` return a `Query` object, and make that object generate a subquery when used on the right-hand side of a condition. closes odoo/odoo#52403 Related: odoo/enterprise#10945 Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
Diffstat (limited to 'odoo/models.py')
-rw-r--r--odoo/models.py13
1 files changed, 5 insertions, 8 deletions
diff --git a/odoo/models.py b/odoo/models.py
index 5eb58b7aad4..f7e54cd4750 100644
--- a/odoo/models.py
+++ b/odoo/models.py
@@ -4397,14 +4397,11 @@ Fields:
res = self._cr.fetchone()
return res[0]
- order_by = self._generate_order_by(order, query)
- from_clause, where_clause, where_clause_params = query.get_sql()
- where_str = where_clause and (" WHERE %s" % where_clause) or ''
- limit_str = limit and ' limit %d' % limit or ''
- offset_str = offset and ' offset %d' % offset or ''
- query_str = 'SELECT "%s".id FROM ' % self._table + from_clause + where_str + order_by + limit_str + offset_str
- self._cr.execute(query_str, where_clause_params)
- return [row[0] for row in self._cr.fetchall()]
+ query.order = self._generate_order_by(order, query).replace('ORDER BY ', '')
+ query.limit = limit
+ query.offset = offset
+
+ return query
@api.returns(None, lambda value: value[0])
def copy_data(self, default=None):