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 2014/01/27 17:15:20 UTC
svn commit: r1561719 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java
oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java
Author: alexparvulescu
Date: Mon Jan 27 16:15:19 2014
New Revision: 1561719
URL: http://svn.apache.org/r1561719
Log:
OAK-1354 Valid Query for mixin Type in JCR 2.x fails in Oak
Modified:
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/SQL2Parser.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/SQL2Parser.java?rev=1561719&r1=1561718&r2=1561719&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 Jan 27 16:15:19 2014
@@ -870,6 +870,12 @@ public class SQL2Parser {
}
columns.add(factory.column(selectorName, propertyName, columnName));
}
+
+ if (columns.isEmpty()) {
+ // OAK-1354, inject the selector name
+ columns.add(factory
+ .column(selectorName, selectorName, selectorName));
+ }
}
private void parseComment() throws ParseException {
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=1561719&r1=1561718&r2=1561719&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 Jan 27 16:15:19 2014
@@ -25,6 +25,8 @@ import static org.junit.Assert.assertFal
import static org.junit.Assert.fail;
import java.io.ByteArrayInputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
import java.util.Arrays;
import java.util.HashSet;
import java.util.NoSuchElementException;
@@ -35,6 +37,7 @@ import javax.jcr.NodeIterator;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.ValueFactory;
+import javax.jcr.nodetype.NodeTypeManager;
import javax.jcr.query.InvalidQueryException;
import javax.jcr.query.Query;
import javax.jcr.query.QueryManager;
@@ -43,6 +46,7 @@ import javax.jcr.query.Row;
import javax.jcr.query.RowIterator;
import org.apache.jackrabbit.commons.JcrUtils;
+import org.apache.jackrabbit.commons.cnd.CndImporter;
import org.apache.jackrabbit.oak.jcr.AbstractRepositoryTest;
import org.apache.jackrabbit.oak.jcr.NodeStoreFixture;
import org.junit.Ignore;
@@ -542,4 +546,31 @@ public class QueryTest extends AbstractR
assertFalse(ni.hasNext());
}
+ @Test
+ public void testOak1354() throws Exception {
+ Session session = createAdminSession();
+ NodeTypeManager manager = session.getWorkspace().getNodeTypeManager();
+
+ if (!manager.hasNodeType("mymixinOak1354")) {
+ StringBuilder defs = new StringBuilder();
+ defs.append("[mymixinOak1354]\n");
+ defs.append(" mixin");
+ Reader cndReader = new InputStreamReader(new ByteArrayInputStream(defs.toString().getBytes()));
+ CndImporter.registerNodeTypes(cndReader, session);
+ }
+ Node p = session.getRootNode().addNode("one");
+ p.addMixin("mymixinOak1354");
+ session.save();
+
+ Query q = session.getWorkspace().getQueryManager()
+ .createQuery("SELECT * FROM [mymixinOak1354]", Query.JCR_SQL2);
+ QueryResult qr = q.execute();
+
+ NodeIterator ni = qr.getNodes();
+ assertTrue(ni.hasNext());
+ Node n = ni.nextNode();
+ assertEquals("/one", n.getPath());
+ assertFalse(ni.hasNext());
+ }
+
}