You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by al...@apache.org on 2013/05/20 11:19:19 UTC
svn commit: r1484404 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/query/XPathToSQL2Converter.java
test/java/org/apache/jackrabbit/oak/query/SQL2ParserTest.java
Author: alexparvulescu
Date: Mon May 20 09:19:18 2013
New Revision: 1484404
URL: http://svn.apache.org/r1484404
Log:
OAK-830 XPathToSQL2Converter fails to wrap or clauses
- better fix
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/XPathToSQL2Converter.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/SQL2ParserTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/XPathToSQL2Converter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/XPathToSQL2Converter.java?rev=1484404&r1=1484403&r2=1484404&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/XPathToSQL2Converter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/XPathToSQL2Converter.java Mon May 20 09:19:18 2013
@@ -355,7 +355,17 @@ public class XPathToSQL2Converter {
if (condition.length() > 0) {
condition.append(" and ");
}
- condition.append(s.condition);
+ if (s.condition.getPrecedence() == Expression.PRECEDENCE_OR) {
+ if (condition.length() > 0) {
+ condition.append("(");
+ condition.append(s.condition);
+ condition.append(")");
+ } else {
+ condition.append(s.condition);
+ }
+ } else {
+ condition.append(s.condition);
+ }
}
}
if (condition.length() > 0) {
@@ -1247,7 +1257,6 @@ public class XPathToSQL2Converter {
@Override
public String toString() {
StringBuilder buff = new StringBuilder();
- boolean shouldWrap = false;
if (left != null) {
if (left.getPrecedence() < precedence) {
buff.append('(').append(left.toString()).append(')');
@@ -1255,7 +1264,6 @@ public class XPathToSQL2Converter {
buff.append(left.toString());
}
buff.append(' ');
- shouldWrap = left instanceof Condition;
}
buff.append(operator);
if (right != null) {
@@ -1265,11 +1273,6 @@ public class XPathToSQL2Converter {
} else {
buff.append(right.toString());
}
- shouldWrap = shouldWrap || left instanceof Condition;
- }
- if (shouldWrap) {
- buff.insert(0, "(");
- buff.append(")");
}
return buff.toString();
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/SQL2ParserTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/SQL2ParserTest.java?rev=1484404&r1=1484403&r2=1484404&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/SQL2ParserTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/SQL2ParserTest.java Mon May 20 09:19:18 2013
@@ -59,7 +59,7 @@ public class SQL2ParserTest {
public void testUnwrappedOr() throws ParseException {
String q = new XPathToSQL2Converter()
.convert("/jcr:root/home//test/* [@type='t1' or @type='t2' or @type='t3']");
- String token = "and ((b.[type] = 't1' or b.[type] = 't2') or b.[type] = 't3')";
+ String token = "and (b.[type] = 't1' or b.[type] = 't2' or b.[type] = 't3')";
assertTrue(q.contains(token));
}
}