Author: thomasm
Date: Wed Sep 23 14:01:05 2015
New Revision: 1704856
URL: http://svn.apache.org/viewvc?rev=1704856&view=rev
Log:
OAK-1501 Property index on "jcr:primaryType" returns the wrong cost (test case)
Modified:
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java
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=1704856&r1=1704855&r2=1704856&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
Wed Sep 23 14:01:05 2015
@@ -55,7 +55,6 @@ import org.apache.jackrabbit.api.securit
import org.apache.jackrabbit.commons.JcrUtils;
import org.apache.jackrabbit.commons.cnd.CndImporter;
import org.apache.jackrabbit.oak.commons.json.JsonObject;
-import org.apache.jackrabbit.oak.commons.json.JsopBuilder;
import org.apache.jackrabbit.oak.commons.json.JsopTokenizer;
import org.apache.jackrabbit.oak.jcr.AbstractRepositoryTest;
import org.apache.jackrabbit.oak.jcr.NodeStoreFixture;
@@ -820,6 +819,32 @@ public class QueryTest extends AbstractR
session.logout();
}
+
+ @Test
+ public void nodeType() throws Exception {
+ Session session = createAdminSession();
+ String xpath = "/jcr:root//element(*,rep:User)[xyz/@jcr:primaryType]";
+ assertTrue(getPlan(session, xpath).startsWith("[rep:User] as [a] /*
nodeType"));
+
+
session.getNode("/oak:index/nodetype").setProperty("declaringNodeTypes",
+ new String[]{"oak:Unstructured"}, PropertyType.NAME);
+ session.save();
+
+ assertTrue(getPlan(session, xpath).startsWith("[rep:User] as [a] /*
traverse "));
+
+ xpath = "/jcr:root//element(*,oak:Unstructured)[xyz/@jcr:primaryType]";
+ assertTrue(getPlan(session, xpath).startsWith("[oak:Unstructured] as
[a] /* nodeType "));
+
+ session.logout();
+ }
+
+ private static String getPlan(Session session, String xpath) throws
RepositoryException {
+ QueryManager qm = session.getWorkspace().getQueryManager();
+ QueryResult qr = qm.createQuery("explain " + xpath, "xpath").execute();
+ Row r = qr.getRows().nextRow();
+ String plan = r.getValue("plan").getString();
+ return plan;
+ }
private static double getCost(Session session, String xpath) throws
RepositoryException {
QueryManager qm = session.getWorkspace().getQueryManager();