diff options
author | Eric Wong <e@80x24.org> | 2018-08-05 08:19:25 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2018-08-05 21:09:04 +0000 |
commit | ce5494b5b830e9b8b60815ccd81218390dc0d5db (patch) | |
tree | 9c56b355aba80f03473e8dc23fe648f9bfd32cb3 /lib/PublicInbox | |
parent | 0c22c3e3a99527ebf04a647ca287ea2fc9bdeddd (diff) | |
download | public-inbox-ce5494b5b830e9b8b60815ccd81218390dc0d5db.tar.gz |
Otherwise, walking backwards through history could mean the root message in a thread forgets its `tid' and it prevents messages from being looked up by it. This bug was hidden by the fact that `sid' matches were often good enough to link threads together.
Diffstat (limited to 'lib/PublicInbox')
-rw-r--r-- | lib/PublicInbox/OverIdx.pm | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/PublicInbox/OverIdx.pm b/lib/PublicInbox/OverIdx.pm index 62fec0da..cc9bd7d4 100644 --- a/lib/PublicInbox/OverIdx.pm +++ b/lib/PublicInbox/OverIdx.pm @@ -79,8 +79,15 @@ sub mid2id { } sub delete_by_num { - my ($self, $num) = @_; + my ($self, $num, $tid_ref) = @_; my $dbh = $self->{dbh}; + if ($tid_ref) { + my $sth = $dbh->prepare_cached(<<'', undef, 1); +SELECT tid FROM over WHERE num = ? LIMIT 1 + + $sth->execute($num); + $$tid_ref = $sth->fetchrow_array; # may be undef + } foreach (qw(over id2num)) { $dbh->prepare_cached(<<"")->execute($num); DELETE FROM $_ WHERE num = ? @@ -262,7 +269,7 @@ sub add_over { my $vivified = 0; $self->begin_lazy; - $self->delete_by_num($num); + $self->delete_by_num($num, \$old_tid); foreach my $mid (@$mids) { my $v = 0; each_by_mid($self, $mid, ['tid'], sub { |