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 da...@apache.org on 2015/03/20 18:29:50 UTC
svn commit: r1668104 - in
/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene:
LuceneIndexQueryTest.java TestUtil.java
Author: davide
Date: Fri Mar 20 17:29:50 2015
New Revision: 1668104
URL: http://svn.apache.org/r1668104
Log:
OAK-2660 - wrong resultset multiple ORs, lucene index, full-text
- ignore UT reproducing the issue
Modified:
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/TestUtil.java
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=1668104&r1=1668103&r2=1668104&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 Fri Mar 20 17:29:50 2015
@@ -17,11 +17,15 @@
package org.apache.jackrabbit.oak.plugins.index.lucene;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
+import java.util.Calendar;
import java.util.Iterator;
+import java.util.List;
import org.apache.jackrabbit.oak.Oak;
import org.apache.jackrabbit.oak.api.ContentRepository;
+import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent;
import org.apache.jackrabbit.oak.query.AbstractQueryTest;
@@ -33,6 +37,10 @@ import org.junit.Test;
import static java.util.Arrays.asList;
import static junit.framework.Assert.assertEquals;
+import static org.apache.jackrabbit.JcrConstants.JCR_PRIMARYTYPE;
+import static org.apache.jackrabbit.JcrConstants.NT_UNSTRUCTURED;
+import static org.apache.jackrabbit.oak.api.Type.NAME;
+import static org.apache.jackrabbit.oak.api.Type.STRING;
import static org.apache.jackrabbit.oak.api.Type.STRINGS;
import static org.apache.jackrabbit.oak.plugins.index.lucene.TestUtil.useV2;
import static org.junit.Assert.assertFalse;
@@ -362,4 +370,117 @@ public class LuceneIndexQueryTest extend
ImmutableList.of(one.getPath()));
}
+ @Test
+ @Ignore
+ public void oak2660() throws Exception {
+ final String name = "name";
+ final String surname = "surname";
+ final String description = "description";
+ final String added = "added";
+ final String yes = "yes";
+
+ Tree t;
+
+ // re-define the lucene index
+ t = root.getTree("/oak:index/" + TEST_INDEX_NAME);
+ assertTrue(t.exists());
+ t.remove();
+ root.commit();
+ assertFalse(root.getTree("/oak:index/" + TEST_INDEX_NAME).exists());
+
+ t = root.getTree("/");
+ Tree indexDefn = createTestIndexNode(t, LuceneIndexConstants.TYPE_LUCENE);
+ useV2(indexDefn);
+ indexDefn.setProperty(LuceneIndexConstants.TEST_MODE, true);
+
+ Tree props = TestUtil.newRulePropTree(indexDefn, NT_UNSTRUCTURED);
+ TestUtil.enablePropertyIndex(props, name, false);
+ TestUtil.enableForFullText(props, surname, false);
+ TestUtil.enableForFullText(props, description, false);
+ TestUtil.enableForOrdered(props, added);
+
+ root.commit();
+
+ // creating the dataset
+ List<String> expected = Lists.newArrayList();
+ Tree content = root.getTree("/").addChild("content");
+ t = content.addChild("test1");
+ t.setProperty(JCR_PRIMARYTYPE, NT_UNSTRUCTURED, NAME);
+ t.setProperty(name, yes);
+ t.setProperty(surname, yes);
+ t.setProperty(description, yes);
+ t.setProperty(added, Calendar.getInstance());
+ expected.add(t.getPath());
+
+ t = content.addChild("test2");
+ t.setProperty(JCR_PRIMARYTYPE, NT_UNSTRUCTURED, NAME);
+ t.setProperty(name, yes);
+ t.setProperty(surname, yes);
+ t.setProperty(description, "no");
+ t.setProperty(added, Calendar.getInstance());
+ expected.add(t.getPath());
+
+ t = content.addChild("test3");
+ t.setProperty(JCR_PRIMARYTYPE, NT_UNSTRUCTURED, NAME);
+ t.setProperty(name, yes);
+ t.setProperty(surname, "no");
+ t.setProperty(description, "no");
+ t.setProperty(added, Calendar.getInstance());
+ expected.add(t.getPath());
+
+ t = content.addChild("test4");
+ t.setProperty(JCR_PRIMARYTYPE, NT_UNSTRUCTURED, NAME);
+ t.setProperty(name, "no");
+ t.setProperty(surname, yes);
+ t.setProperty(description, "no");
+ t.setProperty(added, Calendar.getInstance());
+ expected.add(t.getPath());
+
+ t = content.addChild("test5");
+ t.setProperty(JCR_PRIMARYTYPE, NT_UNSTRUCTURED, NAME);
+ t.setProperty(name, "no");
+ t.setProperty(surname, "no");
+ t.setProperty(description, yes);
+ t.setProperty(added, Calendar.getInstance());
+ expected.add(t.getPath());
+
+ t = content.addChild("test6");
+ t.setProperty(JCR_PRIMARYTYPE, NT_UNSTRUCTURED, NAME);
+ t.setProperty(name, "no");
+ t.setProperty(surname, "no");
+ t.setProperty(description, "no");
+ t.setProperty(added, Calendar.getInstance());
+
+ root.commit();
+
+ // asserting the initial state
+ for (String s : expected) {
+ assertTrue("wrong initial state", root.getTree(s).exists());
+ }
+
+ final String statement =
+ "SELECT * " +
+ "FROM [" + NT_UNSTRUCTURED + "] AS c " +
+ "WHERE " +
+ "( " +
+ "c.[" + name + "] = '" + yes + "' " +
+ "OR CONTAINS(c.[" + surname + "], '" + yes + "') " +
+ "OR CONTAINS(c.[" + description + "], '" + yes + "') " +
+ ") " +
+ "AND ISDESCENDANTNODE(c, '" + content.getPath() + "') " +
+ "ORDER BY " + added + " DESC ";
+
+ assertQuery(statement, SQL2, expected);
+ }
+
+ @SuppressWarnings("unused")
+ private static void walktree(final Tree t) {
+ System.out.println("+ " + t.getPath());
+ for (PropertyState p : t.getProperties()) {
+ System.out.println(" -" + p.getName() + "=" + p.getValue(STRING));
+ }
+ for (Tree t1 : t.getChildren()) {
+ walktree(t1);
+ }
+ }
}
Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/TestUtil.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/TestUtil.java?rev=1668104&r1=1668103&r2=1668104&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/TestUtil.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/TestUtil.java Fri Mar 20 17:29:50 2015
@@ -89,6 +89,12 @@ public class TestUtil {
prop.setProperty(LuceneIndexConstants.PROP_USE_IN_SPELLCHECK, true);
return prop;
}
+
+ public static Tree enableForOrdered(Tree props, String propName) {
+ Tree prop = enablePropertyIndex(props, propName, false);
+ prop.setProperty("ordered", true);
+ return prop;
+ }
public static Tree enablePropertyIndex(Tree props, String propName, boolean regex) {
Tree prop = props.addChild(unique("prop"));