]> Sergey Matveev's repositories - public-inbox.git/commitdiff
lei up: infer rawstr from old searches via trailing "\n"
authorEric Wong <e@80x24.org>
Wed, 10 Nov 2021 10:28:37 +0000 (10:28 +0000)
committerEric Wong <e@80x24.org>
Wed, 10 Nov 2021 18:38:15 +0000 (18:38 +0000)
For --stdin searches created prior to commit 666dde69a3f6 (lei
q|up: fix saved searches for single-phrase search, 2021-11-08)
we still want to be able to run "lei up" on them without
regressions.  So assume nobody manages to enter "\n" as an
argv[] element and consider the presence of "\n" as a previous
--stdin use.

This fixes errors from "lei up" such as:

  lei_xsearch 2 wq_worker: Exception: Key too long: length was 840 bytes,
  maximum length of a key is 255 bytes at ../PublicInbox/IPC.pm line 250.

Fixes: 666dde69a3f6 ("lei q|up: fix saved searches for single-phrase search")
lib/PublicInbox/LeiUp.pm

index d7873a3f34693211d6e492d16480163cd5fb02ea..b8a9836075ba48148032d792d4788bb0b9d1ce8b 100644 (file)
@@ -29,7 +29,9 @@ sub up1 ($$) {
        my $q = $lss->{-cfg}->get_all('lei.q') //
                                die("lei.q unset in $f (out=$out)\n");
        my $lse = $lei->{lse} // die 'BUG: {lse} missing';
-       if ($lss->{-cfg}->{'lei.internal.rawstr'}) {
+       my $rawstr = $lss->{-cfg}->{'lei.internal.rawstr'} //
+               (scalar(@$q) == 1 && substr($q->[0], -1) eq "\n");
+       if ($rawstr) {
                scalar(@$q) > 1 and
                        die "$f: lei.q has multiple values (@$q) (out=$out)\n";
                $lse->query_approxidate($lse->git, $mset_opt->{qstr} = $q->[0]);