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 2012/10/05 15:50:13 UTC

svn commit: r1394523 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/mk/index/ main/java/org/apache/jackrabbit/oak/plugins/index/ main/java/org/apache/jackrabbit/oak/plugins/index/old/ main/java/org/apache/jackrabbit/oak/query/...

Author: alexparvulescu
Date: Fri Oct  5 13:50:12 2012
New Revision: 1394523

URL: http://svn.apache.org/viewvc?rev=1394523&view=rev
Log:
OAK-368 Unify all index definitions under oak:index

Added:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/PrefixContentIndex.java
      - copied, changed from r1394459, jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/PrefixContentIndex.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/PropertyContentIndex.java   (contents, props changed)
      - copied, changed from r1394459, jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/PropertyContentIndex.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java   (contents, props changed)
      - copied, changed from r1394499, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneQueryTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/old/QueryTest.java   (contents, props changed)
      - copied, changed from r1394476, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/QueryTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexQueryTest.java   (with props)
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/index/TraversingIndexQueryTest.java   (contents, props changed)
      - copied, changed from r1394476, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/QueryTest.java
Removed:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/PrefixContentIndex.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/PropertyContentIndex.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneQueryTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/QueryTest.java
Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/IndexWrapper.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexDefinition.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUtils.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/PropertyIndexer.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java
    jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2.txt
    jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_explain.txt
    jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_measure.txt

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/IndexWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/IndexWrapper.java?rev=1394523&r1=1394522&r2=1394523&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/IndexWrapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/IndexWrapper.java Fri Oct  5 13:50:12 2012
@@ -52,6 +52,12 @@ public class IndexWrapper extends MicroK
         indexer.init();
     }
 
+    public IndexWrapper(MicroKernel mk, String indexConfigPath) {
+        this.mk = MicroKernelWrapperBase.wrap(mk);
+        this.indexer = new Indexer(mk, indexConfigPath);
+        indexer.init();
+    }
+
     public Indexer getIndexer() {
         return indexer;
     }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexDefinition.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexDefinition.java?rev=1394523&r1=1394522&r2=1394523&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexDefinition.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexDefinition.java Fri Oct  5 13:50:12 2012
