You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Andreas Doebeli (JIRA)" <ji...@apache.org> on 2016/11/09 11:32:58 UTC
[jira] [Created] (JCR-4056) Combining NOT ISDESCENDANTNODE with AND
operators does not yield the same result as with OR operators
Andreas Doebeli created JCR-4056:
------------------------------------
Summary: Combining NOT ISDESCENDANTNODE with AND operators does not yield the same result as with OR operators
Key: JCR-4056
URL: https://issues.apache.org/jira/browse/JCR-4056
Project: Jackrabbit Content Repository
Issue Type: Bug
Components: JCR 2.0, sql
Affects Versions: 2.8.3
Environment: Ubuntu 14.04, Magnolia 5.4.7 (with Jackrabbit 2.8.0), Oracle Java 1.8.0_u66, MySQL 5.7
Reporter: Andreas Doebeli
I noticed that using {{NOT ISDESCENDANTNODE}} used with {{AND}} operators does not yield the same result as when using {{OR}} operators.
*General assumption*
{{(!A && !B) == !(A || B)}}
*Test Structure in JCR*
{code}
/
-content
-exclude1
-notSelected
-exclude2
-otherNotSelected
-include
-selected
-other
{code}
*Analysis*
Runningthe query with {{OR}} operators:
{code}
SELECT * FROM [nt:base] WHERE NOT (ISDESCENDANTNODE('/content/exclude1') OR ISDESCENDANTNODE('/content/exclude2'))
{code}
Running this query yields 7 results:
{code}
node /
node /content/exclude1
node /content
node /content/exclude2
node /content/include
node /content/include/selected
node /content/include/other
{code}
While running the following Query returns 8 results:
{code}
SELECT * FROM [nt:base] WHERE (NOT ISDESCENDANTNODE('/content/exclude1') AND NOT ISDESCENDANTNODE('/content/exclude2'))
{code}
Result:
{code}
node /
node /content/exclude1
node /content
node /content/exclude2/otherNotSelected
node /content/exclude2
node /content/include
node /content/include/selected
node /content/include/other
{code}
It seems that combining {{NOT ISDESCENDANTNODE}} with {{AND}} operators the second {{NOT ISDESCENDANTNODE}} check is ignored.
IMHO logical operations should work as expected. If using {{NOT ISDESCENDANTNODE}} with {{AND}} operators is not supported, it should exit with an error instead of silently behaving unexpectedly.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)