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], *