diff options
| author | Raphael Collet <rco@odoo.com> | 2020-06-17 16:48:27 +0000 |
|---|---|---|
| committer | Raphael Collet <rco@odoo.com> | 2020-08-18 13:02:41 +0000 |
| commit | 69869ab681e2271ae802ca3ab7285ee83580208d (patch) | |
| tree | 341e265274c89177361498f411e20277f64a5b61 /odoo/models.py | |
| parent | 0f7f163d2e2bb9cc38f2b037dae6df2eae9466a4 (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.py | 13 |
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): |
