You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "Guo Junshi (Jira)" <ji...@apache.org> on 2020/12/11 07:08:00 UTC
[jira] [Created] (TINKERPOP-2490) RangeGlobalStep touches next
traverser when high limit is already hit
Guo Junshi created TINKERPOP-2490:
-------------------------------------
Summary: RangeGlobalStep touches next traverser when high limit is already hit
Key: TINKERPOP-2490
URL: https://issues.apache.org/jira/browse/TINKERPOP-2490
Project: TinkerPop
Issue Type: Bug
Components: process
Affects Versions: 3.4.8
Reporter: Guo Junshi
In FilterStep, the processNextStart() method will first retrieve next traverser and then apply filtering logic. But for RangleGlobalStep, if high limit is already hit, there will be no need to get next traverser.
{code:java}
@Override
protected Traverser.Admin<S> processNextStart() {
while (true) {
final Traverser.Admin<S> traverser = this.starts.next();
if (this.filter(traverser))
return traverser;
}
}
{code}
An example would be limit step: g.V().limit(1). This query will touch 2 vertices although only 1 vertex will be returned.
This extra data loading will cause performance defects if DB data loading is involved. It is not a functionality bug, but for better performance, we'd better check high range limit first before touching next traversal.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)