You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by co...@apache.org on 2024/08/28 00:53:27 UTC
(tinkerpop) branch master updated (b37e35cf47 -> fd040c94a6)
This is an automated email from the ASF dual-hosted git repository.
colegreer pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
from b37e35cf47 TINKERPOP-3083 Change SplitGlobalStep and SplitLocalStep to use a new StringUtil.split utility method which will split the given string into a list of individual string characters if the given separator is an empty string. (#2741)
add c8ab132512 [TINKERPOP-3080] AggregateGlobalStep acceps all pre-defined Operators (#2616)
add 37d0cc1597 CTR regenerate feature test files
new fd040c94a6 Merge branch '3.7-dev'
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
CHANGELOG.asciidoc | 1 +
.../grammar/TraversalSourceSelfMethodVisitor.java | 11 +-
.../gremlin/process/traversal/Operator.java | 4 +-
.../step/sideEffect/AggregateGlobalStep.java | 19 +-
.../step/sideEffect/AggregateLocalStep.java | 15 +-
.../verification/ComputerVerificationStrategy.java | 24 +-
.../TraversalSourceSelfMethodVisitorTest.java | 2 +
.../gremlin/process/traversal/OperatorTest.java | 1 +
.../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs | 24 ++
gremlin-go/driver/cucumber/gremlin.go | 24 ++
.../gremlin-javascript/test/cucumber/gremlin.js | 24 ++
gremlin-language/src/main/antlr4/Gremlin.g4 | 1 +
gremlin-python/src/main/python/radish/gremlin.py | 24 ++
.../test/features/sideEffect/Aggregate.feature | 442 +++++++++++++++++----
14 files changed, 526 insertions(+), 90 deletions(-)
(tinkerpop) 01/01: Merge branch '3.7-dev'
Posted by co...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
colegreer pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit fd040c94a66516e473811fe29eaeaf4081cf104c
Merge: b37e35cf47 37d0cc1597
Author: Cole-Greer <Co...@improving.com>
AuthorDate: Tue Aug 27 17:53:10 2024 -0700
Merge branch '3.7-dev'
CHANGELOG.asciidoc | 1 +
.../grammar/TraversalSourceSelfMethodVisitor.java | 11 +-
.../gremlin/process/traversal/Operator.java | 4 +-
.../step/sideEffect/AggregateGlobalStep.java | 19 +-
.../step/sideEffect/AggregateLocalStep.java | 15 +-
.../verification/ComputerVerificationStrategy.java | 24 +-
.../TraversalSourceSelfMethodVisitorTest.java | 2 +
.../gremlin/process/traversal/OperatorTest.java | 1 +
.../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs | 24 ++
gremlin-go/driver/cucumber/gremlin.go | 24 ++
.../gremlin-javascript/test/cucumber/gremlin.js | 24 ++
gremlin-language/src/main/antlr4/Gremlin.g4 | 1 +
gremlin-python/src/main/python/radish/gremlin.py | 24 ++
.../test/features/sideEffect/Aggregate.feature | 442 +++++++++++++++++----
14 files changed, 526 insertions(+), 90 deletions(-)
diff --cc gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Operator.java
index 5bb2c85b3a,af9267b4a9..39828e17d9
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Operator.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/Operator.java
@@@ -202,7 -202,7 +202,7 @@@ public enum Operator implements BinaryO
*/
sumLong {
public Object apply(final Object a, final Object b) {
- return (long) a + (long) b;
+ return NumberHelper.add((long) a, (long) b);
}
- }
+ };
}
diff --cc gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalSourceSelfMethodVisitorTest.java
index b23e6fad8f,41eb40a533..92ee518836
--- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalSourceSelfMethodVisitorTest.java
+++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalSourceSelfMethodVisitorTest.java
@@@ -60,16 -57,11 +60,17 @@@ public class TraversalSourceSelfMethodV
{"withSack('hello')", g.withSack("hello")},
{"withSack('hello', addAll)", g.withSack("hello", Operator.addAll)},
{"withSideEffect('hello', 12)", g.withSideEffect("hello", 12)},
+ {"withSideEffect('hello', 12, sum)", g.withSideEffect("hello", 12, Operator.sum)},
{"withStrategies(ReadOnlyStrategy)", g.withStrategies(ReadOnlyStrategy.instance())},
{"withStrategies(new EdgeLabelVerificationStrategy(logWarning: true, throwException: true))", g.withStrategies(EdgeLabelVerificationStrategy.build().logWarning(true).throwException(true).create())},
+ {"withStrategies(EdgeLabelVerificationStrategy(logWarning: true, throwException: true))", g.withStrategies(EdgeLabelVerificationStrategy.build().logWarning(true).throwException(true).create())},
+ {"withStrategies(ReadOnlyStrategy, EdgeLabelVerificationStrategy(logWarning: true, throwException: true))", g.withStrategies(ReadOnlyStrategy.instance(), EdgeLabelVerificationStrategy.build().logWarning(true).throwException(true).create())},
{"withStrategies(ReadOnlyStrategy, new EdgeLabelVerificationStrategy(logWarning: true, throwException: true))", g.withStrategies(ReadOnlyStrategy.instance(), EdgeLabelVerificationStrategy.build().logWarning(true).throwException(true).create())},
{"withStrategies(new EdgeLabelVerificationStrategy(logWarning: true, throwException: true), ReadOnlyStrategy)", g.withStrategies(EdgeLabelVerificationStrategy.build().logWarning(true).throwException(true).create(), ReadOnlyStrategy.instance())},
+ {"withoutStrategies(CountStrategy)", g.withoutStrategies(CountStrategy.class)},
+ {"withoutStrategies(CountStrategy, EarlyLimitStrategy)", g.withoutStrategies(CountStrategy.class, EarlyLimitStrategy.class)},
+ {"withoutStrategies(CountStrategy, EarlyLimitStrategy, PathRetractionStrategy)", g.withoutStrategies(CountStrategy.class, EarlyLimitStrategy.class, PathRetractionStrategy.class)},
+ {"withoutStrategies(CountStrategy, EarlyLimitStrategy, PathRetractionStrategy, RepeatUnrollStrategy)", g.withoutStrategies(CountStrategy.class, EarlyLimitStrategy.class, PathRetractionStrategy.class, RepeatUnrollStrategy.class)},
{"with('requestId', '7c55d4d7-809a-4f84-9720-63b48cb2fd14')", g.with("requestId", "7c55d4d7-809a-4f84-9720-63b48cb2fd14")},
{"with('requestId')", g.with("requestId")},
{"withSideEffect('hello', ['one':1])", g.withSideEffect("hello", map)},
diff --cc gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
index 12449a0d9d,72780761d0..2bc63ed4e7
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
@@@ -1442,39 -1423,62 +1442,63 @@@ namespace Gremlin.Net.IntegrationTest.G
{"g_V_out_aggregateXaX_path", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Out().Aggregate("a").Path()}},
{"g_V_hasLabelXpersonX_aggregateXxX_byXageX_capXxX_asXyX_selectXyX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel("person").Aggregate("x").By("age").Cap<object>("x").As("y").Select<object>("y")}},
{"g_V_aggregateXxX_byXageX_capXxX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate("x").By("age").Cap<object>("x")}},
- {"g_V_aggregateXlocal_xX_byXageX_capXxX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate(Scope.Local,"x").By("age").Cap<object>("x")}},
- {"g_withStrategiesXProductiveByStrategyX_V_aggregateXlocal_xX_byXageX_capXxX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy(productiveKeys: new List<object> {})).V().Aggregate(Scope.Local,"x").By("age").Cap<object>("x")}},
- {"g_V_aggregateXlocal_a_nameX_out_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate(Scope.Local,"a").By("name").Out().Cap<object>("a")}},
- {"g_VX1X_aggregateXlocal_aX_byXnameX_out_aggregateXlocal_aX_byXnameX_name_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Aggregate(Scope.Local,"a").By("name").Out().Aggregate(Scope.Local,"a").By("name").Values<object>("name").Cap<object>("a")}},
- {"g_withSideEffectXa_setX_V_both_name_aggregateXlocal_aX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",p["xx1"]).V().Both().Values<object>("name").Aggregate(Scope.Local,"a").Cap<object>("a")}},
- {"g_V_aggregateXlocal_aX_byXoutEXcreatedX_countX_out_out_aggregateXlocal_aX_byXinEXcreatedX_weight_sumX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate(Scope.Local,"a").By(__.OutE("created").Count()).Out().Out().Aggregate(Scope.Local,"a").By(__.InE("created").Values<object>("weight").Sum<object>()).Cap<object>("a")}},
+ {"g_V_aggregateXlocal_xX_byXageX_capXxX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate(Scope.Local, "x").By("age").Cap<object>("x")}},
+ {"g_withStrategiesXProductiveByStrategyX_V_aggregateXlocal_xX_byXageX_capXxX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy()).V().Aggregate(Scope.Local, "x").By("age").Cap<object>("x")}},
+ {"g_V_aggregateXlocal_a_nameX_out_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate(Scope.Local, "a").By("name").Out().Cap<object>("a")}},
+ {"g_VX1X_aggregateXlocal_aX_byXnameX_out_aggregateXlocal_aX_byXnameX_name_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V(p["vid1"]).Aggregate(Scope.Local, "a").By("name").Out().Aggregate(Scope.Local, "a").By("name").Values<object>("name").Cap<object>("a")}},
+ {"g_withSideEffectXa_setX_V_both_name_aggregateXlocal_aX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", p["xx1"]).V().Both().Values<object>("name").Aggregate(Scope.Local, "a").Cap<object>("a")}},
+ {"g_withSideEffectXa_set_inlineX_V_both_name_aggregateXlocal_aX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", new HashSet<object> { "alice" }).V().Both().Values<object>("name").Aggregate(Scope.Local, "a").Cap<object>("a")}},
+ {"g_V_aggregateXlocal_aX_byXoutEXcreatedX_countX_out_out_aggregateXlocal_aX_byXinEXcreatedX_weight_sumX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate(Scope.Local, "a").By(__.OutE("created").Count()).Out().Out().Aggregate(Scope.Local, "a").By(__.InE("created").Values<object>("weight").Sum<object>()).Cap<object>("a")}},
{"g_V_aggregateXxX_byXvaluesXageX_isXgtX29XXX_capXxX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate("x").By(__.Values<object>("age").Is(P.Gt(29))).Cap<object>("x")}},
- {"g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXvaluesXageX_isXgtX29XXX_capXxX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy(productiveKeys: new List<object> {})).V().Aggregate("x").By(__.Values<object>("age").Is(P.Gt(29))).Cap<object>("x")}},
+ {"g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXvaluesXageX_isXgtX29XXX_capXxX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy()).V().Aggregate("x").By(__.Values<object>("age").Is(P.Gt(29))).Cap<object>("x")}},
{"g_V_aggregateXxX_byXout_order_byXnameXX_capXxX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate("x").By(__.Out().Order().By("name")).Cap<object>("x")}},
- {"g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXout_order_byXnameXX_capXxX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy(productiveKeys: new List<object> {})).V().Aggregate("x").By(__.Out().Order().By("name")).Cap<object>("x")}},
- {"g_V_aggregateXaX_hasXperson_age_gteX30XXX_capXaX_unfold_valuesXnameX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate("a").Has("person","age",P.Gte(30)).Cap<object>("a").Unfold<object>().Values<object>("name")}},
- {"g_withSideEffectXa_1_sumX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",1,Operator.Sum).V().Aggregate("a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_1_sumX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",1,Operator.Sum).V().Aggregate(Scope.Local,"a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_123_minusX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",123,Operator.Minus).V().Aggregate("a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_123_minusX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",123,Operator.Minus).V().Aggregate(Scope.Local,"a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_2_multX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",2,Operator.Mult).V().Aggregate("a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_2_multX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",2,Operator.Mult).V().Aggregate(Scope.Local,"a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_876960_divX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",876960,Operator.Div).V().Aggregate("a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_876960_divX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",876960,Operator.Div).V().Aggregate(Scope.Local,"a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_1_minX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",1,Operator.Min).V().Aggregate("a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_1_minX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",1,Operator.Min).V().Aggregate(Scope.Local,"a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_100_minX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",100,Operator.Min).V().Aggregate("a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_100_minX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",100,Operator.Min).V().Aggregate(Scope.Local,"a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_1_maxX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",1,Operator.Max).V().Aggregate("a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_1_maxX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",1,Operator.Max).V().Aggregate(Scope.Local,"a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_100_maxX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",100,Operator.Max).V().Aggregate("a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_100_maxX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",100,Operator.Max).V().Aggregate(Scope.Local,"a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_true_andX_V_constantXfalseX_aggregateXaX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",true,Operator.And).V().Constant<object>(false).Aggregate("a").Cap<object>("a")}},
- {"g_withSideEffectXa_true_andX_V_constantXfalseX_aggregateXlocal_aX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",true,Operator.And).V().Constant<object>(false).Aggregate(Scope.Local,"a").Cap<object>("a")}},
- {"g_withSideEffectXa_true_orX_V_constantXfalseX_aggregateXaX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",true,Operator.Or).V().Constant<object>(false).Aggregate("a").Cap<object>("a")}},
- {"g_withSideEffectXa_true_orX_V_constantXfalseX_aggregateXlocal_aX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",true,Operator.Or).V().Constant<object>(false).Aggregate(Scope.Local,"a").Cap<object>("a")}},
- {"g_withSideEffectXa_xx1_addAllX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",p["xx1"],Operator.AddAll).V().Aggregate("a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_xx1_addAllX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",p["xx1"],Operator.AddAll).V().Aggregate(Scope.Local,"a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_xx1_assignX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",p["xx1"],Operator.Assign).V().Aggregate("a").By("age").Cap<object>("a")}},
- {"g_withSideEffectXa_xx1_assignX_V_order_byXageX_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a",p["xx1"],Operator.Assign).V().Order().By("age").Aggregate(Scope.Local,"a").By("age").Cap<object>("a")}},
+ {"g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXout_order_byXnameXX_capXxX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy()).V().Aggregate("x").By(__.Out().Order().By("name")).Cap<object>("x")}},
+ {"g_V_aggregateXaX_hasXperson_age_gteX30XXX_capXaX_unfold_valuesXnameX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Aggregate("a").Has("person", "age", P.Gte(30)).Cap<object>("a").Unfold<object>().Values<object>("name")}},
++ {"g_withSideEffectXa_1_sumX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", 1, Operator.Sum).V().Aggregate("a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_1_sumX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", 1, Operator.Sum).V().Aggregate(Scope.Local, "a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_123_minusX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", 123, Operator.Minus).V().Aggregate("a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_123_minusX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", 123, Operator.Minus).V().Aggregate(Scope.Local, "a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_2_multX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", 2, Operator.Mult).V().Aggregate("a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_2_multX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", 2, Operator.Mult).V().Aggregate(Scope.Local, "a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_876960_divX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", 876960, Operator.Div).V().Aggregate("a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_876960_divX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", 876960, Operator.Div).V().Aggregate(Scope.Local, "a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_1_minX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", 1, Operator.Min).V().Aggregate("a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_1_minX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", 1, Operator.Min).V().Aggregate(Scope.Local, "a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_100_minX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", 100, Operator.Min).V().Aggregate("a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_100_minX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", 100, Operator.Min).V().Aggregate(Scope.Local, "a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_1_maxX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", 1, Operator.Max).V().Aggregate("a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_1_maxX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", 1, Operator.Max).V().Aggregate(Scope.Local, "a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_100_maxX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", 100, Operator.Max).V().Aggregate("a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_100_maxX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", 100, Operator.Max).V().Aggregate(Scope.Local, "a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_true_andX_V_constantXfalseX_aggregateXaX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", true, Operator.And).V().Constant<object>(false).Aggregate("a").Cap<object>("a")}},
++ {"g_withSideEffectXa_true_andX_V_constantXfalseX_aggregateXlocal_aX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", true, Operator.And).V().Constant<object>(false).Aggregate(Scope.Local, "a").Cap<object>("a")}},
++ {"g_withSideEffectXa_true_orX_V_constantXfalseX_aggregateXaX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", true, Operator.Or).V().Constant<object>(false).Aggregate("a").Cap<object>("a")}},
++ {"g_withSideEffectXa_true_orX_V_constantXfalseX_aggregateXlocal_aX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", true, Operator.Or).V().Constant<object>(false).Aggregate(Scope.Local, "a").Cap<object>("a")}},
++ {"g_withSideEffectXa_xx1_addAllX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", p["xx1"], Operator.AddAll).V().Aggregate("a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_xx1_addAllX_V_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", p["xx1"], Operator.AddAll).V().Aggregate(Scope.Local, "a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_xx1_assignX_V_aggregateXaX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", p["xx1"], Operator.Assign).V().Aggregate("a").By("age").Cap<object>("a")}},
++ {"g_withSideEffectXa_xx1_assignX_V_order_byXageX_aggregateXlocal_aX_byXageX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithSideEffect("a", p["xx1"], Operator.Assign).V().Order().By("age").Aggregate(Scope.Local, "a").By("age").Cap<object>("a")}},
{"g_V_fail", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Fail()}},
{"g_V_failXmsgX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Fail("msg")}},
- {"g_V_unionXout_failX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Union<object>(__.Out(),__.Fail())}},
- {"g_V_group_byXnameX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group<object,object>().By("name")}},
- {"g_V_group_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group<object,object>().By("age")}},
- {"g_withStrategiesXProductiveByStrategyX_V_group_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy(productiveKeys: new List<object> {})).V().Group<object,object>().By("age")}},
- {"g_V_group_byXnameX_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group<object,object>().By("name").By("age")}},
- {"g_V_group_byXnameX_by", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group<object,object>().By("name").By()}},
- {"g_V_hasXlangX_group_byXlangX_byXcountX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("lang").Group<object,object>().By("lang").By(__.Count())}},
- {"g_V_group_byXoutE_countX_byXnameX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Order().By("name").Group<object,object>().By(__.OutE().Count()).By("name")}},
- {"g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Repeat(__.Both("followedBy")).Times(2).Group<object,object>().By("songType").By(__.Count())}},
- {"g_V_group_byXname_substring_1X_byXconstantX1XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group<object,object>().By((IFunction) p["l1"]).By(__.Constant<object>(1))}},
- {"g_V_out_group_byXlabelX_selectXpersonX_unfold_outXcreatedX_name_limitX2X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Out().Group<object,object>().By(T.Label).Select<object>("person").Unfold<object>().Out("created").Values<object>("name").Limit<object>(2)}},
- {"g_V_hasLabelXsongX_group_byXnameX_byXproperties_groupCount_byXlabelXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel("song").Group<object,object>().By("name").By(__.Properties<object>().GroupCount<object>().By(T.Label))}},
- {"g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Out("followedBy").Group<object,object>().By("songType").By(__.BothE().Group<object,object>().By(T.Label).By(__.Values<object>("weight").Sum<object>()))}},
- {"g_V_group_byXlabelX_byXbothE_groupXaX_byXlabelX_byXweight_sumX_weight_sumX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group<object,object>().By(T.Label).By(__.BothE().Group("a").By(T.Label).By(__.Values<object>("weight").Sum<object>()).Values<object>("weight").Sum<object>())}},
- {"g_V_hasLabelXpersonX_asXpX_outXcreatedX_group_byXnameX_byXselectXpX_valuesXageX_sumX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel("person").As("p").Out("created").Group<object,object>().By("name").By(__.Select<object>("p").Values<object>("age").Sum<object>())}},
- {"g_V_group_byXlabelX_byXlabel_countX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group<object,object>().By(__.Label()).By(__.Label().Count())}},
+ {"g_V_unionXout_failX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Union<object>(__.Out(), __.Fail())}},
+ {"g_V_group_byXnameX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group<object, object>().By("name")}},
+ {"g_V_group_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group<object, object>().By("age")}},
+ {"g_withStrategiesXProductiveByStrategyX_V_group_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy()).V().Group<object, object>().By("age")}},
+ {"g_V_group_byXnameX_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group<object, object>().By("name").By("age")}},
+ {"g_V_group_byXnameX_by", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group<object, object>().By("name").By()}},
+ {"g_V_hasXlangX_group_byXlangX_byXcountX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Has("lang").Group<object, object>().By("lang").By(__.Count())}},
+ {"g_V_group_byXoutE_countX_byXnameX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Order().By("name").Group<object, object>().By(__.OutE().Count()).By("name")}},
+ {"g_V_repeatXbothXfollowedByXX_timesX2X_group_byXsongTypeX_byXcountX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Repeat(__.Both("followedBy")).Times(2).Group<object, object>().By("songType").By(__.Count())}},
+ {"g_V_group_byXname_substring_1X_byXconstantX1XX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>()}, // skipping as it contains a lambda
+ {"g_V_out_group_byXlabelX_selectXpersonX_unfold_outXcreatedX_name_limitX2X", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Out().Group<object, object>().By(T.Label).Select<object>("person").Unfold<object>().Out("created").Values<object>("name").Limit<object>(2)}},
+ {"g_V_hasLabelXsongX_group_byXnameX_byXproperties_groupCount_byXlabelXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel("song").Group<object, object>().By("name").By(__.Properties<object>().GroupCount<object>().By(T.Label))}},
+ {"g_V_outXfollowedByX_group_byXsongTypeX_byXbothE_group_byXlabelX_byXweight_sumXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Out("followedBy").Group<object, object>().By("songType").By(__.BothE().Group<object, object>().By(T.Label).By(__.Values<object>("weight").Sum<object>()))}},
+ {"g_V_group_byXlabelX_byXbothE_groupXaX_byXlabelX_byXweight_sumX_weight_sumX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group<object, object>().By(T.Label).By(__.BothE().Group("a").By(T.Label).By(__.Values<object>("weight").Sum<object>()).Values<object>("weight").Sum<object>())}},
+ {"g_V_hasLabelXpersonX_asXpX_outXcreatedX_group_byXnameX_byXselectXpX_valuesXageX_sumX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().HasLabel("person").As("p").Out("created").Group<object, object>().By("name").By(__.Select<object>("p").Values<object>("age").Sum<object>())}},
+ {"g_V_group_byXlabelX_byXlabel_countX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Group<object, object>().By(__.Label()).By(__.Label().Count())}},
{"g_V_outXcreatedX_groupCount_byXnameX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Out("created").GroupCount<object>().By("name")}},
{"g_V_groupCount_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().GroupCount<object>().By("age")}},
- {"g_withStrategiesXProductiveByStrategyX_V_groupCount_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy(productiveKeys: new List<object> {})).V().GroupCount<object>().By("age")}},
+ {"g_withStrategiesXProductiveByStrategyX_V_groupCount_byXageX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.WithStrategies(new ProductiveByStrategy()).V().GroupCount<object>().By("age")}},
{"g_V_outXcreatedX_name_groupCount", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Out("created").Values<object>("name").GroupCount<object>()}},
{"g_V_outXcreatedX_groupCountXaX_byXnameX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Out("created").GroupCount("a").By("name").Cap<object>("a")}},
{"g_V_outXcreatedX_name_groupCountXaX_capXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Out("created").Values<object>("name").GroupCount("a").Cap<object>("a")}},
diff --cc gremlin-go/driver/cucumber/gremlin.go
index 1097cb2a5d,e68bddb1c8..4e12df2805
--- a/gremlin-go/driver/cucumber/gremlin.go
+++ b/gremlin-go/driver/cucumber/gremlin.go
@@@ -1418,13 -1399,36 +1418,37 @@@ var translationMap = map[string][]func(
"g_V_aggregateXlocal_a_nameX_out_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Aggregate(gremlingo.Scope.Local, "a").By("name").Out().Cap("a")}},
"g_VX1X_aggregateXlocal_aX_byXnameX_out_aggregateXlocal_aX_byXnameX_name_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V(p["vid1"]).Aggregate(gremlingo.Scope.Local, "a").By("name").Out().Aggregate(gremlingo.Scope.Local, "a").By("name").Values("name").Cap("a")}},
"g_withSideEffectXa_setX_V_both_name_aggregateXlocal_aX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", p["xx1"]).V().Both().Values("name").Aggregate(gremlingo.Scope.Local, "a").Cap("a")}},
+ "g_withSideEffectXa_set_inlineX_V_both_name_aggregateXlocal_aX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", gremlingo.NewSimpleSet("alice")).V().Both().Values("name").Aggregate(gremlingo.Scope.Local, "a").Cap("a")}},
"g_V_aggregateXlocal_aX_byXoutEXcreatedX_countX_out_out_aggregateXlocal_aX_byXinEXcreatedX_weight_sumX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Aggregate(gremlingo.Scope.Local, "a").By(gremlingo.T__.OutE("created").Count()).Out().Out().Aggregate(gremlingo.Scope.Local, "a").By(gremlingo.T__.InE("created").Values("weight").Sum()).Cap("a")}},
"g_V_aggregateXxX_byXvaluesXageX_isXgtX29XXX_capXxX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Aggregate("x").By(gremlingo.T__.Values("age").Is(gremlingo.P.Gt(29))).Cap("x")}},
- "g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXvaluesXageX_isXgtX29XXX_capXxX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.ProductiveByStrategy(gremlingo.ProductiveByStrategyConfig{ProductiveKeys: []string{}})).V().Aggregate("x").By(gremlingo.T__.Values("age").Is(gremlingo.P.Gt(29))).Cap("x")}},
+ "g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXvaluesXageX_isXgtX29XXX_capXxX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.ProductiveByStrategy()).V().Aggregate("x").By(gremlingo.T__.Values("age").Is(gremlingo.P.Gt(29))).Cap("x")}},
"g_V_aggregateXxX_byXout_order_byXnameXX_capXxX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Aggregate("x").By(gremlingo.T__.Out().Order().By("name")).Cap("x")}},
- "g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXout_order_byXnameXX_capXxX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.ProductiveByStrategy(gremlingo.ProductiveByStrategyConfig{ProductiveKeys: []string{}})).V().Aggregate("x").By(gremlingo.T__.Out().Order().By("name")).Cap("x")}},
+ "g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXout_order_byXnameXX_capXxX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithStrategies(gremlingo.ProductiveByStrategy()).V().Aggregate("x").By(gremlingo.T__.Out().Order().By("name")).Cap("x")}},
"g_V_aggregateXaX_hasXperson_age_gteX30XXX_capXaX_unfold_valuesXnameX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Aggregate("a").Has("person", "age", gremlingo.P.Gte(30)).Cap("a").Unfold().Values("name")}},
+ "g_withSideEffectXa_1_sumX_V_aggregateXaX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", 1, gremlingo.Operator.Sum).V().Aggregate("a").By("age").Cap("a")}},
+ "g_withSideEffectXa_1_sumX_V_aggregateXlocal_aX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", 1, gremlingo.Operator.Sum).V().Aggregate(gremlingo.Scope.Local, "a").By("age").Cap("a")}},
+ "g_withSideEffectXa_123_minusX_V_aggregateXaX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", 123, gremlingo.Operator.Minus).V().Aggregate("a").By("age").Cap("a")}},
+ "g_withSideEffectXa_123_minusX_V_aggregateXlocal_aX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", 123, gremlingo.Operator.Minus).V().Aggregate(gremlingo.Scope.Local, "a").By("age").Cap("a")}},
+ "g_withSideEffectXa_2_multX_V_aggregateXaX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", 2, gremlingo.Operator.Mult).V().Aggregate("a").By("age").Cap("a")}},
+ "g_withSideEffectXa_2_multX_V_aggregateXlocal_aX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", 2, gremlingo.Operator.Mult).V().Aggregate(gremlingo.Scope.Local, "a").By("age").Cap("a")}},
+ "g_withSideEffectXa_876960_divX_V_aggregateXaX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", 876960, gremlingo.Operator.Div).V().Aggregate("a").By("age").Cap("a")}},
+ "g_withSideEffectXa_876960_divX_V_aggregateXlocal_aX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", 876960, gremlingo.Operator.Div).V().Aggregate(gremlingo.Scope.Local, "a").By("age").Cap("a")}},
+ "g_withSideEffectXa_1_minX_V_aggregateXaX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", 1, gremlingo.Operator.Min).V().Aggregate("a").By("age").Cap("a")}},
+ "g_withSideEffectXa_1_minX_V_aggregateXlocal_aX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", 1, gremlingo.Operator.Min).V().Aggregate(gremlingo.Scope.Local, "a").By("age").Cap("a")}},
+ "g_withSideEffectXa_100_minX_V_aggregateXaX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", 100, gremlingo.Operator.Min).V().Aggregate("a").By("age").Cap("a")}},
+ "g_withSideEffectXa_100_minX_V_aggregateXlocal_aX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", 100, gremlingo.Operator.Min).V().Aggregate(gremlingo.Scope.Local, "a").By("age").Cap("a")}},
+ "g_withSideEffectXa_1_maxX_V_aggregateXaX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", 1, gremlingo.Operator.Max).V().Aggregate("a").By("age").Cap("a")}},
+ "g_withSideEffectXa_1_maxX_V_aggregateXlocal_aX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", 1, gremlingo.Operator.Max).V().Aggregate(gremlingo.Scope.Local, "a").By("age").Cap("a")}},
+ "g_withSideEffectXa_100_maxX_V_aggregateXaX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", 100, gremlingo.Operator.Max).V().Aggregate("a").By("age").Cap("a")}},
+ "g_withSideEffectXa_100_maxX_V_aggregateXlocal_aX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", 100, gremlingo.Operator.Max).V().Aggregate(gremlingo.Scope.Local, "a").By("age").Cap("a")}},
+ "g_withSideEffectXa_true_andX_V_constantXfalseX_aggregateXaX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", true, gremlingo.Operator.And).V().Constant(false).Aggregate("a").Cap("a")}},
+ "g_withSideEffectXa_true_andX_V_constantXfalseX_aggregateXlocal_aX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", true, gremlingo.Operator.And).V().Constant(false).Aggregate(gremlingo.Scope.Local, "a").Cap("a")}},
+ "g_withSideEffectXa_true_orX_V_constantXfalseX_aggregateXaX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", true, gremlingo.Operator.Or).V().Constant(false).Aggregate("a").Cap("a")}},
+ "g_withSideEffectXa_true_orX_V_constantXfalseX_aggregateXlocal_aX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", true, gremlingo.Operator.Or).V().Constant(false).Aggregate(gremlingo.Scope.Local, "a").Cap("a")}},
+ "g_withSideEffectXa_xx1_addAllX_V_aggregateXaX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", p["xx1"], gremlingo.Operator.AddAll).V().Aggregate("a").By("age").Cap("a")}},
+ "g_withSideEffectXa_xx1_addAllX_V_aggregateXlocal_aX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", p["xx1"], gremlingo.Operator.AddAll).V().Aggregate(gremlingo.Scope.Local, "a").By("age").Cap("a")}},
+ "g_withSideEffectXa_xx1_assignX_V_aggregateXaX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", p["xx1"], gremlingo.Operator.Assign).V().Aggregate("a").By("age").Cap("a")}},
+ "g_withSideEffectXa_xx1_assignX_V_order_byXageX_aggregateXlocal_aX_byXageX_capXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.WithSideEffect("a", p["xx1"], gremlingo.Operator.Assign).V().Order().By("age").Aggregate(gremlingo.Scope.Local, "a").By("age").Cap("a")}},
"g_V_fail": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Fail()}},
"g_V_failXmsgX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Fail("msg")}},
"g_V_unionXout_failX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Union(gremlingo.T__.Out(), gremlingo.T__.Fail())}},
diff --cc gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
index 2303335aae,abbee0f7ef..d4ba8ca726
--- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
+++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
@@@ -1434,24 -1414,47 +1434,48 @@@ const gremlins =
g_V_out_aggregateXaX_path: [function({g}) { return g.V().out().aggregate("a").path() }],
g_V_hasLabelXpersonX_aggregateXxX_byXageX_capXxX_asXyX_selectXyX: [function({g}) { return g.V().hasLabel("person").aggregate("x").by("age").cap("x").as("y").select("y") }],
g_V_aggregateXxX_byXageX_capXxX: [function({g}) { return g.V().aggregate("x").by("age").cap("x") }],
- g_V_aggregateXlocal_xX_byXageX_capXxX: [function({g}) { return g.V().aggregate(Scope.local,"x").by("age").cap("x") }],
- g_withStrategiesXProductiveByStrategyX_V_aggregateXlocal_xX_byXageX_capXxX: [function({g}) { return g.withStrategies(new ProductiveByStrategy({productiveKeys:[]})).V().aggregate(Scope.local,"x").by("age").cap("x") }],
- g_V_aggregateXlocal_a_nameX_out_capXaX: [function({g}) { return g.V().aggregate(Scope.local,"a").by("name").out().cap("a") }],
- g_VX1X_aggregateXlocal_aX_byXnameX_out_aggregateXlocal_aX_byXnameX_name_capXaX: [function({g, vid1}) { return g.V(vid1).aggregate(Scope.local,"a").by("name").out().aggregate(Scope.local,"a").by("name").values("name").cap("a") }],
- g_withSideEffectXa_setX_V_both_name_aggregateXlocal_aX_capXaX: [function({g, xx1}) { return g.withSideEffect("a",xx1).V().both().values("name").aggregate(Scope.local,"a").cap("a") }],
- g_V_aggregateXlocal_aX_byXoutEXcreatedX_countX_out_out_aggregateXlocal_aX_byXinEXcreatedX_weight_sumX: [function({g}) { return g.V().aggregate(Scope.local,"a").by(__.outE("created").count()).out().out().aggregate(Scope.local,"a").by(__.inE("created").values("weight").sum()).cap("a") }],
+ g_V_aggregateXlocal_xX_byXageX_capXxX: [function({g}) { return g.V().aggregate(Scope.local, "x").by("age").cap("x") }],
+ g_withStrategiesXProductiveByStrategyX_V_aggregateXlocal_xX_byXageX_capXxX: [function({g}) { return g.withStrategies(new ProductiveByStrategy()).V().aggregate(Scope.local, "x").by("age").cap("x") }],
+ g_V_aggregateXlocal_a_nameX_out_capXaX: [function({g}) { return g.V().aggregate(Scope.local, "a").by("name").out().cap("a") }],
+ g_VX1X_aggregateXlocal_aX_byXnameX_out_aggregateXlocal_aX_byXnameX_name_capXaX: [function({g, vid1}) { return g.V(vid1).aggregate(Scope.local, "a").by("name").out().aggregate(Scope.local, "a").by("name").values("name").cap("a") }],
+ g_withSideEffectXa_setX_V_both_name_aggregateXlocal_aX_capXaX: [function({g, xx1}) { return g.withSideEffect("a", xx1).V().both().values("name").aggregate(Scope.local, "a").cap("a") }],
+ g_withSideEffectXa_set_inlineX_V_both_name_aggregateXlocal_aX_capXaX: [function({g}) { return g.withSideEffect("a", new Set(["alice"])).V().both().values("name").aggregate(Scope.local, "a").cap("a") }],
+ g_V_aggregateXlocal_aX_byXoutEXcreatedX_countX_out_out_aggregateXlocal_aX_byXinEXcreatedX_weight_sumX: [function({g}) { return g.V().aggregate(Scope.local, "a").by(__.outE("created").count()).out().out().aggregate(Scope.local, "a").by(__.inE("created").values("weight").sum()).cap("a") }],
g_V_aggregateXxX_byXvaluesXageX_isXgtX29XXX_capXxX: [function({g}) { return g.V().aggregate("x").by(__.values("age").is(P.gt(29))).cap("x") }],
- g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXvaluesXageX_isXgtX29XXX_capXxX: [function({g}) { return g.withStrategies(new ProductiveByStrategy({productiveKeys:[]})).V().aggregate("x").by(__.values("age").is(P.gt(29))).cap("x") }],
+ g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXvaluesXageX_isXgtX29XXX_capXxX: [function({g}) { return g.withStrategies(new ProductiveByStrategy()).V().aggregate("x").by(__.values("age").is(P.gt(29))).cap("x") }],
g_V_aggregateXxX_byXout_order_byXnameXX_capXxX: [function({g}) { return g.V().aggregate("x").by(__.out().order().by("name")).cap("x") }],
- g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXout_order_byXnameXX_capXxX: [function({g}) { return g.withStrategies(new ProductiveByStrategy({productiveKeys:[]})).V().aggregate("x").by(__.out().order().by("name")).cap("x") }],
- g_V_aggregateXaX_hasXperson_age_gteX30XXX_capXaX_unfold_valuesXnameX: [function({g}) { return g.V().aggregate("a").has("person","age",P.gte(30)).cap("a").unfold().values("name") }],
- g_withSideEffectXa_1_sumX_V_aggregateXaX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a",1,Operator.sum).V().aggregate("a").by("age").cap("a") }],
- g_withSideEffectXa_1_sumX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a",1,Operator.sum).V().aggregate(Scope.local,"a").by("age").cap("a") }],
- g_withSideEffectXa_123_minusX_V_aggregateXaX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a",123,Operator.minus).V().aggregate("a").by("age").cap("a") }],
- g_withSideEffectXa_123_minusX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a",123,Operator.minus).V().aggregate(Scope.local,"a").by("age").cap("a") }],
- g_withSideEffectXa_2_multX_V_aggregateXaX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a",2,Operator.mult).V().aggregate("a").by("age").cap("a") }],
- g_withSideEffectXa_2_multX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a",2,Operator.mult).V().aggregate(Scope.local,"a").by("age").cap("a") }],
- g_withSideEffectXa_876960_divX_V_aggregateXaX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a",876960,Operator.div).V().aggregate("a").by("age").cap("a") }],
- g_withSideEffectXa_876960_divX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a",876960,Operator.div).V().aggregate(Scope.local,"a").by("age").cap("a") }],
- g_withSideEffectXa_1_minX_V_aggregateXaX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a",1,Operator.min).V().aggregate("a").by("age").cap("a") }],
- g_withSideEffectXa_1_minX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a",1,Operator.min).V().aggregate(Scope.local,"a").by("age").cap("a") }],
- g_withSideEffectXa_100_minX_V_aggregateXaX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a",100,Operator.min).V().aggregate("a").by("age").cap("a") }],
- g_withSideEffectXa_100_minX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a",100,Operator.min).V().aggregate(Scope.local,"a").by("age").cap("a") }],
- g_withSideEffectXa_1_maxX_V_aggregateXaX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a",1,Operator.max).V().aggregate("a").by("age").cap("a") }],
- g_withSideEffectXa_1_maxX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a",1,Operator.max).V().aggregate(Scope.local,"a").by("age").cap("a") }],
- g_withSideEffectXa_100_maxX_V_aggregateXaX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a",100,Operator.max).V().aggregate("a").by("age").cap("a") }],
- g_withSideEffectXa_100_maxX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a",100,Operator.max).V().aggregate(Scope.local,"a").by("age").cap("a") }],
- g_withSideEffectXa_true_andX_V_constantXfalseX_aggregateXaX_capXaX: [function({g}) { return g.withSideEffect("a",true,Operator.and).V().constant(false).aggregate("a").cap("a") }],
- g_withSideEffectXa_true_andX_V_constantXfalseX_aggregateXlocal_aX_capXaX: [function({g}) { return g.withSideEffect("a",true,Operator.and).V().constant(false).aggregate(Scope.local,"a").cap("a") }],
- g_withSideEffectXa_true_orX_V_constantXfalseX_aggregateXaX_capXaX: [function({g}) { return g.withSideEffect("a",true,Operator.or).V().constant(false).aggregate("a").cap("a") }],
- g_withSideEffectXa_true_orX_V_constantXfalseX_aggregateXlocal_aX_capXaX: [function({g}) { return g.withSideEffect("a",true,Operator.or).V().constant(false).aggregate(Scope.local,"a").cap("a") }],
- g_withSideEffectXa_xx1_addAllX_V_aggregateXaX_byXageX_capXaX: [function({g, xx1}) { return g.withSideEffect("a",xx1,Operator.addAll).V().aggregate("a").by("age").cap("a") }],
- g_withSideEffectXa_xx1_addAllX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g, xx1}) { return g.withSideEffect("a",xx1,Operator.addAll).V().aggregate(Scope.local,"a").by("age").cap("a") }],
- g_withSideEffectXa_xx1_assignX_V_aggregateXaX_byXageX_capXaX: [function({g, xx1}) { return g.withSideEffect("a",xx1,Operator.assign).V().aggregate("a").by("age").cap("a") }],
- g_withSideEffectXa_xx1_assignX_V_order_byXageX_aggregateXlocal_aX_byXageX_capXaX: [function({g, xx1}) { return g.withSideEffect("a",xx1,Operator.assign).V().order().by("age").aggregate(Scope.local,"a").by("age").cap("a") }],
+ g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXout_order_byXnameXX_capXxX: [function({g}) { return g.withStrategies(new ProductiveByStrategy()).V().aggregate("x").by(__.out().order().by("name")).cap("x") }],
+ g_V_aggregateXaX_hasXperson_age_gteX30XXX_capXaX_unfold_valuesXnameX: [function({g}) { return g.V().aggregate("a").has("person", "age", P.gte(30)).cap("a").unfold().values("name") }],
++ g_withSideEffectXa_1_sumX_V_aggregateXaX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a", 1, Operator.sum).V().aggregate("a").by("age").cap("a") }],
++ g_withSideEffectXa_1_sumX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a", 1, Operator.sum).V().aggregate(Scope.local, "a").by("age").cap("a") }],
++ g_withSideEffectXa_123_minusX_V_aggregateXaX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a", 123, Operator.minus).V().aggregate("a").by("age").cap("a") }],
++ g_withSideEffectXa_123_minusX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a", 123, Operator.minus).V().aggregate(Scope.local, "a").by("age").cap("a") }],
++ g_withSideEffectXa_2_multX_V_aggregateXaX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a", 2, Operator.mult).V().aggregate("a").by("age").cap("a") }],
++ g_withSideEffectXa_2_multX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a", 2, Operator.mult).V().aggregate(Scope.local, "a").by("age").cap("a") }],
++ g_withSideEffectXa_876960_divX_V_aggregateXaX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a", 876960, Operator.div).V().aggregate("a").by("age").cap("a") }],
++ g_withSideEffectXa_876960_divX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a", 876960, Operator.div).V().aggregate(Scope.local, "a").by("age").cap("a") }],
++ g_withSideEffectXa_1_minX_V_aggregateXaX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a", 1, Operator.min).V().aggregate("a").by("age").cap("a") }],
++ g_withSideEffectXa_1_minX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a", 1, Operator.min).V().aggregate(Scope.local, "a").by("age").cap("a") }],
++ g_withSideEffectXa_100_minX_V_aggregateXaX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a", 100, Operator.min).V().aggregate("a").by("age").cap("a") }],
++ g_withSideEffectXa_100_minX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a", 100, Operator.min).V().aggregate(Scope.local, "a").by("age").cap("a") }],
++ g_withSideEffectXa_1_maxX_V_aggregateXaX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a", 1, Operator.max).V().aggregate("a").by("age").cap("a") }],
++ g_withSideEffectXa_1_maxX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a", 1, Operator.max).V().aggregate(Scope.local, "a").by("age").cap("a") }],
++ g_withSideEffectXa_100_maxX_V_aggregateXaX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a", 100, Operator.max).V().aggregate("a").by("age").cap("a") }],
++ g_withSideEffectXa_100_maxX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g}) { return g.withSideEffect("a", 100, Operator.max).V().aggregate(Scope.local, "a").by("age").cap("a") }],
++ g_withSideEffectXa_true_andX_V_constantXfalseX_aggregateXaX_capXaX: [function({g}) { return g.withSideEffect("a", true, Operator.and).V().constant(false).aggregate("a").cap("a") }],
++ g_withSideEffectXa_true_andX_V_constantXfalseX_aggregateXlocal_aX_capXaX: [function({g}) { return g.withSideEffect("a", true, Operator.and).V().constant(false).aggregate(Scope.local, "a").cap("a") }],
++ g_withSideEffectXa_true_orX_V_constantXfalseX_aggregateXaX_capXaX: [function({g}) { return g.withSideEffect("a", true, Operator.or).V().constant(false).aggregate("a").cap("a") }],
++ g_withSideEffectXa_true_orX_V_constantXfalseX_aggregateXlocal_aX_capXaX: [function({g}) { return g.withSideEffect("a", true, Operator.or).V().constant(false).aggregate(Scope.local, "a").cap("a") }],
++ g_withSideEffectXa_xx1_addAllX_V_aggregateXaX_byXageX_capXaX: [function({g, xx1}) { return g.withSideEffect("a", xx1, Operator.addAll).V().aggregate("a").by("age").cap("a") }],
++ g_withSideEffectXa_xx1_addAllX_V_aggregateXlocal_aX_byXageX_capXaX: [function({g, xx1}) { return g.withSideEffect("a", xx1, Operator.addAll).V().aggregate(Scope.local, "a").by("age").cap("a") }],
++ g_withSideEffectXa_xx1_assignX_V_aggregateXaX_byXageX_capXaX: [function({g, xx1}) { return g.withSideEffect("a", xx1, Operator.assign).V().aggregate("a").by("age").cap("a") }],
++ g_withSideEffectXa_xx1_assignX_V_order_byXageX_aggregateXlocal_aX_byXageX_capXaX: [function({g, xx1}) { return g.withSideEffect("a", xx1, Operator.assign).V().order().by("age").aggregate(Scope.local, "a").by("age").cap("a") }],
g_V_fail: [function({g}) { return g.V().fail() }],
g_V_failXmsgX: [function({g}) { return g.V().fail("msg") }],
- g_V_unionXout_failX: [function({g}) { return g.V().union(__.out(),__.fail()) }],
+ g_V_unionXout_failX: [function({g}) { return g.V().union(__.out(), __.fail()) }],
g_V_group_byXnameX: [function({g}) { return g.V().group().by("name") }],
g_V_group_byXageX: [function({g}) { return g.V().group().by("age") }],
- g_withStrategiesXProductiveByStrategyX_V_group_byXageX: [function({g}) { return g.withStrategies(new ProductiveByStrategy({productiveKeys:[]})).V().group().by("age") }],
+ g_withStrategiesXProductiveByStrategyX_V_group_byXageX: [function({g}) { return g.withStrategies(new ProductiveByStrategy()).V().group().by("age") }],
g_V_group_byXnameX_byXageX: [function({g}) { return g.V().group().by("name").by("age") }],
g_V_group_byXnameX_by: [function({g}) { return g.V().group().by("name").by() }],
g_V_hasXlangX_group_byXlangX_byXcountX: [function({g}) { return g.V().has("lang").group().by("lang").by(__.count()) }],
diff --cc gremlin-python/src/main/python/radish/gremlin.py
index b3b4abadc1,562e4ff6bd..c7361542a2
--- a/gremlin-python/src/main/python/radish/gremlin.py
+++ b/gremlin-python/src/main/python/radish/gremlin.py
@@@ -1410,30 -1390,53 +1410,54 @@@ world.gremlins =
'g_V_out_out_properties_asXheadX_path_order_byXdescX_selectXheadX_value': [(lambda g:g.V().out().out().properties().as_('head').path().order().by(Order.desc).select('head').value())],
'g_V_out_out_values_asXheadX_path_order_byXascX_selectXheadX': [(lambda g:g.V().out().out().values().as_('head').path().order().by(Order.asc).select('head'))],
'g_V_out_out_values_asXheadX_path_order_byXdescX_selectXheadX': [(lambda g:g.V().out().out().values().as_('head').path().order().by(Order.desc).select('head'))],
- 'g_V_valueXnameX_aggregateXxX_capXxX': [(lambda g:g.V().name.aggregate('x').cap('x'))],
- 'g_V_valueXnameX_aggregateXglobal_xX_capXxX': [(lambda g:g.V().name.aggregate(Scope.global_,'x').cap('x'))],
+ 'g_V_valueXnameX_aggregateXxX_capXxX': [(lambda g:g.V().values('name').aggregate('x').cap('x'))],
+ 'g_V_valueXnameX_aggregateXglobal_xX_capXxX': [(lambda g:g.V().values('name').aggregate(Scope.global_, 'x').cap('x'))],
'g_V_aggregateXxX_byXnameX_capXxX': [(lambda g:g.V().aggregate('x').by('name').cap('x'))],
'g_V_out_aggregateXaX_path': [(lambda g:g.V().out().aggregate('a').path())],
- 'g_V_hasLabelXpersonX_aggregateXxX_byXageX_capXxX_asXyX_selectXyX': [(lambda g:g.V().hasLabel('person').aggregate('x').by('age').cap('x').as_('y').select('y'))],
+ 'g_V_hasLabelXpersonX_aggregateXxX_byXageX_capXxX_asXyX_selectXyX': [(lambda g:g.V().has_label('person').aggregate('x').by('age').cap('x').as_('y').select('y'))],
'g_V_aggregateXxX_byXageX_capXxX': [(lambda g:g.V().aggregate('x').by('age').cap('x'))],
- 'g_V_aggregateXlocal_xX_byXageX_capXxX': [(lambda g:g.V().aggregate(Scope.local,'x').by('age').cap('x'))],
- 'g_withStrategiesXProductiveByStrategyX_V_aggregateXlocal_xX_byXageX_capXxX': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().aggregate(Scope.local,'x').by('age').cap('x'))],
- 'g_V_aggregateXlocal_a_nameX_out_capXaX': [(lambda g:g.V().aggregate(Scope.local,'a').by('name').out().cap('a'))],
- 'g_VX1X_aggregateXlocal_aX_byXnameX_out_aggregateXlocal_aX_byXnameX_name_capXaX': [(lambda g, vid1=None:g.V(vid1).aggregate(Scope.local,'a').by('name').out().aggregate(Scope.local,'a').by('name').name.cap('a'))],
- 'g_withSideEffectXa_setX_V_both_name_aggregateXlocal_aX_capXaX': [(lambda g, xx1=None:g.withSideEffect('a',xx1).V().both().name.aggregate(Scope.local,'a').cap('a'))],
- 'g_V_aggregateXlocal_aX_byXoutEXcreatedX_countX_out_out_aggregateXlocal_aX_byXinEXcreatedX_weight_sumX': [(lambda g:g.V().aggregate(Scope.local,'a').by(__.outE('created').count()).out().out().aggregate(Scope.local,'a').by(__.inE('created').weight.sum_()).cap('a'))],
- 'g_V_aggregateXxX_byXvaluesXageX_isXgtX29XXX_capXxX': [(lambda g:g.V().aggregate('x').by(__.age.is_(P.gt(29))).cap('x'))],
- 'g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXvaluesXageX_isXgtX29XXX_capXxX': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().aggregate('x').by(__.age.is_(P.gt(29))).cap('x'))],
+ 'g_V_aggregateXlocal_xX_byXageX_capXxX': [(lambda g:g.V().aggregate(Scope.local, 'x').by('age').cap('x'))],
+ 'g_withStrategiesXProductiveByStrategyX_V_aggregateXlocal_xX_byXageX_capXxX': [(lambda g:g.with_strategies(ProductiveByStrategy()).V().aggregate(Scope.local, 'x').by('age').cap('x'))],
+ 'g_V_aggregateXlocal_a_nameX_out_capXaX': [(lambda g:g.V().aggregate(Scope.local, 'a').by('name').out().cap('a'))],
+ 'g_VX1X_aggregateXlocal_aX_byXnameX_out_aggregateXlocal_aX_byXnameX_name_capXaX': [(lambda g, vid1=None:g.V(vid1).aggregate(Scope.local, 'a').by('name').out().aggregate(Scope.local, 'a').by('name').values('name').cap('a'))],
+ 'g_withSideEffectXa_setX_V_both_name_aggregateXlocal_aX_capXaX': [(lambda g, xx1=None:g.with_side_effect('a', xx1).V().both().values('name').aggregate(Scope.local, 'a').cap('a'))],
+ 'g_withSideEffectXa_set_inlineX_V_both_name_aggregateXlocal_aX_capXaX': [(lambda g:g.with_side_effect('a', {'alice'}).V().both().values('name').aggregate(Scope.local, 'a').cap('a'))],
+ 'g_V_aggregateXlocal_aX_byXoutEXcreatedX_countX_out_out_aggregateXlocal_aX_byXinEXcreatedX_weight_sumX': [(lambda g:g.V().aggregate(Scope.local, 'a').by(__.out_e('created').count()).out().out().aggregate(Scope.local, 'a').by(__.in_e('created').values('weight').sum_()).cap('a'))],
+ 'g_V_aggregateXxX_byXvaluesXageX_isXgtX29XXX_capXxX': [(lambda g:g.V().aggregate('x').by(__.values('age').is_(P.gt(29))).cap('x'))],
+ 'g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXvaluesXageX_isXgtX29XXX_capXxX': [(lambda g:g.with_strategies(ProductiveByStrategy()).V().aggregate('x').by(__.values('age').is_(P.gt(29))).cap('x'))],
'g_V_aggregateXxX_byXout_order_byXnameXX_capXxX': [(lambda g:g.V().aggregate('x').by(__.out().order().by('name')).cap('x'))],
- 'g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXout_order_byXnameXX_capXxX': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().aggregate('x').by(__.out().order().by('name')).cap('x'))],
- 'g_V_aggregateXaX_hasXperson_age_gteX30XXX_capXaX_unfold_valuesXnameX': [(lambda g:g.V().aggregate('a').has('person','age',P.gte(30)).cap('a').unfold().name)],
- 'g_withSideEffectXa_1_sumX_V_aggregateXaX_byXageX_capXaX': [(lambda g:g.withSideEffect('a',1,Operator.sum_).V().aggregate('a').by('age').cap('a'))],
- 'g_withSideEffectXa_1_sumX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g:g.withSideEffect('a',1,Operator.sum_).V().aggregate(Scope.local,'a').by('age').cap('a'))],
- 'g_withSideEffectXa_123_minusX_V_aggregateXaX_byXageX_capXaX': [(lambda g:g.withSideEffect('a',123,Operator.minus).V().aggregate('a').by('age').cap('a'))],
- 'g_withSideEffectXa_123_minusX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g:g.withSideEffect('a',123,Operator.minus).V().aggregate(Scope.local,'a').by('age').cap('a'))],
- 'g_withSideEffectXa_2_multX_V_aggregateXaX_byXageX_capXaX': [(lambda g:g.withSideEffect('a',2,Operator.mult).V().aggregate('a').by('age').cap('a'))],
- 'g_withSideEffectXa_2_multX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g:g.withSideEffect('a',2,Operator.mult).V().aggregate(Scope.local,'a').by('age').cap('a'))],
- 'g_withSideEffectXa_876960_divX_V_aggregateXaX_byXageX_capXaX': [(lambda g:g.withSideEffect('a',876960,Operator.div).V().aggregate('a').by('age').cap('a'))],
- 'g_withSideEffectXa_876960_divX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g:g.withSideEffect('a',876960,Operator.div).V().aggregate(Scope.local,'a').by('age').cap('a'))],
- 'g_withSideEffectXa_1_minX_V_aggregateXaX_byXageX_capXaX': [(lambda g:g.withSideEffect('a',1,Operator.min_).V().aggregate('a').by('age').cap('a'))],
- 'g_withSideEffectXa_1_minX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g:g.withSideEffect('a',1,Operator.min_).V().aggregate(Scope.local,'a').by('age').cap('a'))],
- 'g_withSideEffectXa_100_minX_V_aggregateXaX_byXageX_capXaX': [(lambda g:g.withSideEffect('a',100,Operator.min_).V().aggregate('a').by('age').cap('a'))],
- 'g_withSideEffectXa_100_minX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g:g.withSideEffect('a',100,Operator.min_).V().aggregate(Scope.local,'a').by('age').cap('a'))],
- 'g_withSideEffectXa_1_maxX_V_aggregateXaX_byXageX_capXaX': [(lambda g:g.withSideEffect('a',1,Operator.max_).V().aggregate('a').by('age').cap('a'))],
- 'g_withSideEffectXa_1_maxX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g:g.withSideEffect('a',1,Operator.max_).V().aggregate(Scope.local,'a').by('age').cap('a'))],
- 'g_withSideEffectXa_100_maxX_V_aggregateXaX_byXageX_capXaX': [(lambda g:g.withSideEffect('a',100,Operator.max_).V().aggregate('a').by('age').cap('a'))],
- 'g_withSideEffectXa_100_maxX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g:g.withSideEffect('a',100,Operator.max_).V().aggregate(Scope.local,'a').by('age').cap('a'))],
- 'g_withSideEffectXa_true_andX_V_constantXfalseX_aggregateXaX_capXaX': [(lambda g:g.withSideEffect('a',True,Operator.and_).V().constant(False).aggregate('a').cap('a'))],
- 'g_withSideEffectXa_true_andX_V_constantXfalseX_aggregateXlocal_aX_capXaX': [(lambda g:g.withSideEffect('a',True,Operator.and_).V().constant(False).aggregate(Scope.local,'a').cap('a'))],
- 'g_withSideEffectXa_true_orX_V_constantXfalseX_aggregateXaX_capXaX': [(lambda g:g.withSideEffect('a',True,Operator.or_).V().constant(False).aggregate('a').cap('a'))],
- 'g_withSideEffectXa_true_orX_V_constantXfalseX_aggregateXlocal_aX_capXaX': [(lambda g:g.withSideEffect('a',True,Operator.or_).V().constant(False).aggregate(Scope.local,'a').cap('a'))],
- 'g_withSideEffectXa_xx1_addAllX_V_aggregateXaX_byXageX_capXaX': [(lambda g, xx1=None:g.withSideEffect('a',xx1,Operator.addAll).V().aggregate('a').by('age').cap('a'))],
- 'g_withSideEffectXa_xx1_addAllX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g, xx1=None:g.withSideEffect('a',xx1,Operator.addAll).V().aggregate(Scope.local,'a').by('age').cap('a'))],
- 'g_withSideEffectXa_xx1_assignX_V_aggregateXaX_byXageX_capXaX': [(lambda g, xx1=None:g.withSideEffect('a',xx1,Operator.assign).V().aggregate('a').by('age').cap('a'))],
- 'g_withSideEffectXa_xx1_assignX_V_order_byXageX_aggregateXlocal_aX_byXageX_capXaX': [(lambda g, xx1=None:g.withSideEffect('a',xx1,Operator.assign).V().order().by('age').aggregate(Scope.local,'a').by('age').cap('a'))],
+ 'g_withStrategiesXProductiveByStrategyX_V_aggregateXxX_byXout_order_byXnameXX_capXxX': [(lambda g:g.with_strategies(ProductiveByStrategy()).V().aggregate('x').by(__.out().order().by('name')).cap('x'))],
+ 'g_V_aggregateXaX_hasXperson_age_gteX30XXX_capXaX_unfold_valuesXnameX': [(lambda g:g.V().aggregate('a').has('person', 'age', P.gte(30)).cap('a').unfold().values('name'))],
++ 'g_withSideEffectXa_1_sumX_V_aggregateXaX_byXageX_capXaX': [(lambda g:g.with_side_effect('a', 1, Operator.sum_).V().aggregate('a').by('age').cap('a'))],
++ 'g_withSideEffectXa_1_sumX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g:g.with_side_effect('a', 1, Operator.sum_).V().aggregate(Scope.local, 'a').by('age').cap('a'))],
++ 'g_withSideEffectXa_123_minusX_V_aggregateXaX_byXageX_capXaX': [(lambda g:g.with_side_effect('a', 123, Operator.minus).V().aggregate('a').by('age').cap('a'))],
++ 'g_withSideEffectXa_123_minusX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g:g.with_side_effect('a', 123, Operator.minus).V().aggregate(Scope.local, 'a').by('age').cap('a'))],
++ 'g_withSideEffectXa_2_multX_V_aggregateXaX_byXageX_capXaX': [(lambda g:g.with_side_effect('a', 2, Operator.mult).V().aggregate('a').by('age').cap('a'))],
++ 'g_withSideEffectXa_2_multX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g:g.with_side_effect('a', 2, Operator.mult).V().aggregate(Scope.local, 'a').by('age').cap('a'))],
++ 'g_withSideEffectXa_876960_divX_V_aggregateXaX_byXageX_capXaX': [(lambda g:g.with_side_effect('a', 876960, Operator.div).V().aggregate('a').by('age').cap('a'))],
++ 'g_withSideEffectXa_876960_divX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g:g.with_side_effect('a', 876960, Operator.div).V().aggregate(Scope.local, 'a').by('age').cap('a'))],
++ 'g_withSideEffectXa_1_minX_V_aggregateXaX_byXageX_capXaX': [(lambda g:g.with_side_effect('a', 1, Operator.min_).V().aggregate('a').by('age').cap('a'))],
++ 'g_withSideEffectXa_1_minX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g:g.with_side_effect('a', 1, Operator.min_).V().aggregate(Scope.local, 'a').by('age').cap('a'))],
++ 'g_withSideEffectXa_100_minX_V_aggregateXaX_byXageX_capXaX': [(lambda g:g.with_side_effect('a', 100, Operator.min_).V().aggregate('a').by('age').cap('a'))],
++ 'g_withSideEffectXa_100_minX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g:g.with_side_effect('a', 100, Operator.min_).V().aggregate(Scope.local, 'a').by('age').cap('a'))],
++ 'g_withSideEffectXa_1_maxX_V_aggregateXaX_byXageX_capXaX': [(lambda g:g.with_side_effect('a', 1, Operator.max_).V().aggregate('a').by('age').cap('a'))],
++ 'g_withSideEffectXa_1_maxX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g:g.with_side_effect('a', 1, Operator.max_).V().aggregate(Scope.local, 'a').by('age').cap('a'))],
++ 'g_withSideEffectXa_100_maxX_V_aggregateXaX_byXageX_capXaX': [(lambda g:g.with_side_effect('a', 100, Operator.max_).V().aggregate('a').by('age').cap('a'))],
++ 'g_withSideEffectXa_100_maxX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g:g.with_side_effect('a', 100, Operator.max_).V().aggregate(Scope.local, 'a').by('age').cap('a'))],
++ 'g_withSideEffectXa_true_andX_V_constantXfalseX_aggregateXaX_capXaX': [(lambda g:g.with_side_effect('a', True, Operator.and_).V().constant(False).aggregate('a').cap('a'))],
++ 'g_withSideEffectXa_true_andX_V_constantXfalseX_aggregateXlocal_aX_capXaX': [(lambda g:g.with_side_effect('a', True, Operator.and_).V().constant(False).aggregate(Scope.local, 'a').cap('a'))],
++ 'g_withSideEffectXa_true_orX_V_constantXfalseX_aggregateXaX_capXaX': [(lambda g:g.with_side_effect('a', True, Operator.or_).V().constant(False).aggregate('a').cap('a'))],
++ 'g_withSideEffectXa_true_orX_V_constantXfalseX_aggregateXlocal_aX_capXaX': [(lambda g:g.with_side_effect('a', True, Operator.or_).V().constant(False).aggregate(Scope.local, 'a').cap('a'))],
++ 'g_withSideEffectXa_xx1_addAllX_V_aggregateXaX_byXageX_capXaX': [(lambda g, xx1=None:g.with_side_effect('a', xx1, Operator.add_all).V().aggregate('a').by('age').cap('a'))],
++ 'g_withSideEffectXa_xx1_addAllX_V_aggregateXlocal_aX_byXageX_capXaX': [(lambda g, xx1=None:g.with_side_effect('a', xx1, Operator.add_all).V().aggregate(Scope.local, 'a').by('age').cap('a'))],
++ 'g_withSideEffectXa_xx1_assignX_V_aggregateXaX_byXageX_capXaX': [(lambda g, xx1=None:g.with_side_effect('a', xx1, Operator.assign).V().aggregate('a').by('age').cap('a'))],
++ 'g_withSideEffectXa_xx1_assignX_V_order_byXageX_aggregateXlocal_aX_byXageX_capXaX': [(lambda g, xx1=None:g.with_side_effect('a', xx1, Operator.assign).V().order().by('age').aggregate(Scope.local, 'a').by('age').cap('a'))],
'g_V_fail': [(lambda g:g.V().fail())],
'g_V_failXmsgX': [(lambda g:g.V().fail('msg'))],
- 'g_V_unionXout_failX': [(lambda g:g.V().union(__.out(),__.fail()))],
+ 'g_V_unionXout_failX': [(lambda g:g.V().union(__.out(), __.fail()))],
'g_V_group_byXnameX': [(lambda g:g.V().group().by('name'))],
'g_V_group_byXageX': [(lambda g:g.V().group().by('age'))],
- 'g_withStrategiesXProductiveByStrategyX_V_group_byXageX': [(lambda g:g.withStrategies(*[TraversalStrategy('ProductiveByStrategy',{'productiveKeys':[],'strategy':'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy'}, 'org.apache.tinkerpop.gremlin.process.traversal.strategy.optimization.ProductiveByStrategy')]).V().group().by('age'))],
+ 'g_withStrategiesXProductiveByStrategyX_V_group_byXageX': [(lambda g:g.with_strategies(ProductiveByStrategy()).V().group().by('age'))],
'g_V_group_byXnameX_byXageX': [(lambda g:g.V().group().by('name').by('age'))],
'g_V_group_byXnameX_by': [(lambda g:g.V().group().by('name').by())],
'g_V_hasXlangX_group_byXlangX_byXcountX': [(lambda g:g.V().has('lang').group().by('lang').by(__.count()))],