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