From: Eric Wong Date: Sun, 10 Oct 2021 14:25:16 +0000 (+0000) Subject: extindex: --gc doesn't touch ghost entries X-Git-Tag: v1.7.0~197 X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=commitdiff_plain;h=341af725ce7ca711e7e5906138459854a3101309 extindex: --gc doesn't touch ghost entries 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. --- diff --git a/lib/PublicInbox/ExtSearchIdx.pm b/lib/PublicInbox/ExtSearchIdx.pm index 42488e12..acf35e3d 100644 --- a/lib/PublicInbox/ExtSearchIdx.pm +++ b/lib/PublicInbox/ExtSearchIdx.pm @@ -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(< 0 EOM $cur // return; # empty my ($r, $n, %active);