----- 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/