[
https://issues.apache.org/jira/browse/TINKERPOP-2911?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Norio Akagi updated TINKERPOP-2911:
-----------------------------------
Component/s: test-suite
> CountStrategy converts count().is(0) wrongly under ConnectiveStrategy
> ---------------------------------------------------------------------
>
> Key: TINKERPOP-2911
> URL: https://issues.apache.org/jira/browse/TINKERPOP-2911
> Project: TinkerPop
> Issue Type: Bug
> Components: process, test-suite
> Affects Versions: 3.4.13, 3.6.2, 3.5.5
> Reporter: Norio Akagi
> Priority: Critical
> Fix For: 3.6.3
>
>
> A query example:
> // 2nd branch is just a dummy, and assuming we don't have an edge with label
> "none"
> g.V().where(or(out("none").out().count().is(0), has("none")))
> Here, CountStrategy tries to convert {{count().is(0)}} to {{not(...).}}
> However, when it is under ConnectiveStrategy, it tries to read Steps from
> tail to beginning and include Steps until it finds the first non-filter Step.
> So in this case, it becomes
> [GraphStep(vertex,[]), OrStep([[VertexStep(OUT,[none],vertex),
> NotStep([VertexStep(OUT,edge)])],
> [TraversalFilterStep([NeptunePropertiesStep([none],property)])]])]
> So the first out("none") is outside of NotStep, whereas the 2nd out() is
> inside.
> The original intention of this query is that the 1st branch under {{or}}
> should return {{true}} in the first branch, because there is no such edge
> with the label {{"none"}} and {{{}count = 0{}}}.
> However this optimization returns the opposite result. Because the first
> {{VertexStep(OUT,[none],vertex)}} is now outside of {{{}NotStep{}}}, the 1st
> branch returns {{{}false{}}}.
> It seems this logic was intentionally introduced while back ago
> [https://github.com/apache/tinkerpop/commit/36bd2a2447529371d950b2df6de36ea49957ab55]
> So just reverting this change may not be the permanent fix. We should
> investigate what should be the correct behavior for CountStrategy to apply
> under ConnectivityStep.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)