[rt-devel] Limit with IN operator and empty VALUES results in invalid SQL queries

Christian Loos cloos at netcologne.de
Thu Dec 11 10:02:50 EST 2014


Am 10.12.2014 um 19:49 schrieb Alex Vandiver:
> On 12/10/2014 04:46 AM, Christian Loos wrote:
>>> yesterday I saw some invalid MySQL queries in my logs:
>>> [snip]
>>
>> I changed
>> $self->Limit( FIELD => 'Id', OPERATOR => 'IN', VALUE => \@match );
>> to
>> $self->Limit( FIELD => 'Id', OPERATOR => 'IN', VALUE => @match ? \@match
>> : [0] );
>> which fixes the bug for me.
>>
>> It would be great if one of the developers can review this and give some
>> feedback.
> 
> Sorry -- this was flagged on my "should look at" but I'd not gotten to
> it.  I've pushed 4.2/empty-in-clause with a similar-looking change.
I applied you change for RT::Report::Tickets on my 4.2.9 and the hundred
of error messages are gone. Thanks.

> 
>> I'm not sure if this should only be fixed in RT or if this should be
>> fixed in DBIx::SearchBuilder (always generate valid SQL even if the
>> provided VALUE is an empty list).
> 
> It's hard to decide if DBIx::SearchBuilder should apply no limit, or
> apply a never-match limit in such cases.  RT has cases of each.


More information about the rt-devel mailing list