[REV] expression: revert performance search one2many commit
Revert commit 54cd73a4f4 as it prevents customers from closing their pos sessions without timeouting. closes odoo/odoo#88941 X-original-commit: 43165dc3f7a8cc199219b8a32b65eb0ee7b5c2dd Signed-off-by: Julien Castiaux <juc@odoo.com> Signed-off-by: Olivier Dony <odo@odoo.com>
This commit is contained in:
@@ -1673,10 +1673,9 @@ class TestOne2many(TransactionCase):
|
||||
with self.assertQueries(['''
|
||||
SELECT "res_partner".id
|
||||
FROM "res_partner"
|
||||
WHERE EXISTS (
|
||||
SELECT 1 FROM "res_partner_bank" AS "res_partner__bank_ids"
|
||||
WHERE "res_partner__bank_ids"."partner_id" = "res_partner".id
|
||||
)
|
||||
WHERE ("res_partner"."id" IN (
|
||||
SELECT "partner_id" FROM "res_partner_bank" WHERE "partner_id" IS NOT NULL
|
||||
))
|
||||
ORDER BY "res_partner"."id"
|
||||
''']):
|
||||
self.Partner.search([('bank_ids', '!=', False)], order='id')
|
||||
@@ -1684,10 +1683,9 @@ class TestOne2many(TransactionCase):
|
||||
with self.assertQueries(['''
|
||||
SELECT "res_partner".id
|
||||
FROM "res_partner"
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM "res_partner_bank" AS "res_partner__bank_ids"
|
||||
WHERE "res_partner__bank_ids"."partner_id" = "res_partner".id
|
||||
)
|
||||
WHERE ("res_partner"."id" NOT IN (
|
||||
SELECT "partner_id" FROM "res_partner_bank" WHERE "partner_id" IS NOT NULL
|
||||
))
|
||||
ORDER BY "res_partner"."id"
|
||||
''']):
|
||||
self.Partner.search([('bank_ids', '=', False)], order='id')
|
||||
|
||||
@@ -809,14 +809,9 @@ class expression(object):
|
||||
else:
|
||||
if inverse_field.store and not (inverse_is_int and domain):
|
||||
# rewrite condition to match records with/without lines
|
||||
exists = 'EXISTS' if operator in NEGATIVE_TERM_OPERATORS else 'NOT EXISTS'
|
||||
rel_alias = _generate_table_alias(alias, field.name)
|
||||
push_result(f"""
|
||||
{exists} (
|
||||
SELECT 1 FROM "{comodel._table}" AS "{rel_alias}"
|
||||
WHERE "{rel_alias}"."{inverse_field.name}" = "{alias}".id
|
||||
)
|
||||
""", [])
|
||||
op1 = 'inselect' if operator in NEGATIVE_TERM_OPERATORS else 'not inselect'
|
||||
subquery = f'SELECT "{inverse_field.name}" FROM "{comodel._table}" WHERE "{inverse_field.name}" IS NOT NULL'
|
||||
push(('id', op1, (subquery, [])), model, alias, internal=True)
|
||||
else:
|
||||
comodel_domain = [(inverse_field.name, '!=', False)]
|
||||
if inverse_is_int and domain:
|
||||
|
||||
Reference in New Issue
Block a user