X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FMsgmap.pm;h=cb4bb2956ba2e6f856596a7dffccf7d6a888b34b;hb=refs%2Fheads%2Fmaster;hp=699a8bf0d9cda0d12ae618948f824c8a0c17f651;hpb=796da029ba295903d0dfb389c1576ce3985ea1af;p=public-inbox.git
diff --git a/lib/PublicInbox/Msgmap.pm b/lib/PublicInbox/Msgmap.pm
index 699a8bf0..cb4bb295 100644
--- a/lib/PublicInbox/Msgmap.pm
+++ b/lib/PublicInbox/Msgmap.pm
@@ -1,4 +1,4 @@
-# Copyright (C) 2015-2021 all contributors
+# Copyright (C) all contributors
# License: AGPL-3.0+
# bidirectional Message-ID <-> Article Number mapping for the NNTP
@@ -13,7 +13,6 @@ use v5.10.1;
use DBI;
use DBD::SQLite;
use PublicInbox::Over;
-use PublicInbox::Spawn;
use Scalar::Util qw(blessed);
sub new_file {
@@ -53,7 +52,8 @@ sub tmp_clone {
require File::Temp;
my $tmp = "mm_tmp-$$-XXXX";
my ($fh, $fn) = File::Temp::tempfile($tmp, EXLOCK => 0, DIR => $dir);
- PublicInbox::Spawn::nodatacow_fd(fileno($fh));
+ require PublicInbox::Syscall;
+ PublicInbox::Syscall::nodatacow_fh($fh);
$self->{dbh}->sqlite_backup_to_file($fn);
$tmp = ref($self)->new_file($fn, 2);
$tmp->{dbh}->do('PRAGMA journal_mode = MEMORY');
@@ -144,13 +144,17 @@ sub max {
$sth->fetchrow_array // 0;
}
-sub minmax {
- # breaking MIN and MAX into separate queries speeds up from 250ms
- # to around 700us with 2.7million messages.
+sub min {
my $sth = $_[0]->{dbh}->prepare_cached('SELECT MIN(num) FROM msgmap',
undef, 1);
$sth->execute;
- ($sth->fetchrow_array // 0, max($_[0]));
+ $sth->fetchrow_array // 0;
+}
+
+sub minmax {
+ # breaking MIN and MAX into separate queries speeds up from 250ms
+ # to around 700us with 2.7million messages.
+ (min($_[0]), max($_[0]));
}
sub mid_delete {