]> Sergey Matveev's repositories - public-inbox.git/commitdiff
lei_search: favor binary OID comparisons
authorEric Wong <e@80x24.org>
Sun, 25 Jul 2021 00:43:30 +0000 (00:43 +0000)
committerEric Wong <e@80x24.org>
Sun, 25 Jul 2021 06:14:05 +0000 (06:14 +0000)
Reduce memory traffic and code, too.

lib/PublicInbox/LeiExportKw.pm
lib/PublicInbox/LeiSearch.pm

index 671a84df966d2f588614375a34f5b3c314fa5f46..42a5ff2269d0a16a2875ccc0c9188c08ea4d4b8f 100644 (file)
@@ -10,8 +10,7 @@ use Errno qw(EEXIST ENOENT);
 
 sub export_kw_md { # LeiMailSync->each_src callback
        my ($oidbin, $id, $self, $mdir) = @_;
-       my $oidhex = unpack('H*', $oidbin);
-       my $sto_kw = $self->{lse}->oid_keywords($oidhex) or return;
+       my $sto_kw = $self->{lse}->oidbin_keywords($oidbin) or return;
        my $bn = $$id;
        my ($md_kw, $unknown, @try);
        if ($bn =~ s/:2,([a-zA-Z]*)\z//) {
@@ -57,13 +56,13 @@ sub export_kw_md { # LeiMailSync->each_src callback
        # both tries failed
        my $e = $!;
        my $orig = '['.join('|', @fail).']';
+       my $oidhex = unpack('H*', $oidbin);
        $lei->child_error(1, "link($orig, $dst) ($oidhex): $e");
 }
 
 sub export_kw_imap { # LeiMailSync->each_src callback
        my ($oidbin, $id, $self, $mic) = @_;
-       my $oidhex = unpack('H*', $oidbin);
-       my $sto_kw = $self->{lse}->oid_keywords($oidhex) or return;
+       my $sto_kw = $self->{lse}->oidbin_keywords($oidbin) or return;
        $self->{imap_mod_kw}->($self->{nwr}, $mic, $id, [ keys %$sto_kw ]);
 }
 
index 37bfc65e27cc7515b0b7d285b84e81120dbd3d5f..79b2fd7d165e2c3e46fefce98a73d29e48e33e2c 100644 (file)
@@ -42,9 +42,9 @@ sub _oid_kw { # retry_reopen callback
 }
 
 # returns undef if blob is unknown
-sub oid_keywords {
-       my ($self, $oidhex) = @_;
-       my @num = $self->over->blob_exists($oidhex) or return;
+sub oidbin_keywords {
+       my ($self, $oidbin) = @_;
+       my @num = $self->over->oidbin_exists($oidbin) or return;
        $self->retry_reopen(\&_oid_kw, \@num);
 }