[ 
https://issues.apache.org/jira/browse/TINKERPOP-2481?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17257079#comment-17257079
 ] 

Stephen Mallette commented on TINKERPOP-2481:
---------------------------------------------

After some research, I came across some old discussion on this strategy here: 
TINKERPOP-1412 - I think Marko's final comment on that make sense to me. This 
strategy was never about performance of chained {{identity()}} steps but more 
about removing an {{identity()}} which might have normalized the Gremlin enough 
for another strategy to do its work properly. On the other hand this issue is 
also as much an issue with {{PathRetractionStrategy}}:

{code}
gremlin> 
g.withoutStrategies(PathRetractionStrategy).V().match(__.as("a").out("knows").as("b")).identity()
==>[a:v[1],b:v[2]]
==>[a:v[1],b:v[4]]
{code}

We really shouldn't have situations where "correctness" or "consistency" of 
results is upset by a strategy and shouldn't use one strategy (in this case 
{{IdentityRemovalStrategy}}) to ensure a particular result based on another. So 
ultimately, I think the fix here is to {{PathRetractionStrategy}} and to 
install {{IdentityRemovalStrategy}}. Created TINKERPOP-2499 for the former. 

> IdentityRemovalStrategy not installed
> -------------------------------------
>
>                 Key: TINKERPOP-2481
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2481
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: process
>    Affects Versions: 3.4.8
>            Reporter: Stephen Mallette
>            Priority: Minor
>
> I'm not sure why but {{IdentityRemovalStrategy}} is not in play and almost 
> looks like it never has been, yet I fairly certain we've gone about life 
> thinking it was one of our standard strategies. Perhaps this issue title will 
> shift once this is given more thought but I came to [notice this 
> issue|https://groups.google.com/g/gremlin-users/c/HVtldzV0Xk8/m/saCBYsEQBgAJ] 
> with this example:
> {code}
> gremlin> g.V().match(__.as("a").out("knows").as("b")).identity()
> ==>[]
> ==>[]
> gremlin> 
> g.withStrategies(IdentityRemovalStrategy.instance()).V().match(__.as("a").out("knows").as("b")).identity()
> ==>[a:v[1],b:v[2]]
> ==>[a:v[1],b:v[4]]
> {code}
> So if the strategy had been in play, {{PathRetractionStrategy}} wouldn't have 
> trimmed the history. Or, perhaps {{PathRetractionStrategy}} should have been 
> smarter....



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to