~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/bugs/model/bug.py

  • Committer: Launchpad Patch Queue Manager
  • Date: 2011-10-20 09:49:36 UTC
  • mfrom: (14175.1.1 bug-735998)
  • Revision ID: launchpad@pqm.canonical.com-20111020094936-nn5zad0i32k14b68
[r=lifeless][bug=735998] Bug._index_messages' include_parents query
        is now fast.

Show diffs side-by-side

added added

removed removed

Lines of Context:
53
53
    And,
54
54
    Desc,
55
55
    In,
 
56
    Join,
56
57
    LeftJoin,
57
58
    Max,
58
59
    Not,
553
554
                # permit use.
554
555
                message_by_id[message.id] = result
555
556
            return result
556
 
        # There is possibly some nicer way to do this in storm, but
557
 
        # this is a lot easier to figure out.
558
557
        if include_parents:
559
 
            ParentMessage = ClassAlias(Message, name="parent_message")
560
 
            tables = SQL("""
561
 
Message left outer join
562
 
message as parent_message on (
563
 
    message.parent=parent_message.id and
564
 
    parent_message.id in (
565
 
        select bugmessage.message from bugmessage where bugmessage.bug=%s)),
566
 
BugMessage""" % sqlvalues(self.id))
567
 
            lookup = Message, ParentMessage, BugMessage
568
 
            results = store.using(tables).find(
569
 
                lookup,
 
558
            ParentMessage = ClassAlias(Message)
 
559
            ParentBugMessage = ClassAlias(BugMessage)
 
560
            tables = [
 
561
                Message,
 
562
                Join(
 
563
                    BugMessage,
 
564
                    BugMessage.messageID == Message.id),
 
565
                LeftJoin(
 
566
                    Join(
 
567
                        ParentMessage,
 
568
                        ParentBugMessage,
 
569
                        ParentMessage.id == ParentBugMessage.messageID),
 
570
                    And(
 
571
                        Message.parent == ParentMessage.id,
 
572
                        ParentBugMessage.bugID == self.id)),
 
573
                ]
 
574
            results = store.using(*tables).find(
 
575
                (Message, ParentMessage, BugMessage),
570
576
                BugMessage.bugID == self.id,
571
 
                BugMessage.messageID == Message.id,
572
577
                )
573
578
        else:
574
579
            lookup = Message, BugMessage