delete($skv->{dbh}) if $skv;
}
-sub dedupe_nr {
+sub has_entries {
my $skv = $_[0]->[0] or return undef;
- my @n = $skv->count;
- $n[0];
+ $skv->has_entries;
}
1;
EOM
}
-# cf. LeiDedupe->dedupe_nr
-sub dedupe_nr {
+# cf. LeiDedupe->has_entries
+sub has_entries {
my $oidx = $_[0]->{oidx} // die 'BUG: no {oidx}';
- my @n = $oidx->{dbh}->selectrow_array('SELECT COUNT(*) FROM over');
- $n[0];
+ my @n = $oidx->{dbh}->selectrow_array('SELECT num FROM over LIMIT 1');
+ scalar(@n) ? 1 : undef;
}
no warnings 'once';
my $dedupe = $lei->{dedupe};
$dedupe->prepare_dedupe;
my $lse = $lei->{lse}; # may be undef
- my $set_recent = $dedupe->dedupe_nr;
+ my $set_recent = $dedupe->has_entries;
sub { # for git_to_mail
my ($buf, $smsg, $eml) = @_;
$eml //= PublicInbox::Eml->new($buf);
# Favor cur/ and only write to new/ when augmenting. This
# saves MUAs from having to do a mass rename when the initial
# search result set is huge.
- my $dir = $dedupe && $dedupe->dedupe_nr ? 'new/' : 'cur/';
+ my $dir = $dedupe && $dedupe->has_entries ? 'new/' : 'cur/';
sub { # for git_to_mail
my ($bref, $smsg, $eml) = @_;
$dst // return $lei->fail; # dst may be undef-ed in last run
my $F_SETPIPE_SZ = $^O eq 'linux' ? 1031 : undef;
if ($l2m->{-wq_nr_workers} > 1 &&
$l2m->{base_type} =~ /\A(?:maildir|mbox)\z/) {
- # setup two barriers to coordinate dedupe_nr
+ # setup two barriers to coordinate ->has_entries
# between l2m workers
pipe(my ($a_r, $a_w)) or die "pipe: $!";
fcntl($a_r, $F_SETPIPE_SZ, 4096) if $F_SETPIPE_SZ;
$sth->fetchrow_array;
}
+# faster than ->count due to how SQLite works
+sub has_entries {
+ my ($self) = @_;
+ my @n = $self->{dbh}->selectrow_array('SELECT k FROM kv LIMIT 1');
+ scalar(@n) ? 1 : undef;
+}
+
sub dbh_release {
my ($self, $lock) = @_;
my $dbh = delete $self->{dbh} or return;