Hi Chandan Many thanks for this quick fix.
My next question would be, given its severity, whether this should make it into the 2.0.1 release? Ciao On Nov 1, 2014 8:29 AM, "V.A, Chandan" <[email protected]> wrote: > Hi Giacomo, > The issue is now fixed. Please refer to JIRA issue - > https://issues.apache.org/jira/browse/OLINGO-478 > > Thanks > Kind Regards > Chandan > > -----Original Message----- > From: Kobler-Morris, Sven [mailto:[email protected]] > Sent: Friday, October 31, 2014 5:10 PM > To: [email protected] > Subject: RE: Serious bug in JPA visitor > > Hello Chandan, > > Ok, this will also be good if SQL somehow has different operator > precedence as OData (now, or in future ODatas versions) > > Regards, > Sven > > -----Original Message----- > From: V.A, Chandan [mailto:[email protected]] > Sent: Freitag, 31. Oktober 2014 12:20 > To: [email protected] > Subject: RE: Serious bug in JPA visitor > > Hello Sven, > I will stick to the worst case scenario and enclose every node of binary > expression within a parenthesis. > > Sample JPQL statement - SELECT E1 FROM Customer E1 WHERE (((E1.id = 100) > OR (E1.id = 200)) AND (E1.name > 'Bob Bryan')) ORDER BY E1.id for the OData > Filter string - > http://localhost:8080/olingo-odata2-jpa-processor-ref-web/SalesOrderProcessing.svc/Customers?$filter=(Id > eq 100 or Id eq 200) and Name gt 'Bob Bryan' > > Thanks > Kind Regards > Chandan > > -----Original Message----- > From: Kobler-Morris, Sven [mailto:[email protected]] > Sent: Friday, October 31, 2014 4:21 PM > To: [email protected] > Subject: RE: Serious bug in JPA visitor > > Hello Chandan, > > the parenthesis are not in the expression tree and can unfortunately not > be determined afterwards. The parenthesis are just reflected in the tree > within the node hierarchy. > So each node forms a kind of parenthesis. > > In the worst case I think the SQL clause will contain parenthesis for all > nodes. E.g. like the test visitor dies with the "{}". > > Regards, > Sven > > -----Original Message----- > From: V.A, Chandan [mailto:[email protected]] > Sent: Freitag, 31. Oktober 2014 11:22 > To: [email protected] > Subject: RE: Serious bug in JPA visitor > > Hello Sven, > If I am not wrong, if we are evaluating the expression tree, the way it is > demonstrated in Olingo core reference scenario then the order of precedence > will work. Because here we evaluate the expression tree by navigating > through the nodes of the tree as they appear and evaluate them. > However if now I need to use the expression tree to build a JPQL > Expression string then the expression tree does not provide information on > the availability of parenthesis and hence the final JPQL statement that > gets built loses out on parenthesis. Is there any way we could get the > availability of parenthesis in the filter string via expression tree so > that the same can be added to the JPQL expression string? > > Thanks > Kind Regards > Chandan > > -----Original Message----- > From: Kobler-Morris, Sven [mailto:[email protected]] > Sent: Friday, October 31, 2014 2:24 PM > To: [email protected] > Subject: RE: Serious bug in JPA visitor > > Hello Chandan, > > seems a bug in the JPA processor or more in the JPAs-Visitor. > > The expression tree serialized with a test visitor shows that the > parenthesis are correctly evaluated. > I added a test to file "TestParser.java" > > @Test > public void testAndOr() { > //A > GetPTF("(SoId eq 2 or SoId eq 3 or SoId eq 4) and Delivered eq true") > .aSerialized("{{{{SoId eq 2} or {SoId eq 3}} or {SoId eq 4}} and > {Delivered eq true}}"); > > //B > GetPTF("SoId eq 2 or SoId eq 3 or SoId eq 4 and Delivered eq true") > .aSerialized("{{{SoId eq 2} or {SoId eq 3}} or {{SoId eq 4} and > {Delivered eq true}}}"); > } > > It shows that in A the "or's" in the pathentesis are gouped together. > Where as in B the "and" is first grouped because and has a higher priority. > > Regards, > Sven > > > > -----Original Message----- > From: Giacomo Pati [mailto:[email protected]] > Sent: Freitag, 31. Oktober 2014 08:41 > To: [email protected] > Subject: Serious bug in FilterParser > > Hi all > > We recently run into a serious issue regarding filters and I want someone > of you to double check. When you run the following query against a > deployed olingo-odata2-jpa-processor-ref-web > like > > > http://localhost:8080/SalesOrderProcessing.svc/SalesOrderItems?$filter=(SoId > eq 2 or SoId eq 3 or SoId eq 4) and Delivered eq true > > one would expect to see only Entities with a property Delivered == true but > this is not the case. I've also run a quick junit test against > FilterParserImpl with such a query using an ExpressionVisitor and figured > that it seems that the parenthesis are not respected which would reduce the > query to "SoId eq 2 or SoId eq 3 or SoId eq 4 and Delivered eq true" and it > seems that is actually what happens. > > Anyone else? > > Ciao > -- > Giacomo >
