summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-12-17 17:14:08 +0000
committerGerrit Code Review <review@openstack.org>2018-12-17 17:14:09 +0000
commitf5984400373716ee5473266ab2a15bcd74f604fc (patch)
treeb93f1b340077937cb793fb03a464148cbca9b049
parent7ef3304b12e2a6a89cfedc99e09b214ae6de3d7a (diff)
parent25dc6a467c641ccad5cc75f1003548af4f28b4fb (diff)
downloadnova-f5984400373716ee5473266ab2a15bcd74f604fc.tar.gz
Merge "Remove GROUP BY clause from CellMapping.get_by_project_id" into stable/rocky18.1.0
-rw-r--r--nova/objects/cell_mapping.py16
1 files changed, 8 insertions, 8 deletions
diff --git a/nova/objects/cell_mapping.py b/nova/objects/cell_mapping.py
index d11237022b..7739afaa54 100644
--- a/nova/objects/cell_mapping.py
+++ b/nova/objects/cell_mapping.py
@@ -13,7 +13,6 @@
from oslo_log import log as logging
from oslo_utils import versionutils
import six.moves.urllib.parse as urlparse
-from sqlalchemy.orm import joinedload
from sqlalchemy.sql.expression import asc
from sqlalchemy.sql import false
from sqlalchemy.sql import true
@@ -276,13 +275,14 @@ class CellMappingList(base.ObjectListBase, base.NovaObject):
@staticmethod
@db_api.api_context_manager.reader
def _get_by_project_id_from_db(context, project_id):
- mappings = context.session.query(
- api_models.InstanceMapping).\
- filter_by(project_id=project_id).\
- group_by(api_models.InstanceMapping.cell_id).\
- options(joinedload('cell_mapping', innerjoin=True)).\
- all()
- return (mapping.cell_mapping for mapping in mappings)
+ # SELECT DISTINCT cell_id FROM instance_mappings \
+ # WHERE project_id = $project_id;
+ cell_ids = context.session.query(
+ api_models.InstanceMapping.cell_id).filter_by(
+ project_id=project_id).distinct().subquery()
+ # SELECT cell_mappings WHERE cell_id IN ($cell_ids);
+ return context.session.query(api_models.CellMapping).filter(
+ api_models.CellMapping.id.in_(cell_ids)).all()
@classmethod
def get_by_project_id(cls, context, project_id):