From 2538f84447f78238e10c09e92fdb6691fe6b9448 Mon Sep 17 00:00:00 2001 From: Tim Abbott Date: Tue, 18 Jun 2019 10:25:00 -0700 Subject: [PATCH] import: Fix bad database query for first_message_id. The previous query ended up doing an awkward join that did not guarantee use of the Recipient index on zerver_message, turning a very fast query into something that could take much longer for a single stream than the rest of the import combined. --- zerver/lib/import_realm.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/zerver/lib/import_realm.py b/zerver/lib/import_realm.py index 0e41f06de5..5489568622 100644 --- a/zerver/lib/import_realm.py +++ b/zerver/lib/import_realm.py @@ -1001,9 +1001,8 @@ def do_import_realm(import_dir: Path, subdomain: str, processes: int=1) -> Realm # Similarly, we need to recalculate the first_message_id for stream objects. for stream in Stream.objects.filter(realm=realm): - first_message = Message.objects.filter( - recipient__type_id=stream.id, - recipient__type=2).first() + recipient = Recipient.objects.get(type=Recipient.STREAM, type_id=stream.id) + first_message = Message.objects.filter(recipient=recipient).first() if first_message is None: stream.first_message_id = None else: