diff --git a/interactive_engine/compiler/src/main/java/com/alibaba/graphscope/gremlin/integration/suite/pattern/PatternQueryTest.java b/interactive_engine/compiler/src/main/java/com/alibaba/graphscope/gremlin/integration/suite/pattern/PatternQueryTest.java index 6f24cc46a240..91dd40b86747 100644 --- a/interactive_engine/compiler/src/main/java/com/alibaba/graphscope/gremlin/integration/suite/pattern/PatternQueryTest.java +++ b/interactive_engine/compiler/src/main/java/com/alibaba/graphscope/gremlin/integration/suite/pattern/PatternQueryTest.java @@ -25,6 +25,8 @@ import org.junit.Assert; import org.junit.Test; +import java.util.Map; + public abstract class PatternQueryTest extends AbstractGremlinProcessTest { public abstract Traversal get_pattern_1_test(); @@ -60,6 +62,8 @@ public abstract class PatternQueryTest extends AbstractGremlinProcessTest { public abstract Traversal get_pattern_17_test(); + public abstract Traversal> get_g_V_limit_100_group_test(); + @Test public void run_pattern_1_test() { Traversal traversal = this.get_pattern_1_test(); @@ -179,6 +183,15 @@ public void run_pattern_17_test() { Assert.assertEquals(17367L, traversal.next().longValue()); } + @Test + public void run_g_V_limit_100_group_test() { + Traversal> traversal = this.get_g_V_limit_100_group_test(); + this.printTraversalForm(traversal); + Map map = traversal.next(); + Assert.assertEquals(100, map.size()); + Assert.assertFalse(traversal.hasNext()); + } + public static class Traversals extends PatternQueryTest { // PM1 @@ -386,5 +399,10 @@ public Traversal get_pattern_17_test() { .as("b")) .count(); } + + @Override + public Traversal> get_g_V_limit_100_group_test() { + return g.V().hasLabel("PERSON").limit(100).group().by("id").by(__.count()); + } } } diff --git a/interactive_engine/compiler/src/main/java/com/alibaba/graphscope/gremlin/result/processor/AbstractResultProcessor.java b/interactive_engine/compiler/src/main/java/com/alibaba/graphscope/gremlin/result/processor/AbstractResultProcessor.java index 8785165f9015..1337830cd64a 100644 --- a/interactive_engine/compiler/src/main/java/com/alibaba/graphscope/gremlin/result/processor/AbstractResultProcessor.java +++ b/interactive_engine/compiler/src/main/java/com/alibaba/graphscope/gremlin/result/processor/AbstractResultProcessor.java @@ -19,6 +19,7 @@ import com.alibaba.graphscope.common.config.QueryTimeoutConfig; import com.alibaba.graphscope.common.result.ResultParser; import com.alibaba.graphscope.gremlin.plugin.QueryStatusCallback; +import com.alibaba.graphscope.gremlin.result.GroupResultParser; import com.alibaba.pegasus.intf.ResultProcessor; import com.alibaba.pegasus.service.protocol.PegasusClient; @@ -82,7 +83,8 @@ public synchronized void process(PegasusClient.JobResponse response) { if (isContextWritable) { // send back a page of results if batch size is met and then reset the // resultCollectors - if (this.resultCollectors.size() >= this.resultCollectorsBatchSize) { + if (this.resultCollectors.size() >= this.resultCollectorsBatchSize + && !(resultParser instanceof GroupResultParser)) { aggregateResults(); writeResultList( writeResult, resultCollectors, ResponseStatusCode.PARTIAL_CONTENT);