While a string representing a integer in hex is fine for DBI and
SQLite, Xapian's sortable_serialise requires a Perl integer value.
So just retrieve the last Xapian DB document ID in this rare
code path because we can't use 64-bit integer literals in some
32-bit Perl builds (e.g. OpenBSD on i386)
Fixes: be2a0a353d60 ("isearch: support 64-bit article numbers for SQLite query")
$r[1] = $sth->fetchrow_array;
if (defined($r[1]) && defined($r[0])) {
$opt{limit} = $r[1] - $r[0] + 1;
- } else { # these are fed to SQLite
- $r[1] //= '0x7'.('f'x15); # string for some 32-bit Perl
+ } else {
+ $r[1] //= $self->{es}->xdb->get_lastdocid;
$r[0] //= 0;
}
- $opt{uid_range} = \@r;
+ $opt{uid_range} = \@r; # these are fed to Xapian and SQLite
}
$self->{es}->mset($str, \%opt);
}