[Rt-devel] Command line query involving Custom Fields

Rangarajan Radhakrishnan rangarajan.radhakrishnan at bms.com
Mon May 1 15:53:56 EDT 2006


I have some custom field that I am trying to query as follows:
rt list "Queue = 'TestQueue' and owner = 'nobody' AND ('CF.{My Field1}' 
= 'My Value1')
(This works).

However, when I add another condition:
rt list "Queue = 'TestQueue' and owner = 'nobody' AND ('CF.{My Field1}' 
= 'My Value1' OR 'CF.{My Field1}' = 'My Value2')

It never returns any row. This has been tried from the graphical 
interface too.

Details:
Using RT 3.6.0pre0. Using 1.43 for DBIx::SearchBuilder. Have tried it 
with 1.39 of SearchBuilder.pm too.
Database is Oracle 10g (10.1)

Actual query used with "rt list" command is given below:
-------------------------------------
Queue = 'Assay Development'  AND  ('CF.{Assay Stage}' = 'Assay Request' 
OR 'CF.{Assay Stage}' = 'Feasibility' OR 'CF.{Assay Stage}' = 'Assay 
Development' OR 'CF.{Assay Stage}' = 'Assay Validation' OR 'CF.{Assay 
Stage}' = 'Sample Analysis' OR 'CF.{Assay Stage}' = 'Data Loading' )
-------------------------------------
It seems to breaks down even if I just use two clauses involving same 
customfield within parenthesis.

This results in QueryString (Select) as printed from within 
DBIx::SearchBuilder is:


SELECT * FROM ( SELECT limitquery.*,rownum limitrownum FROM ( SELECT 
main.* FROM ( SELECT DISTINCT main.id FROM (((Tickets main  LEFT JOIN 
ObjectCustomFields ObjectCustomFields_1  ON 
((ObjectCustomFields_1.ObjectId = '0')) OR (  
ObjectCustomFields_1.ObjectId = main.Queue))  LEFT JOIN CustomFields 
CustomFields_2  ON ( CustomFields_2.id = 
ObjectCustomFields_1.CustomField))  LEFT JOIN ObjectCustomFieldValues 
ObjectCustomFieldValues_3  ON ((ObjectCustomFieldValues_3.ObjectId = 
main.id)) AND (  ObjectCustomFieldValues_3.CustomField = 
CustomFields_2.id) AND ( (ObjectCustomFieldValues_3.Disabled = '0')) AND 
( (ObjectCustomFieldValues_3.ObjectType = 'RT::Ticket')))   WHERE 
((CustomFields_2.name = 'Assay Stage')) AND ((main.EffectiveId = 
main.id)) AND ((main.Status != 'deleted')) AND ((main.Type = 'ticket')) 
AND ((main.name = 'Assay Stage')AND(main.name = 'Assay 
Stage')AND(main.name = 'Assay Stage')AND(main.name = 'Assay 
Stage')AND(main.name = 'Assay Stage')) AND ((main.Queue = '3')AND (  ( 
(ObjectCustomFieldValues_3.Content = 'Assay Request') ) OR ( 
(ObjectCustomFieldValues_3.Content = 'Feasibility') ) OR ( 
(ObjectCustomFieldValues_3.Content = 'Assay Development') ) OR ( 
(ObjectCustomFieldValues_3.Content = 'Assay Validation') ) OR ( 
(ObjectCustomFieldValues_3.Content = 'Sample Analysis') ) OR ( 
(ObjectCustomFieldValues_3.Content = 'Data Loading') )  ) )  ) 
distinctquery, Tickets main WHERE (main.id = distinctquery.id)  ORDER BY 
main.id ASC  ) limitquery WHERE rownum <= 50 ) WHERE limitrownum >= 1

On running this query using SQLPLUS
ERROR at line 1:
ORA-00904: "MAIN"."NAME": invalid identifier

Has anybody seen this before? Thanks in advance for your help.




More information about the Rt-devel mailing list