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

Alex Vandiver alexmv at bestpractical.com
Wed Dec 10 13:49:22 EST 2014


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'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.
 - Alex


More information about the rt-devel mailing list