You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Przemo Pakulski (JIRA)" <ji...@apache.org> on 2006/10/13 01:35:50 UTC

[jira] Created: (JCR-591) XPath position function does not work

XPath position function does not work
-------------------------------------

                 Key: JCR-591
                 URL: http://issues.apache.org/jira/browse/JCR-591
             Project: Jackrabbit
          Issue Type: Bug
          Components: query
    Affects Versions: 1.0.1
            Reporter: Przemo Pakulski
            Priority: Minor


Expression with position function are supported in XPath but does not work. 
All rows are returned when equality operator is used.

	public void testXPathPosition() throws Exception {
		Node foo = testRootNode.addNode("name");
		Node bar = testRootNode.addNode("name");
		testRootNode.save();

		String xpath = "//name[position()=2]";
		Query q = superuser.getWorkspace().getQueryManager().createQuery(xpath, Query.XPATH);
		QueryResult result = q.execute();
		checkResult(result, 1);
		checkResult(result, new Node[]{bar});
	}

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (JCR-591) XPath position function does not work

Posted by "Szymon Kuzniak (JIRA)" <ji...@apache.org>.
    [ http://issues.apache.org/jira/browse/JCR-591?page=comments#action_12442559 ] 
            
Szymon Kuzniak commented on JCR-591:
------------------------------------

I was working a bit on this issue, and found out that Lucene is used to search for nodes, and position of node is not indexed. So I decided to fix this issue by adding Node.getIndex to Lucene document, as a field named "position", and add to Lucene query new TermQuery. After this operation position() started to work, but after deleting some node it returned malformed results.
For example:
Node n1 = testRootNode.addNode("node1");
Node n2 = testRootNode.addNode("node2");
Node n3 = testRootNode.addNode("node1");
Node n4 = testRootNode.addNode("node1");
Node n5 = testRootNode.addNode("node1");
Node n6 = testRootNode.addNode("node1");
Node n7 = testRootNode.addNode("node1");
...
Query q = qm.createQuery("//node1[position()=3]", Query.XPATH);
...
assertEquals(n4, iter.nextNode()); <- passed
...
n3.remove();
testRootNode.save();
...
q = qm.createQuery("//node1[position()=3]", Query.XPATH);
...
assertEquals(n4 iter.nextNode()); <- passed
assertEquals(n5, iter.nextNode()); <-did not pass
The reason I quess, is that adjacent nodes with the same name as deleted node are not reindexed after this operation.
So, my question is: is the approach with indexing position of node ok to you? Should I try to reindex the adjacent nodes after delete of node?

regards Simon

> XPath position function does not work
> -------------------------------------
>
>                 Key: JCR-591
>                 URL: http://issues.apache.org/jira/browse/JCR-591
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: query
>    Affects Versions: 1.0.1
>            Reporter: Przemo Pakulski
>            Priority: Minor
>
> Expression with position function are supported in XPath but does not work. 
> All rows are returned when equality operator is used.
> 	public void testXPathPosition() throws Exception {
> 		Node foo = testRootNode.addNode("name");
> 		Node bar = testRootNode.addNode("name");
> 		testRootNode.save();
> 		String xpath = "//name[position()=2]";
> 		Query q = superuser.getWorkspace().getQueryManager().createQuery(xpath, Query.XPATH);
> 		QueryResult result = q.execute();
> 		checkResult(result, 1);
> 		checkResult(result, new Node[]{bar});
> 	}

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira