Author: catholicon
Date: Thu Apr 28 21:45:15 2016
New Revision: 1741523

URL: http://svn.apache.org/viewvc?rev=1741523&view=rev
Log:
OAK-4317: Similar and Native queries should return no results if no index can 
handle them (backport r1741339 from trunk)

Modified:
    jackrabbit/oak/branches/1.4/   (props changed)
    
jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NativeFunctionImpl.java
    
jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SimilarImpl.java
    
jackrabbit/oak/branches/1.4/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_native.txt

Propchange: jackrabbit/oak/branches/1.4/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Apr 28 21:45:15 2016
@@ -1,3 +1,3 @@
 /jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1733615,1733875,1733913,1734230,1734254,1735052,1735405,1735484,1735549,1735564,1735622,1735638,1735919,1735983,1736176,1737998,1738004,1738775,1738963,1740971,1741032
+/jackrabbit/oak/trunk:1733615,1733875,1733913,1734230,1734254,1735052,1735405,1735484,1735549,1735564,1735622,1735638,1735919,1735983,1736176,1737998,1738004,1738775,1738963,1740971,1741032,1741339
 /jackrabbit/trunk:1345480

Modified: 
jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NativeFunctionImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NativeFunctionImpl.java?rev=1741523&r1=1741522&r2=1741523&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NativeFunctionImpl.java
 (original)
+++ 
jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/NativeFunctionImpl.java
 Thu Apr 28 21:45:15 2016
@@ -23,6 +23,8 @@ import java.util.Set;
 
 import org.apache.jackrabbit.oak.api.PropertyValue;
 import org.apache.jackrabbit.oak.query.index.FilterImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import static org.apache.jackrabbit.oak.spi.query.QueryIndex.NativeQueryIndex;
 
@@ -30,7 +32,9 @@ import static org.apache.jackrabbit.oak.
  * A native function condition.
  */
 public class NativeFunctionImpl extends ConstraintImpl {
-    
+
+    private final Logger log = LoggerFactory.getLogger(getClass());
+
     public static final String NATIVE_PREFIX = "native*";
     
     private final String selectorName;
@@ -63,7 +67,8 @@ public class NativeFunctionImpl extends
         // and because we don't know how to process native
         // conditions
         if (!(selector.getIndex() instanceof NativeQueryIndex)) {
-            throw new IllegalArgumentException("No full-text index was found 
that can process the condition " + toString());
+            log.warn("No full-text index was found that can process the 
condition " + toString());
+            return false;
         }
         // we assume the index only returns the requested entries
         return true;

Modified: 
jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SimilarImpl.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SimilarImpl.java?rev=1741523&r1=1741522&r2=1741523&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SimilarImpl.java
 (original)
+++ 
jackrabbit/oak/branches/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SimilarImpl.java
 Thu Apr 28 21:45:15 2016
@@ -26,12 +26,16 @@ import org.apache.jackrabbit.oak.api.Typ
 import org.apache.jackrabbit.oak.query.index.FilterImpl;
 import org.apache.jackrabbit.oak.spi.query.PropertyValues;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex.FulltextQueryIndex;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Support for "similar(...)
  */
 public class SimilarImpl extends ConstraintImpl {
-    
+
+    private final Logger log = LoggerFactory.getLogger(getClass());
+
     public static final String NATIVE_LUCENE_LANGUAGE = "lucene";
     
     public static final String MORE_LIKE_THIS_PREFIX = 
"mlt?mlt.fl=:path&mlt.mindf=0&stream.body=";
@@ -67,7 +71,8 @@ public class SimilarImpl extends Constra
         // and because we don't know how to process native
         // conditions
         if (!(selector.getIndex() instanceof FulltextQueryIndex)) {
-            throw new IllegalArgumentException("No full-text index was found 
that can process the condition " + toString());
+            log.warn("No full-text index was found that can process the 
condition " + toString());
+            return false;
         }
         // verify the path is readable
         PropertyValue p = pathExpression.currentValue();

Modified: 
jackrabbit/oak/branches/1.4/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_native.txt
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.4/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_native.txt?rev=1741523&r1=1741522&r2=1741523&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.4/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_native.txt
 (original)
+++ 
jackrabbit/oak/branches/1.4/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_native.txt
 Thu Apr 28 21:45:15 2016
@@ -28,15 +28,12 @@ commit / + "test": { "a": { "name": "Hel
 
 select [jcr:path] from [nt:base]
   where native('solr', 'name:(Hello OR World)')
-java.lang.IllegalArgumentException: No full-text index was found that can 
process the condition native([nt:base], [solr], 'name:(Hello OR World)')
 
 select [jcr:path] from [nt:base] as a
   where native(a, 'solr', 'path_child:\/test _val_:"recip(rord(name),1,2,3)"')
-java.lang.IllegalArgumentException: No full-text index was found that can 
process the condition native([a], [solr], 'path_child:\/test 
_val_:"recip(rord(name),1,2,3)"')
 
 select [jcr:path] from [nt:base]
   where native('solr', 'path_child:\/test _val_:"recip(rord(name),1,2,3)"')
-java.lang.IllegalArgumentException: No full-text index was found that can 
process the condition native([nt:base], [solr], 'path_child:\/test 
_val_:"recip(rord(name),1,2,3)"')
 
 xpath2sql //*[rep:native('solr', 'xyz')]
 select [jcr:path], [jcr:score], *


Reply via email to