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 al...@apache.org on 2013/11/20 22:15:02 UTC
svn commit: r1543951 - in /jackrabbit/oak/trunk/oak-lucene/src:
main/java/org/apache/jackrabbit/oak/plugins/index/lucene/
test/java/org/apache/jackrabbit/oak/jcr/query/
test/java/org/apache/jackrabbit/oak/plugins/index/lucene/
Author: alexparvulescu
Date: Wed Nov 20 21:15:02 2013
New Revision: 1543951
URL: http://svn.apache.org/r1543951
Log:
OAK-1208 Lucene Index should ignore property existence checks
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryFulltextTest.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java
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=1543951&r1=1543950&r2=1543951&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 Wed Nov 20 21:15:02 2013
@@ -475,6 +475,13 @@ public class LuceneIndex implements Full
}
for (PropertyRestriction pr : filter.getPropertyRestrictions()) {
+
+ if (pr.first == null && pr.last == null) {
+ // ignore property existence checks, Lucene can't to 'property
+ // is not null' queries (OAK-1208)
+ continue;
+ }
+
String name = pr.propertyName;
if (name.contains("/")) {
// lucene cannot handle child-level property restrictions
Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryFulltextTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryFulltextTest.java?rev=1543951&r1=1543950&r2=1543951&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryFulltextTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryFulltextTest.java Wed Nov 20 21:15:02 2013
@@ -58,7 +58,7 @@ public class QueryFulltextTest extends A
// "where contains([nt:base].[text], cast('hello OR hallo' as string)) */",
// getResult(q.execute(), "plan"));
assertEquals("[nt:base] as [nt:base] /* " +
- "aggregate +(:fulltext:hallo :fulltext:hello) +text:{* TO *} " +
+ "aggregate :fulltext:hallo :fulltext:hello " +
"ft:(text:\"hallo\" OR text:\"hello\") " +
"where contains([nt:base].[text], cast('hello OR hallo' as string)) */",
getResult(q.execute(), "plan"));
@@ -98,7 +98,7 @@ public class QueryFulltextTest extends A
// "and (contains([nt:base].[text], cast('hallo' as string))) */",
// getResult(q.execute(), "plan"));
assertEquals("[nt:base] as [nt:base] /* " +
- "aggregate +:fulltext:hallo* +:path:/testroot/* +text:{* TO *} " +
+ "aggregate +:fulltext:hallo* +:path:/testroot/* +text:{* TO *}" +
"ft:(text:\"hallo\") " +
"where (ischildnode([nt:base], [/testroot])) " +
"and (contains([nt:base].[text], cast('hallo' as string))) */",
Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java?rev=1543951&r1=1543950&r2=1543951&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java Wed Nov 20 21:15:02 2013
@@ -200,4 +200,30 @@ public class LuceneIndexQueryTest extend
}
+ /**
+ * OAK-1208 property existence constraints break queries
+ */
+ @Test
+ public void testOAK1208() throws Exception {
+ Tree t = root.getTree("/").addChild("containsWithMultipleOr");
+ Tree one = t.addChild("one");
+ one.setProperty("p", "dam/smartcollection");
+ one.setProperty("t", "media");
+
+ Tree two = t.addChild("two");
+ two.setProperty("p", "dam/collection");
+ two.setProperty("t", "media");
+
+ Tree three = t.addChild("three");
+ three.setProperty("p", "dam/hits");
+ three.setProperty("t", "media");
+
+ root.commit();
+
+ StringBuffer stmt = new StringBuffer();
+ stmt.append("//*[jcr:contains(., 'media') and (@p = 'dam/smartcollection' or @p = 'dam/collection') ]");
+ assertQuery(stmt.toString(), "xpath",
+ ImmutableList.of(one.getPath(), two.getPath()));
+ }
+
}