mirror of
https://github.com/evennia/evennia.git
synced 2026-03-16 12:56:30 +01:00
CI: Try to reduce PostgreSQL overhead on XYZgrid multiple table merge (slowing Postgres CI runs)
This commit is contained in:
parent
bd162b0923
commit
c609e79dde
1 changed files with 8 additions and 2 deletions
|
|
@ -73,6 +73,7 @@ class XYZManager(ObjectManager):
|
||||||
if z == wildcard
|
if z == wildcard
|
||||||
else Q(db_tags__db_key__iexact=str(z), db_tags__db_category=MAP_Z_TAG_CATEGORY)
|
else Q(db_tags__db_key__iexact=str(z), db_tags__db_category=MAP_Z_TAG_CATEGORY)
|
||||||
)
|
)
|
||||||
|
.distinct()
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_xyz(self, xyz=(0, 0, "map"), **kwargs):
|
def get_xyz(self, xyz=(0, 0, "map"), **kwargs):
|
||||||
|
|
@ -97,9 +98,12 @@ class XYZManager(ObjectManager):
|
||||||
"""
|
"""
|
||||||
# filter by tags, then figure out of we got a single match or not
|
# filter by tags, then figure out of we got a single match or not
|
||||||
query = self.filter_xyz(xyz=xyz, **kwargs)
|
query = self.filter_xyz(xyz=xyz, **kwargs)
|
||||||
ncount = query.count()
|
# Avoid expensive count() on multi-join tag queries; we only need to
|
||||||
|
# know if there are 0, 1 or more than 1 unique matches.
|
||||||
|
matches = list(query[:2])
|
||||||
|
ncount = len(matches)
|
||||||
if ncount == 1:
|
if ncount == 1:
|
||||||
return query.first()
|
return matches[0]
|
||||||
|
|
||||||
# error - mimic default get() behavior but with a little more info
|
# error - mimic default get() behavior but with a little more info
|
||||||
x, y, z = xyz
|
x, y, z = xyz
|
||||||
|
|
@ -184,6 +188,7 @@ class XYZExitManager(XYZManager):
|
||||||
db_tags__db_key__iexact=str(zdest), db_tags__db_category=MAP_ZDEST_TAG_CATEGORY
|
db_tags__db_key__iexact=str(zdest), db_tags__db_category=MAP_ZDEST_TAG_CATEGORY
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
.distinct()
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_xyz_exit(self, xyz=(0, 0, "map"), xyz_destination=(0, 0, "map"), **kwargs):
|
def get_xyz_exit(self, xyz=(0, 0, "map"), xyz_destination=(0, 0, "map"), **kwargs):
|
||||||
|
|
@ -230,6 +235,7 @@ class XYZExitManager(XYZManager):
|
||||||
.filter(
|
.filter(
|
||||||
db_tags__db_key__iexact=str(zdest), db_tags__db_category=MAP_ZDEST_TAG_CATEGORY
|
db_tags__db_key__iexact=str(zdest), db_tags__db_category=MAP_ZDEST_TAG_CATEGORY
|
||||||
)
|
)
|
||||||
|
.distinct()
|
||||||
.get(**kwargs)
|
.get(**kwargs)
|
||||||
)
|
)
|
||||||
except self.model.DoesNotExist:
|
except self.model.DoesNotExist:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue