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 md...@apache.org on 2013/10/15 11:34:33 UTC

svn commit: r1532263 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/core/ main/java/org/apache/jackrabbit/oak/query/ test/java/org/apache/jackrabbit/oak/query/

Author: mduerig
Date: Tue Oct 15 09:34:32 2013
New Revision: 1532263

URL: http://svn.apache.org/r1532263
Log:
OAK-1052: Introduce execution context for executing queries

Added:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ExecutionContext.java
Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/UnionQueryImpl.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/AbstractQueryTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java?rev=1532263&r1=1532262&r2=1532263&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/AbstractRoot.java Tue Oct 15 09:34:32 2013
@@ -38,9 +38,9 @@ import org.apache.jackrabbit.oak.api.Blo
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.QueryEngine;
 import org.apache.jackrabbit.oak.api.Root;
-import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.plugins.index.diffindex.UUIDDiffIndexProviderWrapper;
+import org.apache.jackrabbit.oak.query.ExecutionContext;
 import org.apache.jackrabbit.oak.query.QueryEngineImpl;
 import org.apache.jackrabbit.oak.spi.commit.CommitHook;
 import org.apache.jackrabbit.oak.spi.commit.CompositeEditorProvider;
@@ -304,18 +304,19 @@ public abstract class AbstractRoot imple
     @Override
     public QueryEngine getQueryEngine() {
         checkLive();
-        return new QueryEngineImpl(getIndexProvider()) {
-
+        return new QueryEngineImpl() {
             @Override
-            protected NodeState getRootState() {
-                return AbstractRoot.this.getRootState();
+            protected ExecutionContext getExecutionContext() {
+                NodeState rootState = AbstractRoot.this.getRootState();
+                return new ExecutionContext(rootState, rootTree, getIndexProvider(rootState));
             }
 
-            @Override
-            protected Tree getRootTree() {
-                return rootTree;
+            private QueryIndexProvider getIndexProvider(NodeState rootState) {
+                if (hasPendingChanges()) {
+                    return new UUIDDiffIndexProviderWrapper(indexProvider, getBaseState(), rootState);
+                }
+                return indexProvider;
             }
-
         };
     }
 
@@ -333,15 +334,6 @@ public abstract class AbstractRoot imple
         };
     }
 
-    @Nonnull
-    private QueryIndexProvider getIndexProvider() {
-        if (hasPendingChanges()) {
-            return new UUIDDiffIndexProviderWrapper(indexProvider,
-                    getBaseState(), getRootState());
-        }
-        return indexProvider;
-    }
-
     //-----------------------------------------------------------< internal >---
 
     /**

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java?rev=1532263&r1=1532262&r2=1532263&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ImmutableRoot.java Tue Oct 15 09:34:32 2013
@@ -27,9 +27,9 @@ import org.apache.jackrabbit.oak.api.Blo
 import org.apache.jackrabbit.oak.api.ContentSession;
 import org.apache.jackrabbit.oak.api.QueryEngine;
 import org.apache.jackrabbit.oak.api.Root;
-import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexProvider;
+import org.apache.jackrabbit.oak.query.ExecutionContext;
 import org.apache.jackrabbit.oak.query.QueryEngineImpl;
 import org.apache.jackrabbit.oak.spi.commit.CommitHook;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -104,15 +104,10 @@ public final class ImmutableRoot impleme
     @Nonnull
     @Override
     public QueryEngine getQueryEngine() {
-        return new QueryEngineImpl(new PropertyIndexProvider()) {
+        return new QueryEngineImpl() {
             @Override
-            protected NodeState getRootState() {
-                return rootTree.state;
-            }
-
-            @Override
-            protected Tree getRootTree() {
-                return rootTree;
+            protected ExecutionContext getExecutionContext() {
+                return new ExecutionContext(rootTree.state, rootTree, new PropertyIndexProvider());
             }
         };
     }

Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ExecutionContext.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ExecutionContext.java?rev=1532263&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ExecutionContext.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ExecutionContext.java Tue Oct 15 09:34:32 2013
@@ -0,0 +1,70 @@
+/*
+ * 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.query;
+
+import javax.annotation.Nonnull;
+
+import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
+
+/**
+ * An instance of this class provides the context for the execution of a query,
+ * which in essence captures a stable state of the content tree from the time
+ * the execution context was created.
+ */
+public class ExecutionContext {
+    private final NodeState rootState;
+    private final Tree rootTree;
+    private final QueryIndexProvider indexProvider;
+
+    public ExecutionContext(NodeState rootState, Tree rootTree,
+            QueryIndexProvider indexProvider) {
+
+        this.rootState = rootState;
+        this.rootTree = rootTree;
+        this.indexProvider = indexProvider;
+    }
+
+    /**
+     * @return Root node state of the content tree against which the query runs.
+     */
+    @Nonnull
+    public NodeState getRootState() {
+        return rootState;
+    }
+
+    /**
+     * @return Root tree of the content tree against which the query runs.
+     */
+    @Nonnull
+    public Tree getRootTree() {
+        return rootTree;
+    }
+
+    /**
+     * @return Index provider for indexes matching the state of the content tree as
+     * returned from {@link #getRootState()}.
+     */
+    @Nonnull
+    public QueryIndexProvider getIndexProvider() {
+        return indexProvider;
+    }
+}

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java?rev=1532263&r1=1532262&r2=1532263&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/Query.java Tue Oct 15 09:34:32 2013
@@ -22,6 +22,7 @@ import org.apache.jackrabbit.oak.api.Tre
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.query.ast.ColumnImpl;
 import org.apache.jackrabbit.oak.query.ast.OrderingImpl;
+import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 
 /**
@@ -45,7 +46,7 @@ public interface Query {
 
     void bindValue(String key, PropertyValue value);
 
-    void setQueryEngine(QueryEngineImpl queryEngineImpl);
+    void setIndexProvider(QueryIndexProvider indexProvider);
 
     void prepare();
 

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java?rev=1532263&r1=1532262&r2=1532263&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryEngineImpl.java Tue Oct 15 09:34:32 2013
@@ -24,13 +24,14 @@ import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.Map.Entry;
+import java.util.Set;
+
+import javax.annotation.Nonnull;
 
 import org.apache.jackrabbit.oak.api.PropertyValue;
 import org.apache.jackrabbit.oak.api.QueryEngine;
 import org.apache.jackrabbit.oak.api.Result;
-import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.query.index.TraversingIndex;
 import org.apache.jackrabbit.oak.spi.query.Filter;
@@ -60,8 +61,6 @@ public abstract class QueryEngineImpl im
             XPATH, XPATH + NO_LITERALS,
             JQOM);
 
-    private final QueryIndexProvider indexProvider;
-    
     /**
      * Whether fallback to the traversing index is supported if no other index
      * is available. This is enabled by default and can be disabled for testing
@@ -69,23 +68,10 @@ public abstract class QueryEngineImpl im
      */
     private boolean traversalFallback = true;
 
-    public QueryEngineImpl(QueryIndexProvider indexProvider) {
-        this.indexProvider = indexProvider;
-    }
-
-    /**
-     * Get the current root node state, to run the query against.
-     * 
-     * @return the node state
-     */
-    protected abstract NodeState getRootState();
-
     /**
-     * Get the current root tree, to run the query against.
-     * 
-     * @return the node state
+     * @return Execution context for a single query execution.
      */
-    protected abstract Tree getRootTree();
+    protected abstract ExecutionContext getExecutionContext();
 
     @Override
     public Set<String> getSupportedQueryLanguages() {
@@ -102,13 +88,13 @@ public abstract class QueryEngineImpl im
      */
     @Override
     public List<String> getBindVariableNames(String statement, String language) throws ParseException {
-        Query q = parseQuery(statement, language);
+        Query q = parseQuery(statement, language, getExecutionContext());
         return q.getBindVariableNames();
     }
 
-    private Query parseQuery(String statement, String language) throws ParseException {
+    private static Query parseQuery(String statement, String language, ExecutionContext context) throws ParseException {
         LOG.debug("Parsing {} statement: {}", language, statement);
-        NodeState root = getRootState();
+        NodeState root = context.getRootState();
         NodeState system = root.getChildNode(JCR_SYSTEM);
         NodeState types = system.getChildNode(JCR_NODE_TYPES);
         SQL2Parser parser = new SQL2Parser(types);
@@ -146,9 +132,11 @@ public abstract class QueryEngineImpl im
         if (offset < 0) {
             throw new IllegalArgumentException("Offset may not be negative, is: " + offset);
         }
-        Query q = parseQuery(statement, language);
-        q.setRootTree(getRootTree());
-        q.setRootState(getRootState());
+
+        ExecutionContext context = getExecutionContext();
+        Query q = parseQuery(statement, language, context);
+        q.setRootTree(context.getRootTree());
+        q.setRootState(context.getRootState());
         q.setNamePathMapper(namePathMapper);
         q.setLimit(limit);
         q.setOffset(offset);
@@ -157,28 +145,41 @@ public abstract class QueryEngineImpl im
                 q.bindValue(e.getKey(), e.getValue());
             }
         }
-        q.setQueryEngine(this);
+        q.setIndexProvider(getIndexProvider(context.getIndexProvider(), traversalFallback));
         q.prepare();
         return q.executeQuery();
     }
 
-    protected void setTravesalFallback(boolean traversal) {
+    private static QueryIndexProvider getIndexProvider(final QueryIndexProvider indexProvider,
+            boolean traversalFallback) {
+        if (traversalFallback) {
+            return new QueryIndexProvider() {
+                @Nonnull
+                @Override
+                public List<? extends QueryIndex> getQueryIndexes(NodeState nodeState) {
+                    List<QueryIndex> indexes = new ArrayList<QueryIndex>(indexProvider.getQueryIndexes(nodeState));
+                    indexes.add(new TraversingIndex());
+                    return indexes;
+                }
+            };
+        } else {
+            return indexProvider;
+        }
+    }
+
+    protected void setTraversalFallback(boolean traversal) {
         this.traversalFallback = traversal;
     }
 
-    public QueryIndex getBestIndex(QueryImpl query, NodeState rootState, Filter filter) {
+    public static QueryIndex getBestIndex(QueryImpl query, NodeState rootState, Filter filter,
+            QueryIndexProvider indexProvider) {
         QueryIndex best = null;
         if (LOG.isDebugEnabled()) {
             LOG.debug("cost using filter " + filter);
         }
-        List<QueryIndex> indexes = new ArrayList<QueryIndex>(
-                indexProvider.getQueryIndexes(rootState));
-        if (traversalFallback) {
-            indexes.add(new TraversingIndex());
-        }
 
         double bestCost = Double.POSITIVE_INFINITY;
-        for (QueryIndex index : indexes) {
+        for (QueryIndex index : indexProvider.getQueryIndexes(rootState)) {
             double cost = index.getCost(filter, rootState);
             if (LOG.isDebugEnabled()) {
                 LOG.debug("cost for " + index.getIndexName() + " is " + cost);

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java?rev=1532263&r1=1532262&r2=1532263&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/QueryImpl.java Tue Oct 15 09:34:32 2013
@@ -58,6 +58,7 @@ import org.apache.jackrabbit.oak.query.a
 import org.apache.jackrabbit.oak.spi.query.Filter;
 import org.apache.jackrabbit.oak.spi.query.PropertyValues;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex;
+import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.util.TreeUtil;
 import org.slf4j.Logger;
@@ -93,7 +94,7 @@ public class QueryImpl implements Query 
     final ArrayList<SelectorImpl> selectors = new ArrayList<SelectorImpl>();
     ConstraintImpl constraint;
     
-    private QueryEngineImpl queryEngine;
+    private QueryIndexProvider indexProvider;
     private OrderingImpl[] orderings;
     private ColumnImpl[] columns;
     private boolean explain, measure;
@@ -571,12 +572,12 @@ public class QueryImpl implements Query 
     }
 
     @Override
-    public void setQueryEngine(QueryEngineImpl queryEngine) {
-        this.queryEngine = queryEngine;
+    public void setIndexProvider(QueryIndexProvider indexProvider) {
+        this.indexProvider = indexProvider;
     }
 
     public QueryIndex getBestIndex(Filter filter) {
-        return queryEngine.getBestIndex(this, rootState, filter);
+        return QueryEngineImpl.getBestIndex(this, rootState, filter, indexProvider);
     }
 
     @Override

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/UnionQueryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/UnionQueryImpl.java?rev=1532263&r1=1532262&r2=1532263&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/UnionQueryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/UnionQueryImpl.java Tue Oct 15 09:34:32 2013
@@ -20,6 +20,7 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 
+import com.google.common.collect.Iterators;
 import org.apache.jackrabbit.oak.api.PropertyValue;
 import org.apache.jackrabbit.oak.api.Result;
 import org.apache.jackrabbit.oak.api.Tree;
@@ -27,12 +28,11 @@ import org.apache.jackrabbit.oak.namepat
 import org.apache.jackrabbit.oak.query.ast.ColumnImpl;
 import org.apache.jackrabbit.oak.query.ast.OrderingImpl;
 import org.apache.jackrabbit.oak.spi.query.PropertyValues;
+import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.collect.Iterators;
-
 /**
  * Represents a union query.
  */
@@ -110,9 +110,9 @@ public class UnionQueryImpl implements Q
     }
 
     @Override
-    public void setQueryEngine(QueryEngineImpl queryEngineImpl) {
-        left.setQueryEngine(queryEngineImpl);
-        right.setQueryEngine(queryEngineImpl);
+    public void setIndexProvider(QueryIndexProvider indexProvider) {
+        left.setIndexProvider(indexProvider);
+        right.setIndexProvider(indexProvider);
     }
 
     @Override

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=1532263&r1=1532262&r2=1532263&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 Tue Oct 15 09:34:32 2013
@@ -16,6 +16,15 @@
  */
 package org.apache.jackrabbit.oak.query;
 
+import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NAME;
+import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NODE_TYPE;
+import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_PROPERTY_NAME;
+import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.TYPE_PROPERTY_NAME;
+import static org.apache.jackrabbit.oak.plugins.memory.PropertyStates.createProperty;
+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;
@@ -31,6 +40,7 @@ import java.util.Map;
 
 import javax.jcr.PropertyType;
 
+import com.google.common.collect.Lists;
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.mk.json.JsopReader;
 import org.apache.jackrabbit.mk.json.JsopTokenizer;
@@ -38,10 +48,10 @@ import org.apache.jackrabbit.oak.api.Con
 import org.apache.jackrabbit.oak.api.ContentSession;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.PropertyValue;
+import org.apache.jackrabbit.oak.api.QueryEngine;
 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.QueryEngine;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.commons.PathUtils;
@@ -51,17 +61,6 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.value.Conversions;
 import org.junit.Before;
 
-import com.google.common.collect.Lists;
-
-import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NAME;
-import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NODE_TYPE;
-import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_PROPERTY_NAME;
-import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.TYPE_PROPERTY_NAME;
-import static org.apache.jackrabbit.oak.plugins.memory.PropertyStates.createProperty;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
 /**
  * AbstractQueryTest...
  */
@@ -262,7 +261,7 @@ public abstract class AbstractQueryTest 
     }
 
     protected void setTravesalFallback(boolean traversal) {
-        ((QueryEngineImpl) qe).setTravesalFallback(traversal);
+        ((QueryEngineImpl) qe).setTraversalFallback(traversal);
     }
 
     protected static String readRow(ResultRow row, boolean pathOnly) {