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 ch...@apache.org on 2017/10/16 08:06:12 UTC

svn commit: r1812254 - in /jackrabbit/oak/trunk/oak-lucene/src: main/java/org/apache/jackrabbit/oak/plugins/index/lucene/ main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/ test/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/

Author: chetanm
Date: Mon Oct 16 08:06:11 2017
New Revision: 1812254

URL: http://svn.apache.org/viewvc?rev=1812254&view=rev
Log:
OAK-6832 - Synchronous nodetype lucene index support

Prepration step for nodetype support

Remove usage of property definition from lookup as its not required
in lookup flow

Modified:
    jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java
    jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
    jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookup.java
    jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookupTest.java
    jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexStorageTest.java
    jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/PropertyIndexCleanerTest.java

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java?rev=1812254&r1=1812253&r2=1812254&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java Mon Oct 16 08:06:11 2017
@@ -641,7 +641,7 @@ class IndexPlanner {
             PropertyDefinition pd = result.propDefns.get(pr.propertyName);
 
             if (pd != null) {
-                PropertyIndexResult e = new PropertyIndexResult(pd, propertyName, pr);
+                PropertyIndexResult e = new PropertyIndexResult(propertyName, pr);
                 if (pd.unique) {
                     unique.add(e);
                 } else {
@@ -974,12 +974,10 @@ class IndexPlanner {
     }
 
     public static class PropertyIndexResult {
-        final PropertyDefinition pd;
         final String propertyName;
         final PropertyRestriction pr;
 
-        public PropertyIndexResult(PropertyDefinition pd, String propertyName, PropertyRestriction pr) {
-            this.pd = pd;
+        public PropertyIndexResult(String propertyName, PropertyRestriction pr) {
             this.propertyName = propertyName;
             this.pr = pr;
         }

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java?rev=1812254&r1=1812253&r2=1812254&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java Mon Oct 16 08:06:11 2017
@@ -1563,7 +1563,7 @@ public class LucenePropertyIndex impleme
         HybridPropertyIndexLookup lookup = new HybridPropertyIndexLookup(pr.indexPath,
                 NodeStateUtils.getNode(rootState, pr.indexPath), plan.getPathPrefix(), false);
         PropertyIndexResult pir = pr.getPropertyIndexResult();
-        Iterable<String> paths = lookup.query(plan.getFilter(), pir.pd, pir.propertyName, pir.pr);
+        Iterable<String> paths = lookup.query(plan.getFilter(), pir.propertyName, pir.pr);
 
         //No need for path restriction evaluation as thats taken care by PropertyIndex impl itself
         //via content mirror strategy

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookup.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookup.java?rev=1812254&r1=1812253&r2=1812254&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookup.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookup.java Mon Oct 16 08:06:11 2017
@@ -23,8 +23,9 @@ import java.util.Collections;
 import java.util.Set;
 
 import com.google.common.collect.Iterables;
+import com.google.common.collect.Sets;
 import org.apache.jackrabbit.oak.api.PropertyValue;
-import org.apache.jackrabbit.oak.plugins.index.lucene.PropertyDefinition;
+import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexUtil;
 import org.apache.jackrabbit.oak.plugins.index.property.ValuePatternUtil;
 import org.apache.jackrabbit.oak.plugins.index.property.strategy.ContentMirrorStoreStrategy;
@@ -39,6 +40,7 @@ import static org.apache.jackrabbit.oak.
 import static org.apache.jackrabbit.oak.plugins.index.lucene.property.HybridPropertyIndexUtil.PROPERTY_INDEX;
 import static org.apache.jackrabbit.oak.plugins.index.lucene.property.HybridPropertyIndexUtil.PROP_HEAD_BUCKET;
 import static org.apache.jackrabbit.oak.plugins.index.lucene.property.HybridPropertyIndexUtil.PROP_PREVIOUS_BUCKET;
+import static org.apache.jackrabbit.oak.plugins.index.lucene.property.HybridPropertyIndexUtil.uniquePropertyIndex;
 import static org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexUtil.encode;
 
 public class HybridPropertyIndexLookup {
@@ -64,30 +66,27 @@ public class HybridPropertyIndexLookup {
      * Performs query based on provided property restriction
      *
      * @param filter filter from the query being performed
-     * @param pd property definition as per index definition
      * @param propertyName actual property name which may or may not be same as
      *                     property name in property restriction
      * @param restriction property restriction matching given property
      * @return iterable consisting of absolute paths as per index content
      */
-    public Iterable<String> query(Filter filter, PropertyDefinition pd,
-                                  String propertyName, Filter.PropertyRestriction restriction) {
+    public Iterable<String> query(Filter filter, String propertyName, Filter.PropertyRestriction restriction) {
         //The propertyName may differ from name in restriction. For e.g. for relative properties
         //the restriction property name can be 'jcr:content/status' while the index has indexed
         //for 'status'
 
         Set<String> values = ValuePatternUtil.getAllValues(restriction);
         Set<String> encodedValues = PropertyIndexUtil.encode(values);
-        return query(filter, pd, propertyName, encodedValues);
+        return query(filter, propertyName, encodedValues);
     }
 
-    public Iterable<String> query(Filter filter, PropertyDefinition pd,
-                                  String propertyName, PropertyValue value) {
-        return query(filter, pd, propertyName, encode(value, pd.valuePattern));
+    public Iterable<String> query(Filter filter, String propertyName, PropertyValue value) {
+        Set<String> values = Sets.newHashSet(value.getValue(Type.STRINGS));
+        return query(filter, propertyName, encode(values));
     }
 
-    private Iterable<String> query(Filter filter, PropertyDefinition pd,
-                                  String propertyName, Set<String> encodedValues) {
+    private Iterable<String> query(Filter filter, String propertyName, Set<String> encodedValues) {
         String propIdxNodeName = HybridPropertyIndexUtil.getNodeName(propertyName);
         NodeState propIndexRootNode = indexState.getChildNode(PROPERTY_INDEX);
         NodeState propIndexNode = propIndexRootNode.getChildNode(propIdxNodeName);
@@ -97,7 +96,7 @@ public class HybridPropertyIndexLookup {
 
         String indexName = indexPath + "(" + propertyName + ")";
         Iterable<String> result;
-        if (pd.unique) {
+        if (uniquePropertyIndex(propIndexNode)) {
             result = queryUnique(filter, indexName, propIndexRootNode, propIdxNodeName, encodedValues);
         } else {
             result = querySimple(filter, indexName, propIndexNode, encodedValues);

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookupTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookupTest.java?rev=1812254&r1=1812253&r2=1812254&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookupTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookupTest.java Mon Oct 16 08:06:11 2017
@@ -108,7 +108,7 @@ public class HybridPropertyIndexLookupTe
         filter.restrictProperty("foo", Operator.EQUAL, newString("bar"));
 
         HybridPropertyIndexLookup lookup = new HybridPropertyIndexLookup(indexPath, builder.getNodeState());
-        Iterable<String> paths = lookup.query(filter, pd(propertyName), propertyName,
+        Iterable<String> paths = lookup.query(filter, propertyName,
                 filter.getPropertyRestriction(propertyName));
 
         assertThat(ImmutableList.copyOf(paths), containsInAnyOrder("/a"));
@@ -128,14 +128,14 @@ public class HybridPropertyIndexLookupTe
 
         HybridPropertyIndexLookup lookup = new HybridPropertyIndexLookup(indexPath, builder.getNodeState(),
                 "/content", false);
-        Iterable<String> paths = lookup.query(filter, pd(propertyName), propertyName,
+        Iterable<String> paths = lookup.query(filter, propertyName,
                 filter.getPropertyRestriction(propertyName));
 
         assertThat(ImmutableList.copyOf(paths), containsInAnyOrder("/a"));
 
         lookup = new HybridPropertyIndexLookup(indexPath, builder.getNodeState(),
                 "/content", true);
-        paths = lookup.query(filter, pd(propertyName), propertyName,
+        paths = lookup.query(filter, propertyName,
                 filter.getPropertyRestriction(propertyName));
 
         assertThat(ImmutableList.copyOf(paths), containsInAnyOrder("/content/a"));
@@ -158,7 +158,7 @@ public class HybridPropertyIndexLookupTe
 
     private List<String> query(Filter filter, String propertyName, String propertyRestrictionName) {
         HybridPropertyIndexLookup lookup = new HybridPropertyIndexLookup(indexPath, builder.getNodeState());
-        Iterable<String> paths = lookup.query(filter, pd(propertyName), propertyName,
+        Iterable<String> paths = lookup.query(filter, propertyName,
                 filter.getPropertyRestriction(propertyRestrictionName));
         return ImmutableList.copyOf(paths);
     }

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexStorageTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexStorageTest.java?rev=1812254&r1=1812253&r2=1812254&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexStorageTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexStorageTest.java Mon Oct 16 08:06:11 2017
@@ -207,7 +207,7 @@ public class HybridPropertyIndexStorageT
     private List<String> query(String propertyName, PropertyValue value) {
         HybridPropertyIndexLookup lookup = new HybridPropertyIndexLookup(indexPath, builder.getNodeState());
         FilterImpl filter = createFilter(root, "nt:base");
-        Iterable<String> paths = lookup.query(filter, pd(propertyName), propertyName, value);
+        Iterable<String> paths = lookup.query(filter, propertyName, value);
         return ImmutableList.copyOf(paths);
     }
 

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/PropertyIndexCleanerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/PropertyIndexCleanerTest.java?rev=1812254&r1=1812253&r2=1812254&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/PropertyIndexCleanerTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/PropertyIndexCleanerTest.java Mon Oct 16 08:06:11 2017
@@ -329,8 +329,7 @@ public class PropertyIndexCleanerTest {
         NodeState root = nodeStore.getRoot();
         HybridPropertyIndexLookup lookup = new HybridPropertyIndexLookup(indexPath, getNode(root, indexPath));
         FilterImpl filter = FilterImpl.newTestInstance();
-        Iterable<String> paths = lookup.query(filter, pd(indexPath, propertyName), propertyName,
-                PropertyValues.newString(value));
+        Iterable<String> paths = lookup.query(filter, propertyName,   PropertyValues.newString(value));
         return ImmutableList.copyOf(paths);
     }