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 th...@apache.org on 2015/03/19 15:44:29 UTC
svn commit: r1667780 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/
oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/
oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/
Author: thomasm
Date: Thu Mar 19 14:44:28 2015
New Revision: 1667780
URL: http://svn.apache.org/r1667780
Log:
OAK-2566 PropertyRestriction.isNotNullRestriction does not take "list" into account
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/OrderedPropertyIndexLookup.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/Filter.java
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/OrderedPropertyIndexLookup.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/OrderedPropertyIndexLookup.java?rev=1667780&r1=1667779&r2=1667780&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/OrderedPropertyIndexLookup.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/property/OrderedPropertyIndexLookup.java Thu Mar 19 14:44:28 2015
@@ -266,24 +266,19 @@ public class OrderedPropertyIndexLookup
String propertyName = PathUtils.getName(pr.propertyName);
NodeState definition = getIndexNode(root, propertyName, filter);
if (definition != null) {
- PropertyValue value = null;
boolean createPlan = false;
- if (pr.isNotNullRestriction()) {
+ if (pr.isNotNullRestriction() || pr.list != null) {
// open query: [property] is not null
- value = null;
createPlan = true;
} else if (pr.first != null && pr.first.equals(pr.last) && pr.firstIncluding
&& pr.lastIncluding) {
// [property]=[value]
- value = pr.first;
createPlan = true;
} else if (pr.first != null && !pr.first.equals(pr.last)) {
// '>' & '>=' use cases
- value = pr.first;
createPlan = true;
} else if (pr.last != null && !pr.last.equals(pr.first)) {
// '<' & '<='
- value = pr.last;
createPlan = true;
}
if (createPlan) {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/Filter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/Filter.java?rev=1667780&r1=1667779&r2=1667780&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/Filter.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/query/Filter.java Thu Mar 19 14:44:28 2015
@@ -227,11 +227,11 @@ public interface Filter {
public int propertyType = PropertyType.UNDEFINED;
public boolean isNullRestriction() {
- return first == null && last == null && lastIncluding && firstIncluding;
+ return first == null && last == null && list == null && lastIncluding && firstIncluding;
}
public boolean isNotNullRestriction() {
- return first == null && last == null && !lastIncluding && !firstIncluding;
+ return first == null && last == null && list == null && !lastIncluding && !firstIncluding;
}
@Override
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java?rev=1667780&r1=1667779&r2=1667780&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java Thu Mar 19 14:44:28 2015
@@ -604,9 +604,10 @@ public class LuceneIndex implements Adva
IndexingRule rule = indexDefinition.getApplicableIndexingRule(JcrConstants.NT_BASE);
for (PropertyRestriction pr : filter.getPropertyRestrictions()) {
- if (pr.isNullRestriction() || pr.isNotNullRestriction()) {
- // ignore property existence checks, Lucene can't do 'property
- // is not null' queries (OAK-1208)
+ if (pr.first == null && pr.last == null) {
+ // we only support equality or range queries,
+ // but not "in", "is null", "is not null"
+ // queries (OAK-1208)
continue;
}