From e91ddd71ed75ea1181eb01516e7e3c0937fac8f3 Mon Sep 17 00:00:00 2001 From: Scott Searcy Date: Mon, 13 May 2024 09:07:59 -0700 Subject: [PATCH] Skip aggregator when none have been registered Constructing the aggregate queries looped through all objects in the session, even if no aggregates had been defined. This event was registered, just by importing `sqlalchemy_utils`, leading to unexpected side effects (slowdown) if a program loaded lots of models into a session. --- sqlalchemy_utils/aggregates.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sqlalchemy_utils/aggregates.py b/sqlalchemy_utils/aggregates.py index 9005e108..0b4d2ce5 100644 --- a/sqlalchemy_utils/aggregates.py +++ b/sqlalchemy_utils/aggregates.py @@ -534,6 +534,10 @@ def update_generator_registry(self): ) def construct_aggregate_queries(self, session, ctx): + if not self.generator_registry: + # short-circuit looping through objects if there are no aggregates defined + return + object_dict = defaultdict(list) for obj in session: for class_ in self.generator_registry: