----- Il 2-set-16, alle 15:58, Colm O hEigeartaigh <cohei...@apache.org> ha 
scritto: 

> Hehe ok will revisit next week!

Cool! 

> On Fri, Sep 2, 2016 at 2:51 PM, Francesco Chicchiriccò < ilgro...@apache.org >
> wrote:

>> ----- Il 2-set-16, alle 15:29, Colm O hEigeartaigh < cohei...@apache.org > ha
>> scritto:

>>> I updated the patch to also handle "AND". Yes it solves the issue.

>> Now only a unit test in AnySearchTest and a correspondent integration test in
>> SearchITCase are missing, then... ;-)

>>> On Fri, Sep 2, 2016 at 1:38 PM, Francesco Chicchiriccò < 
>>> ilgro...@apache.org >
>>> wrote:

>>>> ----- Il 2-set-16, alle 14:34, Colm O hEigeartaigh < cohei...@apache.org > 
>>>> ha
>>>> scritto:

>>>>> Yep. I've attached a proposed patch to SYNCOPE-929. It simply makes sure 
>>>>> that OR
>>>>> expressions are encapsulated in parentheses. It feels like a bit of a hack
>>>>> though :-)

>>>> I've taken a look at your patch (guess that AND deserves the same 
>>>> treatment...):
>>>> have you already checked if it actually solves this issue?

>>>>> On Fri, Sep 2, 2016 at 12:59 PM, Francesco Chicchiriccò < 
>>>>> ilgro...@apache.org >
>>>>> wrote:

>>>>>> ----- Il 2-set-16, alle 13:33, Colm O hEigeartaigh < cohei...@apache.org 
>>>>>> > ha
>>>>>> scritto:

>>>>>>> Hi Francesco,

>>>>>>> I've dug into this a bit deeper. The logic in SearchCondVisitor is fine 
>>>>>>> I think.
>>>>>>> The problem is in JPAAnySearchDao when the SearchCond is converted into 
>>>>>>> a
>>>>>>> String. Using the example I gave, 
>>>>>>> "(city==dublin,state==abc);country==ireland",
>>>>>>> yields the following String:

>>>>>>> SELECT DISTINCT any_id FROM user_search_attr WHERE schema_id='city' AND
>>>>>>> stringvalue=?1
>>>>>>> OR any_id IN ( SELECT DISTINCT any_id FROM user_search_attr WHERE
>>>>>>> schema_id='state' AND stringvalue=?2)
>>>>>>> AND any_id IN ( SELECT DISTINCT any_id FROM user_search_attr WHERE
>>>>>>> schema_id='country' AND stringvalue=?3)

>>>>>>> So we have WHERE X OR Y AND Z, instead of WHERE (X OR Y) AND Z, and so 
>>>>>>> it
>>>>>>> incorrectly evaluates Y AND Z first. The code in JPAAnySearchDao is 
>>>>>>> quite
>>>>>>> complex, I'll keep digging to see if I can fix it, unless you have an 
>>>>>>> easy fix?

>>>>>> I believe the key point is around

>>>>>> https://github.com/apache/syncope/blob/master/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java#L475-L487

>>>>>> Regards.

>>>>>>> On Thu, Sep 1, 2016 at 5:20 PM, Francesco Chicchiriccò < 
>>>>>>> ilgro...@apache.org >
>>>>>>> wrote:

>>>>>>>> Hi,
>>>>>>>> I have just tried the same sample as above and obtained the same 
>>>>>>>> results.

>>>>>>>> The FIQL query is parsed into a SearchCond instance [1] by 
>>>>>>>> SearchCondVisitor
>>>>>>>> [2]: at a first glance, I don't see any reason why parentheses should 
>>>>>>>> be
>>>>>>>> ignored, but maybe it's only because I am quite tired at the moment :-)

>>>>>>>> If you're opening an issue, please set "affects-version" to 2.0.0.M5 
>>>>>>>> and
>>>>>>>> "fix-for-version" to 2.0.0, thanks.

>>>>>>>> Regards.

>>>>>>>> [1]
>>>>>>>> https://github.com/apache/syncope/blob/master/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/search/SearchCond.java
>>>>>>>> [2]
>>>>>>>> https://github.com/apache/syncope/blob/master/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/search/SearchCondVisitor.java

>>>>>>>> On 01/09/2016 18:18, Colm O hEigeartaigh wrote:

>>>>>>>>> Hi Iurii,

>>>>>>>>> Yep there is an issue here. Could you open a JIRA for it?

>>>>>>>>> I can reproduce with two users with attributes (city/country/state):

>>>>>>>>> alice: dublin/ireland/abc
>>>>>>>>> bob: dublin/canada/xyz

