[rt-users] RT 4.2.9 Simple Search, Subject LIKE instead of Id =

Vladimir Nikolic vladimir.nikolic at amis.net
Tue Jan 20 08:42:37 EST 2015


On 20. 01. 2015 02:41, Alex Vandiver wrote:
> On Mon, 19 Jan 2015 22:50:07 +0100 Vladimir Nikolic
> <vladimir.nikolic at amis.net> wrote:
>> Hello,
>>
>> after upgrade to 4.2.9 (from 4.2.2), we noticed that Simple Search by 
>> Ticket id doesn't work.
>> If I enter 783509 in Search box, Edit Search shows sql query:
>>
>> ( Subject LIKE 783502 ) AND (  Status = 'new' OR Status = 'open' OR 
>> Status = 'resolved' OR Status = 'stalled' OR Status = 'rejected' OR 
>> Status = 'deleted' )
> 
> This does not occur on a stock RT 4.2.9.
> 
>> /usr/local/lib/perl5/site_perl/RT/Search/Simple.pm has lines:
>>
>>      # Assume that numbers were actually "default"s if we have other
>>      # limits
>>      if ($limits->{id} and keys %{$limits} > 1) {
>>          my $values = delete $limits->{id};
>>          for my $value (@{$values}) {
>>              $value =~ /(\d+)/ or next;
>>              my ($key, @tsql) = $self->HandleDefault($1);
>>              push @{$limits->{$key}}, @tsql;
>>          }
>>      }
>>
>> which rewrites 'Id =' to 'Subject LIKE'.
> 
> It only does so _if_ there are other limits -- as the comment
> describes.  This is so, in a stock RT, entering «rt 4» into the search
> box does not attempt to load ticket #4.
> 
> 
> Double-check that you do not have any customizations in this area.  For
> the following command, a stock RT 4.2.9 should return only the ID
> clause:
> 
> perl -I/opt/rt4/lib -MRT=-init -MRT::Search::Simple \
>  -le 'print RT::Search::Simple->new(TicketsObj =>
>         RT::Tickets->new(RT->SystemUser))->QueryToSQL("783502")'
> 
> 
>  - Alex
> 

Hello,
 perl -I/opt/rt4/lib -MRT=-init -MRT::Search::Simple \
  -le 'print RT::Search::Simple->new(TicketsObj =>
         RT::Tickets->new(RT->SystemUser))->QueryToSQL("783502")'

returns ( Id = 783502 ), which is ok.

The problem is that $query consists of ticket id and various states -
new, open, resolved, stalled, rejected and deleted. These are other
limits and because of them search by id doesn't work.

sub QueryToSQL {
    my $self = shift;
    $RT::Logger->error("self $self\n");
    my $query = shift || $self->Argument;
    ...

I don't know from where it gets all these states.

Regards,
Vladimir




More information about the rt-users mailing list