]> Sergey Matveev's repositories - public-inbox.git/commitdiff
extindex: --gc doesn't touch ghost entries
authorEric Wong <e@80x24.org>
Sun, 10 Oct 2021 14:25:16 +0000 (14:25 +0000)
committerEric Wong <e@80x24.org>
Sun, 10 Oct 2021 23:29:54 +0000 (23:29 +0000)
We were deleting ghost entries, this was usually harmless since
other messages could fill-in-the-blanks, but could cause
misthreading in odd cases where a big chunk of a thread is
missing and the latest messages only referenced ghosts.

We'll also save some cycles when scanning Xapian shards since
docids won't be <= 0.

lib/PublicInbox/ExtSearchIdx.pm

index 42488e12f83b65f38d43c72aad33d27998446303..acf35e3d23a3e91a9587e7102230147b4f98b268 100644 (file)
@@ -425,13 +425,13 @@ DELETE FROM xref3 WHERE docid NOT IN (SELECT num FROM over)
 
        # fixup from old bugs:
        $nr = $self->{oidx}->dbh->do(<<'');
-DELETE FROM over WHERE num NOT IN (SELECT docid FROM xref3)
+DELETE FROM over WHERE num > 0 AND num NOT IN (SELECT docid FROM xref3)
 
        warn "I: eliminated $nr stale over entries\n" if $nr != 0;
        reindex_checkpoint($self, $sync) if checkpoint_due($sync);
 
        my ($cur) = $self->{oidx}->dbh->selectrow_array(<<EOM);
-SELECT MIN(num) FROM over
+SELECT MIN(num) FROM over WHERE num > 0
 EOM
        $cur // return; # empty
        my ($r, $n, %active);