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 2012/07/16 10:46:48 UTC
svn commit: r1361938 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/mk/index/
test/java/org/apache/jackrabbit/mk/index/
test/resources/org/apache/jackrabbit/oak/query/
Author: thomasm
Date: Mon Jul 16 08:46:48 2012
New Revision: 1361938
URL: http://svn.apache.org/viewvc?rev=1361938&view=rev
Log:
OAK-181 Observation / indexing: don't create events for index updates - store the index content in a child node
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTree.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTreeLeaf.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTreeNode.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTreePage.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/Indexer.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/PrefixIndex.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/PropertyIndex.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/mk/index/PrefixIndexTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/mk/index/PropertyIndexTest.java
jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/queryTest.txt
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTree.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTree.java?rev=1361938&r1=1361937&r2=1361938&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTree.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTree.java Mon Jul 16 08:46:48 2012
@@ -37,11 +37,7 @@ public class BTree {
this.indexer = indexer;
this.name = name;
this.unique = unique;
- if (!indexer.nodeExists(name)) {
- JsopBuilder jsop = new JsopBuilder();
- jsop.tag('+').key(name).object().endObject();
- indexer.commit(jsop.toString());
- }
+ indexer.createNodes(PathUtils.concat(name, Indexer.INDEX_CONTENT));
}
public void setMinSize(int minSize) {
@@ -127,7 +123,7 @@ public class BTree {
void bufferSetArray(String path, String propertyName, String[] data) {
JsopBuilder jsop = new JsopBuilder();
- path = PathUtils.concat(name, path);
+ path = PathUtils.concat(name, Indexer.INDEX_CONTENT, path);
jsop.tag('^').key(PathUtils.concat(path, propertyName));
if (data == null) {
jsop.value(null);
@@ -151,7 +147,7 @@ public class BTree {
void bufferDelete(String path) {
JsopBuilder jsop = new JsopBuilder();
- jsop.tag('-').value(PathUtils.concat(name, path));
+ jsop.tag('-').value(PathUtils.concat(name, Indexer.INDEX_CONTENT, path));
jsop.newline();
indexer.buffer(jsop.toString());
}
@@ -164,7 +160,7 @@ public class BTree {
indexer.modified(this, page, false);
}
- public void moveCache(String oldPath) {
+ void moveCache(String oldPath) {
indexer.moveCache(this, oldPath);
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTreeLeaf.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTreeLeaf.java?rev=1361938&r1=1361937&r2=1361938&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTreeLeaf.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTreeLeaf.java Mon Jul 16 08:46:48 2012
@@ -79,8 +79,20 @@ class BTreeLeaf extends BTreePage {
void writeCreate() {
verify();
tree.modified(this);
+ tree.buffer(getJsop());
+ }
+
+ private void verify() {
+ if (values.length != keys.length) {
+ throw new IllegalArgumentException(
+ "Number of values doesn't match number of keys: " +
+ Arrays.toString(values) + " " + Arrays.toString(keys));
+ }
+ }
+
+ private String getJsop() {
JsopBuilder jsop = new JsopBuilder();
- jsop.tag('+').key(PathUtils.concat(tree.getName(), getPath())).object();
+ jsop.tag('+').key(PathUtils.concat(tree.getName(), Indexer.INDEX_CONTENT, getPath())).object();
jsop.key("keys").array();
for (String k : keys) {
jsop.value(k);
@@ -93,15 +105,12 @@ class BTreeLeaf extends BTreePage {
jsop.endArray();
jsop.endObject();
jsop.newline();
- tree.buffer(jsop.toString());
+ return jsop.toString();
}
- void verify() {
- if (values.length != keys.length) {
- throw new IllegalArgumentException(
- "Number of values doesn't match number of keys: " +
- Arrays.toString(values) + " " + Arrays.toString(keys));
- }
+ @Override
+ public String toString() {
+ return "leaf: " + getJsop();
}
}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTreeNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTreeNode.java?rev=1361938&r1=1361937&r2=1361938&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTreeNode.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTreeNode.java Mon Jul 16 08:46:48 2012
@@ -70,8 +70,8 @@ class BTreeNode extends BTreePage {
n2.writeCreate();
for (String c : n2.children) {
tree.bufferMove(
- PathUtils.concat(tree.getName(), getPath(), c),
- PathUtils.concat(tree.getName(), getParentPath(), siblingName, c)
+ PathUtils.concat(tree.getName(), Indexer.INDEX_CONTENT, getPath(), c),
+ PathUtils.concat(tree.getName(), Indexer.INDEX_CONTENT, getParentPath(), siblingName, c)
);
}
tree.moveCache(getPath());
@@ -108,30 +108,7 @@ class BTreeNode extends BTreePage {
void writeCreate() {
verify();
tree.modified(this);
- JsopBuilder jsop = new JsopBuilder();
- jsop.tag('+').key(PathUtils.concat(tree.getName(), getPath())).object();
- jsop.key("keys").array();
- for (String k : keys) {
- jsop.value(k);
- }
- jsop.endArray();
- jsop.key("values").array();
- for (String v : values) {
- jsop.value(v);
- }
- jsop.endArray();
- // could just use child node list, but then
- // new children need to be ordered at the right position,
- // and we would need a way to distinguish empty lists
- // from a leaf
- jsop.key("children").array();
- for (String d : children) {
- jsop.value(d);
- }
- jsop.endArray();
- jsop.endObject();
- jsop.newline();
- tree.buffer(jsop.toString());
+ tree.buffer(getJsop());
}
void delete(int pos) {
@@ -157,7 +134,7 @@ class BTreeNode extends BTreePage {
return children.length == 0;
}
- void verify() {
+ private void verify() {
if (values.length != keys.length) {
throw new IllegalArgumentException(
"Number of values doesn't match number of keys: " +
@@ -172,4 +149,36 @@ class BTreeNode extends BTreePage {
}
}
+ private String getJsop() {
+ JsopBuilder jsop = new JsopBuilder();
+ jsop.tag('+').key(PathUtils.concat(tree.getName(), Indexer.INDEX_CONTENT, getPath())).object();
+ jsop.key("keys").array();
+ for (String k : keys) {
+ jsop.value(k);
+ }
+ jsop.endArray();
+ jsop.key("values").array();
+ for (String v : values) {
+ jsop.value(v);
+ }
+ jsop.endArray();
+ // could just use child node list, but then
+ // new children need to be ordered at the right position,
+ // and we would need a way to distinguish empty lists
+ // from a leaf
+ jsop.key("children").array();
+ for (String d : children) {
+ jsop.value(d);
+ }
+ jsop.endArray();
+ jsop.endObject();
+ jsop.newline();
+ return jsop.toString();
+ }
+
+ @Override
+ public String toString() {
+ return "node: " + getJsop();
+ }
+
}
\ No newline at end of file
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTreePage.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTreePage.java?rev=1361938&r1=1361937&r2=1361938&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTreePage.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/BTreePage.java Mon Jul 16 08:46:48 2012
@@ -44,15 +44,16 @@ abstract class BTreePage {
void setParent(BTreeNode newParent, String newName, boolean parentIsNew) {
if (newParent != null) {
String oldPath = getPath();
+ String temp = PathUtils.concat(Indexer.INDEX_CONTENT, "temp");
tree.bufferMove(
- PathUtils.concat(tree.getName(), getPath()),
- "temp");
+ PathUtils.concat(tree.getName(), Indexer.INDEX_CONTENT, getPath()),
+ temp);
if (parentIsNew) {
newParent.writeCreate();
}
tree.bufferMove(
- "temp",
- PathUtils.concat(tree.getName(), getParentPath(), newName));
+ temp,
+ PathUtils.concat(tree.getName(), Indexer.INDEX_CONTENT, getParentPath(), newName));
parent = newParent;
name = newName;
tree.moveCache(oldPath);
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/Indexer.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/Indexer.java?rev=1361938&r1=1361937&r2=1361938&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/Indexer.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/Indexer.java Mon Jul 16 08:46:48 2012
@@ -42,9 +42,19 @@ import java.util.Map.Entry;
*/
public class Indexer implements QueryIndexProvider {
- // TODO discuss where to store index config data
+ /**
+ * The root node of the index definition (configuration) nodes.
+ */
+ // TODO OAK-178 discuss where to store index config data
public static final String INDEX_CONFIG_ROOT = "/jcr:system/indexes";
+ /**
+ * For each index, the index content is stored relative to the index
+ * definition below this node. There is also such a node just below the
+ * index definition node, to store the last revision and for temporary data.
+ */
+ public static final String INDEX_CONTENT = ":data";
+
/**
* The node name prefix of a prefix index.
*/
@@ -109,7 +119,7 @@ public class Indexer implements QueryInd
return new Indexer(mk);
}
- public String getIndexRootNode() {
+ String getIndexRootNode() {
return indexRootNode;
}
@@ -124,50 +134,37 @@ public class Indexer implements QueryInd
indexRootNodeDepth = PathUtils.getDepth(indexRootNode);
revision = mk.getHeadRevision();
readRevision = revision;
- if (!mk.nodeExists(indexRootNode, revision)) {
- JsopBuilder jsop = new JsopBuilder();
- String p = "/";
- for (String e : PathUtils.elements(indexRootNode)) {
- p = PathUtils.concat(p, e);
- if (!mk.nodeExists(p, revision)) {
- jsop.tag('+').key(PathUtils.relativize("/", p)).object().endObject().newline();
- }
- }
- revision = mk.commit("/", jsop.toString(), revision, null);
- } else {
- String node = mk.getNodes(indexRootNode, revision, 0, 0, Integer.MAX_VALUE, null);
+ boolean exists = mk.nodeExists(indexRootNode, revision);
+ createNodes(INDEX_CONTENT);
+ if (exists) {
+ String node = mk.getNodes(indexRootNode, revision, 1, 0, Integer.MAX_VALUE, null);
JsopTokenizer t = new JsopTokenizer(node);
+ NodeMap map = new NodeMap();
t.read('{');
- HashMap<String, String> map = new HashMap<String, String>();
- do {
- String key = t.readString();
- t.read(':');
- t.read();
- String value = t.getToken();
- map.put(key, value);
- } while (t.matches(','));
- String rev = map.get("rev");
+ NodeImpl n = NodeImpl.parse(map, t, 0);
+ String rev = JsopTokenizer.decodeQuoted(n.getNode(INDEX_CONTENT).getProperty("rev"));
if (rev != null) {
readRevision = rev;
}
- for (String k : map.keySet()) {
- PropertyIndex prop = PropertyIndex.fromNodeName(this, k);
- if (prop != null) {
- indexes.put(prop.getIndexNodeName(), prop);
- propertyIndexes.put(prop.getPropertyName(), prop);
- queryIndexList = null;
- }
- PrefixIndex pref = PrefixIndex.fromNodeName(this, k);
- if (pref != null) {
- indexes.put(pref.getIndexNodeName(), pref);
- prefixIndexes.put(pref.getPrefix(), pref);
- queryIndexList = null;
- }
- }
+ for (int i = 0; i < n.getChildNodeCount(); i++) {
+ String k = n.getChildNodeName(i);
+ PropertyIndex prop = PropertyIndex.fromNodeName(this, k);
+ if (prop != null) {
+ indexes.put(prop.getIndexNodeName(), prop);
+ propertyIndexes.put(prop.getPropertyName(), prop);
+ queryIndexList = null;
+ }
+ PrefixIndex pref = PrefixIndex.fromNodeName(this, k);
+ if (pref != null) {
+ indexes.put(pref.getIndexNodeName(), pref);
+ prefixIndexes.put(pref.getPrefix(), pref);
+ queryIndexList = null;
+ }
+ }
}
}
- public void removePropertyIndex(String property, boolean unique) {
+ private void removePropertyIndex(String property, boolean unique) {
PropertyIndex index = propertyIndexes.remove(property);
indexes.remove(index.getIndexNodeName());
queryIndexList = null;
@@ -186,7 +183,7 @@ public class Indexer implements QueryInd
return index;
}
- public void removePrefixIndex(String prefix) {
+ private void removePrefixIndex(String prefix) {
PrefixIndex index = prefixIndexes.remove(prefix);
indexes.remove(index.getIndexNodeName());
queryIndexList = null;
@@ -210,6 +207,20 @@ public class Indexer implements QueryInd
return mk.nodeExists(PathUtils.concat(indexRootNode, name), revision);
}
+ void createNodes(String path) {
+ String rev = mk.getHeadRevision();
+ JsopBuilder jsop = new JsopBuilder();
+ String p = "/";
+ path = PathUtils.concat(indexRootNode, path);
+ for (String e : PathUtils.elements(path)) {
+ p = PathUtils.concat(p, e);
+ if (!mk.nodeExists(p, rev)) {
+ jsop.tag('+').key(PathUtils.relativize("/", p)).object().endObject().newline();
+ }
+ }
+ revision = mk.commit("/", jsop.toString(), rev, null);
+ }
+
void commit(String jsop) {
revision = mk.commit(indexRootNode, jsop, revision, null);
}
@@ -221,7 +232,7 @@ public class Indexer implements QueryInd
private String getPath(BTree tree, BTreeNode parent, String name) {
String p = parent == null ? name : PathUtils.concat(parent.getPath(), name);
- String indexRoot = PathUtils.concat(indexRootNode, tree.getName());
+ String indexRoot = PathUtils.concat(indexRootNode, tree.getName(), INDEX_CONTENT);
return PathUtils.concat(indexRoot, p);
}
@@ -288,7 +299,7 @@ public class Indexer implements QueryInd
void modified(BTree tree, BTreePage page, boolean deleted) {
String indexRoot = PathUtils.concat(indexRootNode, tree.getName());
- String p = PathUtils.concat(indexRoot, page.getPath());
+ String p = PathUtils.concat(indexRoot, INDEX_CONTENT, page.getPath());
if (deleted) {
modified.remove(p);
} else {
@@ -296,9 +307,9 @@ public class Indexer implements QueryInd
}
}
- public void moveCache(BTree tree, String oldPath) {
+ void moveCache(BTree tree, String oldPath) {
String indexRoot = PathUtils.concat(indexRootNode, tree.getName());
- String o = PathUtils.concat(indexRoot, oldPath);
+ String o = PathUtils.concat(indexRoot, INDEX_CONTENT, oldPath);
HashMap<String, BTreePage> moved = new HashMap<String, BTreePage>();
for (Entry<String, BTreePage> e : modified.entrySet()) {
if (e.getKey().startsWith(o)) {
@@ -309,12 +320,12 @@ public class Indexer implements QueryInd
modified.remove(s);
}
for (BTreePage p : moved.values()) {
- String n = PathUtils.concat(indexRoot, p.getPath());
+ String n = PathUtils.concat(indexRoot, INDEX_CONTENT, p.getPath());
modified.put(n, p);
}
}
- void commitChanges() {
+ private void commitChanges() {
if (buffer != null) {
String jsop = buffer.toString();
// System.out.println(jsop);
@@ -372,21 +383,19 @@ public class Indexer implements QueryInd
* @param toRevision the new index revision
* @return the new head revision
*/
- public String updateEnd(String toRevision) {
+ String updateEnd(String toRevision) {
readRevision = toRevision;
JsopBuilder jsop = new JsopBuilder();
- jsop.tag('^').key("rev").value(readRevision);
+ jsop.tag('^').key(PathUtils.concat(INDEX_CONTENT, "rev")).value(readRevision);
buffer(jsop.toString());
try {
commitChanges();
} catch (MicroKernelException e) {
if (!mk.nodeExists(indexRootNode, revision)) {
// the index node itself was removed, which is
- // unexpected but possible - re-create it
- init = false;
- init();
- } else {
- throw e;
+ // unexpected but possible
+ // this will cause all indexes to be removed, so
+ // it can be ignored here
}
}
return revision;
@@ -399,7 +408,7 @@ public class Indexer implements QueryInd
* @param t the changes
* @param lastRevision
*/
- public void updateIndex(String rootPath, JsopReader t, String lastRevision) {
+ void updateIndex(String rootPath, JsopReader t, String lastRevision) {
while (true) {
int r = t.read();
if (r == JsopReader.END) {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/PrefixIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/PrefixIndex.java?rev=1361938&r1=1361937&r2=1361938&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/PrefixIndex.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/PrefixIndex.java Mon Jul 16 08:46:48 2012
@@ -20,6 +20,7 @@ import java.util.Iterator;
import org.apache.jackrabbit.mk.json.JsopReader;
import org.apache.jackrabbit.mk.json.JsopTokenizer;
import org.apache.jackrabbit.mk.simple.NodeImpl;
+import org.apache.jackrabbit.oak.commons.PathUtils;
/**
* An index for all values with a given prefix.
@@ -98,10 +99,11 @@ public class PrefixIndex implements Inde
private void addOrRemove(String path, String propertyName, String value, boolean add) {
String v = value.substring(prefix.length());
+ String p = PathUtils.concat(path, propertyName);
if (add) {
- tree.add(v, path + "/" + propertyName);
+ tree.add(v, p);
} else {
- tree.remove(v, path + "/" + propertyName);
+ tree.remove(v, p);
}
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/PropertyIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/PropertyIndex.java?rev=1361938&r1=1361937&r2=1361938&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/PropertyIndex.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/mk/index/PropertyIndex.java Mon Jul 16 08:46:48 2012
@@ -32,7 +32,7 @@ public class PropertyIndex implements In
private final BTree tree;
private final String propertyName;
- public PropertyIndex(Indexer indexer, String propertyName, boolean unique) {
+ PropertyIndex(Indexer indexer, String propertyName, boolean unique) {
this.indexer = indexer;
this.propertyName = propertyName;
this.tree = new BTree(indexer, Indexer.TYPE_PROPERTY + propertyName +
@@ -40,7 +40,7 @@ public class PropertyIndex implements In
tree.setMinSize(10);
}
- public static PropertyIndex fromNodeName(Indexer indexer, String nodeName) {
+ static PropertyIndex fromNodeName(Indexer indexer, String nodeName) {
if (!nodeName.startsWith(Indexer.TYPE_PROPERTY)) {
return null;
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/mk/index/PrefixIndexTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/mk/index/PrefixIndexTest.java?rev=1361938&r1=1361937&r2=1361938&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/mk/index/PrefixIndexTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/mk/index/PrefixIndexTest.java Mon Jul 16 08:46:48 2012
@@ -38,7 +38,9 @@ public class PrefixIndexTest {
// meta data
String meta = mk.getNodes(Indexer.INDEX_CONFIG_ROOT, head, 1, 0, -1, null);
- Assert.assertEquals("{\":childNodeCount\":1,\"prefix@d:\":{\":childNodeCount\":0}}", meta);
+
+ Assert.assertEquals("{\":childNodeCount\":2,\"prefix@d:\":" +
+ "{\":childNodeCount\":1,\":data\":{}},\":data\":{\":childNodeCount\":0}}", meta);
Assert.assertEquals("", getPathList(index, "d:1", head));
@@ -70,7 +72,7 @@ public class PrefixIndexTest {
Assert.assertEquals("/test7/b", getPathList(index, "d:4", head));
}
- private String getPathList(PrefixIndex index, String value, String revision) {
+ private static String getPathList(PrefixIndex index, String value, String revision) {
StringBuilder buff = new StringBuilder();
int i = 0;
for (Iterator<String> it = index.getPaths(value, revision); it.hasNext();) {
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/mk/index/PropertyIndexTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/mk/index/PropertyIndexTest.java?rev=1361938&r1=1361937&r2=1361938&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/mk/index/PropertyIndexTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/mk/index/PropertyIndexTest.java Mon Jul 16 08:46:48 2012
@@ -37,7 +37,8 @@ public class PropertyIndexTest {
// meta data
String meta = mk.getNodes(Indexer.INDEX_CONFIG_ROOT, head, 1, 0, -1, null);
- Assert.assertEquals("{\":childNodeCount\":1,\"property@id,unique\":{\":childNodeCount\":0}}", meta);
+ Assert.assertEquals("{\":childNodeCount\":2,\":data\":{\":childNodeCount\":0}," +
+ "\"property@id,unique\":{\":childNodeCount\":1,\":data\":{}}}", meta);
String oldHead = head;
Modified: jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/queryTest.txt
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/queryTest.txt?rev=1361938&r1=1361937&r2=1361938&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/queryTest.txt (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/resources/org/apache/jackrabbit/oak/query/queryTest.txt Mon Jul 16 08:46:48 2012
@@ -112,6 +112,7 @@ select * from [nt:base] as x where isdes
/
/jcr:system
/jcr:system/indexes
+/jcr:system/indexes/:data
/test
/test/jcr:resource
/test/resource
@@ -190,6 +191,7 @@ select * from [nt:base]
/
/jcr:system
/jcr:system/indexes
+/jcr:system/indexes/:data
/test
/test/hello
/test/world
@@ -209,6 +211,7 @@ select * from [nt:base] where not (id =
/
/jcr:system
/jcr:system/indexes
+/jcr:system/indexes/:data
/test
/test/hello
@@ -216,6 +219,7 @@ select * from [nt:base] where x is null
/
/jcr:system
/jcr:system/indexes
+/jcr:system/indexes/:data
/test
commit / - "test"
@@ -236,6 +240,7 @@ World!
null
null
null
+null
select * from [nt:base] where length(name) = 5
/test