lib/PublicInbox/LeiQuery.pm | 4 +++- lib/PublicInbox/LeiUp.pm | 5 +++-- lib/PublicInbox/OverIdx.pm | 12 ++++++++++++ diff --git a/lib/PublicInbox/LeiQuery.pm b/lib/PublicInbox/LeiQuery.pm index c998e5c0ed7bbf07a09eeb7179857cfce789620c..df9c32b301d5be97c07eb4e4543267826f376bb2 100644 --- a/lib/PublicInbox/LeiQuery.pm +++ b/lib/PublicInbox/LeiQuery.pm @@ -1,4 +1,4 @@ -# Copyright (C) 2021 all contributors +# Copyright (C) all contributors # License: AGPL-3.0+ # handles "lei q" command and provides internals for @@ -6,6 +6,7 @@ # several other sub-commands (up, lcat, ...) package PublicInbox::LeiQuery; use strict; use v5.10.1; +use PublicInbox::OverIdx; sub prep_ext { # externals_each callback my ($lxs, $exclude, $loc) = @_; @@ -17,6 +18,7 @@ my ($self) = @_; require PublicInbox::LeiOverview; PublicInbox::LeiOverview->new($self) or return; my $opt = $self->{opt}; + PublicInbox::OverIdx::fork_ok($opt); my ($xj, $mj) = split(/,/, $opt->{jobs} // ''); (defined($xj) && $xj ne '' && $xj !~ /\A[1-9][0-9]*\z/) and die "`$xj' search jobs must be >= 1\n"; diff --git a/lib/PublicInbox/LeiUp.pm b/lib/PublicInbox/LeiUp.pm index b8a9836075ba48148032d792d4788bb0b9d1ce8b..5ad214518e90b45a08b5701db51e582c3fe3980f 100644 --- a/lib/PublicInbox/LeiUp.pm +++ b/lib/PublicInbox/LeiUp.pm @@ -1,4 +1,4 @@ -# Copyright (C) 2021 all contributors +# Copyright (C) all contributors # License: AGPL-3.0+ # "lei up" - updates the result of "lei q --save" @@ -7,7 +7,7 @@ use strict; use v5.10.1; # n.b. we use LeiInput to setup IMAP auth use parent qw(PublicInbox::IPC PublicInbox::LeiInput); -use PublicInbox::LeiSavedSearch; +use PublicInbox::LeiSavedSearch; # OverIdx use PublicInbox::DS; use PublicInbox::PktOp; use PublicInbox::LeiFinmsg; @@ -75,6 +75,7 @@ my ($self, $lei) = @_; my $upq = [ (@{$self->{o_local} // []}, @{$self->{o_remote} // []}) ]; return up1($lei, $upq->[0]) if @$upq == 1; # just one, may start MUA + PublicInbox::OverIdx::fork_ok($lei->{opt}); # FIXME: this is also used per-query, see lei->_start_query my $j = $lei->{opt}->{jobs} || do { my $n = $self->detect_nproc // 1; diff --git a/lib/PublicInbox/OverIdx.pm b/lib/PublicInbox/OverIdx.pm index e7c96e143749486d33e9b091752e712002d04e97..a49ca6db3bb82d62a3e80c4738685cc68955d7b9 100644 --- a/lib/PublicInbox/OverIdx.pm +++ b/lib/PublicInbox/OverIdx.pm @@ -670,4 +670,16 @@ } $smsg->{-vivify_xvmd} = \@vivify_xvmd; } +sub fork_ok { + return 1 if $DBD::SQLite::sqlite_version >= 3008003; + my ($opt) = @_; + my @j = split(/,/, $opt->{jobs} // ''); + state $warned; + grep { $_ > 1 } @j and $warned //= warn('DBD::SQLite version is ', + $DBD::SQLite::sqlite_version, + ", need >= 3008003 (3.8.3) for --jobs > 1\n"); + $opt->{jobs} = '1,1'; + undef; +} + 1;