]> git.donarmstrong.com Git - debbugs.git/commitdiff
paginate updatesqlcache properly and fix missing table alias
authorDon Armstrong <don@donarmstrong.com>
Wed, 12 Apr 2017 02:46:25 +0000 (19:46 -0700)
committerDon Armstrong <don@donarmstrong.com>
Wed, 12 Apr 2017 02:46:25 +0000 (19:46 -0700)
Debbugs/DB/ResultSet/BugStatusCache.pm
bin/debbugs-updatesqlcache

index 264e0a917a47d9d5f15b176aca97ff85033752c7..18edf0c8df28188137af18c3de3b7493900eb131 100644 (file)
@@ -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
               },
index 85ae5c7ba554b578060ceb6dce566895f3ef8363..9ca9a03f323b123f1d78c8f4b3cce455cd16862a 100644 (file)
@@ -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);
     }
 }