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 th...@apache.org on 2013/10/31 15:25:22 UTC
svn commit: r1537503 - in
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast:
AstElement.java FullTextSearchImpl.java PropertyValueImpl.java
SelectorImpl.java
Author: thomasm
Date: Thu Oct 31 14:25:22 2013
New Revision: 1537503
URL: http://svn.apache.org/r1537503
Log:
OAK-1130 Query: Performance issues with MutableTree
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElement.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElement.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElement.java?rev=1537503&r1=1537502&r2=1537503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElement.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElement.java Thu Oct 31 14:25:22 2013
@@ -19,7 +19,6 @@
package org.apache.jackrabbit.oak.query.ast;
import org.apache.jackrabbit.oak.api.PropertyValue;
-import org.apache.jackrabbit.oak.api.Tree;
import org.apache.jackrabbit.oak.commons.PathUtils;
import org.apache.jackrabbit.oak.query.QueryImpl;
import org.apache.jackrabbit.oak.spi.query.PropertyValues;
@@ -122,9 +121,5 @@ abstract class AstElement {
return path;
}
- protected Tree getTree(String path) {
- return query.getTree(path);
- }
-
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchImpl.java?rev=1537503&r1=1537502&r2=1537503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/FullTextSearchImpl.java Thu Oct 31 14:25:22 2013
@@ -192,7 +192,7 @@ public class FullTextSearchImpl extends
path = PathUtils.concat(path, rp);
}
- Tree tree = getTree(path);
+ Tree tree = selector.getTree(path);
if (tree == null || !tree.exists()) {
return false;
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java?rev=1537503&r1=1537502&r2=1537503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/PropertyValueImpl.java Thu Oct 31 14:25:22 2013
@@ -112,7 +112,7 @@ public class PropertyValueImpl extends D
PropertyValue p = selector.currentProperty(propertyName);
return matchesPropertyType(p) ? p : null;
}
- Tree tree = getTree(selector.currentPath());
+ Tree tree = selector.currentTree();
if (tree == null || !tree.exists()) {
return null;
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java?rev=1537503&r1=1537502&r2=1537503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java Thu Oct 31 14:25:22 2013
@@ -94,6 +94,9 @@ public class SelectorImpl extends Source
private Cursor cursor;
private IndexRow currentRow;
private int scanCount;
+
+ private Tree lastTree;
+ private String lastPath;
/**
* The selector condition can be evaluated when the given selector is
@@ -344,6 +347,11 @@ public class SelectorImpl extends Source
return cursor == null ? null : currentRow.getPath();
}
+ /**
+ * Get the tree at the current path.
+ *
+ * @return the current tree, or null
+ */
public Tree currentTree() {
String path = currentPath();
if (path == null) {
@@ -351,6 +359,20 @@ public class SelectorImpl extends Source
}
return getTree(path);
}
+
+ /**
+ * Get the tree at the given path.
+ *
+ * @param path the path
+ * @return the tree, or null
+ */
+ Tree getTree(String path) {
+ if (lastPath == null || !path.equals(lastPath)) {
+ lastTree = query.getTree(path);
+ lastPath = path;
+ }
+ return lastTree;
+ }
/**
* The value for the given selector for the current node.