Skip to content

Commit 4678f5e

Browse files
authored
Event: Fixes the N+1 query by dropping eagerly loading on the unused relationships in the iCal export
TYPE: Performance LINK: https://seantis-gmbh.sentry.io/issues/7605741267
1 parent f8f1cd2 commit 4678f5e

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

src/onegov/event/collections/occurrences.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from sqlalchemy.dialects.postgresql import array
1919
from sqlalchemy.orm import contains_eager
2020
from sqlalchemy.orm import joinedload
21+
from sqlalchemy.orm import raiseload
2122
from sqlalchemy.orm import undefer
2223
from webob.multidict import MultiDict
2324

@@ -772,6 +773,11 @@ def as_ical(self, request: CoreRequest) -> bytes:
772773

773774
query = self.session.query(Event).filter(Event.id.in_(event_ids))
774775
query = query.options(undefer(Event.content))
776+
# raise instead of eager-loading relations get_ical_vevents won't use
777+
query = query.options(
778+
raiseload(Event.occurrences),
779+
raiseload(Event.filter_keyword_objects),
780+
)
775781
for event in query:
776782
for vevent in event.get_ical_vevents(request.link(event)):
777783
vcalendar.add_component(vevent)

0 commit comments

Comments
 (0)