From 2cf4b0a85bf99a3398306121587e5c348c93879f Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Tue, 11 Apr 2017 19:46:25 -0700 Subject: [PATCH] paginate updatesqlcache properly and fix missing table alias --- Debbugs/DB/ResultSet/BugStatusCache.pm | 8 +++++--- bin/debbugs-updatesqlcache | 8 ++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Debbugs/DB/ResultSet/BugStatusCache.pm b/Debbugs/DB/ResultSet/BugStatusCache.pm index 264e0a9..18edf0c 100644 --- a/Debbugs/DB/ResultSet/BugStatusCache.pm +++ b/Debbugs/DB/ResultSet/BugStatusCache.pm @@ -51,10 +51,12 @@ sub update_bug_status { dbh_do(sub { my ($s,$dbh,$bug,$suite,$arch,$status,$modified,$asof) = @_; select_one($dbh,<<'SQL',$bug,$suite,$arch,$status,$status); -INSERT INTO bug_status_cache (bug,suite,arch,status,modified,asof) +INSERT INTO bug_status_cache AS bsc +(bug,suite,arch,status,modified,asof) VALUES (?,?,?,?,NOW(),NOW()) -ON CONFLICT (bug,suite,arch) DO -UPDATE SET asof=NOW(),modified=CASE WHEN status=? THEN modified ELSE NOW() END +ON CONFLICT (bug,suite,arch) DO +UPDATE + SET asof=NOW(),modified=CASE WHEN bsc.status=? THEN bsc.modified ELSE NOW() END RETURNING status; SQL }, diff --git a/bin/debbugs-updatesqlcache b/bin/debbugs-updatesqlcache index 85ae5c7..9ca9a03 100644 --- a/bin/debbugs-updatesqlcache +++ b/bin/debbugs-updatesqlcache @@ -92,7 +92,7 @@ use vars qw($DEBUG); use Debbugs::Common qw(checkpid lockpid get_hashname getparsedaddrs getbugcomponent make_list getsourcemaintainers); use Debbugs::Config qw(:config); -use Debbugs::Status qw(bug_presence); +use Debbugs::Status qw(bug_presence read_bug); use Debbugs::DB; use DateTime; use File::stat; @@ -204,13 +204,16 @@ sub update_cache { } else { $bugs = $s->resultset('Bug')-> search_rs(undef, - {rows => 100}); + {rows => 100, + page => 1, + }); } my $update_bug = sub { my @bugs = @_; for my $bug (@bugs) { my $status = read_bug(bug => $bug->id); + next unless defined $status; for my $suite (@suites) { my $presence = bug_presence(bug => $bug->id, @@ -239,6 +242,7 @@ sub update_cache { } $s->txn_do($update_bug, $bugs_on_page->all()); + $p->update($page); } } -- 2.39.2