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 ca...@apache.org on 2016/06/29 15:20:18 UTC
svn commit: r1750664 -
/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java
Author: catholicon
Date: Wed Jun 29 15:20:18 2016
New Revision: 1750664
URL: http://svn.apache.org/viewvc?rev=1750664&view=rev
Log:
OAK-4517: Add test cases for included and excluded paths for sub-root index defs
Modified:
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java
Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java?rev=1750664&r1=1750663&r2=1750664&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java Wed Jun 29 15:20:18 2016
@@ -35,6 +35,7 @@ import static org.apache.jackrabbit.oak.
import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.DECLARING_NODE_TYPES;
import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NAME;
import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NODE_TYPE;
+import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.QUERY_PATHS;
import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_PROPERTY_NAME;
import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.TYPE_PROPERTY_NAME;
import static org.apache.jackrabbit.oak.plugins.index.PathFilter.PROP_EXCLUDED_PATHS;
@@ -746,6 +747,89 @@ public class LucenePropertyIndexTest ext
assertQuery("select [jcr:path] from [nt:base] where [propa] = 10", asList("/test/c", "/test/f"));
}
+ //OAK-4517
+ @Test
+ public void pathIncludeSubrootIndex() throws Exception {
+ Tree subTreeRoot = root.getTree("/").addChild("test");
+ Tree idx = createIndex(subTreeRoot, "test1", of("propa"));
+ idx.setProperty(createProperty(PROP_INCLUDED_PATHS, of("/a"), Type.STRINGS));
+ //Do not provide type information
+ root.commit();
+
+ subTreeRoot.addChild("a").setProperty("propa", 10);
+ subTreeRoot.addChild("a").addChild("b").setProperty("propa", 10);
+ subTreeRoot.addChild("c").setProperty("propa", 10);
+ root.commit();
+
+ String query = "select [jcr:path] from [nt:base] where [propa] = 10 AND ISDESCENDANTNODE('/test')";
+ assertThat(explain(query), containsString("lucene:test1"));
+ assertQuery(query, asList("/test/a", "/test/a/b"));
+ }
+
+ //OAK-4517
+ @Test
+ public void pathQuerySubrootIndex() throws Exception {
+ Tree subTreeRoot = root.getTree("/").addChild("test");
+ Tree idx = createIndex(subTreeRoot, "test1", of("propa"));
+ idx.setProperty(createProperty(QUERY_PATHS, of("/test/a"), Type.STRINGS));
+ //Do not provide type information
+ root.commit();
+
+ subTreeRoot.addChild("a").setProperty("propa", 10);
+ subTreeRoot.addChild("a").addChild("b").setProperty("propa", 10);
+ subTreeRoot.addChild("a").addChild("b").addChild("c").setProperty("propa", 10);
+ subTreeRoot.addChild("c").setProperty("propa", 10);
+ root.commit();
+
+ String query = "select [jcr:path] from [nt:base] where [propa] = 10 AND ISDESCENDANTNODE('/test/a')";
+ String explanation = explain(query);
+ assertThat(explanation, containsString("lucene:test1"));
+ assertQuery(query, asList("/test/a/b", "/test/a/b/c"));
+
+ query = "select [jcr:path] from [nt:base] where [propa] = 10 AND ISDESCENDANTNODE('/test/a/b')";
+ explanation = explain(query);
+ assertThat(explanation, containsString("lucene:test1"));
+ assertQuery(query, asList("/test/a/b/c"));
+
+ query = "select [jcr:path] from [nt:base] where [propa] = 10 AND ISDESCENDANTNODE('/test')";
+ explanation = explain(query);
+ assertThat(explanation, not(containsString("lucene:test1")));
+ assertThat(explanation, containsString("/* no-index"));
+
+ query = "select [jcr:path] from [nt:base] where [propa] = 10 AND ISDESCENDANTNODE('/test/c')";
+ explanation = explain(query);
+ assertThat(explanation, not(containsString("lucene:test1")));
+ assertThat(explanation, containsString("/* no-index"));
+ }
+
+ //OAK-4517
+ @Test
+ public void pathExcludeSubrootIndex() throws Exception{
+ Tree subTreeRoot = root.getTree("/").addChild("test");
+ Tree idx = createIndex(subTreeRoot, "test1", of("propa"));
+ idx.setProperty(createProperty(PROP_EXCLUDED_PATHS, of("/a"), Type.STRINGS));
+ //Do not provide type information
+ root.commit();
+
+ subTreeRoot.addChild("a").setProperty("propa", 10);
+ subTreeRoot.addChild("a").addChild("b").setProperty("propa", 10);
+ subTreeRoot.addChild("c").setProperty("propa", 10);
+ root.commit();
+
+ String query = "select [jcr:path] from [nt:base] where [propa] = 10 AND ISDESCENDANTNODE('/test')";
+
+ assertThat(explain(query), containsString("lucene:test1"));
+ assertQuery(query, asList("/test/c"));
+
+ //Make some change and then check
+ subTreeRoot = root.getTree("/").getChild("test");
+ subTreeRoot.addChild("a").addChild("e").setProperty("propa", 10);
+ subTreeRoot.addChild("f").setProperty("propa", 10);
+ root.commit();
+
+ assertQuery(query, asList("/test/c", "/test/f"));
+ }
+
@Test
public void determinePropTypeFromRestriction() throws Exception{
Tree idx = createIndex("test1", of("propa", "propb"));