[
https://issues.apache.org/jira/browse/TINKERPOP-1312?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15302062#comment-15302062
]
ASF GitHub Bot commented on TINKERPOP-1312:
-------------------------------------------
Github user dkuppitz commented on the pull request:
https://github.com/apache/incubator-tinkerpop/pull/320#issuecomment-221869056
> For the latter, should it be `not(both().both())`?
Since we only look at it in conjunction with `count().is(something)`, we
don't need to differentiate between single steps and longer chains.
`both().not(both())` is the same thing as `not(both().both())`.
It makes a difference if something comes after `is(0)`, but in that case we
don't use `not()`:
`both().both().count().is(0).both() ->
both().both().limit(1).count().is(0).both()`
> .count().is(0) is not properly optimized
> ----------------------------------------
>
> Key: TINKERPOP-1312
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1312
> Project: TinkerPop
> Issue Type: Improvement
> Affects Versions: 3.2.0-incubating, 3.1.2-incubating
> Reporter: Daniel Kuppitz
> Assignee: Daniel Kuppitz
> Fix For: 3.1.3, 3.2.1
>
>
> {{bla.count().is(0)}} gets optimized by {{RangeByIsCountStrategy}}, which
> replaces it with {{bla.limit(1).count().is(0)}}. That's good, but we can do
> even better by replacing it with {{__.not(bla)}}, which is a simple
> {{.hasNext()}} instead of a {{RangeStep}} followed by a
> {{ReducingBarrierStep}} ({{count()}}).
> Question is: should we do the replacement in {{RangeByIsCountStrategy}}? The
> strategy will recognize the pattern, no matter if we use it for the
> replacement or not; it's just that the strategy name is then no longer in
> line with the the actual replacement (for this particular {{.count().is(0)}}
> case) as it won't inject a {{RangeStep}}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)