@@ -26,8 +26,6 @@ import javax.annotation.Nonnull;
  */
 public interface IndexDefinition {
 
-    String TYPE_PROPERTY_NAME = "type";
-
     String UNIQUE_PROPERTY_NAME = "unique";
 
     String INDEX_DATA_CHILD_NAME = ":data";

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUtils.java?rev=1394523&r1=1394522&r2=1394523&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUtils.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/IndexUtils.java Fri Oct  5 13:50:12 2012
@@ -33,15 +33,14 @@ import org.apache.jackrabbit.oak.spi.sta
 import static org.apache.jackrabbit.oak.api.Type.BOOLEAN;
 import static org.apache.jackrabbit.oak.api.Type.STRING;
 import static org.apache.jackrabbit.oak.plugins.index.IndexDefinition.INDEX_DATA_CHILD_NAME;
-import static org.apache.jackrabbit.oak.plugins.index.IndexDefinition.TYPE_PROPERTY_NAME;
 import static org.apache.jackrabbit.oak.plugins.index.IndexDefinition.UNIQUE_PROPERTY_NAME;
 
-public class IndexUtils {
+public class IndexUtils implements IndexConstants {
 
     /**
      * switch to "oak:index" as soon as it is possible
      */
-    public static final String DEFAULT_INDEX_HOME = "/oak-index";
+    public static final String DEFAULT_INDEX_HOME = "/oak:index";
 
     private static final String TYPE_UNKNOWN = "unknown";
 

Copied: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/PrefixContentIndex.java (from r1394459, jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/PrefixContentIndex.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/PrefixContentIndex.java?p2=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/PrefixContentIndex.java&p1=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/PrefixContentIndex.java&r1=1394459&r2=1394523&rev=1394523&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/PrefixContentIndex.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/PrefixContentIndex.java Fri Oct  5 13:50:12 2012
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.jackrabbit.oak.query.index;
+package org.apache.jackrabbit.oak.plugins.index.old;
 
 import java.util.Iterator;
 
@@ -24,7 +24,7 @@ import javax.jcr.PropertyType;
 
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.kernel.CoreValueMapper;
-import org.apache.jackrabbit.oak.plugins.index.old.PrefixIndex;
+import org.apache.jackrabbit.oak.query.index.IndexRowImpl;
 import org.apache.jackrabbit.oak.spi.query.Cursor;
 import org.apache.jackrabbit.oak.spi.query.Filter;
 import org.apache.jackrabbit.oak.spi.query.IndexRow;

Copied: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/PropertyContentIndex.java (from r1394459, jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/PropertyContentIndex.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/PropertyContentIndex.java?p2=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/PropertyContentIndex.java&p1=jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/PropertyContentIndex.java&r1=1394459&r2=1394523&rev=1394523&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/PropertyContentIndex.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/PropertyContentIndex.java Fri Oct  5 13:50:12 2012
@@ -16,11 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.jackrabbit.oak.query.index;
+package org.apache.jackrabbit.oak.plugins.index.old;
 
 import java.util.Iterator;
 import org.apache.jackrabbit.oak.api.CoreValue;
-import org.apache.jackrabbit.oak.plugins.index.old.PropertyIndex;
+import org.apache.jackrabbit.oak.query.index.IndexRowImpl;
 import org.apache.jackrabbit.oak.spi.query.Cursor;
 import org.apache.jackrabbit.oak.spi.query.Filter;
 import org.apache.jackrabbit.oak.spi.query.IndexRow;

Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/PropertyContentIndex.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/PropertyIndexer.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/PropertyIndexer.java?rev=1394523&r1=1394522&r2=1394523&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/PropertyIndexer.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/old/PropertyIndexer.java Fri Oct  5 13:50:12 2012
@@ -24,8 +24,6 @@ import javax.annotation.Nonnull;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.plugins.index.IndexDefinition;
 import org.apache.jackrabbit.oak.plugins.index.IndexUtils;
-import org.apache.jackrabbit.oak.query.index.PrefixContentIndex;
-import org.apache.jackrabbit.oak.query.index.PropertyContentIndex;
 import org.apache.jackrabbit.oak.spi.commit.CommitHook;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;

Copied: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java (from r1394499, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneQueryTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java?p2=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java&p1=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneQueryTest.java&r1=1394499&r2=1394523&rev=1394523&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneQueryTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java Fri Oct  5 13:50:12 2012
@@ -16,82 +16,49 @@
  */
 package org.apache.jackrabbit.oak.plugins.index.lucene;
 
-import java.util.Iterator;
-
 import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.mk.core.MicroKernelImpl;
 import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.api.ContentRepository;
-import org.apache.jackrabbit.oak.api.ResultRow;
 import org.apache.jackrabbit.oak.api.Tree;
-import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.query.AbstractQueryTest;
 import org.apache.jackrabbit.oak.spi.commit.CommitHook;
 import org.apache.jackrabbit.oak.spi.commit.CompositeHook;
 import org.apache.jackrabbit.oak.spi.query.CompositeQueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
-import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 
-import static org.apache.jackrabbit.oak.plugins.index.IndexUtils.DEFAULT_INDEX_HOME;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
 /**
- * base class for lucene search tests
+ * Tests the query engine using the default index implementation: the
+ * {@link LuceneIndexProvider}
  */
-public class LuceneQueryTest extends AbstractQueryTest implements
+public class LuceneIndexQueryTest extends AbstractQueryTest implements
         LuceneIndexConstants {
 
-    protected static final String SQL2 = "JCR-SQL2";
-
     @Override
-    @Before
-    public void before() throws Exception {
-        super.before();
-        createIndexNode();
+    protected void createTestIndexNode() throws Exception {
+        Tree index = root.getTree("/");
+        createTestIndexNode(index, TYPE);
+        root.commit();
     }
 
     @Override
     protected ContentRepository createRepository() {
         QueryIndexProvider qip = new CompositeQueryIndexProvider(
-                new LuceneIndexProvider(DEFAULT_INDEX_HOME));
-        CommitHook ch = new CompositeHook(new LuceneReindexHook(
-                DEFAULT_INDEX_HOME), new LuceneHook(DEFAULT_INDEX_HOME));
+                new LuceneIndexProvider(TEST_INDEX_HOME));
+        CommitHook ch = new CompositeHook(
+                new LuceneReindexHook(TEST_INDEX_HOME), new LuceneHook(
+                        TEST_INDEX_HOME));
         MicroKernel mk = new MicroKernelImpl();
         createDefaultKernelTracker().available(mk);
         return new Oak(mk).with(qip).with(ch).createContentRepository();
     }
 
-    protected void createIndexNode() throws Exception {
-        Tree index = root.getTree("/");
-        for (String p : PathUtils.elements(DEFAULT_INDEX_HOME)) {
-            if (index.hasChild(p)) {
-                index = index.getChild(p);
-            } else {
-                index = index.addChild(p);
-            }
-        }
-        index.addChild("test-lucene").setProperty("type", "lucene");
-        root.commit();
-    }
-
     @Test
-    public void simpleSql2() throws Exception {
-
-        Tree test = root.getTree("/").addChild("test");
-        test.addChild("a").setProperty("name", "hello");
-        test.addChild("b").setProperty("name", "nothello");
-        root.commit();
-
-        String sql = "select * from [nt:base] where name = 'hello'";
-
-        Iterator<? extends ResultRow> result;
-        result = executeQuery(sql, SQL2, null).getRows().iterator();
-        assertTrue(result.hasNext());
-        assertEquals("/test/a", result.next().getPath());
-        assertFalse(result.hasNext());
+    @Ignore("OAK-367")
+    public void sql2() throws Exception {
+        test("sql2.txt");
     }
 
 }
\ No newline at end of file

Propchange: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Copied: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/old/QueryTest.java (from r1394476, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/QueryTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/old/QueryTest.java?p2=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/old/QueryTest.java&p1=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/QueryTest.java&r1=1394476&r2=1394523&rev=1394523&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/QueryTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/old/QueryTest.java Fri Oct  5 13:50:12 2012
@@ -11,40 +11,20 @@
  * KIND, either express or implied. See the License for the specific language
  * governing permissions and limitations under the License.
  */
-package org.apache.jackrabbit.oak.query;
-
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
+package org.apache.jackrabbit.oak.plugins.index.old;
 
 import org.apache.jackrabbit.mk.core.MicroKernelImpl;
 import org.apache.jackrabbit.mk.index.IndexWrapper;
 import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.api.ContentRepository;
-import org.apache.jackrabbit.oak.api.CoreValue;
-import org.apache.jackrabbit.oak.api.Result;
-import org.apache.jackrabbit.oak.api.ResultRow;
-import org.apache.jackrabbit.oak.plugins.index.old.Indexer;
-import org.apache.jackrabbit.oak.plugins.index.old.PropertyIndexer;
+import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.query.AbstractQueryTest;
 import org.apache.jackrabbit.oak.spi.commit.CompositeHook;
 import org.apache.jackrabbit.oak.spi.query.CompositeQueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
+import org.junit.Ignore;
 import org.junit.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
 /**
  * Test the query feature.
  */
@@ -54,7 +34,8 @@ public class QueryTest extends AbstractQ
     protected ContentRepository createRepository() {
 
         // the property and prefix index currently require the index wrapper
-        IndexWrapper mk = new IndexWrapper(new MicroKernelImpl());
+        IndexWrapper mk = new IndexWrapper(new MicroKernelImpl(),
+                PathUtils.concat(TEST_INDEX_HOME, TEST_INDEX_NAME));
         Indexer indexer = mk.getIndexer();
 
         // MicroKernel mk = new MicroKernelImpl();
@@ -68,210 +49,14 @@ public class QueryTest extends AbstractQ
     }
 
     @Test
-    public void sql1() throws Exception {
-        test("sql1.txt");
-    }
-
-    @Test
-    public void sql2() throws Exception {
-        test("sql2.txt");
-    }
-
-    @Test
     public void sql2Explain() throws Exception {
         test("sql2_explain.txt");
     }
 
     @Test
-    public void sql2_measure() throws Exception {
-        test("sql2_measure.txt");
-    }
-
-    @Test
-    public void xpath() throws Exception {
-        test("xpath.txt");
-    }
-
-    @Test
-    public void bindVariableTest() throws Exception {
-        JsopUtil.apply(
-                root,
-                "/ + \"test\": { \"hello\": {\"id\": \"1\"}, \"world\": {\"id\": \"2\"}}",
-                vf);
-        root.commit();
-
-        HashMap<String, CoreValue> sv = new HashMap<String, CoreValue>();
-        sv.put("id", vf.createValue("1"));
-        Iterator<? extends ResultRow> result;
-        result = executeQuery("select * from [nt:base] where id = $id",
-                QueryEngineImpl.SQL2, sv).getRows().iterator();
-        assertTrue(result.hasNext());
-        assertEquals("/test/hello", result.next().getPath());
-
-        sv.put("id", vf.createValue("2"));
-        result = executeQuery("select * from [nt:base] where id = $id",
-                QueryEngineImpl.SQL2, sv).getRows().iterator();
-        assertTrue(result.hasNext());
-        assertEquals("/test/world", result.next().getPath());
-
-        result = executeQuery("explain select * from [nt:base] where id = 1 order by id",
-                QueryEngineImpl.SQL2, null).getRows().iterator();
-        assertTrue(result.hasNext());
-        assertEquals("[nt:base] as [nt:base] " +
-                "/* traverse \"//*\" where [nt:base].[id] = cast('1' as long) */",
-                result.next().getValue("plan").getString());
-
-    }
-
-    private void test(String file) throws Exception {
-        InputStream in = getClass().getResourceAsStream(file);
-        LineNumberReader r = new LineNumberReader(new InputStreamReader(in));
-        PrintWriter w = new PrintWriter(new OutputStreamWriter(
-                new FileOutputStream("target/" + file)));
-        HashSet<String> knownQueries = new HashSet<String>();
-        boolean errors = false;
-        try {
-            while (true) {
-                String line = r.readLine();
-                if (line == null) {
-                    break;
-                }
-                line = line.trim();
-                if (line.startsWith("#") || line.length() == 0) {
-                    w.println(line);
-                } else if (line.startsWith("xpath2sql")) {
-                    line = line.substring("xpath2sql".length()).trim();
-                    w.println("xpath2sql " + line);
-                    XPathToSQL2Converter c = new XPathToSQL2Converter();
-                    String got;
-                    try {
-                        got = c.convert(line);
-                        executeQuery(got, QueryEngineImpl.SQL2, null);
-                    } catch (ParseException e) {
-                        got = "invalid: " + e.getMessage().replace('\n', ' ');
-                    } catch (Exception e) {
-                        // e.printStackTrace();
-                        got = "error: " + e.toString().replace('\n', ' ');
-                    }
-                    if (!knownQueries.add(line)) {
-                        got = "duplicate xpath2sql query";
-                    }
-                    line = r.readLine().trim();
-                    w.println(got);
-                    if (!line.equals(got)) {
-                        errors = true;
-                    }
-                } else if (line.startsWith("select") ||
-                        line.startsWith("explain") ||
-                        line.startsWith("measure") ||
-                        line.startsWith("sql1") ||
-                        line.startsWith("xpath")) {
-                    w.println(line);
-                    String language = QueryEngineImpl.SQL2;
-                    if (line.startsWith("sql1 ")) {
-                        language = QueryEngineImpl.SQL;
-                        line = line.substring("sql1 ".length());
-                    } else if (line.startsWith("xpath ")) {
-                        language = QueryEngineImpl.XPATH;
-                        line = line.substring("xpath ".length());
-                    }
-                    boolean readEnd = true;
-                    for (String resultLine : executeQuery(line, language)) {
-                        w.println(resultLine);
-                        if (readEnd) {
-                            line = r.readLine();
-                            if (line == null) {
-                                errors = true;
-                                readEnd = false;
-                            } else {
-                                line = line.trim();
-                                if (line.length() == 0) {
-                                    errors = true;
-                                    readEnd = false;
-                                } else {
-                                    if (!line.equals(resultLine)) {
-                                        errors = true;
-                                    }
-                                }
-                            }
-                        }
-                    }
-                    w.println("");
-                    if (readEnd) {
-                        while (true) {
-                            line = r.readLine();
-                            if (line == null) {
-                                break;
-                            }
-                            line = line.trim();
-                            if (line.length() == 0) {
-                                break;
-                            }
-                            errors = true;
-                        }
-                    }
-                } else if (line.startsWith("commit")) {
-                    w.println(line);
-                    line = line.substring("commit".length()).trim();
-                    JsopUtil.apply(root, line, vf);
-                    root.commit();
-                }
-                w.flush();
-            }
-        } finally {
-            w.close();
-            r.close();
-        }
-        if (errors) {
-            throw new Exception("Results in target/" + file + " don't match expected " +
-                    "results in src/test/resources/" + file + "; compare the files for details");
-        }
-    }
-
-    private List<String> executeQuery(String query, String language) {
-        long time = System.currentTimeMillis();
-        List<String> lines = new ArrayList<String>();
-        try {
-            Result result = executeQuery(query, language, null);
-            for (ResultRow row : result.getRows()) {
-                lines.add(readRow(row));
-            }
-            if (!query.contains("order by")) {
-                Collections.sort(lines);
-            }
-        } catch (ParseException e) {
-            lines.add(e.toString());
-        } catch (IllegalArgumentException e) {
-            lines.add(e.toString());
-        }
-        time = System.currentTimeMillis() - time;
-        if (time > 3000 && !isDebugModeEnabled()) {
-            fail("Query took too long: " + query + " took " + time + " ms");
-        }
-        return lines;
-    }
-
-    private static String readRow(ResultRow row) {
-        StringBuilder buff = new StringBuilder();
-        CoreValue[] values = row.getValues();
-        for (int i = 0; i < values.length; i++) {
-            if (i > 0) {
-                buff.append(", ");
-            }
-            CoreValue v = values[i];
-            buff.append(v == null ? "null" : v.getString());
-        }
-        return buff.toString();
-    }
-
-    /**
-     * Check whether the test is running in debug mode.
-     * 
-     * @return true if debug most is (most likely) enabled
-     */
-    private static boolean isDebugModeEnabled() {
-        return java.lang.management.ManagementFactory.getRuntimeMXBean().
-                getInputArguments().toString().indexOf("-agentlib:jdwp") > 0;
+    @Ignore("OAK-288 prevents the index from seeing updates that happened directly on the mk")
+    public void sql2() throws Exception {
+        test("sql2.txt");
     }
 
 }

Propchange: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/old/QueryTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexQueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexQueryTest.java?rev=1394523&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexQueryTest.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexQueryTest.java Fri Oct  5 13:50:12 2012
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.plugins.index.property;
+
+import org.apache.jackrabbit.mk.api.MicroKernel;
+import org.apache.jackrabbit.mk.core.MicroKernelImpl;
+import org.apache.jackrabbit.oak.Oak;
+import org.apache.jackrabbit.oak.api.ContentRepository;
+import org.apache.jackrabbit.oak.query.AbstractQueryTest;
+import org.apache.jackrabbit.oak.spi.commit.CommitHook;
+import org.apache.jackrabbit.oak.spi.commit.CompositeHook;
+import org.apache.jackrabbit.oak.spi.query.CompositeQueryIndexProvider;
+import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
+
+/**
+ * Tests the query engine using the default index implementation: the
+ * {@link PropertyIndexProvider}
+ */
+public class PropertyIndexQueryTest extends AbstractQueryTest {
+
+    @Override
+    protected ContentRepository createRepository() {
+        QueryIndexProvider qip = new CompositeQueryIndexProvider(
+                new PropertyIndexProvider());
+        CommitHook ch = new CompositeHook(new PropertyIndexHook());
+        MicroKernel mk = new MicroKernelImpl();
+        createDefaultKernelTracker().available(mk);
+        return new Oak(mk).with(qip).with(ch).createContentRepository();
+    }
+
+}
\ No newline at end of file

Propchange: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexQueryTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexQueryTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev URL

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java?rev=1394523&r1=1394522&r2=1394523&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java Fri Oct  5 13:50:12 2012
@@ -16,22 +16,50 @@
  */
 package org.apache.jackrabbit.oak.query;
 
+import static org.apache.jackrabbit.oak.plugins.index.IndexUtils.DEFAULT_INDEX_HOME;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.LineNumberReader;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
 import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
 
+import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.oak.AbstractOakTest;
 import org.apache.jackrabbit.oak.api.ContentSession;
 import org.apache.jackrabbit.oak.api.CoreValue;
 import org.apache.jackrabbit.oak.api.CoreValueFactory;
 import org.apache.jackrabbit.oak.api.Result;
+import org.apache.jackrabbit.oak.api.ResultRow;
 import org.apache.jackrabbit.oak.api.Root;
 import org.apache.jackrabbit.oak.api.SessionQueryEngine;
+import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
 import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
 
 /**
  * AbstractQueryTest...
  */
-public abstract class AbstractQueryTest extends AbstractOakTest {
+public abstract class AbstractQueryTest extends AbstractOakTest implements
+        IndexConstants {
+
+    protected static final String TEST_INDEX_NAME = "test-index";
+    protected static final String TEST_INDEX_HOME = DEFAULT_INDEX_HOME;
+    protected static final String INDEX_DEFINITION_NODE_TYPE = "nam:oak:queryIndexDefinition";
 
     protected CoreValueFactory vf;
     protected SessionQueryEngine qe;
@@ -46,11 +74,238 @@ public abstract class AbstractQueryTest 
         root = session.getLatestRoot();
         qe = root.getQueryEngine();
         vf = root.getValueFactory();
+        createTestIndexNode();
+    }
+
+    /**
+     * Override this method to add your default index definition
+     * 
+     * {@link #createTestIndexNode(Tree, String)} for a helper method
+     */
+    protected void createTestIndexNode() throws Exception {
+        Tree index = root.getTree("/");
+        createTestIndexNode(index, "unknown");
+        root.commit();
     }
 
-    protected Result executeQuery(String statement, String language, HashMap<String, CoreValue> sv) throws ParseException {
+    protected static Tree createTestIndexNode(Tree index, String type)
+            throws Exception {
+        Tree indexDef = index;
+        for (String p : PathUtils.elements(TEST_INDEX_HOME)) {
+            if (indexDef.hasChild(p)) {
+                indexDef = indexDef.getChild(p);
+            } else {
+                indexDef = indexDef.addChild(p);
+            }
+        }
+        indexDef = indexDef.addChild(TEST_INDEX_NAME);
+        indexDef.setProperty(JcrConstants.JCR_PRIMARYTYPE,
+                INDEX_DEFINITION_NODE_TYPE);
+        indexDef.setProperty(TYPE_PROPERTY_NAME, type);
+        return indexDef;
+    }
+
+    protected Result executeQuery(String statement, String language,
+            HashMap<String, CoreValue> sv) throws ParseException {
         return qe.executeQuery(statement, language, Long.MAX_VALUE, 0, sv,
                 session.getLatestRoot(), null);
     }
 
+    @Test
+    public void sql1() throws Exception {
+        test("sql1.txt");
+    }
+
+    @Test
+    public void sql2() throws Exception {
+        test("sql2.txt");
+    }
+
+    @Test
+    public void xpath() throws Exception {
+        test("xpath.txt");
+    }
+
+    @Test
+    @Ignore("OAK-336")
+    public void sql2_measure() throws Exception {
+        test("sql2_measure.txt");
+    }
+
+    @Test
+    public void bindVariableTest() throws Exception {
+        JsopUtil.apply(
+                root,
+                "/ + \"test\": { \"hello\": {\"id\": \"1\"}, \"world\": {\"id\": \"2\"}}",
+                vf);
+        root.commit();
+
+        HashMap<String, CoreValue> sv = new HashMap<String, CoreValue>();
+        sv.put("id", vf.createValue("1"));
+        Iterator<? extends ResultRow> result;
+        result = executeQuery("select * from [nt:base] where id = $id",
+                QueryEngineImpl.SQL2, sv).getRows().iterator();
+        assertTrue(result.hasNext());
+        assertEquals("/test/hello", result.next().getPath());
+
+        sv.put("id", vf.createValue("2"));
+        result = executeQuery("select * from [nt:base] where id = $id",
+                QueryEngineImpl.SQL2, sv).getRows().iterator();
+        assertTrue(result.hasNext());
+        assertEquals("/test/world", result.next().getPath());
+    }
+
+    protected void test(String file) throws Exception {
+        InputStream in = AbstractQueryTest.class.getResourceAsStream(file);
+        LineNumberReader r = new LineNumberReader(new InputStreamReader(in));
+        PrintWriter w = new PrintWriter(new OutputStreamWriter(
+                new FileOutputStream("target/" + getClass().getName() + "_"
+                        + file)));
+        HashSet<String> knownQueries = new HashSet<String>();
+        boolean errors = false;
+        try {
+            while (true) {
+                String line = r.readLine();
+                if (line == null) {
+                    break;
+                }
+                line = line.trim();
+                if (line.startsWith("#") || line.length() == 0) {
+                    w.println(line);
+                } else if (line.startsWith("xpath2sql")) {
+                    line = line.substring("xpath2sql".length()).trim();
+                    w.println("xpath2sql " + line);
+                    XPathToSQL2Converter c = new XPathToSQL2Converter();
+                    String got;
+                    try {
+                        got = c.convert(line);
+                        executeQuery(got, QueryEngineImpl.SQL2, null);
+                    } catch (ParseException e) {
+                        got = "invalid: " + e.getMessage().replace('\n', ' ');
+                    } catch (Exception e) {
+                        // e.printStackTrace();
+                        got = "error: " + e.toString().replace('\n', ' ');
+                    }
+                    if (!knownQueries.add(line)) {
+                        got = "duplicate xpath2sql query";
+                    }
+                    line = r.readLine().trim();
+                    w.println(got);
+                    if (!line.equals(got)) {
+                        errors = true;
+                    }
+                } else if (line.startsWith("select")
+                        || line.startsWith("explain")
+                        || line.startsWith("measure")
+                        || line.startsWith("sql1") || line.startsWith("xpath")) {
+                    w.println(line);
+                    String language = QueryEngineImpl.SQL2;
+                    if (line.startsWith("sql1 ")) {
+                        language = QueryEngineImpl.SQL;
+                        line = line.substring("sql1 ".length());
+                    } else if (line.startsWith("xpath ")) {
+                        language = QueryEngineImpl.XPATH;
+                        line = line.substring("xpath ".length());
+                    }
+                    boolean readEnd = true;
+                    for (String resultLine : executeQuery(line, language)) {
+                        w.println(resultLine);
+                        if (readEnd) {
+                            line = r.readLine();
+                            if (line == null) {
+                                errors = true;
+                                readEnd = false;
+                            } else {
+                                line = line.trim();
+                                if (line.length() == 0) {
+                                    errors = true;
+                                    readEnd = false;
+                                } else {
+                                    if (!line.equals(resultLine)) {
+                                        errors = true;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    w.println("");
+                    if (readEnd) {
+                        while (true) {
+                            line = r.readLine();
+                            if (line == null) {
+                                break;
+                            }
+                            line = line.trim();
+                            if (line.length() == 0) {
+                                break;
+                            }
+                            errors = true;
+                        }
+                    }
+                } else if (line.startsWith("commit")) {
+                    w.println(line);
+                    line = line.substring("commit".length()).trim();
+                    JsopUtil.apply(root, line, vf);
+                    root.commit();
+                }
+                w.flush();
+            }
+        } finally {
+            w.close();
+            r.close();
+        }
+        if (errors) {
+            throw new Exception("Results in target/" + file
+                    + " don't match expected "
+                    + "results in src/test/resources/" + file
+                    + "; compare the files for details");
+        }
+    }
+
+    protected List<String> executeQuery(String query, String language) {
+        long time = System.currentTimeMillis();
+        List<String> lines = new ArrayList<String>();
+        try {
+            Result result = executeQuery(query, language, null);
+            for (ResultRow row : result.getRows()) {
+                lines.add(readRow(row));
+            }
+            if (!query.contains("order by")) {
+                Collections.sort(lines);
+            }
+        } catch (ParseException e) {
+            lines.add(e.toString());
+        } catch (IllegalArgumentException e) {
+            lines.add(e.toString());
+        }
+        time = System.currentTimeMillis() - time;
+        if (time > 3000 && !isDebugModeEnabled()) {
+            fail("Query took too long: " + query + " took " + time + " ms");
+        }
+        return lines;
+    }
+
+    protected static String readRow(ResultRow row) {
+        StringBuilder buff = new StringBuilder();
+        CoreValue[] values = row.getValues();
+        for (int i = 0; i < values.length; i++) {
+            if (i > 0) {
+                buff.append(", ");
+            }
+            CoreValue v = values[i];
+            buff.append(v == null ? "null" : v.getString());
+        }
+        return buff.toString();
+    }
+
+    /**
+     * Check whether the test is running in debug mode.
+     * 
+     * @return true if debug most is (most likely) enabled
+     */
+    protected static boolean isDebugModeEnabled() {
+        return java.lang.management.ManagementFactory.getRuntimeMXBean()
+                .getInputArguments().toString().indexOf("-agentlib:jdwp") > 0;
+    }
+
 }
\ No newline at end of file

Copied: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/index/TraversingIndexQueryTest.java (from r1394476, jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/QueryTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/index/TraversingIndexQueryTest.java?p2=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/index/TraversingIndexQueryTest.java&p1=jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/QueryTest.java&r1=1394476&r2=1394523&rev=1394523&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/QueryTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/index/TraversingIndexQueryTest.java Fri Oct  5 13:50:12 2012
@@ -11,267 +11,25 @@
  * KIND, either express or implied. See the License for the specific language
  * governing permissions and limitations under the License.
  */
-package org.apache.jackrabbit.oak.query;
-
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
+package org.apache.jackrabbit.oak.query.index;
 
+import org.apache.jackrabbit.mk.api.MicroKernel;
 import org.apache.jackrabbit.mk.core.MicroKernelImpl;
-import org.apache.jackrabbit.mk.index.IndexWrapper;
 import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.api.ContentRepository;
-import org.apache.jackrabbit.oak.api.CoreValue;
-import org.apache.jackrabbit.oak.api.Result;
-import org.apache.jackrabbit.oak.api.ResultRow;
-import org.apache.jackrabbit.oak.plugins.index.old.Indexer;
-import org.apache.jackrabbit.oak.plugins.index.old.PropertyIndexer;
-import org.apache.jackrabbit.oak.spi.commit.CompositeHook;
-import org.apache.jackrabbit.oak.spi.query.CompositeQueryIndexProvider;
-import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import org.apache.jackrabbit.oak.query.AbstractQueryTest;
 
 /**
- * Test the query feature.
+ * Tests the query engine using the default index implementation: the
+ * {@link TraversingIndex}
  */
-public class QueryTest extends AbstractQueryTest {
+public class TraversingIndexQueryTest extends AbstractQueryTest {
 
     @Override
     protected ContentRepository createRepository() {
-
-        // the property and prefix index currently require the index wrapper
-        IndexWrapper mk = new IndexWrapper(new MicroKernelImpl());
-        Indexer indexer = mk.getIndexer();
-
-        // MicroKernel mk = new MicroKernelImpl();
-        // Indexer indexer = new Indexer(mk);
-
-        PropertyIndexer pi = new PropertyIndexer(indexer);
-        QueryIndexProvider qip = new CompositeQueryIndexProvider(pi);
-        CompositeHook hook = new CompositeHook(pi);
+        MicroKernel mk = new MicroKernelImpl();
         createDefaultKernelTracker().available(mk);
-        return new Oak(mk).with(qip).with(hook).createContentRepository();
-    }
-
-    @Test
-    public void sql1() throws Exception {
-        test("sql1.txt");
-    }
-
-    @Test
-    public void sql2() throws Exception {
-        test("sql2.txt");
-    }
-
-    @Test
-    public void sql2Explain() throws Exception {
-        test("sql2_explain.txt");
-    }
-
-    @Test
-    public void sql2_measure() throws Exception {
-        test("sql2_measure.txt");
-    }
-
-    @Test
-    public void xpath() throws Exception {
-        test("xpath.txt");
-    }
-
-    @Test
-    public void bindVariableTest() throws Exception {
-        JsopUtil.apply(
-                root,
-                "/ + \"test\": { \"hello\": {\"id\": \"1\"}, \"world\": {\"id\": \"2\"}}",
-                vf);
-        root.commit();
-
-        HashMap<String, CoreValue> sv = new HashMap<String, CoreValue>();
-        sv.put("id", vf.createValue("1"));
-        Iterator<? extends ResultRow> result;
-        result = executeQuery("select * from [nt:base] where id = $id",
-                QueryEngineImpl.SQL2, sv).getRows().iterator();
-        assertTrue(result.hasNext());
-        assertEquals("/test/hello", result.next().getPath());
-
-        sv.put("id", vf.createValue("2"));
-        result = executeQuery("select * from [nt:base] where id = $id",
-                QueryEngineImpl.SQL2, sv).getRows().iterator();
-        assertTrue(result.hasNext());
-        assertEquals("/test/world", result.next().getPath());
-
-        result = executeQuery("explain select * from [nt:base] where id = 1 order by id",
-                QueryEngineImpl.SQL2, null).getRows().iterator();
-        assertTrue(result.hasNext());
-        assertEquals("[nt:base] as [nt:base] " +
-                "/* traverse \"//*\" where [nt:base].[id] = cast('1' as long) */",
-                result.next().getValue("plan").getString());
-
-    }
-
-    private void test(String file) throws Exception {
-        InputStream in = getClass().getResourceAsStream(file);
-        LineNumberReader r = new LineNumberReader(new InputStreamReader(in));
-        PrintWriter w = new PrintWriter(new OutputStreamWriter(
-                new FileOutputStream("target/" + file)));
-        HashSet<String> knownQueries = new HashSet<String>();
-        boolean errors = false;
-        try {
-            while (true) {
-                String line = r.readLine();
-                if (line == null) {
-                    break;
-                }
-                line = line.trim();
-                if (line.startsWith("#") || line.length() == 0) {
-                    w.println(line);
-                } else if (line.startsWith("xpath2sql")) {
-                    line = line.substring("xpath2sql".length()).trim();
-                    w.println("xpath2sql " + line);
-                    XPathToSQL2Converter c = new XPathToSQL2Converter();
-                    String got;
-                    try {
-                        got = c.convert(line);
-                        executeQuery(got, QueryEngineImpl.SQL2, null);
-                    } catch (ParseException e) {
-                        got = "invalid: " + e.getMessage().replace('\n', ' ');
-                    } catch (Exception e) {
-                        // e.printStackTrace();
-                        got = "error: " + e.toString().replace('\n', ' ');
-                    }
-                    if (!knownQueries.add(line)) {
-                        got = "duplicate xpath2sql query";
-                    }
-                    line = r.readLine().trim();
-                    w.println(got);
-                    if (!line.equals(got)) {
-                        errors = true;
-                    }
-                } else if (line.startsWith("select") ||
-                        line.startsWith("explain") ||
-                        line.startsWith("measure") ||
-                        line.startsWith("sql1") ||
-                        line.startsWith("xpath")) {
-                    w.println(line);
-                    String language = QueryEngineImpl.SQL2;
-                    if (line.startsWith("sql1 ")) {
-                        language = QueryEngineImpl.SQL;
-                        line = line.substring("sql1 ".length());
-                    } else if (line.startsWith("xpath ")) {
-                        language = QueryEngineImpl.XPATH;
-                        line = line.substring("xpath ".length());
-                    }
-                    boolean readEnd = true;
-                    for (String resultLine : executeQuery(line, language)) {
-                        w.println(resultLine);
-                        if (readEnd) {
-                            line = r.readLine();
-                            if (line == null) {
-                                errors = true;
-                                readEnd = false;
-                            } else {
-                                line = line.trim();
-                                if (line.length() == 0) {
-                                    errors = true;
-                                    readEnd = false;
-                                } else {
-                                    if (!line.equals(resultLine)) {
-                                        errors = true;
-                                    }
-                                }
-                            }
-                        }
-                    }
-                    w.println("");
-                    if (readEnd) {
-                        while (true) {
-                            line = r.readLine();
-                            if (line == null) {
-                                break;
-                            }
-                            line = line.trim();
-                            if (line.length() == 0) {
-                                break;
-                            }
-                            errors = true;
-                        }
-                    }
-                } else if (line.startsWith("commit")) {
-                    w.println(line);
-                    line = line.substring("commit".length()).trim();
-                    JsopUtil.apply(root, line, vf);
-                    root.commit();
-                }
-                w.flush();
-            }
-        } finally {
-            w.close();
-            r.close();
-        }
-        if (errors) {
-            throw new Exception("Results in target/" + file + " don't match expected " +
-                    "results in src/test/resources/" + file + "; compare the files for details");
-        }
-    }
-
-    private List<String> executeQuery(String query, String language) {
-        long time = System.currentTimeMillis();
-        List<String> lines = new ArrayList<String>();
-        try {
-            Result result = executeQuery(query, language, null);
-            for (ResultRow row : result.getRows()) {
-                lines.add(readRow(row));
-            }
-            if (!query.contains("order by")) {
-                Collections.sort(lines);
-            }
-        } catch (ParseException e) {
-            lines.add(e.toString());
-        } catch (IllegalArgumentException e) {
-            lines.add(e.toString());
-        }
-        time = System.currentTimeMillis() - time;
-        if (time > 3000 && !isDebugModeEnabled()) {
-            fail("Query took too long: " + query + " took " + time + " ms");
-        }
-        return lines;
-    }
-
-    private static String readRow(ResultRow row) {
-        StringBuilder buff = new StringBuilder();
-        CoreValue[] values = row.getValues();
-        for (int i = 0; i < values.length; i++) {
-            if (i > 0) {
-                buff.append(", ");
-            }
-            CoreValue v = values[i];
-            buff.append(v == null ? "null" : v.getString());
-        }
-        return buff.toString();
-    }
-
-    /**
-     * Check whether the test is running in debug mode.
-     * 
-     * @return true if debug most is (most likely) enabled
-     */
-    private static boolean isDebugModeEnabled() {
-        return java.lang.management.ManagementFactory.getRuntimeMXBean().
-                getInputArguments().toString().indexOf("-agentlib:jdwp") > 0;
+        return new Oak(mk).createContentRepository();
     }
 
 }

Propchange: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/index/TraversingIndexQueryTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2.txt
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2.txt?rev=1394523&r1=1394522&r2=1394523&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2.txt (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2.txt Fri Oct  5 13:50:12 2012
@@ -119,12 +119,11 @@ select * from [nt:base] as b where local
 
 select * from [nt:base] as x where isdescendantnode(x, '/') and not isdescendantnode(x, '/jcr:system')
 /jcr:system
-/oak-index
-/oak-index/indexes
 /oak:index
 /oak:index/jcr:uuid
 /oak:index/rep:authorizableId
 /oak:index/rep:principalName
+/oak:index/test-index
 /rep:security
 /rep:security/rep:authorizables
 /rep:security/rep:authorizables/rep:users
@@ -156,7 +155,6 @@ select * from [nt:base] as [p] where [p]
 select * from [nt:base] as p inner join [nt:base] as p2 on ischildnode(p2, p) where p.[jcr:path] = '/'
 /, /children
 /, /jcr:system
-/, /oak-index
 /, /oak:index
 /, /parents
 /, /rep:security
@@ -213,12 +211,11 @@ commit / + "test2": { "id":"1", "x": "2"
 select * from [nt:base] where not isdescendantnode('/jcr:system')
 /
 /jcr:system
-/oak-index
-/oak-index/indexes
 /oak:index
 /oak:index/jcr:uuid
 /oak:index/rep:authorizableId
 /oak:index/rep:principalName
+/oak:index/test-index
 /rep:security
 /rep:security/rep:authorizables
 /rep:security/rep:authorizables/rep:users
@@ -245,12 +242,11 @@ select * from [nt:base] where id = '1' o
 select * from [nt:base] where not (id = '1' or x = '2') and not isdescendantnode('/jcr:system')
 /
 /jcr:system
-/oak-index
-/oak-index/indexes
 /oak:index
 /oak:index/jcr:uuid
 /oak:index/rep:authorizableId
 /oak:index/rep:principalName
+/oak:index/test-index
 /rep:security
 /rep:security/rep:authorizables
 /rep:security/rep:authorizables/rep:users
@@ -265,12 +261,11 @@ select * from [nt:base] where not (id = 
 select * from [nt:base] where x is null and not isdescendantnode('/jcr:system')
 /
 /jcr:system
-/oak-index
-/oak-index/indexes
 /oak:index
 /oak:index/jcr:uuid
 /oak:index/rep:authorizableId
 /oak:index/rep:principalName
+/oak:index/test-index
 /rep:security
 /rep:security/rep:authorizables
 /rep:security/rep:authorizables/rep:users

Modified: jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_explain.txt
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_explain.txt?rev=1394523&r1=1394522&r2=1394523&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_explain.txt (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_explain.txt Fri Oct  5 13:50:12 2012
@@ -36,9 +36,8 @@ explain select * from [nt:base] where pr
 select * from [nt:base] where property([*], 'REFERENCE') = CAST('123' AS REFERENCE)
 /test/a
 
-commit / + "oak-index": {}
-commit /oak-index + "indexes": { "type": "property" }
-commit /oak-index/indexes + "prefix@ref:": {}
+commit /oak:index + "indexes": { "type": "property" }
+commit /oak:index/indexes + "prefix@ref:": {}
 
 explain select * from [nt:base] where property([*], 'REFERENCE') = CAST('123' AS REFERENCE)
 [nt:base] as [nt:base] /* prefixIndex "ref:123" where property([nt:base].[*], 'reference') = cast('123' as reference) */
@@ -53,12 +52,12 @@ select * from [nt:base] where property(i
 /test/a
 
 commit / - "test"
-commit /oak-index/indexes - "prefix@ref:"
+commit /oak:index/indexes - "prefix@ref:"
 
 # test the property content index
 
 commit / + "test": { "a": { "id": "10" }, "b": { "id" : "20" }}
-commit /oak-index/indexes + "property@id,unique": {}
+commit /oak:index/indexes + "property@id,unique": {}
 
 # combining 'not' and 'and'
 
@@ -82,7 +81,7 @@ explain select * from [nt:base] where id
 [nt:base] as [nt:base] /* traverse "//*" where [nt:base].[id] > cast('10' as string) */
 
 commit / - "test"
-commit /oak-index/indexes - "property@id,unique"
+commit /oak:index/indexes - "property@id,unique"
 
 # other tests
 
@@ -108,6 +107,9 @@ explain select * from [nt:base] as p inn
 explain select * from [nt:base] as p inner join [nt:base] as c on p.id = c.p
 [nt:base] as [p] /* traverse "//*" where [p].[id] is not null */ inner join [nt:base] as [c] /* traverse "//*" where [c].[p] is not null */ on [p].[id] = [c].[p]
 
+explain select * from [nt:base] where id = 1 order by id
+[nt:base] as [nt:base] /* traverse "//*" where [nt:base].[id] = cast('1' as long) */
+
 commit / - "parents"
 commit / - "children"
 

Modified: jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_measure.txt
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_measure.txt?rev=1394523&r1=1394522&r2=1394523&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_measure.txt (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/sql2_measure.txt Fri Oct  5 13:50:12 2012
@@ -27,52 +27,52 @@ commit / + "parents": { "p0": {"id": "0"
 commit / + "children": { "c1": {"p": "1"}, "c2": {"p": "1"}, "c3": {"p": "2"}, "c4": {"p": "3"}}
 
 measure select * from [nt:base] as c right outer join [nt:base] as p on p.id = c.p where p.id is not null and not isdescendantnode(p, '/jcr:system')
-c, 672
-p, 224
+c, 669
+p, 223
 query, 4
 
 measure select * from [nt:base] as p left outer join [nt:base] as c on p.id = c.p where p.id is not null
-c, 672
-p, 224
+c, 669
+p, 223
 query, 4
 
 measure select * from [nt:base] as p left outer join [nt:base] as c on p.id = c.p where p.id is not null and c.p is null
-c, 672
-p, 224
+c, 669
+p, 223
 query, 1
 
 measure select * from [nt:base] as p left outer join [nt:base] as c on p.id = c.p where p.id is not null and c.p is not null
-c, 672
-p, 224
+c, 669
+p, 223
 query, 3
 
 measure select * from [nt:base] as p inner join [nt:base] as c on p.id = c.p
-c, 672
-p, 224
+c, 669
+p, 223
 query, 3
 
 measure select * from [nt:base] as c right outer join [nt:base] as p on p.id = c.p where p.id is not null and not isdescendantnode(p, '/jcr:system')
-c, 672
-p, 224
+c, 669
+p, 223
 query, 4
 
 measure select * from [nt:base] as p left outer join [nt:base] as c on p.id = c.p where p.id is not null
-c, 672
-p, 224
+c, 669
+p, 223
 query, 4
 
 measure select * from [nt:base] as p left outer join [nt:base] as c on p.id = c.p where p.id is not null and c.p is null
-c, 672
-p, 224
+c, 669
+p, 223
 query, 1
 
 measure select * from [nt:base] as p left outer join [nt:base] as c on p.id = c.p where p.id is not null and c.p is not null
-c, 672
-p, 224
+c, 669
+p, 223
 query, 3
 
 measure select * from [nt:base] as p inner join [nt:base] as c on p.id = c.p
-c, 672
-p, 224
+c, 669
+p, 223
 query, 3