diff options
| author | Raphael Collet <rco@odoo.com> | 2020-05-05 12:56:07 +0000 |
|---|---|---|
| committer | Raphael Collet <rco@odoo.com> | 2020-05-20 07:56:44 +0000 |
| commit | 84a595301edeb558f93ce5509efdcd8e30fd2a64 (patch) | |
| tree | 92b20abade241617d6aa51737958c9489426fd84 /odoo/addons/base/tests/test_expression.py | |
| parent | 0fa101a8bf13671162bda91deb98bd0c7ec76f3f (diff) | |
[REF] expression: use and return a Query object
The management of the join contexts now relies on the `Query` object,
that has all the necessary logic to do so. The refactoring also removes
the class `ExtendedLeaf`, which is no longer necessary: the join
contexts are all managed by a single `Query` object, and the parsing
stack now only contains triples like (leaf, model, table_alias).
Also inline directly the SQL translation made in `_to_sql`, which
overall simplifies the management of SQL parameters in the domain
compilation. The algorithm is illustrated in the code itself.
Diffstat (limited to 'odoo/addons/base/tests/test_expression.py')
| -rw-r--r-- | odoo/addons/base/tests/test_expression.py | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/odoo/addons/base/tests/test_expression.py b/odoo/addons/base/tests/test_expression.py index 4e0e5fc0be9..d0e9811e2a1 100644 --- a/odoo/addons/base/tests/test_expression.py +++ b/odoo/addons/base/tests/test_expression.py @@ -1124,16 +1124,16 @@ class TestMany2one(TransactionCase): self.Partner.search([('company_id.partner_id.name', 'like', self.company.name)]) with self.assertQueries([''' - SELECT "res_company".id - FROM "res_company" - WHERE ("res_company"."name"::text LIKE %s) - ORDER BY "res_company"."sequence", "res_company"."name" - ''', ''' SELECT "res_country".id FROM "res_country" WHERE ("res_country"."code"::text LIKE %s) ORDER BY "res_country"."name" ''', ''' + SELECT "res_company".id + FROM "res_company" + WHERE ("res_company"."name"::text LIKE %s) + ORDER BY "res_company"."sequence", "res_company"."name" + ''', ''' SELECT "res_partner".id FROM "res_partner" WHERE (("res_partner"."company_id" IN (%s)) OR ("res_partner"."country_id" IN (%s))) @@ -1202,8 +1202,8 @@ class TestMany2one(TransactionCase): SELECT "res_partner".id FROM "res_partner", "res_company" AS "res_partner__company_id", "res_partner" AS "res_partner__company_id__partner_id" - WHERE ("res_partner"."company_id" = "res_partner__company_id"."id" - AND "res_partner__company_id"."partner_id" = "res_partner__company_id__partner_id"."id") + WHERE ("res_partner"."company_id" = "res_partner__company_id"."id") + AND ("res_partner__company_id"."partner_id" = "res_partner__company_id__partner_id"."id") AND ("res_partner__company_id__partner_id"."name"::text LIKE %s) ORDER BY "res_partner"."display_name" ''']): @@ -1221,10 +1221,10 @@ class TestMany2one(TransactionCase): # WRONG QUERY: it discards results where company_id or country_id are NULL with self.assertQueries([''' SELECT "res_partner".id - FROM "res_partner", "res_company" AS "res_partner__company_id", - "res_country" AS "res_partner__country_id" - WHERE ("res_partner"."company_id" = "res_partner__company_id"."id" - AND "res_partner"."country_id" = "res_partner__country_id"."id") + FROM "res_partner", "res_country" AS "res_partner__country_id", + "res_company" AS "res_partner__company_id" + WHERE ("res_partner"."country_id" = "res_partner__country_id"."id") + AND ("res_partner"."company_id" = "res_partner__company_id"."id") AND (("res_partner__company_id"."name"::text LIKE %s) OR ("res_partner__country_id"."code"::text LIKE %s)) ORDER BY "res_partner"."display_name" @@ -1372,8 +1372,8 @@ class TestOne2many(TransactionCase): SELECT "res_partner".id FROM "res_partner", "res_partner" AS "res_partner__child_ids", "res_partner_bank" AS "res_partner__child_ids__bank_ids" - WHERE ("res_partner"."id" = "res_partner__child_ids"."parent_id" - AND "res_partner__child_ids"."id" = "res_partner__child_ids__bank_ids"."partner_id") + WHERE ("res_partner"."id" = "res_partner__child_ids"."parent_id") + AND ("res_partner__child_ids"."id" = "res_partner__child_ids__bank_ids"."partner_id") AND (("res_partner__child_ids"."active" = %s) AND ("res_partner__child_ids__bank_ids"."sanitized_acc_number"::text LIKE %s)) ORDER BY "res_partner"."display_name" @@ -1390,8 +1390,8 @@ class TestOne2many(TransactionCase): SELECT "res_partner".id FROM "res_partner", "res_partner" AS "res_partner__child_ids", "res_partner_bank" AS "res_partner__child_ids__bank_ids" - WHERE ("res_partner"."id" = "res_partner__child_ids"."parent_id" - AND "res_partner__child_ids"."id" = "res_partner__child_ids__bank_ids"."partner_id") + WHERE ("res_partner"."id" = "res_partner__child_ids"."parent_id") + AND ("res_partner__child_ids"."id" = "res_partner__child_ids__bank_ids"."partner_id") AND ((NOT (("res_partner__child_ids"."name" = %s))) AND (("res_partner__child_ids__bank_ids"."sanitized_acc_number"::text LIKE %s) AND ("res_partner__child_ids__bank_ids"."id" in (%s,%s,%s)))) @@ -1410,9 +1410,9 @@ class TestOne2many(TransactionCase): FROM "res_partner", "res_partner" AS "res_partner__child_ids", "res_country_state" AS "res_partner__child_ids__state_id", "res_country" AS "res_partner__child_ids__state_id__country_id" - WHERE ("res_partner"."id" = "res_partner__child_ids"."parent_id" - AND "res_partner__child_ids"."state_id" = "res_partner__child_ids__state_id"."id" - AND "res_partner__child_ids__state_id"."country_id" = "res_partner__child_ids__state_id__country_id"."id") + WHERE ("res_partner"."id" = "res_partner__child_ids"."parent_id") + AND ("res_partner__child_ids"."state_id" = "res_partner__child_ids__state_id"."id") + AND ("res_partner__child_ids__state_id"."country_id" = "res_partner__child_ids__state_id__country_id"."id") AND (("res_partner__child_ids"."active" = %s) AND ("res_partner__child_ids__state_id__country_id"."code"::text LIKE %s)) ORDER BY "res_partner"."display_name" |
