mirror of
https://github.com/OCA/stock-logistics-warehouse.git
synced 2025-01-21 14:27:28 +02:00
Revert "Optimize SQL queries when searching a rule"
This reverts commit 768f186fd2.
Which is not more optimized, the optimization based on parent_path
doesn't make sense here as the ORM will read parent_path in the location
and get the parent ids by splitting the ids, it doesn't need more than
one query on stock_location which is done based on its id and can reuse
the cache, there is no lookup on parent path for parent_of.
>>> env["stock.reserve.rule"].search([("location_id", "parent_of", 3125)])
2020-05-27 05:36:59,938 1 DEBUG log_p odoo.sql_db: query: SELECT "stock_location"."id" as "id","stock_location"."name" as "name","stock_location"."complete_name" as "complete_name","stock_location"."active" as "active","stock_location"."usage" as "usage","stock_location"."location_id" as "location_id","stock_location"."comment" as "comment","stock_location"."parent_path" as "parent_path", <stripped>,"stock_location"."create_uid" as "create_uid","stock_location"."create_date" as "create_date","stock_location"."write_uid" as "write_uid","stock_location"."write_date" as "write_date" FROM "stock_location" WHERE "stock_location".id IN (3125)
2020-05-27 05:36:59,942 1 DEBUG log_p odoo.sql_db: query: SELECT "stock_reserve_rule".id FROM "stock_reserve_rule" WHERE (("stock_reserve_rule"."active" = true) AND ("stock_reserve_rule"."location_id" in (1,7,8,133,134,135,144,207,3125))) ORDER BY "stock_reserve_rule"."sequence" ,"stock_reserve_rule"."id"
This commit is contained in:
committed by
Sébastien Alix
parent
fe203b87ba
commit
2b2194afd1
@@ -64,14 +64,7 @@ class StockReserveRule(models.Model):
|
||||
)
|
||||
|
||||
def _rules_for_location(self, location):
|
||||
# We'll typically have a handful of rules, so reading all of them then
|
||||
# checking if they are a parent location of the location is pretty
|
||||
# fast. Searching all the parent locations then the rules matching them
|
||||
# can be much slower if we have many locations.
|
||||
rules = self.search([]).filtered(
|
||||
lambda rule: rule.location_id.parent_path.startswith(location.parent_path)
|
||||
)
|
||||
return rules
|
||||
return self.search([("location_id", "parent_of", location.id)])
|
||||
|
||||
def _eval_rule_domain(self, move, domain):
|
||||
move_domain = [("id", "=", move.id)]
|
||||
|
||||
Reference in New Issue
Block a user