>>>>>>>>> Using a FIQL of "city==dublin;country==ireland" using 
>>>>>>>>> AnyQuery.Builder()
>>>>>>>>> correctly yields one user ("alice"). However using
>>>>>>>>> "(city==dublin,state==abc);country==ireland" yields both users 
>>>>>>>>> incorrectly. It
>>>>>>>>> appears that it might be ignoring the country part and just returning 
>>>>>>>>> the
>>>>>>>>> result of the brackets.

>>>>>>>>> Colm.

>>>>>>>>> On Thu, Sep 1, 2016 at 4:21 PM, Iurii Smyrnov < ismyr...@talend.com > 
>>>>>>>>> wrote:

>>>>>>>>>> Hi Syncope Devs,
>>>>>>>>>> Could you please check Does Syncope support braces " ( ) " in a FIQL 
>>>>>>>>>> request ?

>>>>>>>>>> I faced with an issue: it seems Syncope ignores braces in the 
>>>>>>>>>> request, for
>>>>>>>>>> example (get groups items):
>>>>>>>>>> - request is : (name==testA,name==testB);name==testC
>>>>>>>>>> - the same request ( http encoded ) is:
>>>>>>>>>> http://192.168.99.100:9080/syncope/rest/groups?fiql=
>>>>>>>>>> %28name%3D%3DtestA%2Cname%3D%3DtestB%29%3Bname%3D%3DtestC

>>>>>>>>>> In this case response should return zero items , but it returns 
>>>>>>>>>> Group item with
>>>>>>>>>> name=testA - the same result if there would not been braces like 
>>>>>>>>>> below:
>>>>>>>>>> - request is : name==testA,name==testB;name==testC or FIQL encode
>>>>>>>>>> name%3D%3DtestA%2Cname%3D%3DtestB%3Bname%3D%3DtestC

>>>>>>>>>> It seems Syncope ignores braces "( )".

>>>>>>>> --
>>>>>>>> Francesco Chicchiriccò

>>>>>>>> Tirasa - Open Source Excellence http://www.tirasa.net/ Involved at The 
>>>>>>>> Apache
>>>>>>>> Software Foundation:
>>>>>>>> member, Syncope PMC chair, Cocoon PMC, Olingo PMC,
>>>>>>>> CXF Committer, OpenJPA Committer, PonyMail PPMC
>>>>>>>> http://home.apache.org/~ilgrosso/

>>>>>>> --
>>>>>>> Colm O hEigeartaigh

>>>>>>> Talend Community Coder
>>>>>>> http://coders.talend.com

>>>>>> --
>>>>>> Francesco Chicchiriccò

>>>>>> Tirasa - Open Source Excellence
>>>>>> http://www.tirasa.net/

>>>>>> Involved at The Apache Software Foundation:
>>>>>> member, Syncope PMC chair, Cocoon PMC, Olingo PMC,
>>>>>> CXF Committer, OpenJPA Committer, PonyMail PPMC
>>>>>> http://home.apache.org/~ilgrosso/

>>>>> --
>>>>> Colm O hEigeartaigh

>>>>> Talend Community Coder
>>>>> http://coders.talend.com

>>>> --
>>>> Francesco Chicchiriccò

>>>> Tirasa - Open Source Excellence
>>>> http://www.tirasa.net/

>>>> Involved at The Apache Software Foundation:
>>>> member, Syncope PMC chair, Cocoon PMC, Olingo PMC,
>>>> CXF Committer, OpenJPA Committer, PonyMail PPMC
>>>> http://home.apache.org/~ilgrosso/

>>> --
>>> Colm O hEigeartaigh

>>> Talend Community Coder
>>> http://coders.talend.com

>> --
>> Francesco Chicchiriccò

>> Tirasa - Open Source Excellence
>> http://www.tirasa.net/

>> Involved at The Apache Software Foundation:
>> member, Syncope PMC chair, Cocoon PMC, Olingo PMC,
>> CXF Committer, OpenJPA Committer, PonyMail PPMC
>> http://home.apache.org/~ilgrosso/

> --
> Colm O hEigeartaigh

> Talend Community Coder
> http://coders.talend.com

-- 
Francesco Chicchiriccò 
Tel +393290573276 

Amministratore unico @ Tirasa S.r.l. 
Viale D'Annunzio 267 - 65127 Pescara 
Tel +39 0859116307 / FAX +39 0859111173 
http://www.tirasa.net 

Involved at The Apache Software Foundation: 
member, Syncope PMC chair, Cocoon PMC, Olingo PMC, 
CXF Committer, OpenJPA Committer, PonyMail PPMC 
http://home.apache.org/~ilgrosso/ 

"To Iterate is Human, to Recurse, Divine" 
(James O. Coplien, Bell Labs) 

Reply via email to