[06/11] check distinct(user) based on just user_id

Message ID 20180810080106.10714-7-stewart@linux.ibm.com
State New
Headers show
  • Performance for ALL THE THINGS!
Related show

Commit Message

Stewart Smith Aug. 10, 2018, 8:01 a.m.
The logic to display the Check(s) on the patch list wants to really do a
DISTINCT(user_id,context) ORDER BY DATE query, but with Django that is
currently a bit Too Hard (at least for me).

But what we can do is from python just use the user_id rather than the
user object itself. Same functionality, no join or prefetching users.

This saves a couple of hundred queries on the linuxppc/list/ view and
makes loading it about 4x faster in terms of time spent in the db.

Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
 patchwork/models.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


diff --git a/patchwork/models.py b/patchwork/models.py
index 15224ad69cfa..d356a6379ac3 100644
--- a/patchwork/models.py
+++ b/patchwork/models.py
@@ -539,7 +539,7 @@  class Patch(SeriesMixin, Submission):
         for check in self.check_set.all():
             ctx = check.context
-            user = check.user
+            user = check.user_id
             if user in unique and ctx in unique[user]:
                 # recheck condition - ignore the older result