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 ju...@apache.org on 2013/11/11 22:02:13 UTC
svn commit: r1540844 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/query/
oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/
Author: jukka
Date: Mon Nov 11 21:02:13 2013
New Revision: 1540844
URL: http://svn.apache.org/r1540844
Log:
OAK-874: Column names aren't reported properly for "select * from [nodeType]" queries
Skip the selector name in wildcard columns for XPath queries.
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java?rev=1540844&r1=1540843&r2=1540844&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java Mon Nov 11 21:02:13 2013
@@ -108,6 +108,8 @@ public abstract class QueryEngineImpl im
String sql2 = converter.convert(statement);
LOG.debug("XPath > SQL2: {}", sql2);
try {
+ // OAK-874: No artificial XPath selector name in wildcards
+ parser.setIncludeSelectorNameInWildcardColumns(false);
return parser.parse(sql2);
} catch (ParseException e) {
ParseException e2 = new ParseException(
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java?rev=1540844&r1=1540843&r2=1540844&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java Mon Nov 11 21:02:13 2013
@@ -95,6 +95,7 @@ public class SQL2Parser {
// SQL injection protection: if disabled, literals are not allowed
private boolean allowTextLiterals = true;
private boolean allowNumberLiterals = true;
+ private boolean includeSelectorNameInWildcardColumns = true;
private final AstElementFactory factory = new AstElementFactory();
@@ -860,7 +861,12 @@ public class SQL2Parser {
if (namePathMapper != null) {
propertyName = namePathMapper.getJcrName(propertyName);
}
- String columnName = selectorName + "." + propertyName;
+ String columnName;
+ if (includeSelectorNameInWildcardColumns) {
+ columnName = selectorName + "." + propertyName;
+ } else {
+ columnName = propertyName;
+ }
columns.add(factory.column(selectorName, propertyName, columnName));
}
}
@@ -1291,4 +1297,8 @@ public class SQL2Parser {
this.allowNumberLiterals = allowNumberLiterals;
}
+ public void setIncludeSelectorNameInWildcardColumns(boolean value) {
+ this.includeSelectorNameInWildcardColumns = value;
+ }
+
}
Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java?rev=1540844&r1=1540843&r2=1540844&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java Mon Nov 11 21:02:13 2013
@@ -188,7 +188,7 @@ public class QueryTest extends AbstractR
q = qm.createQuery("//*[@id=1]", Query.XPATH);
r = q.execute();
assertEquals(
- newHashSet("jcr:path", "jcr:score", "a.jcr:primaryType"),
+ newHashSet("jcr:path", "jcr:score", "jcr:primaryType"),
newHashSet(r.getColumnNames()));
}