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)