2010/1/18 François Cassistat <[email protected]>:
> I can't make a minimal example with the exactly the same problem, but there 
> seems to have something wrong with this "is null"/"is not null" operation :
>
> Here's a simple repository :
> /a
> /a/@jcr:primaryType=nt:unstructured
> /a/c
> /a/c/@test=value
> /a/c/@jcr:primaryType=nt:unstructured
> /a/c/d
> /a/c/d/@jcr:primaryType=nt:unstructured
>
> workspace.getQueryManager().createQuery("//*...@test='value' and not(d/e)]", 
> Query.XPATH).execute().getNodes().nextNode();
>> returns /a/c (which is normal)
>
> workspace.getQueryManager().createQuery("//*...@test='value' and 
> not(d/e/@f)]", Query.XPATH).execute().getNodes().nextNode();
>> fails, no results (which is wrong, i think)

The existence/non-existence check only works for properties (same for
NULL/IS NULL in sql). The spec does not require support for relative
paths to properties in those predicates.

Using a subpath like "d/e/@f" will not work reliably, only direct
check like "@f". I think it would be nice to fix that so that it works
consistently, but I guess it's quite difficult to scale that, as the
lucene index used only indexes properties, but not paths. But I am not
so sure about that.

> workspace.getQueryManager().createQuery("//*...@test='value' and d/e]", 
> Query.XPATH).execute().getNodes().nextNode();
>> returns /a/c (which is wrong too, i think)

Existence/non-existence does not work for nodes at all.

Regards,
Alex

-- 
Alexander Klimetschek
[email protected]

Reply via email to