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 2014/11/21 08:47:28 UTC

svn commit: r1640871 - /jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.java

Author: chetanm
Date: Fri Nov 21 07:47:27 2014
New Revision: 1640871

URL: http://svn.apache.org/r1640871
Log:
OAK-2278 - Make current testcases pass with new index implementation

Add support for detecting which queries can never be handled by the LuceneIndex (with current design so far). For example queries involving node name, OR conditions etc. In such case with testMode enabled it should not throw exception

Modified:
    jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexPlanner.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=1640871&r1=1640870&r2=1640871&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 Fri Nov 21 07:47:27 2014
@@ -62,6 +62,9 @@ class IndexPlanner {
 
         if (defn.isTestMode()
                 && builder == null){
+            if (notSupportedFeature()) {
+                return null;
+            }
             String msg = String.format("No plan found for filter [%s] " +
                     "while using definition [%s] and testMode is found to be enabled", filter, defn);
             throw new IllegalStateException(msg);
@@ -241,6 +244,17 @@ class IndexPlanner {
         return null;
     }
 
+    private boolean notSupportedFeature() {
+        if(filter.getPathRestriction() == Filter.PathRestriction.NO_RESTRICTION
+                && filter.matchesAllTypes()
+                && filter.getPropertyRestrictions().isEmpty()){
+            //This mode includes name(), localname() queries
+            //OrImpl [a/name] = 'Hello' or [b/name] = 'World'
+            return true;
+        }
+        return false;
+    }
+
     //~--------------------------------------------------------< PlanResult >
 
     public static class PlanResult {