[
https://issues.apache.org/jira/browse/TINKERPOP-2873?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stephen Mallette closed TINKERPOP-2873.
---------------------------------------
Fix Version/s: 3.7.0
Resolution: Done
done on: https://github.com/apache/tinkerpop/pull/2069
> Allow Union of Traversals
> -------------------------
>
> Key: TINKERPOP-2873
> URL: https://issues.apache.org/jira/browse/TINKERPOP-2873
> Project: TinkerPop
> Issue Type: Improvement
> Components: language
> Affects Versions: 3.6.2
> Reporter: Martin Häusler
> Priority: Minor
> Fix For: 3.7.0
>
>
> Currently, it is possible to use the gremlin "union(...)" step as a union
> based on *traversers*. The union takes each incoming traverser, and clones it
> for each sub-traversal and feeds it to the sub-traversal as input.
> There is another type of union, which relates more to a SQL "UNION ALL"
> command. This second type of union is the union of *Traversals*. So we have
> *independent* traversals with their own start and end steps, and we want to
> combine them into a single traversal. The outcome of this traversal is the
> union of the outcome of all sub-traversals.
> One way to achieve this would be to allow "union(...)" step as the initial
> step for a traversal:
> {code:java}
> g.traversal().union(t1, t2, t3) ... // traversal continues here
> {code}
> The purpose of this mechanism is:
> * The root traversal after the "union(...)" step has access to all of the
> labels and side effect keys of the sub-traversals and can operate on them.
> * The root traversal can operate on the resulting traversers and continue to
> filter them, perform navigation steps, etc.
> Currently, the workaround for this kind of "traversal union" is:
> {code:java}
> g.traversal().inject(0).union(t1, t2, t3) ... // traversal continues here
> {code}
> Here, we inject a dummy value of 0 into the traversal which only exists to
> trigger the union step, where it is discarded immediately by all alternatives
> (which come with their own start steps). This works as intended and also
> shares side effect keys etc. but is syntactically unpleasant and rather
> confusing to read.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)