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 {