From: Eric Wong Date: Sat, 16 Oct 2021 01:00:52 +0000 (+0000) Subject: smsg: add ->oidbin method X-Git-Tag: v1.7.0~138 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=879547527204b878b80804c2f19c6ef71458194e;p=public-inbox.git smsg: add ->oidbin method This makes some of our code less noisy by reducing the amount of pack('H*', ...) use. --- diff --git a/lib/PublicInbox/ExtSearch.pm b/lib/PublicInbox/ExtSearch.pm index 7520e71c..2460d74f 100644 --- a/lib/PublicInbox/ExtSearch.pm +++ b/lib/PublicInbox/ExtSearch.pm @@ -64,7 +64,7 @@ SELECT ibx_id FROM inboxes WHERE eidx_key = ? LIMIT 1 $sth = $dbh->prepare_cached(<<'', undef, 1); SELECT docid FROM xref3 WHERE oidbin = ? AND xnum = ? AND ibx_id = ? LIMIT 1 - $sth->bind_param(1, pack('H*', $xsmsg->{blob}), SQL_BLOB); + $sth->bind_param(1, $xsmsg->oidbin, SQL_BLOB); # NNTP::cmd_over can set {num} to zero according to RFC 3977 8.3.2 $sth->bind_param(2, $xsmsg->{num} || $xsmsg->{-orig_num}); diff --git a/lib/PublicInbox/ExtSearchIdx.pm b/lib/PublicInbox/ExtSearchIdx.pm index 3d7a6e7d..ba7588d5 100644 --- a/lib/PublicInbox/ExtSearchIdx.pm +++ b/lib/PublicInbox/ExtSearchIdx.pm @@ -122,7 +122,7 @@ sub apply_boost ($$) { $a->[1] <=> $b->[1] # break ties with {xnum} } @$xr3; my $new_smsg = $req->{new_smsg}; - return if $xr3->[0]->[2] ne pack('H*', $new_smsg->{blob}); # loser + return if $xr3->[0]->[2] ne $new_smsg->oidbin; # loser # replace the old smsg with the more boosted one $new_smsg->{num} = $smsg->{num}; @@ -146,7 +146,7 @@ sub _unref_doc ($$$$$;$) { } if (defined($oidbin) && defined($xnum) && blessed($ibx) && $ibx->over) { my $smsg = $ibx->over->get_art($xnum); - if ($smsg && pack('H*', $smsg->{blob}) eq $oidbin) { + if ($smsg && $smsg->oidbin eq $oidbin) { carp("BUG: (non-fatal) ".$ibx->eidx_key. " #$xnum $smsg->{blob} still valid"); return; @@ -270,9 +270,8 @@ sub _blob_missing ($$) { # called when a known $smsg->{blob} is gone my ($req, $smsg) = @_; # xnum and ibx are unknown, we only call this when an entry from # /ei*/over.sqlite3 is bad, not on entries from xap*/over.sqlite3 - my $oidbin = pack('H*', $smsg->{blob}); $req->{self}->git->async_wait_all; - _unref_doc($req, $smsg, undef, undef, $oidbin); + _unref_doc($req, $smsg, undef, undef, $smsg->oidbin); } sub ck_existing { # git->cat_async callback @@ -569,7 +568,7 @@ sub _reindex_finalize ($$$) { for my $ary (values %$by_chash) { for my $x (reverse @$ary) { warn "removing #$docid xref3 $x->{blob}\n"; - my $bin = pack('H*', $x->{blob}); + my $bin = $x->oidbin; my $n = _unref_doc($sync, $docid, undef, undef, $bin); die "BUG: $x->{blob} invalidated #$docid" if $n == 0; } @@ -987,7 +986,7 @@ sub dd_smsg { # git->cat_async callback my $oidx = $self->{oidx}; for my $smsg (@$ary) { my $gone = $smsg->{num}; - $oidx->merge_xref3($keep->{num}, $gone, $smsg->{blob}); + $oidx->merge_xref3($keep->{num}, $gone, $smsg->oidbin); remove_doc($self, $gone); } } diff --git a/lib/PublicInbox/Import.pm b/lib/PublicInbox/Import.pm index 17adfabd..60ce7b66 100644 --- a/lib/PublicInbox/Import.pm +++ b/lib/PublicInbox/Import.pm @@ -423,7 +423,7 @@ sub add { $x->dbh; $x; }; - return if !$u->set_maybe(pack('H*', $smsg->{blob}), 1); + return if !$u->set_maybe($smsg->oidbin, 1); return if (!$oidx->vivify_xvmd($smsg) && $eidx_git->check($smsg->{blob})); } diff --git a/lib/PublicInbox/OverIdx.pm b/lib/PublicInbox/OverIdx.pm index 9fdb26c0..e7c96e14 100644 --- a/lib/PublicInbox/OverIdx.pm +++ b/lib/PublicInbox/OverIdx.pm @@ -620,8 +620,7 @@ UPDATE over SET ddd = ? WHERE num = ? } sub merge_xref3 { # used for "-extindex --dedupe" - my ($self, $keep_docid, $drop_docid, $oidhex) = @_; - my $oidbin = pack('H*', $oidhex); + my ($self, $keep_docid, $drop_docid, $oidbin) = @_; my $sth = $self->{dbh}->prepare_cached(<<''); UPDATE OR IGNORE xref3 SET docid = ? WHERE docid = ? AND oidbin = ? diff --git a/lib/PublicInbox/Smsg.pm b/lib/PublicInbox/Smsg.pm index a2f54507..260ce6bb 100644 --- a/lib/PublicInbox/Smsg.pm +++ b/lib/PublicInbox/Smsg.pm @@ -9,13 +9,15 @@ # large threads in our WWW UI and the NNTP range responses. package PublicInbox::Smsg; use strict; -use warnings; -use base qw(Exporter); +use v5.10.1; +use parent qw(Exporter); our @EXPORT_OK = qw(subject_normalized); use PublicInbox::MID qw(mids references); use PublicInbox::Address; use PublicInbox::MsgTime qw(msg_timestamp msg_datestamp); +sub oidbin { pack('H*', $_[0]->{blob}) } + sub to_doc_data { my ($self) = @_; join("\n",