You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "Kelvin Lawrence (Jira)" <ji...@apache.org> on 2022/11/07 17:00:00 UTC

[jira] [Created] (TINKERPOP-2823) A drop() after a union() does not drop everything found

Kelvin Lawrence created TINKERPOP-2823:
------------------------------------------

             Summary: 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


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.
gremlin> g.V(44).union(identity(),out()).profile()
==>Traversal Metrics
Step                                                               Count  Traversers       Time (ms)    % Dur
=============================================================================================================
TinkerGraphStep(vertex,[44])                                           1           1           0.143    48.36
UnionStep([[IdentityStep, EndStep], [VertexStep...                     5           5           0.153    51.64
  IdentityStep                                                         1           1           0.009
  EndStep                                                              1           1           0.008
  VertexStep(OUT,vertex)                                               4           4           0.017
  EndStep                                                              4           4           0.013
                                            >TOTAL                     -           -           0.296        -gremlin> g.V(44).union(identity(),out()).drop().profile()
==>Traversal Metrics
Step                                                               Count  Traversers       Time (ms)    % Dur
=============================================================================================================
TinkerGraphStep(vertex,[44])                                           1           1           0.097     1.64
UnionStep([[IdentityStep, EndStep], [VertexStep...                     1           1           0.194     3.25
  IdentityStep                                                         1           1           0.020
  EndStep                                                              1           1           0.008
  VertexStep(OUT,vertex)                                                                       0.051
  EndStep                                                                                      0.018
DropStep                                                                                       5.695    95.11
                                            >TOTAL                     -           -           5.987        - 
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)