[ https://issues.apache.org/jira/browse/JCR-3219?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13240364#comment-13240364 ]
David Buchmann edited comment on JCR-3219 at 3/28/12 12:15 PM: --------------------------------------------------------------- sorry for being silent so long. i finally took the time to create a minimal example. here we go: this is the data i load in the repository <?xml version="1.0" encoding="UTF-8"?> <sv:node xmlns:mix="http://www.jcp.org/jcr/mix/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:sv="http://www.jcp.org/jcr/sv/1.0" xmlns:rep="internal" sv:name="container" > <sv:node sv:name="data1"> <sv:property sv:name="jcr:primaryType" sv:type="Name"> <sv:value>nt:unstructured</sv:value> </sv:property> <sv:property sv:name="jcr:mimeType" sv:type="String"> <sv:value>text/plain</sv:value> </sv:property> </sv:node> <sv:node sv:name="data2"> <sv:property sv:name="jcr:primaryType" sv:type="Name"> <sv:value>nt:unstructured</sv:value> </sv:property> <sv:property sv:name="jcr:mimeType" sv:type="String"> <sv:value>text/plain</sv:value> </sv:property> <sv:property sv:name="value" sv:type="String"> <sv:value>42</sv:value> </sv:property> </sv:node> </sv:node> and this is my java code: Credentials sc = new SimpleCredentials("admin","admin".toCharArray()); Session s = repo.login(sc,workspace); Node root = s.getRootNode(); NodeIterator nodes = root.getNodes(); while (nodes.hasNext()) { try { Node n = nodes.nextNode(); if (! "jcr:system".equals(n.getName()) && ! "rep:policy".equals(n.getName())) { n.remove(); } } catch (Exception e) {} } s.save(); s.importXML("/", new FileInputStream("/home/david/liip/jackalope/JavaDavexClient/test.xml"), ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING); s.save(); QueryManager qm = s.getWorkspace().getQueryManager(); Query q = qm.createQuery("SELECT data.value FROM [nt:unstructured] AS data INNER JOIN [nt:unstructured] AS second ON data.[jcr:mimeType] = second.[jcr:mimeType] WHERE data.value = '42'", Query.JCR_JQOM); QueryResult r = q.execute(); RowIterator i = r.getRows(); while (i.hasNext()) { Row n = i.nextRow(); System.out.println("Found: "+n.getPath("data")); } with jackrabbit 2.3.6 this outputs: Found: /container/data2 with jackrabbit 2.4, this outputs: Found: /container/data2 Found: /container/data2 was (Author: dbu): sorry for being silent so long. i finally took the time to create a minimal example. here we go: this is the data i load in the repository <?xml version="1.0" encoding="UTF-8"?> <sv:node xmlns:mix="http://www.jcp.org/jcr/mix/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:sv="http://www.jcp.org/jcr/sv/1.0" xmlns:rep="internal" sv:name="container" > <sv:node sv:name="data1"> <sv:property sv:name="jcr:primaryType" sv:type="Name"> <sv:value>nt:unstructured</sv:value> </sv:property> <sv:property sv:name="jcr:mimeType" sv:type="String"> <sv:value>text/plain</sv:value> </sv:property> </sv:node> <sv:node sv:name="data2"> <sv:property sv:name="jcr:primaryType" sv:type="Name"> <sv:value>nt:unstructured</sv:value> </sv:property> <sv:property sv:name="jcr:mimeType" sv:type="String"> <sv:value>text/plain</sv:value> </sv:property> <sv:property sv:name="value" sv:type="String"> <sv:value>42</sv:value> </sv:property> </sv:node> </sv:node> and this is my java code: Credentials sc = new SimpleCredentials("admin","admin".toCharArray()); Session s = repo.login(sc,workspace); Node root = s.getRootNode(); NodeIterator nodes = root.getNodes(); while (nodes.hasNext()) { try { Node n = nodes.nextNode(); if (! "jcr:system".equals(n.getName()) && ! "rep:policy".equals(n.getName())) { n.remove(); } } catch (Exception e) {} } s.save(); s.importXML("/", new FileInputStream("/home/david/liip/jackalope/JavaDavexClient/test.xml"), ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING); s.save(); QueryManager qm = s.getWorkspace().getQueryManager(); //Query q = qm.createQuery("SELECT data.value FROM [nt:unstructured] AS data INNER JOIN [nt:unstructured] AS second ON data.[jcr:mimeType] = second.[jcr:mimeType] WHERE data.value = 42", Query.JCR_JQOM); Query q = qm.createQuery("SELECT data.value FROM [nt:unstructured] AS data INNER JOIN [nt:unstructured] AS second ON data.[jcr:mimeType] = second.[jcr:mimeType] WHERE data.value = '42'", Query.JCR_JQOM); QueryResult r = q.execute(); RowIterator i = r.getRows(); while (i.hasNext()) { Row n = i.nextRow(); System.out.println("Found: "+n.getPath("data")); } with jackrabbit 2.3.6 this outputs: Found: /container/data2 with jackrabbit 2.4, this outputs: Found: /container/data2 Found: /container/data2 > regression with self-join queries > --------------------------------- > > Key: JCR-3219 > URL: https://issues.apache.org/jira/browse/JCR-3219 > Project: Jackrabbit Content Repository > Issue Type: Bug > Components: jackrabbit-jcr-server, query, sql > Reporter: David Buchmann > Priority: Minor > Attachments: JCR-3219-test.patch > > > affects version 2.3.7 > running a query that joins on the same node type against 2.3.6 returns 1 > result, while running it against 2.3.7 returns the same node 3 times. if i > join two different node types, i get only one result row... > to reproduce: in my repository, i have 2 unstructured nodes with the same > jcr:mimeType and one of them having the field zeronumber with value 0. > QueryManager qm = s.getWorkspace().getQueryManager(); > Query q = qm.createQuery("SELECT data.zeronumber FROM > [nt:unstructured] AS data INNER JOIN [nt:unstructured] AS second ON > data.[jcr:mimeType] = second.[jcr:mimeType] WHERE data.zeronumber = 0", > Query.JCR_JQOM); > QueryResult r = q.execute(); > RowIterator i = r.getRows(); > while (i.hasNext()) { > Row n = i.nextRow(); > System.out.println(n.getPath("data")); > } > jukka suspects this could be introduced by JCR-3198 -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira