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