]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiMailSync.pm
lei import: speed up repeated Maildir imports
[public-inbox.git] / lib / PublicInbox / LeiMailSync.pm
index 75603d89e1788127487e83a5b396b882d60ba8c1..ec05404ad004fc9740e7aec781fd9ddc96efd539 100644 (file)
@@ -66,6 +66,10 @@ CREATE TABLE IF NOT EXISTS blob2name (
        UNIQUE (oidbin, fid, name)
 )
 
+       # speeds up LeiImport->pmdir_cb (for "lei import") by ~6x:
+       $dbh->do(<<'');
+CREATE INDEX IF NOT EXISTS idx_fid_name ON blob2name(fid,name)
+
 }
 
 sub fid_for {
@@ -375,6 +379,16 @@ EOM
        $sth->fetchrow_array;
 }
 
+sub name_oidbin ($$$) {
+       my ($self, $mdir, $nm) = @_;
+       my $fid = $self->{fmap}->{$mdir} //= fid_for($self, $mdir) // return;
+       my $sth = $self->{dbh}->prepare_cached(<<EOM, undef, 1);
+SELECT oidbin FROM blob2name WHERE fid = ? AND name = ?
+EOM
+       $sth->execute($fid, $nm);
+       $sth->fetchrow_array;
+}
+
 sub imap_oid {
        my ($self, $lei, $uid_uri) = @_;
        my $mailbox_uri = $uid_uri->clone;