[
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)