[rt-devel] Likely Bug: Searching Pg Indexed content ignores NOT

Thomas Sibley trs at bestpractical.com
Fri Nov 2 17:39:33 EDT 2012


On 11/02/2012 01:43 PM, jim.h.berry at frb.gov wrote:
> Hi List,
> 
> Using rt-4.0.8,  but this applies to earlier releases as well.  If
> searching over Postgres indexed content, RT ignores NOT.  For example,
>  the search
> 
>         Content LIKE 'apple' AND Content NOT LIKE 'banana'  
> is processed as
>         Content LIKE 'apple' AND Content LIKE 'banana'  
> 
> A simple check in Tickets.pm to add " !!" to the Postgres search operand
>  and a change in SearchBuilder.pm to allow "@@ !!" seems to fix this.  I
> would guess that searches on indexed Oracle and MySQL content would have
> the same problem with NOT,  but I don't know the appropriate fix.
> 
> Please let me know if I am missing something.   This negative search
> might be weird on tickets with multiple transactions, but if RT isn't
> going to honor NOT in this situation, then it would be better to abort
> rather than perform a different search.

You're not missing something.  It's a known lacking, unfortunately:

   https://github.com/bestpractical/rt/commit/4a6338c7

The full patch for Pg and Oracle shouldn't be too difficult, although I
may be lacking proper context.  Negation under MySQL may prove trouble
because of the syntax for querying Sphinx sometimes interacts poorly
with MySQL's optimizer, but I haven't thought it through.  (Content LIKE
"foo" AND Content LIKE "bar" is turned into sphinx_column="foo" AND
sphinx_column="bar" which MySQL optimizes as "never possible".  This
will hopefully be much better when MySQL has stable native FTS.)


More information about the rt-devel mailing list