[rt-users] Re: [3.6][FIX] Searches by custom fields
Joshua Colson
jcolson at voidgate.org
Fri May 12 11:33:08 EDT 2006
On Thu, 2006-05-11 at 15:41 -0700, Joshua Colson wrote:
> On Thu, 2006-05-11 at 21:55 +0400, Ruslan Zakirov wrote:
> > I reproduced problem when people search by one field with several
> > restrictions, for example "CF.{cf1} = 'foo' OR CF.{cf1} = 'bar'".
> > Also, change should fix issue when RT generate wrong SQL query with
> > reference to 'main.name' column that doesn't exist.
> >
> > If you see other issues feel free to send links to the archives.
>
> Okay, after some digging, I found this SQL query (line numbers added):
>
> ----------------------------------------------------------------
> 1 SELECT DISTINCT main.*
> 2 FROM Tickets main
> 3 LEFT JOIN ObjectCustomFields ObjectCustomFields_1
> 4 ON ((ObjectCustomFields_1.ObjectId = '0'))
> 5 AND( ObjectCustomFields_1.ObjectId = main.Queue)
> 6 LEFT JOIN CustomFields CustomFields_2
> 7 ON ( CustomFields_2.id = ObjectCustomFields_1.CustomField)
> 8 LEFT JOIN ObjectCustomFieldValues ObjectCustomFieldValues_3
> 9 ON ((ObjectCustomFieldValues_3.ObjectId = main.id))
> 10 AND(ObjectCustomFieldValues_3.CustomField = CustomFields_2.id)
> 11 AND( (ObjectCustomFieldValues_3.Disabled = '0'))
> 12 AND( (ObjectCustomFieldValues_3.ObjectType = 'RT::Ticket'))
> 13 WHERE ((CustomFields_2.Name = 'Registrar-Lock'))
> 14 AND ((main.EffectiveId = main.id))
> 15 AND ((main.Status != 'deleted'))
> 16 AND ((main.Type = 'ticket'))
> 17 AND ((main.Queue = '3')
> 18 AND ( (ObjectCustomFieldValues_3.Content = 'Yes') ) )
> 19 ORDER BY main.id ASC
> 20 LIMIT 50;
> ----------------------------------------------------------------
>
> I ran this against the DB and got zero results. So after closer
> inspection, it seems that this could only ever be true if the custom
> field is Global. The reason for this lies in line 5 of the statement.
> The aggregator should be 'OR', not 'AND'. If I change that, I get an
> accurate listing of tickets in the result set. However, I tried digging
> at the code to find where it is being set and haven't found it, yet. I
> figured I would send this to the list in case somebody knows off the the
> top of their head.
On further inspection, it seems that this query could *never* return
results, even with Global Custom Fields.
--
Joshua Colson <jcolson at voidgate.org>
More information about the rt-users
mailing list