This is an automated email from the ASF dual-hosted git repository.
colegreer pushed a commit to branch 3.8-dev
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/3.8-dev by this push:
new c41cd330a8 CTR Fix OLAP-Spark-Yarn docs example
c41cd330a8 is described below
commit c41cd330a805f7c8dcb9e6b2c356eea6368ffdcb
Author: Cole-Greer <[email protected]>
AuthorDate: Wed Oct 29 18:23:43 2025 -0700
CTR Fix OLAP-Spark-Yarn docs example
---
.../gremlin/process/traversal/util/PureTraversal.java | 4 +++-
.../test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs | 5 +++--
gremlin-go/driver/cucumber/gremlin.go | 5 +++--
.../javascript/gremlin-javascript/test/cucumber/gremlin.js | 5 +++--
gremlin-python/src/main/python/radish/gremlin.py | 5 +++--
.../tinkerpop/gremlin/test/features/sideEffect/Group.feature | 11 +++++++++++
6 files changed, 26 insertions(+), 9 deletions(-)
diff --git
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/PureTraversal.java
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/PureTraversal.java
index e67f1e971a..e3a7c881f6 100644
---
a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/PureTraversal.java
+++
b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/PureTraversal.java
@@ -37,7 +37,9 @@ public final class PureTraversal<S, E> implements
Serializable, Cloneable {
public PureTraversal(final Traversal.Admin<S, E> pureTraversal) {
if (!pureTraversal.isLocked()) {
- GValueReductionStrategy.instance().apply(pureTraversal);
+ TraversalHelper.applyTraversalRecursively(t -> {
+ GValueReductionStrategy.instance().apply(t);
+ }, pureTraversal);
}
this.pureTraversal = pureTraversal;
}
diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
index abb46e1776..41ee732b1b 100644
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
@@ -879,8 +879,8 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
{"g_addV_asXfirstX_repeatXaddEXnextX_toXaddVX_inVX_timesX5X_addEXnextX_toXselectXfirstXX",
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p)
=>g.AddV().As("first").Repeat(__.AddE("next").To(__.AddV()).InV()).Times(5).AddE("next").To(__.Select<object>("first")),
(g,p) =>g.V(), (g,p) =>g.E(), (g,p) =>g.E().HasLabel("next"), (g,p)
=>g.V().Limit<object>(1).BothE(), (g,p) =>g.V().Limit<object>(1).InE(), (g,p)
=>g.V().Limit<object>(1).OutE()}},
{"g_V_hasXname_markoX_asXaX_outEXcreatedX_asXbX_inV_addEXselectXbX_labelX_toXaX",
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p) =>g.AddV("person").Property("name", "marko").Property("age",
29).As("marko").AddV("person").Property("name", "vadas").Property("age",
27).As("vadas").AddV("software").Property("name", "lop").Property("lang",
"java").As("lop").AddV("person").Property("name", "josh").Property("age",
32).As("josh").AddV("softwar [...]
{"g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_descX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX",
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p) =>g.AddV("person").Property("name", "marko").Property("age",
29).As("marko").AddV("person").Property("name", "vadas").Property("age",
27).As("vadas").AddV("software").Property("name", "lop").Property("lang",
"java").As("lop").AddV("person").Property("nam [...]
- {"g_addEXknowsX_fromXaX_toXbX_propertyXweight_0_1X", new
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p) =>g.AddV("person").Property("name", "marko").Property("age",
29).As("marko").AddV("person").Property("name", "vadas").Property("age",
27).As("vadas").AddV("software").Property("name", "lop").Property("lang",
"java").As("lop").AddV("person").Property("name", "josh").Property("age",
32).As("josh").AddV("software").Property("name", "ripple" [...]
- {"g_addEXknowsvarX_fromXaX_toXbX_propertyXweight_0_1X", new
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p) =>g.AddV("person").Property("name", "marko").Property("age",
29).As("marko").AddV("person").Property("name", "vadas").Property("age",
27).As("vadas").AddV("software").Property("name", "lop").Property("lang",
"java").As("lop").AddV("person").Property("name", "josh").Property("age",
32).As("josh").AddV("software").Property("name", "ripp [...]
+
{"g_addEXknowsX_fromXVXvid1XX_toXVXvid6XX_propertyXweight_0_1X", new
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p) =>g.AddV("person").Property("name", "marko").Property("age",
29).As("marko").AddV("person").Property("name", "vadas").Property("age",
27).As("vadas").AddV("software").Property("name", "lop").Property("lang",
"java").As("lop").AddV("person").Property("name", "josh").Property("age",
32).As("josh").AddV("software").Property("nam [...]
+
{"g_addEXknowsvarX_fromXVXvid1XX_toXVXvid6XX_propertyXweight_0_1X", new
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p) =>g.AddV("person").Property("name", "marko").Property("age",
29).As("marko").AddV("person").Property("name", "vadas").Property("age",
27).As("vadas").AddV("software").Property("name", "lop").Property("lang",
"java").As("lop").AddV("person").Property("name", "josh").Property("age",
32).As("josh").AddV("software").Property(" [...]
{"g_VXaX_addEXknowsX_toXbX_propertyXweight_0_1X", new
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p) =>g.AddV("person").Property("name", "marko").Property("age",
29).As("marko").AddV("person").Property("name", "vadas").Property("age",
27).As("vadas").AddV("software").Property("name", "lop").Property("lang",
"java").As("lop").AddV("person").Property("name", "josh").Property("age",
32).As("josh").AddV("software").Property("name", "ripple").P [...]
{"g_addEXknowsXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX",
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p) =>g.AddV("person").Property("name", "marko").Property("age",
29).AddV("person").Property("name", "vadas").Property("age", 27), (g,p)
=>g.AddE("knows").Property("weight", null).From(__.V().Has("name",
"marko")).To(__.V().Has("name", "vadas")), (g,p) =>g.E().Has("knows", "weight",
(object) null)}},
{"g_addEXknowsvarXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX",
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p) =>g.AddV("person").Property("name", "marko").Property("age",
29).AddV("person").Property("name", "vadas").Property("age", 27), (g,p)
=>g.AddE((string) p["xx1"]).Property("weight", null).From(__.V().Has("name",
"marko")).To(__.V().Has("name", "vadas")), (g,p) =>g.E().Has("knows", "weight",
(object) null)}},
@@ -1965,6 +1965,7 @@ namespace Gremlin.Net.IntegrationTest.Gherkin
{"g_V_group_by_byXout_label_tailX10X_foldX_selectXvaluesX_unfold_orderXlocalX",
new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p) =>g.V().Group<object,
object>().By().By(__.Out().Label().Tail<object>(10).Fold()).Select<object>(Column.Values).Unfold<object>().Order(Scope.Local)}},
{"g_V_groupXaX_byXnameX_by_selectXaX_countXlocalX", new
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p)
=>g.V().Group("a").By("name").By().Select<object>("a").Count(Scope.Local)}},
{"g_V_localXgroupXaX_byXnameX_by_selectXaX_countXlocalXX", new
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p)
=>g.V().Local<object>(__.Group("a").By("name").By().Select<object>("a").Count(Scope.Local))}},
+ {"g_V_group_byXvaluesXnameXX_byXboth_countX", new
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>>
{(g,p) =>g.V().Group<object,
object>().By(__.Values<object>("name")).By(__.Both().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()).V().GroupCount<object>().By("age")}},
diff --git a/gremlin-go/driver/cucumber/gremlin.go
b/gremlin-go/driver/cucumber/gremlin.go
index 5f80cdf7bc..f0efda114e 100644
--- a/gremlin-go/driver/cucumber/gremlin.go
+++ b/gremlin-go/driver/cucumber/gremlin.go
@@ -849,8 +849,8 @@ var translationMap = map[string][]func(g
*gremlingo.GraphTraversalSource, p map[
"g_addV_asXfirstX_repeatXaddEXnextX_toXaddVX_inVX_timesX5X_addEXnextX_toXselectXfirstXX":
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{})
*gremlingo.GraphTraversal {return
g.AddV().As("first").Repeat(gremlingo.T__.AddE("next").To(gremlingo.T__.AddV()).InV()).Times(5).AddE("next").To(gremlingo.T__.Select("first"))},
func(g *gremlingo.GraphTraversalSource, p map[string]interface{})
*gremlingo.GraphTraversal {return g.V()}, func(g
*gremlingo.GraphTraversalSource, p ma [...]
"g_V_hasXname_markoX_asXaX_outEXcreatedX_asXbX_inV_addEXselectXbX_labelX_toXaX":
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{})
*gremlingo.GraphTraversal {return g.AddV("person").Property("name",
"marko").Property("age", 29).As("marko").AddV("person").Property("name",
"vadas").Property("age", 27).As("vadas").AddV("software").Property("name",
"lop").Property("lang", "java").As("lop").AddV("person").Property("name",
"josh").Property("age", 32).As("josh").AddV("softw [...]
"g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_descX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX":
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{})
*gremlingo.GraphTraversal {return g.AddV("person").Property("name",
"marko").Property("age", 29).As("marko").AddV("person").Property("name",
"vadas").Property("age", 27).As("vadas").AddV("software").Property("name",
"lop").Property("lang", "java").As("lop").AddV("person").Property("n [...]
- "g_addEXknowsX_fromXaX_toXbX_propertyXweight_0_1X": {func(g
*gremlingo.GraphTraversalSource, p map[string]interface{})
*gremlingo.GraphTraversal {return g.AddV("person").Property("name",
"marko").Property("age", 29).As("marko").AddV("person").Property("name",
"vadas").Property("age", 27).As("vadas").AddV("software").Property("name",
"lop").Property("lang", "java").As("lop").AddV("person").Property("name",
"josh").Property("age", 32).As("josh").AddV("software").Property("name", "rippl
[...]
- "g_addEXknowsvarX_fromXaX_toXbX_propertyXweight_0_1X": {func(g
*gremlingo.GraphTraversalSource, p map[string]interface{})
*gremlingo.GraphTraversal {return g.AddV("person").Property("name",
"marko").Property("age", 29).As("marko").AddV("person").Property("name",
"vadas").Property("age", 27).As("vadas").AddV("software").Property("name",
"lop").Property("lang", "java").As("lop").AddV("person").Property("name",
"josh").Property("age", 32).As("josh").AddV("software").Property("name", "ri
[...]
+ "g_addEXknowsX_fromXVXvid1XX_toXVXvid6XX_propertyXweight_0_1X": {func(g
*gremlingo.GraphTraversalSource, p map[string]interface{})
*gremlingo.GraphTraversal {return g.AddV("person").Property("name",
"marko").Property("age", 29).As("marko").AddV("person").Property("name",
"vadas").Property("age", 27).As("vadas").AddV("software").Property("name",
"lop").Property("lang", "java").As("lop").AddV("person").Property("name",
"josh").Property("age", 32).As("josh").AddV("software").Property("n [...]
+ "g_addEXknowsvarX_fromXVXvid1XX_toXVXvid6XX_propertyXweight_0_1X": {func(g
*gremlingo.GraphTraversalSource, p map[string]interface{})
*gremlingo.GraphTraversal {return g.AddV("person").Property("name",
"marko").Property("age", 29).As("marko").AddV("person").Property("name",
"vadas").Property("age", 27).As("vadas").AddV("software").Property("name",
"lop").Property("lang", "java").As("lop").AddV("person").Property("name",
"josh").Property("age", 32).As("josh").AddV("software").Property [...]
"g_VXaX_addEXknowsX_toXbX_propertyXweight_0_1X": {func(g
*gremlingo.GraphTraversalSource, p map[string]interface{})
*gremlingo.GraphTraversal {return g.AddV("person").Property("name",
"marko").Property("age", 29).As("marko").AddV("person").Property("name",
"vadas").Property("age", 27).As("vadas").AddV("software").Property("name",
"lop").Property("lang", "java").As("lop").AddV("person").Property("name",
"josh").Property("age", 32).As("josh").AddV("software").Property("name",
"ripple") [...]
"g_addEXknowsXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX":
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{})
*gremlingo.GraphTraversal {return g.AddV("person").Property("name",
"marko").Property("age", 29).AddV("person").Property("name",
"vadas").Property("age", 27)}, func(g *gremlingo.GraphTraversalSource, p
map[string]interface{}) *gremlingo.GraphTraversal {return
g.AddE("knows").Property("weight", nil).From(gremlingo.T__.V().Has("name", "ma
[...]
"g_addEXknowsvarXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX":
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{})
*gremlingo.GraphTraversal {return g.AddV("person").Property("name",
"marko").Property("age", 29).AddV("person").Property("name",
"vadas").Property("age", 27)}, func(g *gremlingo.GraphTraversalSource, p
map[string]interface{}) *gremlingo.GraphTraversal {return
g.AddE(p["xx1"]).Property("weight", nil).From(gremlingo.T__.V().Has("name",
[...]
@@ -1935,6 +1935,7 @@ var translationMap = map[string][]func(g
*gremlingo.GraphTraversalSource, p map[
"g_V_group_by_byXout_label_tailX10X_foldX_selectXvaluesX_unfold_orderXlocalX":
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{})
*gremlingo.GraphTraversal {return
g.V().Group().By().By(gremlingo.T__.Out().Label().Tail(10).Fold()).Select(gremlingo.Column.Values).Unfold().Order(gremlingo.Scope.Local)}},
"g_V_groupXaX_byXnameX_by_selectXaX_countXlocalX": {func(g
*gremlingo.GraphTraversalSource, p map[string]interface{})
*gremlingo.GraphTraversal {return
g.V().Group("a").By("name").By().Select("a").Count(gremlingo.Scope.Local)}},
"g_V_localXgroupXaX_byXnameX_by_selectXaX_countXlocalXX": {func(g
*gremlingo.GraphTraversalSource, p map[string]interface{})
*gremlingo.GraphTraversal {return
g.V().Local(gremlingo.T__.Group("a").By("name").By().Select("a").Count(gremlingo.Scope.Local))}},
+ "g_V_group_byXvaluesXnameXX_byXboth_countX": {func(g
*gremlingo.GraphTraversalSource, p map[string]interface{})
*gremlingo.GraphTraversal {return
g.V().Group().By(gremlingo.T__.Values("name")).By(gremlingo.T__.Both().Count())}},
"g_V_outXcreatedX_groupCount_byXnameX": {func(g
*gremlingo.GraphTraversalSource, p map[string]interface{})
*gremlingo.GraphTraversal {return
g.V().Out("created").GroupCount().By("name")}},
"g_V_groupCount_byXageX": {func(g *gremlingo.GraphTraversalSource, p
map[string]interface{}) *gremlingo.GraphTraversal {return
g.V().GroupCount().By("age")}},
"g_withStrategiesXProductiveByStrategyX_V_groupCount_byXageX": {func(g
*gremlingo.GraphTraversalSource, p map[string]interface{})
*gremlingo.GraphTraversal {return
g.WithStrategies(gremlingo.ProductiveByStrategy()).V().GroupCount().By("age")}},
diff --git
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
index 72140c39ef..7beb8c03c1 100644
---
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
+++
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
@@ -880,8 +880,8 @@ const gremlins = {
g_addV_asXfirstX_repeatXaddEXnextX_toXaddVX_inVX_timesX5X_addEXnextX_toXselectXfirstXX:
[function({g}) { return
g.addV().as("first").repeat(__.addE("next").to(__.addV()).inV()).times(5).addE("next").to(__.select("first"))
}, function({g}) { return g.V() }, function({g}) { return g.E() },
function({g}) { return g.E().hasLabel("next") }, function({g}) { return
g.V().limit(1).bothE() }, function({g}) { return g.V().limit(1).inE() },
function({g}) { return g.V().limit(1).outE() }],
g_V_hasXname_markoX_asXaX_outEXcreatedX_asXbX_inV_addEXselectXbX_labelX_toXaX:
[function({g, vid1}) { return g.addV("person").property("name",
"marko").property("age", 29).as("marko").addV("person").property("name",
"vadas").property("age", 27).as("vadas").addV("software").property("name",
"lop").property("lang", "java").as("lop").addV("person").property("name",
"josh").property("age", 32).as("josh").addV("software").property("name",
"ripple").property("lang", "java").as("ripple").ad [...]
g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_descX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX:
[function({g, vid2}) { return g.addV("person").property("name",
"marko").property("age", 29).as("marko").addV("person").property("name",
"vadas").property("age", 27).as("vadas").addV("software").property("name",
"lop").property("lang", "java").as("lop").addV("person").property("name",
"josh").property("age", 32).as("josh").addV("software").property("n [...]
- g_addEXknowsX_fromXaX_toXbX_propertyXweight_0_1X: [function({g, xx1, vid6,
vid1}) { return g.addV("person").property("name", "marko").property("age",
29).as("marko").addV("person").property("name", "vadas").property("age",
27).as("vadas").addV("software").property("name", "lop").property("lang",
"java").as("lop").addV("person").property("name", "josh").property("age",
32).as("josh").addV("software").property("name", "ripple").property("lang",
"java").as("ripple").addV("person").prope [...]
- g_addEXknowsvarX_fromXaX_toXbX_propertyXweight_0_1X: [function({g, xx1,
vid6, xx2, vid1}) { return g.addV("person").property("name",
"marko").property("age", 29).as("marko").addV("person").property("name",
"vadas").property("age", 27).as("vadas").addV("software").property("name",
"lop").property("lang", "java").as("lop").addV("person").property("name",
"josh").property("age", 32).as("josh").addV("software").property("name",
"ripple").property("lang", "java").as("ripple").addV("person [...]
+ g_addEXknowsX_fromXVXvid1XX_toXVXvid6XX_propertyXweight_0_1X:
[function({g, xx1, vid6, vid1}) { return g.addV("person").property("name",
"marko").property("age", 29).as("marko").addV("person").property("name",
"vadas").property("age", 27).as("vadas").addV("software").property("name",
"lop").property("lang", "java").as("lop").addV("person").property("name",
"josh").property("age", 32).as("josh").addV("software").property("name",
"ripple").property("lang", "java").as("ripple").addV("pe [...]
+ g_addEXknowsvarX_fromXVXvid1XX_toXVXvid6XX_propertyXweight_0_1X:
[function({g, xx1, vid6, xx2, vid1}) { return g.addV("person").property("name",
"marko").property("age", 29).as("marko").addV("person").property("name",
"vadas").property("age", 27).as("vadas").addV("software").property("name",
"lop").property("lang", "java").as("lop").addV("person").property("name",
"josh").property("age", 32).as("josh").addV("software").property("name",
"ripple").property("lang", "java").as("ripple"). [...]
g_VXaX_addEXknowsX_toXbX_propertyXweight_0_1X: [function({g, xx1, vid6,
vid1}) { return g.addV("person").property("name", "marko").property("age",
29).as("marko").addV("person").property("name", "vadas").property("age",
27).as("vadas").addV("software").property("name", "lop").property("lang",
"java").as("lop").addV("person").property("name", "josh").property("age",
32).as("josh").addV("software").property("name", "ripple").property("lang",
"java").as("ripple").addV("person").property [...]
g_addEXknowsXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX:
[function({g}) { return g.addV("person").property("name",
"marko").property("age", 29).addV("person").property("name",
"vadas").property("age", 27) }, function({g}) { return
g.addE("knows").property("weight", null).from_(__.V().has("name",
"marko")).to(__.V().has("name", "vadas")) }, function({g}) { return
g.E().has("knows", "weight", null) }],
g_addEXknowsvarXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX:
[function({g, xx1}) { return g.addV("person").property("name",
"marko").property("age", 29).addV("person").property("name",
"vadas").property("age", 27) }, function({g, xx1}) { return
g.addE(xx1).property("weight", null).from_(__.V().has("name",
"marko")).to(__.V().has("name", "vadas")) }, function({g, xx1}) { return
g.E().has("knows", "weight", null) }],
@@ -1966,6 +1966,7 @@ const gremlins = {
g_V_group_by_byXout_label_tailX10X_foldX_selectXvaluesX_unfold_orderXlocalX:
[function({g}) { return
g.V().group().by().by(__.out().label().tail(10).fold()).select(Column.values).unfold().order(Scope.local)
}],
g_V_groupXaX_byXnameX_by_selectXaX_countXlocalX: [function({g}) { return
g.V().group("a").by("name").by().select("a").count(Scope.local) }],
g_V_localXgroupXaX_byXnameX_by_selectXaX_countXlocalXX: [function({g}) {
return
g.V().local(__.group("a").by("name").by().select("a").count(Scope.local)) }],
+ g_V_group_byXvaluesXnameXX_byXboth_countX: [function({g}) { return
g.V().group().by(__.values("name")).by(__.both().count()) }],
g_V_outXcreatedX_groupCount_byXnameX: [function({g}) { return
g.V().out("created").groupCount().by("name") }],
g_V_groupCount_byXageX: [function({g}) { return
g.V().groupCount().by("age") }],
g_withStrategiesXProductiveByStrategyX_V_groupCount_byXageX:
[function({g}) { return g.withStrategies(new
ProductiveByStrategy()).V().groupCount().by("age") }],
diff --git a/gremlin-python/src/main/python/radish/gremlin.py
b/gremlin-python/src/main/python/radish/gremlin.py
index 1d4dad5b72..9bbbdbcd54 100644
--- a/gremlin-python/src/main/python/radish/gremlin.py
+++ b/gremlin-python/src/main/python/radish/gremlin.py
@@ -852,8 +852,8 @@ world.gremlins = {
'g_addV_asXfirstX_repeatXaddEXnextX_toXaddVX_inVX_timesX5X_addEXnextX_toXselectXfirstXX':
[(lambda
g:g.add_v().as_('first').repeat(__.add_e('next').to(__.add_v()).in_v()).times(5).add_e('next').to(__.select('first'))),
(lambda g:g.V()), (lambda g:g.E()), (lambda g:g.E().has_label('next')),
(lambda g:g.V().limit(1).both_e()), (lambda g:g.V().limit(1).in_e()), (lambda
g:g.V().limit(1).out_e())],
'g_V_hasXname_markoX_asXaX_outEXcreatedX_asXbX_inV_addEXselectXbX_labelX_toXaX':
[(lambda g, vid1=None:g.add_v('person').property('name',
'marko').property('age', 29).as_('marko').add_v('person').property('name',
'vadas').property('age', 27).as_('vadas').add_v('software').property('name',
'lop').property('lang', 'java').as_('lop').add_v('person').property('name',
'josh').property('age', 32).as_('josh').add_v('software').property('name',
'ripple').property('lang', 'java').as_('ripple' [...]
'g_addEXV_outE_label_groupCount_orderXlocalX_byXvalues_descX_selectXkeysX_unfold_limitX1XX_fromXV_hasXname_vadasXX_toXV_hasXname_lopXX':
[(lambda g, vid2=None:g.add_v('person').property('name',
'marko').property('age', 29).as_('marko').add_v('person').property('name',
'vadas').property('age', 27).as_('vadas').add_v('software').property('name',
'lop').property('lang', 'java').as_('lop').add_v('person').property('name',
'josh').property('age', 32).as_('josh').add_v('software').property [...]
- 'g_addEXknowsX_fromXaX_toXbX_propertyXweight_0_1X': [(lambda g,
xx1=None,vid6=None,vid1=None:g.add_v('person').property('name',
'marko').property('age', 29).as_('marko').add_v('person').property('name',
'vadas').property('age', 27).as_('vadas').add_v('software').property('name',
'lop').property('lang', 'java').as_('lop').add_v('person').property('name',
'josh').property('age', 32).as_('josh').add_v('software').property('name',
'ripple').property('lang', 'java').as_('ripple').add_v('p [...]
- 'g_addEXknowsvarX_fromXaX_toXbX_propertyXweight_0_1X': [(lambda g,
xx1=None,vid6=None,xx2=None,vid1=None:g.add_v('person').property('name',
'marko').property('age', 29).as_('marko').add_v('person').property('name',
'vadas').property('age', 27).as_('vadas').add_v('software').property('name',
'lop').property('lang', 'java').as_('lop').add_v('person').property('name',
'josh').property('age', 32).as_('josh').add_v('software').property('name',
'ripple').property('lang', 'java').as_('rippl [...]
+ 'g_addEXknowsX_fromXVXvid1XX_toXVXvid6XX_propertyXweight_0_1X': [(lambda
g, xx1=None,vid6=None,vid1=None:g.add_v('person').property('name',
'marko').property('age', 29).as_('marko').add_v('person').property('name',
'vadas').property('age', 27).as_('vadas').add_v('software').property('name',
'lop').property('lang', 'java').as_('lop').add_v('person').property('name',
'josh').property('age', 32).as_('josh').add_v('software').property('name',
'ripple').property('lang', 'java').as_('rippl [...]
+ 'g_addEXknowsvarX_fromXVXvid1XX_toXVXvid6XX_propertyXweight_0_1X':
[(lambda g,
xx1=None,vid6=None,xx2=None,vid1=None:g.add_v('person').property('name',
'marko').property('age', 29).as_('marko').add_v('person').property('name',
'vadas').property('age', 27).as_('vadas').add_v('software').property('name',
'lop').property('lang', 'java').as_('lop').add_v('person').property('name',
'josh').property('age', 32).as_('josh').add_v('software').property('name',
'ripple').property('lang', 'java' [...]
'g_VXaX_addEXknowsX_toXbX_propertyXweight_0_1X': [(lambda g,
xx1=None,vid6=None,vid1=None:g.add_v('person').property('name',
'marko').property('age', 29).as_('marko').add_v('person').property('name',
'vadas').property('age', 27).as_('vadas').add_v('software').property('name',
'lop').property('lang', 'java').as_('lop').add_v('person').property('name',
'josh').property('age', 32).as_('josh').add_v('software').property('name',
'ripple').property('lang', 'java').as_('ripple').add_v('pers [...]
'g_addEXknowsXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX':
[(lambda g:g.add_v('person').property('name', 'marko').property('age',
29).add_v('person').property('name', 'vadas').property('age', 27)), (lambda
g:g.add_e('knows').property('weight', None).from_(__.V().has('name',
'marko')).to(__.V().has('name', 'vadas'))), (lambda g:g.E().has('knows',
'weight', None))],
'g_addEXknowsvarXpropertyXweight_nullXfromXV_hasXname_markoXX_toXV_hasXname_vadasXX':
[(lambda g, xx1=None:g.add_v('person').property('name',
'marko').property('age', 29).add_v('person').property('name',
'vadas').property('age', 27)), (lambda g,
xx1=None:g.add_e(xx1).property('weight', None).from_(__.V().has('name',
'marko')).to(__.V().has('name', 'vadas'))), (lambda g,
xx1=None:g.E().has('knows', 'weight', None))],
@@ -1938,6 +1938,7 @@ world.gremlins = {
'g_V_group_by_byXout_label_tailX10X_foldX_selectXvaluesX_unfold_orderXlocalX':
[(lambda
g:g.V().group().by().by(__.out().label().tail(10).fold()).select(Column.values).unfold().order(Scope.local))],
'g_V_groupXaX_byXnameX_by_selectXaX_countXlocalX': [(lambda
g:g.V().group('a').by('name').by().select('a').count(Scope.local))],
'g_V_localXgroupXaX_byXnameX_by_selectXaX_countXlocalXX': [(lambda
g:g.V().local(__.group('a').by('name').by().select('a').count(Scope.local)))],
+ 'g_V_group_byXvaluesXnameXX_byXboth_countX': [(lambda
g:g.V().group().by(__.values('name')).by(__.both().count()))],
'g_V_outXcreatedX_groupCount_byXnameX': [(lambda
g:g.V().out('created').group_count().by('name'))],
'g_V_groupCount_byXageX': [(lambda g:g.V().group_count().by('age'))],
'g_withStrategiesXProductiveByStrategyX_V_groupCount_byXageX': [(lambda
g:g.with_strategies(ProductiveByStrategy()).V().group_count().by('age'))],
diff --git
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/sideEffect/Group.feature
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/sideEffect/Group.feature
index 2140d41717..1afa38e3d4 100644
---
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/sideEffect/Group.feature
+++
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/sideEffect/Group.feature
@@ -397,3 +397,14 @@ Feature: Step - group()
| d[4].l |
| d[5].l |
| d[6].l |
+
+ Scenario: g_V_group_byXvaluesXnameXX_byXboth_countX
+ Given the modern graph
+ And the traversal of
+ """
+ g.V().group().by(values('name')).by(both().count())
+ """
+ When iterated to list
+ Then the result should be unordered
+ | result |
+ | m[{"marko":"d[3].l", "vadas":"d[1].l", "lop":"d[3].l",
"josh":"d[3].l", "ripple":"d[1].l", "peter":"d[1].l"}] |