phpcr-odm
phpcr-odm copied to clipboard
QueryBuilder throws InvalidQueryException if node path contains '-<num>e'
When querying for children of node with path which contains -<num>e
, Query Builder throws InvalidQueryException.
$path = '/cms/site1/routes/it/home/test-1e';
$qb = $this->manager->createQueryBuilder();
$qb->fromDocument(AutoRoute::class, 'a');
$qb->where()->child($path, 'a');
$out = $qb->getQuery()->execute();
STEP 1: /vendor/jackalope/jackalope-jackrabbit/src/Jackalope/Transport/Jackrabbit/Client.php line 888 $querystring = $query->getStatement();
$querystring has value:
SELECT * FROM [nt:unstructured] AS a WHERE (ISCHILDNODE(a, [/cms/site1/routes/it/home/test-1e]) AND (a.[phpcr:class] = 'MyCompany\Bundle\CMSBundle\Document\CMS\AutoRoute' OR a.[phpcr:classparents] = 'MyCompany\Bundle\CMSBundle\Document\CMS\AutoRoute'))
STEP 2: /vendor/jackalope/jackalope-jackrabbit/src/Jackalope/Transport/Jackrabbit/Request.php line 529 $response = $curl->exec();
$response has value:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><D:error xmlns:D="DAV:"><dcr:exception xmlns:dcr="http://www.day.com/jcr/webdav/1.0"><dcr:class>javax.jcr.query.InvalidQueryException</dcr:class><dcr:message>Query:
SELECT * FROM [nt:unstructured] AS a WHERE (ISCHILDNODE(a, [/cms/site1/routes/it/home/test-(*)1e]) AND (a.[phpcr:class] = 'MyCompany\Bundle\CMSBundle\Document\CMS\AutoRoute' OR a.[phpcr:classparents] = 'MyCompany\Bundle\CMSBundle\Document\CMS\AutoRoute'))</dcr:message></dcr:exception></D:error>
As you can see above, it seems that someone is adding '(*)' to the JCR query.
This only happens if node's path contains -<num>e
.
Does anyone have any solutions?
what is the exception message? i remember that there is a bug in jackrabbit where it mis interprets those as codes even when url encoded. i think you are seeing https://github.com/jackalope/jackalope/issues/313 - unfortunately that is a bug in the java jackrabbit server and they seem to not care to fix it.
the sulu cms did this: https://github.com/sulu/sulu-document-manager/pull/91