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

Yang Xia commented on TINKERPOP-2823:
-------------------------------------

Quoting from TINKERPOP-3101, a related issue on interaction of drop() with 
union() semantics:

When you use a `drop()` step as the first subtraversal it is impacting the 
subsequent subtraversals.  In the example below I would have expected this to 
return the `valueMap()` of the incoming solutions since this is a branch step.

 
{code:java}
         \,,,/
         (o o)
-----oOOo-(3)-oOOo-----
plugin activated: tinkerpop.server
plugin activated: tinkerpop.utilities
plugin activated: tinkerpop.tinkergraph
gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().union(drop(), valueMap())
==>[]
==>[]
==>[]
==>[]
==>[]
==>[] {code}

> A drop() after a union() does not drop everything found
> -------------------------------------------------------
>
>                 Key: TINKERPOP-2823
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2823
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: process
>    Affects Versions: 3.6.1
>         Environment: Gremlin Console, TinkerPop 3.6
>            Reporter: Kelvin Lawrence
>            Priority: Critical
>
> This may be related to https://issues.apache.org/jira/browse/TINKERPOP-2627, 
> but on the surface appears different.
> If a `drop()` step appears after a `union()` step, Gremlin does not drop all 
> of the vertices that flow out of the `union()`. It only drops one vertex.
>  
> For example, using the air routes data, we can see that V(44) has four 
> outgoing routes, and the `union()` correctly yields five results. However, if 
> a `drop()` is performed after the `union()` only V(44) gets dropped. As a 
> workaround, doing `union().fold().unfold().drop()` does work and all five 
> vertices get deleted. 
>  
> {code:java}
> gremlin> g.V().count()
> ==>3748
> gremlin> g.V(44).union(identity(),out()).count()
> ==>5
> gremlin> g.V(44).union(identity(),out()).drop()
> // Only one has been dropped
> gremlin> g.V().count()
> ==>3747 {code}
> We can see by profiling the two queries that the number of traversers stays 
> at one, if a drop() step is present, whereas it is five otherwise.
> {code:java}
> gremlin> g.V(44).union(identity(),out()).profile()
> ==>Traversal Metrics
> Step                                                               Count  
> Traversers       Time (ms)    % Dur
> =============================================================================================================
> TinkerGraphStep(vertex,[44])                                           1      
>      1           0.255    26.98
> UnionStep([[IdentityStep, EndStep], [VertexStep...                     5      
>      5           0.691    73.02
>   IdentityStep                                                         1      
>      1           0.017
>   EndStep                                                              1      
>      1           0.014
>   VertexStep(OUT,vertex)                                               4      
>      4           0.069
>   EndStep                                                              4      
>      4           0.072
>                                             >TOTAL                     -      
>      -           0.947        - 
> gremlin> g.V(44).union(identity(),out()).drop().profile()
> ==>Traversal Metrics
> Step                                                               Count  
> Traversers       Time (ms)    % Dur
> =============================================================================================================
> TinkerGraphStep(vertex,[44])                                           1      
>      1           0.073    19.44
> UnionStep([[IdentityStep, EndStep], [VertexStep...                     1      
>      1           0.159    42.40
>   IdentityStep                                                         1      
>      1           0.006
>   EndStep                                                              1      
>      1           0.009
>   VertexStep(OUT,vertex)                                                      
>                  0.025
>   EndStep                                                                     
>                  0.016
> DropStep                                                                      
>                  0.143    38.16
>                                             >TOTAL                     -      
>      -           0.376        -
> gremlin>  {code}
>  
> This issue was also reported via a StackOverflow post: 
> [https://stackoverflow.com/questions/74238687/why-does-my-gremlin-query-not-drop-all-the-vertices-i-indicate]



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

Reply via email to