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();


Reply via email to