You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@bloodhound.apache.org by Mark Abbate <ab...@gmail.com> on 2015/02/27 23:00:18 UTC
Requesting rpc ticket.query advice
Hi All
I'm in a situation where I need to perform queries via RPC but it looks
like I'm limited by the simple query language.
For example, I need to query for a range of values in a custom field I
added that holds an epoch millisec value.
I *could* use the report methods to create a report that uses SQL, and
then execute that report on the fly, but afaict I cannot then delete
that report which makes this approach impractical because this will be a
heavily used activity.
I did try to populate the ticket.query with SQL such as:
{"params": ["SELECT id FROM ticket WHERE id='1000'"] , "method":
"ticket.query"}
but I get back a list of all ticket ids. If I execute that same SELECT
in a report in BH I get ticket 1000 back.
(1) Am I missing something in the query language?
(2) Would it be a modest task for me to modify ticket.query to accept
SQL? I haven't looked into the BH code at all. If yes, pointers are welcome.
(3) Would it be easier to add a report.delete?
(4) Or shall I just make my own custom rest interface and access the BH
DB directly for read only queries?
As always, thanks for the effort put into this tool, really useful.
Best
Mark
Re: Requesting rpc ticket.query advice
Posted by Mark Abbate <ab...@gmail.com>.
Hi Olemis
No problem, appreciate the advice.
I think I finally realize why I was having trouble with the query
language. I think I missed a painfully simple part of the syntax, namely
the use of the "or" operator. I referenced the "Query Language" section
at the bottom of http://trac.edgewall.org/wiki/TracQuery.
For example:
query:?owner=~analytics & loc=Millis & time=Feb+15%2C+2015..Mar+18%2C+2015
&
or
&
owner=~analytics & loc=Easton & time=Feb+11%2C+2015..Mar+18%2C+2015
etc
So that was a "duh" moment for me. I would much prefer to use the built
in bloodhound query language instead of the SQL.
Two additional questions, please.
(1) Can I add a custom field that can be queried like creation and
modification time? According to
http://trac.edgewall.org/wiki/TracTicketsCustomFields seems like the
answer is no.
I ask because I am generating tickets for conditions that have a
beginning and end which do not always match the creation or modification
time of the ticket. I store those as epoch time in a pair of custom fields.
I would like to display tickets constrained by the condition begin and
or end. I do have the hack-ish option of using a "starts with" on an
epoch time to narrow the results and then further sort the results in
the code that fetched the query results.
Am I missing a simple alternative?
(2) Is there a way to access manually entered comments from a
bloodhound (not sql) query?
I ask because I need to allow retrieval and modification of ticket
comments from a different UI talking RPC with BH. I could certainly add
a free form text field, but it seems like the built in comment mechanism
might make more sense.
The parameterized report was a good reminder, if I still need to go to
the report execute option that will be very helpful.
thanks again
Mark
On 03/14/2015 05:50 PM, Olemis Lang wrote:
> Hi Mark .
>
> Sorry for the delay to reply . That RPC method only supports TracQuery
> syntax [1]_ . I honestly do not think supporting SQL syntax in there
> is appropriate in this case . That's what SQL reports are for , and
> they are meant to be eventually phased out considering the tightly
> coupling with DB structure .
>
> Hint : Have you tried creating the report once and parameterizing your
> SQL query [2]_ ?
>
> .. [1] http://trac.edgewall.org/wiki/TracQuery
>
> .. [2] http://trac.edgewall.org/wiki/TracReports#AdvancedReports:DynamicVariables
>
>
> On 2/27/15, Mark Abbate <ab...@gmail.com> wrote:
>> Hi All
>>
>> I'm in a situation where I need to perform queries via RPC but it looks
>> like I'm limited by the simple query language.
>>
>> For example, I need to query for a range of values in a custom field I
>> added that holds an epoch millisec value.
>>
>> I *could* use the report methods to create a report that uses SQL, and
>> then execute that report on the fly, but afaict I cannot then delete
>> that report which makes this approach impractical because this will be a
>> heavily used activity.
>>
>> I did try to populate the ticket.query with SQL such as:
>>
>> {"params": ["SELECT id FROM ticket WHERE id='1000'"] , "method":
>> "ticket.query"}
>>
>> but I get back a list of all ticket ids. If I execute that same SELECT
>> in a report in BH I get ticket 1000 back.
>>
>>
>> (1) Am I missing something in the query language?
>>
>> (2) Would it be a modest task for me to modify ticket.query to accept
>> SQL? I haven't looked into the BH code at all. If yes, pointers are
>> welcome.
>>
>> (3) Would it be easier to add a report.delete?
>>
>> (4) Or shall I just make my own custom rest interface and access the BH
>> DB directly for read only queries?
>>
>>
>> As always, thanks for the effort put into this tool, really useful.
>> Best
>> Mark
>>
>
Re: Requesting rpc ticket.query advice
Posted by Olemis Lang <ol...@gmail.com>.
Hi Mark .
Sorry for the delay to reply . That RPC method only supports TracQuery
syntax [1]_ . I honestly do not think supporting SQL syntax in there
is appropriate in this case . That's what SQL reports are for , and
they are meant to be eventually phased out considering the tightly
coupling with DB structure .
Hint : Have you tried creating the report once and parameterizing your
SQL query [2]_ ?
.. [1] http://trac.edgewall.org/wiki/TracQuery
.. [2] http://trac.edgewall.org/wiki/TracReports#AdvancedReports:DynamicVariables
On 2/27/15, Mark Abbate <ab...@gmail.com> wrote:
> Hi All
>
> I'm in a situation where I need to perform queries via RPC but it looks
> like I'm limited by the simple query language.
>
> For example, I need to query for a range of values in a custom field I
> added that holds an epoch millisec value.
>
> I *could* use the report methods to create a report that uses SQL, and
> then execute that report on the fly, but afaict I cannot then delete
> that report which makes this approach impractical because this will be a
> heavily used activity.
>
> I did try to populate the ticket.query with SQL such as:
>
> {"params": ["SELECT id FROM ticket WHERE id='1000'"] , "method":
> "ticket.query"}
>
> but I get back a list of all ticket ids. If I execute that same SELECT
> in a report in BH I get ticket 1000 back.
>
>
> (1) Am I missing something in the query language?
>
> (2) Would it be a modest task for me to modify ticket.query to accept
> SQL? I haven't looked into the BH code at all. If yes, pointers are
> welcome.
>
> (3) Would it be easier to add a report.delete?
>
> (4) Or shall I just make my own custom rest interface and access the BH
> DB directly for read only queries?
>
>
> As always, thanks for the effort put into this tool, really useful.
> Best
> Mark
>
--
Regards,
Olemis - @olemislc
Apache(tm) Bloodhound contributor
http://issues.apache.org/bloodhound
http://blood-hound.net
Blog ES: http://simelo-es.blogspot.com/
Blog EN: http://simelo-en.blogspot.com/
Featured article: