From: Don Armstrong Date: Fri, 8 Jun 2018 20:35:48 +0000 (-0700) Subject: separate bin version and bin association queries X-Git-Url: https://git.donarmstrong.com/?p=debbugs.git;a=commitdiff_plain;h=daecace23d15f729a9350f60324308c5bb50a158 separate bin version and bin association queries - This runs about 10 times faster than when they are separate - Don't bother ordering versioning --- diff --git a/Debbugs/Package.pm b/Debbugs/Package.pm index 180493f..f3cf105 100644 --- a/Debbugs/Package.pm +++ b/Debbugs/Package.pm @@ -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,