You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "Stephen Mallette (Jira)" <ji...@apache.org> on 2023/04/03 19:23:00 UTC

[jira] [Closed] (TINKERPOP-2906) Query using coalesce adding the same vertex twice

     [ https://issues.apache.org/jira/browse/TINKERPOP-2906?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stephen Mallette closed TINKERPOP-2906.
---------------------------------------
    Resolution: Not A Bug

> Query using coalesce adding the same vertex twice
> -------------------------------------------------
>
>                 Key: TINKERPOP-2906
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2906
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: process
>    Affects Versions: 3.6.0, 3.6.2
>            Reporter: Kelvin Lawrence
>            Priority: Critical
>
> While looking into a question on Stack Overflow about selectively adding a vertex based on a set of values in a list, I think I may have run into an odd issue. Note that this can also be solved using mergeV, but that notwithstanding, the behavior below seems odd. It can be reproduced just using TinkerGraph and the Gremlin Console. Everything works as expected until the RHS of the coalesce() step is an addV() step.
>  
> {code:java}
> gremlin> g.addV('Person').property('name','Sam')
> ==>v[16]gremlin> g
> ==>graphtraversalsource[tinkergraph[vertices:1 edges:0], standard]gremlin> g.inject(['Sam','Peter','Frank']).
> ......1> unfold().as('find').
> ......2> V().as('p').
> ......3> coalesce(
> ......4> where(eq('p')).
> ......5> by(select('find')).
> ......6> by('name'),constant(1))
> ==>v[16]
> ==>1
> ==>1gremlin> g.inject(['Sam','Peter','Frank']).
> ......1> unfold().as('find').
> ......2> V().as('p').
> ......3> coalesce(
> ......4> where(eq('p')).
> ......5> by(select('find')).
> ......6> by('name'),select('find'))
> ==>v[16]
> ==>Peter
> ==>Frankgremlin> g.inject(['Sam','Peter','Frank']).
> ......1> unfold().as('find').
> ......2> V().as('p').
> ......3> coalesce(
> ......4> where(eq('p')).
> ......5> by(select('find')).
> ......6> by('name'),addV('Person').property('name',select('find'))
> ......7> )
> ==>v[16]
> ==>v[18]
> ==>v[20]
> ==>v[22]gremlin> g.V().valueMap(true)
> ==>[id:16,label:Person,name:[Sam]]
> ==>[id:18,label:Person,name:[Peter]]
> ==>[id:20,label:Person,name:[Frank]]
> ==>[id:22,label:Person,name:[Frank]]
>  
> gremlin> g.V().drop()gremlin> g.addV('Person').property('name','Sam')
> ==>v[24]gremlin> g.inject(['Sam','Peter','Frank']).
> ......1> unfold().as('find').
> ......2> V().as('p').
> ......3> coalesce(
> ......4> where(eq('p')).
> ......5> by(select('find')).
> ......6> by('name'),
> ......7> addV('Person').property('name',select('find'))).profile()
> ==>Traversal Metrics
> Step Count Traversers Time (ms) % Dur
> =============================================================================================================
> InjectStep([[Sam, Peter, Frank]]) 1 1 0.043 4.19
> UnfoldStep@[find] 3 3 0.083 8.00
> TinkerGraphStep(vertex,[])@[p] 4 4 0.155 14.91
> CoalesceStep([[WherePredicateStep(null,eq(p),[[... 4 4 0.761 72.89
> WherePredicateStep(null,eq(p),[[SelectOneStep... 1 1 0.181
> SelectOneStep(last,find,null) 4 4 0.057
> AddVertexStep({name=[[SelectOneStep(last,find... 3 3 0.246
> SelectOneStep(last,find,null) 3 3 0.025
> >TOTAL - - 1.044 -
> gremlin> g.inject(['Sam','Peter','Frank']).
> ......1> unfold().as('find').V().profile()
> ==>Traversal Metrics
> Step Count Traversers Time (ms) % Dur
> =============================================================================================================
> InjectStep([[Sam, Peter, Frank]]) 1 1 0.028 8.93
> UnfoldStep@[find] 3 3 0.043 13.97
> TinkerGraphStep(vertex,[]) 3 3 0.241 77.10
> >TOTAL - - 0.313 -
> {code}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)