jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Parvulescu (Updated) (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (JCR-3089) javax.jcr.RepositoryException when trying to run an SQL2 query via Davex
Date Tue, 04 Oct 2011 09:26:34 GMT

     [ https://issues.apache.org/jira/browse/JCR-3089?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Alex Parvulescu updated JCR-3089:
---------------------------------

    Attachment: JCR-3089.patch

proposed patch + test.

As Jukka suggested, the problem was the SearchResourceImpl didn't know how to handle join
results.

I'm not sure what's the best way to handle this (I just used the first selector in the join,
similar to what already existed in the implementation in the case of multiple selectors in
a select).

I also added a test for JCR-2543, a limit-enabled query, to show that the limit constraint
is being respected on 2.3

                
> javax.jcr.RepositoryException when trying to run an SQL2 query via Davex
> ------------------------------------------------------------------------
>
>                 Key: JCR-3089
>                 URL: https://issues.apache.org/jira/browse/JCR-3089
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>            Reporter: Lukas Kahwe Smith
>         Attachments: JCR-3089.patch
>
>
> see the following thread for details:
> http://www.mail-archive.com/users@jackrabbit.apache.org/msg17975.html
> assuming a data structure as follows:
> /foo [nt:unstructured]
> /foo/bar [nt:unstructured]
> /foo/bar@lala = huii (lala is string property of bar)
> /ding [nt:unstructured]
> /ding@dong = ##barUUID### (dong is a property of type "Reference")
> then the following code will throw an exception:
> DavexClient Client = new DavexClient(url);
> Repository repo = Client.getRepository();
> Credentials sc = new SimpleCredentials("admin","admin".toCharArray());
> Session s = repo.login(sc,workspace);
> QueryManager qm = s.getWorkspace().getQueryManager();
> String sql = "SELECT data.* FROM [nt:unstructured] AS data WHERE data.lala= 'huii'";
> sql = "SELECT * FROM [nt:unstructured] AS data INNER JOIN [nt:unstructured] AS referring
ON referring.[dong] = data.[jcr:uuid] WHERE data.lala = 'huii'";
> sql = "SELECT * FROM [nt:unstructured] AS data INNER JOIN [nt:unstructured] AS referring
ON ISDESCENDANTNODE(data, referring) WHERE data.lala = 'huii'";
> Query query = qm.createQuery(sql, Query.JCR_SQL2);
> QueryResult qr = query.execute();
> The first query works just fine and I can iterate over the result. Neither the second
nor the third query works.
> In both cases I end up with a javax.jcr.RepositoryException. Note the exception only
happens if the query returns results. Aka a join will work just fine if it matches no rows.

--
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

        

Mime
View raw message