From: Kevin Benton Date: Fri, 17 Apr 2015 10:36:50 +0000 (-0700) Subject: Set loading strategy to joined for Routerport/Port X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=10b17a884452736a6b214bcb7705b955192a1748;p=openstack-build%2Fneutron-build.git Set loading strategy to joined for Routerport/Port The RouterPort model has a relationship to the ports model which is frequently relied on to get the port IDs of interfaces attached to a router. However, this defaults to the loading strategy to 'select', which meant a new query was being emitted for every interface to the ports table just to get the ID. This patch adjusts the relationship to be 'joined' by default so one query will fetch the related ports. Another option would have been not to use the port object at all since the ID is all that the callers were usually interested in. However, they would end up using the ID to do a port lookup, which is being optimized away in another patch anyway so the full port object from the relationship will end up getting used. Change-Id: Id1ae35f845f7367d5f1f065c6fa637da7b980a2b Partial-Bug: #1445412 --- diff --git a/neutron/db/l3_db.py b/neutron/db/l3_db.py index bc549937b..5ceb9030e 100644 --- a/neutron/db/l3_db.py +++ b/neutron/db/l3_db.py @@ -71,7 +71,8 @@ class RouterPort(model_base.BASEV2): port_type = sa.Column(sa.String(255)) port = orm.relationship( models_v2.Port, - backref=orm.backref('routerport', uselist=False, cascade="all,delete")) + backref=orm.backref('routerport', uselist=False, cascade="all,delete"), + lazy='joined') class Router(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant):