[
https://issues.apache.org/jira/browse/TINKERPOP3-619?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Marko A. Rodriguez closed TINKERPOP3-619.
-----------------------------------------
Resolution: Fixed
Fix Version/s: 3.0.0.GA
Assignee: Marko A. Rodriguez
Okay. This is what I did.
If {{select("a")}} doesn't get an object, move on to the next traverser to
process.
If {{select("a","b")}} doesn't get ALL objects, move on to the next traverser
to process. In other words, the returns {{Map<String,Object>}} is guaranteed to
have all its variables bound.
I added [~mhfrantz]'s two test cases using
{{until(...).repeat(..as('a')..).select('a'...)}} and things are working as
desired.
Next, I think this notion of "all must bind or none" should be the general
theme for these {{Scoping}} steps. E.g. {{WhereStep}}. I think
{{where('a',eq('b'))}} should filter if either of those variables don't bind.
Right now, it will throw an Exception saying it can't find the bindings.
This then begs the question -- what about
{{has('aKeyThatDoesNotExist',eq(32))}} ? Should that just be a filter {{true}}
or do as we do now -- throw an Exception "Property aKeyThatDoesNotExist does
not exist for the element" ? [~dkuppitz] ?
If we make it "just filter" then we won't see queries like this:
{{g.V.has('age').has('age',gt(32))}}. This is analgous to us not needing
{{select('a','b').hasKeys('a','b').where('a',eq('b')}} as if it doesn't bind,
it doesn't exist -- for map-steps, move to the next traverser, for
filter-steps, return false.
> select should not throw
> -----------------------
>
> Key: TINKERPOP3-619
> URL: https://issues.apache.org/jira/browse/TINKERPOP3-619
> Project: TinkerPop 3
> Issue Type: Improvement
> Components: process
> Reporter: Matt Frantz
> Assignee: Marko A. Rodriguez
> Fix For: 3.0.0.GA
>
>
> Rather than raise {{IllegalArgumentException}}, if {{select}} cannot find the
> label, it should return {{null}}. This is preferable because of the
> difficulty of dealing with exceptions during traversal. It is not always
> indicative of a static flaw in the traversal, since conditional logic in the
> traversal may bypass certain {{as}} steps.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)