[ https://issues.apache.org/jira/browse/TINKERPOP-1330?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15493085#comment-15493085 ]
ASF GitHub Bot commented on TINKERPOP-1330: ------------------------------------------- Github user okram commented on the issue: https://github.com/apache/tinkerpop/pull/417 @spmallette I updated `traversal-induced-values.asciidoc`. Wow -- `where().by()` is super powerful. That nested `where(select())`-clause you had in there was naaaasty. Given how much easier some things are to express, I'm realizing that people will be wanting to use `where().by()` more often than not and given that `where().by()` is a `PathProcessor` now, OLAP will not allow any `by()` beyond the element id! Eek. No fear, we have `PathProcessorStrategy` that knows how to "flatten" `select().by()` accordingly. With that, I think another ticket should provide two things: 1. `PathProcessorStrategy` should be updated to support `where().by()` flattening. 2. Create a new strategy called `WhereByMatchStrategy` which turns `where().by()` patterns into `match()`-steps. (@dkuppitz's idea) Now, if (1) above happens then (2) above won't do anything. Why would (1) happen, but not (2). The complexity of the `where()`-step's `by()`-clause. If the `by()` clause is within the bounds of the local star graph, then (1) will trigger. Else, it won't and (2) would trigger. Next, we will have to see how these two strategies interact with `MatchPredicateStrategy` as this folds `where()`-clauses into `match()` to get the runtime optimizer benefits... Its all very complex :D > by()-modulation for where() > --------------------------- > > Key: TINKERPOP-1330 > URL: https://issues.apache.org/jira/browse/TINKERPOP-1330 > Project: TinkerPop > Issue Type: Improvement > Components: process > Affects Versions: 3.2.1 > Reporter: Daniel Kuppitz > Assignee: Marko A. Rodriguez > > As discussed in https://issues.apache.org/jira/browse/TINKERPOP-1329, it > would be nice to have {{by()}}-modulators for {{where()}}. For example: > {code} > g.V().as("a").out().where(gt("a")).by("age") // both a and current ages are > selected > g.V().as("a").out().as("b").where("b",gt("a")).by("age") // both a and b ages > are selected > g.V().as("a").out().as("b").where("b",gt("a")).by("age").by("weight") // > where b.age > a.weight > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)