Hi all,

in the process of migrating my code based on jackrabbit 2.x to oak I've just 
found that jcr:deref is not supported by oak, for a query like this:
/jcr:root/tempQueries/fe8396aa-f179-40e8-b68a-b67f13ae7752/jcr:deref(@reference,
 '*')

I get this stacktrace:
2024.06.19 14:50:43.076 - *DEBUG* [Searcher-admin-INTERNAL_SEARCH_ID] 
o.a.j.oak.query.QueryEngineImpl: Parsing xpath statement: 
/jcr:root/tempQueries/fe8396aa-f179-40e8-b68a-b67f13ae7752/jcr:deref(@reference,
 '*')  (parseQuery in QueryEngineImpl.java, line 156)
2024.06.19 14:54:29.756 - *ERROR* [Searcher-admin-INTERNAL_SEARCH_ID] 
i.c.w.c.searches.SearcherWriterImpl: Error while performing search. (run in 
SearcherWriterImpl.java, line 495)
java.text.ParseException: Query:
/jcr:root/tempQueries/fe8396aa-f179-40e8-b68a-b67f13ae7752/jcr:deref(@(*)reference,
 '*')
at 
org.apache.jackrabbit.oak.query.xpath.XPathToSQL2Converter.getSyntaxError(XPathToSQL2Converter.java:1222)
at 
org.apache.jackrabbit.oak.query.xpath.XPathToSQL2Converter.getSyntaxError(XPathToSQL2Converter.java:1203)
at 
org.apache.jackrabbit.oak.query.xpath.XPathToSQL2Converter.convertToStatement(XPathToSQL2Converter.java:270)
at 
org.apache.jackrabbit.oak.query.xpath.XPathToSQL2Converter.convert(XPathToSQL2Converter.java:99)
at 
org.apache.jackrabbit.oak.query.QueryEngineImpl.parseQuery(QueryEngineImpl.java:194)
at 
org.apache.jackrabbit.oak.query.QueryEngineImpl.executeQuery(QueryEngineImpl.java:267)
at 
org.apache.jackrabbit.oak.jcr.query.QueryManagerImpl.executeQuery(QueryManagerImpl.java:137)
... 10 common frames omitted

I've seen that in XPathToSQL2Converter class there is this section:
else if ("jcr:deref".equals(functionName)) {
            // TODO maybe support jcr:deref
            throw getSyntaxError("jcr:deref is not supported");
       }
nevertheless, my query never reaches that point, the exception is thrown before 
as you can see in the stacktrace, besides that I've found this very old issue 
https://issues.apache.org/jira/browse/OAK-321

In jackrabbit 2.x I was able to do that query, do you think derf will be 
supported in next oak releases?
If it is confirmed that jcr:deref is not supported, I think that should be 
documented because if one have to think about migration from jackrabbit 2.x, 
like me, knowing this may totally change plans.

Thank you

Cordiali saluti / Best regards,

Raffaele Gambelli
Senior Java Developer
E  raffaele.gambe...@cegeka.com<mailto:raffaele.gambe...@cegeka.com>

[CEGEKA]        Via Ettore Cristoni, 84
IT-40033 Bologna (IT), Italy
T +39 02 2544271
WWW.CEGEKA.COM<https://www.cegeka.com>

[http://signature.cegeka.com/SignatureRO/bannerRO.jpg]


Reply via email to