]> git.donarmstrong.com Git - debbugs.git/commitdiff
separate bin version and bin association queries
authorDon Armstrong <don@donarmstrong.com>
Fri, 8 Jun 2018 20:35:48 +0000 (13:35 -0700)
committerDon Armstrong <don@donarmstrong.com>
Fri, 8 Jun 2018 20:35:48 +0000 (13:35 -0700)
 - This runs about 10 times faster than when they are separate
 - Don't bother ordering versioning

Debbugs/Package.pm

index 180493ff525859feb79de1a75f681efb751afee5..f3cf1056d58ee77b64e8e9f6ad9911ef59bc0a80 100644 (file)
@@ -262,7 +262,6 @@ sub _get_valid_version_info_from_db {
                        qw(bin_ver bin_pkg arch maintainer),
                       ],
                result_class => 'DBIx::Class::ResultClass::HashRefInflator',
-               order_by => {-desc => 'me.ver'}
               },
               );
     add_result_to_package($packages,$src_rs,
@@ -271,26 +270,58 @@ sub _get_valid_version_info_from_db {
                           \%src_packages,
                           \%bin_packages,
                          );
-    my $bin_rs = $s->resultset('BinVer')->
-       search({-or => [-and => {'bin_pkg.pkg' => [keys %bin_packages],
-                                 -or => {'suite.codename' => $common_dists,
-                                         'suite.suite_name' => $common_dists,
-                                        },
+    my $bin_assoc_rs =
+        $s->resultset('BinAssociation')->
+        search({-and => {'bin_pkg.pkg' => [keys %bin_packages],
+                         -or => {'suite.codename' => $common_dists,
+                                 'suite.suite_name' => $common_dists,
                                 },
-                        @bin_ver_search,
+                        }},
+               {join => [{'bin' =>
+                         [{'src_ver' => ['src_pkg',
+                                        'maintainer',
+                                       ]},
+                          'bin_pkg',
+                          'arch']},
+                         'suite',
+                      ],
+              'select' => [qw(src_pkg.pkg),
+                           qw(suite.codename),
+                           qw(suite.suite_name),
+                           qw(me.modified),
+                            qw(src_ver.ver),
+                           q(CONCAT(src_pkg.pkg,'/',src_ver.ver)),
+                           qw(bin.ver bin_pkg.pkg arch.arch),
+                           qw(maintainer.name),
+                           ],
+               'as' => [qw(src_pkg codename suite_name),
+                       qw(modified_time src_ver src_pkg_ver),
+                       qw(bin_ver bin_pkg arch maintainer),
+                      ],
+               result_class => 'DBIx::Class::ResultClass::HashRefInflator',
+              },
+              );
+    add_result_to_package($packages,$bin_assoc_rs,
+                          \%src_ver_packages,
+                          \%bin_ver_packages,
+                          \%src_packages,
+                          \%bin_packages,
+                         );
+    my $bin_rs = $s->resultset('BinVer')->
+        search({-or => [@bin_ver_search,
                        ],
                },
-              {join => ['bin_pkg',
-                      {'src_ver' => [{'src_associations' => 'suite'},
-                                     'src_pkg',
-                                     'maintainer',
-                                    ]},
-                       'arch',
-                       ],
-               'select' => [qw(src_pkg.pkg),
+             {join => ['bin_pkg',
+                      {'bin_associations' => 'suite'},
+                      {'src_ver' => ['src_pkg',
+                                     'maintainer',
+                                    ]},
+                       'arch',
+                      ],
+              'select' => [qw(src_pkg.pkg),
                            qw(suite.codename),
                            qw(suite.suite_name),
-                           qw(src_associations.modified),
+                           qw(bin_associations.modified),
                             qw(src_ver.ver),
                            q(CONCAT(src_pkg.pkg,'/',src_ver.ver)),
                            qw(me.ver bin_pkg.pkg arch.arch),
@@ -301,7 +332,6 @@ sub _get_valid_version_info_from_db {
                        qw(bin_ver bin_pkg arch maintainer),
                       ],
                result_class => 'DBIx::Class::ResultClass::HashRefInflator',
-               order_by => {-desc => 'me.ver'}
               },
               );
     add_result_to_package($packages,$bin_rs,