This is an automated email from the ASF dual-hosted git repository.

xiazcy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tinkerpop.git

commit 2a60d97b25dcd47743d9ade2c6bbf6ed175b1bdc
Merge: 60cd2f0dd3 a0d5c831ad
Author: Yang Xia <[email protected]>
AuthorDate: Wed Jul 26 13:52:31 2023 -0700

    Merge branch '3.6-dev'

 .../Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs |  1 -
 gremlin-go/driver/cucumber/gremlin.go              |  1 -
 .../gremlin-javascript/test/cucumber/gremlin.js    |  1 -
 gremlin-python/src/main/python/radish/gremlin.py   |  1 -
 .../gremlin/test/features/map/MergeEdge.feature    | 18 +++++++-------
 .../gremlin/test/features/map/MergeVertex.feature  | 29 ++++++----------------
 6 files changed, 16 insertions(+), 35 deletions(-)

diff --cc gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
index d895951fce,7637b3bb86..0f49157761
--- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
+++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs
@@@ -738,14 -709,6 +738,13 @@@ namespace Gremlin.Net.IntegrationTest.G
                 {"g_mergeV_hidden_label_value_onCreate_prohibited", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.MergeV((IDictionary<object,object>) new Dictionary<object,object> 
{}).Option(Merge.OnCreate, (IDictionary<object,object>) p["xx1"])}}, 
                 {"g_mergeV_hidden_id_key_onMatch_matched_prohibited", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV("vertex"), (g,p) =>g.MergeV((IDictionary<object,object>) new 
Dictionary<object,object> {}).Option(Merge.OnMatch, 
(IDictionary<object,object>) p["xx1"])}}, 
                 
{"g_mergeV_hidden_label_key_matched_onMatch_matched_prohibited", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV("vertex"), (g,p) =>g.MergeV((IDictionary<object,object>) new 
Dictionary<object,object> {}).Option(Merge.OnMatch, 
(IDictionary<object,object>) p["xx1"])}}, 
-                {"g_mergeV_hidden_label_value_onMatch_matched_prohibited", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) =>g.AddV("vertex"), (g,p) =>g.MergeV((IDictionary<object,object>) new 
Dictionary<object,object> {}).Option(Merge.OnMatch, 
(IDictionary<object,object>) p["xx1"])}}, 
 +               {"g_mergeVXname_markoX_optionXonMatch_age_listX33XX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.AddV("person").Property("name","marko").Property(Cardinality.List,"age",29).Property(Cardinality.List,"age",31).Property(Cardinality.List,"age",32),
 (g,p) =>g.MergeV((IDictionary<object,object>) new Dictionary<object,object> 
{{"name", "marko"}}).Option(Merge.OnMatch, (IDictionary<object,object>) new 
Dictionary<object,object> {{"age [...]
 +               {"g_mergeVXname_markoX_optionXonMatch_age_setX33XX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.AddV("person").Property("name","marko").Property(Cardinality.List,"age",29).Property(Cardinality.List,"age",31).Property(Cardinality.List,"age",32),
 (g,p) =>g.MergeV((IDictionary<object,object>) new Dictionary<object,object> 
{{"name", "marko"}}).Option(Merge.OnMatch, (IDictionary<object,object>) new 
Dictionary<object,object> {{"age" [...]
 +               {"g_mergeVXname_markoX_optionXonMatch_age_setX31XX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.AddV("person").Property("name","marko").Property(Cardinality.List,"age",29).Property(Cardinality.List,"age",31).Property(Cardinality.List,"age",32),
 (g,p) =>g.MergeV((IDictionary<object,object>) new Dictionary<object,object> 
{{"name", "marko"}}).Option(Merge.OnMatch, (IDictionary<object,object>) new 
Dictionary<object,object> {{"age" [...]
 +               {"g_mergeVXname_markoX_optionXonMatch_age_singleX33XX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.AddV("person").Property("name","marko").Property(Cardinality.List,"age",29).Property(Cardinality.List,"age",31).Property(Cardinality.List,"age",32),
 (g,p) =>g.MergeV((IDictionary<object,object>) new Dictionary<object,object> 
{{"name", "marko"}}).Option(Merge.OnMatch, (IDictionary<object,object>) new 
Dictionary<object,object> {{"a [...]
 +               {"g_mergeVXname_markoX_optionXonMatch_age_33_singleX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.AddV("person").Property("name","marko").Property(Cardinality.List,"age",29).Property(Cardinality.List,"age",31).Property(Cardinality.List,"age",32),
 (g,p) =>g.MergeV((IDictionary<object,object>) new Dictionary<object,object> 
{{"name", "marko"}}).Option(Merge.OnMatch,new Dictionary<object,object> 
{{"age", 33}},Cardinality.Single),  [...]
 +               
{"g_mergeVXname_markoX_optionXonMatch_name_allen_age_setX31X_singleX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.AddV("person").Property("name","marko").Property(Cardinality.List,"age",29).Property(Cardinality.List,"age",31).Property(Cardinality.List,"age",32),
 (g,p) =>g.MergeV((IDictionary<object,object>) new Dictionary<object,object> 
{{"name", "marko"}}).Option(Merge.OnMatch,new Dictionary<object,object> 
{{"name", "allen"}, [...]
 +               
{"g_mergeVXname_markoX_optionXonMatch_name_allen_age_singleX31X_singleX", new 
List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> 
{(g,p) 
=>g.AddV("person").Property("name","marko").Property(Cardinality.List,"age",29).Property(Cardinality.List,"age",31).Property(Cardinality.List,"age",32),
 (g,p) =>g.MergeV((IDictionary<object,object>) new Dictionary<object,object> 
{{"name", "marko"}}).Option(Merge.OnMatch,new Dictionary<object,object> 
{{"name", "allen [...]
                 {"g_V_age_min", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) 
=>g.V().Values<object>("age").Min<object>()}}, 
                 {"g_V_foo_min", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) 
=>g.V().Values<object>("foo").Min<object>()}}, 
                 {"g_V_name_min", new List<Func<GraphTraversalSource, 
IDictionary<string, object>, ITraversal>> {(g,p) 
=>g.V().Values<object>("name").Min<object>()}}, 
diff --cc gremlin-go/driver/cucumber/gremlin.go
index 8f61fe6a7a,66b194f6ef..e5ce561b3f
--- a/gremlin-go/driver/cucumber/gremlin.go
+++ b/gremlin-go/driver/cucumber/gremlin.go
@@@ -708,14 -680,6 +708,13 @@@ var translationMap = map[string][]func(
      "g_mergeV_hidden_label_value_onCreate_prohibited": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.MergeV(map[interface{}]interface{}{}).Option(gremlingo.Merge.OnCreate, 
p["xx1"])}}, 
      "g_mergeV_hidden_id_key_onMatch_matched_prohibited": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("vertex")}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.MergeV(map[interface{}]interface{}{}).Option(gremlingo.Merge.OnMatch, 
p["xx1"])}}, 
      "g_mergeV_hidden_label_key_matched_onMatch_matched_prohibited": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("vertex")}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.MergeV(map[interface{}]interface{}{}).Option(gremlingo.Merge.OnMatch, 
p["xx1"])}}, 
-     "g_mergeV_hidden_label_value_onMatch_matched_prohibited": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("vertex")}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return 
g.MergeV(map[interface{}]interface{}{}).Option(gremlingo.Merge.OnMatch, 
p["xx1"])}}, 
 +    "g_mergeVXname_markoX_optionXonMatch_age_listX33XX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("person").Property("name", 
"marko").Property(gremlingo.Cardinality.List, "age", 
29).Property(gremlingo.Cardinality.List, "age", 
31).Property(gremlingo.Cardinality.List, "age", 32)}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.MergeV(map[interface{}]interface{}{"name": 
[...]
 +    "g_mergeVXname_markoX_optionXonMatch_age_setX33XX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("person").Property("name", 
"marko").Property(gremlingo.Cardinality.List, "age", 
29).Property(gremlingo.Cardinality.List, "age", 
31).Property(gremlingo.Cardinality.List, "age", 32)}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.MergeV(map[interface{}]interface{}{"name":  
[...]
 +    "g_mergeVXname_markoX_optionXonMatch_age_setX31XX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("person").Property("name", 
"marko").Property(gremlingo.Cardinality.List, "age", 
29).Property(gremlingo.Cardinality.List, "age", 
31).Property(gremlingo.Cardinality.List, "age", 32)}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.MergeV(map[interface{}]interface{}{"name":  
[...]
 +    "g_mergeVXname_markoX_optionXonMatch_age_singleX33XX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("person").Property("name", 
"marko").Property(gremlingo.Cardinality.List, "age", 
29).Property(gremlingo.Cardinality.List, "age", 
31).Property(gremlingo.Cardinality.List, "age", 32)}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.MergeV(map[interface{}]interface{}{"name 
[...]
 +    "g_mergeVXname_markoX_optionXonMatch_age_33_singleX": {func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("person").Property("name", 
"marko").Property(gremlingo.Cardinality.List, "age", 
29).Property(gremlingo.Cardinality.List, "age", 
31).Property(gremlingo.Cardinality.List, "age", 32)}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.MergeV(map[interface{}]interface{}{"name" 
[...]
 +    "g_mergeVXname_markoX_optionXonMatch_name_allen_age_setX31X_singleX": 
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("person").Property("name", 
"marko").Property(gremlingo.Cardinality.List, "age", 
29).Property(gremlingo.Cardinality.List, "age", 
31).Property(gremlingo.Cardinality.List, "age", 32)}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.MergeV(map[interface{}]in [...]
 +    "g_mergeVXname_markoX_optionXonMatch_name_allen_age_singleX31X_singleX": 
{func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.AddV("person").Property("name", 
"marko").Property(gremlingo.Cardinality.List, "age", 
29).Property(gremlingo.Cardinality.List, "age", 
31).Property(gremlingo.Cardinality.List, "age", 32)}, func(g 
*gremlingo.GraphTraversalSource, p map[string]interface{}) 
*gremlingo.GraphTraversal {return g.MergeV(map[interface{} [...]
      "g_V_age_min": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.V().Values("age").Min()}}, 
      "g_V_foo_min": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.V().Values("foo").Min()}}, 
      "g_V_name_min": {func(g *gremlingo.GraphTraversalSource, p 
map[string]interface{}) *gremlingo.GraphTraversal {return 
g.V().Values("name").Min()}}, 
diff --cc 
gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
index a2b39eec68,df711c6f4e..e2f2006cc0
--- 
a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
+++ 
b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/gremlin.js
@@@ -728,14 -699,6 +728,13 @@@ const gremlins = 
      g_mergeV_hidden_label_value_onCreate_prohibited: [function({g, xx1}) { 
return g.mergeV(new Map([])).option(Merge.onCreate,xx1) }], 
      g_mergeV_hidden_id_key_onMatch_matched_prohibited: [function({g, xx1}) { 
return g.addV("vertex") }, function({g, xx1}) { return g.mergeV(new 
Map([])).option(Merge.onMatch,xx1) }], 
      g_mergeV_hidden_label_key_matched_onMatch_matched_prohibited: 
[function({g, xx1}) { return g.addV("vertex") }, function({g, xx1}) { return 
g.mergeV(new Map([])).option(Merge.onMatch,xx1) }], 
-     g_mergeV_hidden_label_value_onMatch_matched_prohibited: [function({g, 
xx1}) { return g.addV("vertex") }, function({g, xx1}) { return g.mergeV(new 
Map([])).option(Merge.onMatch,xx1) }], 
 +    g_mergeVXname_markoX_optionXonMatch_age_listX33XX: [function({g}) { 
return 
g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32)
 }, function({g}) { return g.mergeV(new 
Map([["name","marko"]])).option(Merge.onMatch,new 
Map([["age",CardinalityValue.list(33)]])) }, function({g}) { return 
g.V().has("person","name","marko").has("age",33) }, function({g}) { return 
g.V().has("person","name","mar [...]
 +    g_mergeVXname_markoX_optionXonMatch_age_setX33XX: [function({g}) { return 
g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32)
 }, function({g}) { return g.mergeV(new 
Map([["name","marko"]])).option(Merge.onMatch,new 
Map([["age",CardinalityValue.set(33)]])) }, function({g}) { return 
g.V().has("person","name","marko").has("age",33) }, function({g}) { return 
g.V().has("person","name","marko [...]
 +    g_mergeVXname_markoX_optionXonMatch_age_setX31XX: [function({g}) { return 
g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32)
 }, function({g}) { return g.mergeV(new 
Map([["name","marko"]])).option(Merge.onMatch,new 
Map([["age",CardinalityValue.set(31)]])) }, function({g}) { return 
g.V().has("person","name","marko").has("age",31) }, function({g}) { return 
g.V().has("person","name","marko [...]
 +    g_mergeVXname_markoX_optionXonMatch_age_singleX33XX: [function({g}) { 
return 
g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32)
 }, function({g}) { return g.mergeV(new 
Map([["name","marko"]])).option(Merge.onMatch,new 
Map([["age",CardinalityValue.single(33)]])) }, function({g}) { return 
g.V().has("person","name","marko").has("age",33) }, function({g}) { return 
g.V().has("person","name", [...]
 +    g_mergeVXname_markoX_optionXonMatch_age_33_singleX: [function({g}) { 
return 
g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32)
 }, function({g}) { return g.mergeV(new 
Map([["name","marko"]])).option(Merge.onMatch,new 
Map([["age",33]]),Cardinality.single) }, function({g}) { return 
g.V().has("person","name","marko").has("age",33) }, function({g}) { return 
g.V().has("person","name","marko" [...]
 +    g_mergeVXname_markoX_optionXonMatch_name_allen_age_setX31X_singleX: 
[function({g}) { return 
g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32)
 }, function({g}) { return g.mergeV(new 
Map([["name","marko"]])).option(Merge.onMatch,new 
Map([["name","allen"],["age",CardinalityValue.set(31)]]),Cardinality.single) }, 
function({g}) { return g.V().has("person","name","marko") }, function({g}) { 
[...]
 +    g_mergeVXname_markoX_optionXonMatch_name_allen_age_singleX31X_singleX: 
[function({g}) { return 
g.addV("person").property("name","marko").property(Cardinality.list,"age",29).property(Cardinality.list,"age",31).property(Cardinality.list,"age",32)
 }, function({g}) { return g.mergeV(new 
Map([["name","marko"]])).option(Merge.onMatch,new 
Map([["name","allen"],["age",CardinalityValue.single(31)]]),Cardinality.single) 
}, function({g}) { return g.V().has("person","name","marko") }, function( [...]
      g_V_age_min: [function({g}) { return g.V().values("age").min() }], 
      g_V_foo_min: [function({g}) { return g.V().values("foo").min() }], 
      g_V_name_min: [function({g}) { return g.V().values("name").min() }], 
diff --cc gremlin-python/src/main/python/radish/gremlin.py
index d56e2cce20,fb08e48f5c..35c2c6f75a
--- a/gremlin-python/src/main/python/radish/gremlin.py
+++ b/gremlin-python/src/main/python/radish/gremlin.py
@@@ -709,14 -681,6 +709,13 @@@ world.gremlins = 
      'g_mergeV_hidden_label_value_onCreate_prohibited': [(lambda g, 
xx1=None:g.merge_v({}).option(Merge.on_create,xx1))], 
      'g_mergeV_hidden_id_key_onMatch_matched_prohibited': [(lambda g, 
xx1=None:g.addV('vertex')), (lambda g, 
xx1=None:g.merge_v({}).option(Merge.on_match,xx1))], 
      'g_mergeV_hidden_label_key_matched_onMatch_matched_prohibited': [(lambda 
g, xx1=None:g.addV('vertex')), (lambda g, 
xx1=None:g.merge_v({}).option(Merge.on_match,xx1))], 
-     'g_mergeV_hidden_label_value_onMatch_matched_prohibited': [(lambda g, 
xx1=None:g.addV('vertex')), (lambda g, 
xx1=None:g.merge_v({}).option(Merge.on_match,xx1))], 
 +    'g_mergeVXname_markoX_optionXonMatch_age_listX33XX': [(lambda 
g:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)),
 (lambda 
g:g.merge_v({'name':'marko'}).option(Merge.on_match,{'age':CardinalityValue.list_(33)})),
 (lambda g:g.V().has('person','name','marko').has('age',33)), (lambda 
g:g.V().has('person','name','marko').has('age')), (lambda 
g:g.V().has('person','name','marko').proper [...]
 +    'g_mergeVXname_markoX_optionXonMatch_age_setX33XX': [(lambda 
g:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)),
 (lambda 
g:g.merge_v({'name':'marko'}).option(Merge.on_match,{'age':CardinalityValue.set_(33)})),
 (lambda g:g.V().has('person','name','marko').has('age',33)), (lambda 
g:g.V().has('person','name','marko').has('age')), (lambda 
g:g.V().has('person','name','marko').properti [...]
 +    'g_mergeVXname_markoX_optionXonMatch_age_setX31XX': [(lambda 
g:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)),
 (lambda 
g:g.merge_v({'name':'marko'}).option(Merge.on_match,{'age':CardinalityValue.set_(31)})),
 (lambda g:g.V().has('person','name','marko').has('age',31)), (lambda 
g:g.V().has('person','name','marko').has('age')), (lambda 
g:g.V().has('person','name','marko').properti [...]
 +    'g_mergeVXname_markoX_optionXonMatch_age_singleX33XX': [(lambda 
g:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)),
 (lambda 
g:g.merge_v({'name':'marko'}).option(Merge.on_match,{'age':CardinalityValue.single(33)})),
 (lambda g:g.V().has('person','name','marko').has('age',33)), (lambda 
g:g.V().has('person','name','marko').has('age')), (lambda 
g:g.V().has('person','name','marko').pro [...]
 +    'g_mergeVXname_markoX_optionXonMatch_age_33_singleX': [(lambda 
g:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)),
 (lambda 
g:g.merge_v({'name':'marko'}).option(Merge.on_match,{'age':33},Cardinality.single)),
 (lambda g:g.V().has('person','name','marko').has('age',33)), (lambda 
g:g.V().has('person','name','marko').has('age')), (lambda 
g:g.V().has('person','name','marko').properties [...]
 +    'g_mergeVXname_markoX_optionXonMatch_name_allen_age_setX31X_singleX': 
[(lambda 
g:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)),
 (lambda 
g:g.merge_v({'name':'marko'}).option(Merge.on_match,{'name':'allen','age':CardinalityValue.set_(31)},Cardinality.single)),
 (lambda g:g.V().has('person','name','marko')), (lambda 
g:g.V().has('person','name','allen').has('age',31)), (lambda g:g. [...]
 +    'g_mergeVXname_markoX_optionXonMatch_name_allen_age_singleX31X_singleX': 
[(lambda 
g:g.addV('person').property('name','marko').property(Cardinality.list_,'age',29).property(Cardinality.list_,'age',31).property(Cardinality.list_,'age',32)),
 (lambda 
g:g.merge_v({'name':'marko'}).option(Merge.on_match,{'name':'allen','age':CardinalityValue.single(31)},Cardinality.single)),
 (lambda g:g.V().has('person','name','marko')), (lambda 
g:g.V().has('person','name','allen').has('age',33)), (lambda [...]
      'g_V_age_min': [(lambda g:g.V().age.min_())], 
      'g_V_foo_min': [(lambda g:g.V().foo.min_())], 
      'g_V_name_min': [(lambda g:g.V().name.min_())], 
diff --cc 
gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/MergeVertex.feature
index a71737e4fb,9fca250457..9a7dd5609f
--- 
a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/MergeVertex.feature
+++ 
b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/map/MergeVertex.feature
@@@ -826,148 -826,4 +826,133 @@@ Feature: Step - mergeV(
        g.mergeV([:]).option(Merge.onMatch, xx1)
        """
      When iterated to list
-     Then the traversal will raise an error
- 
-   # cannot use hidden namespace for label value for onMatch
-   Scenario: g_mergeV_hidden_label_value_onMatch_matched_prohibited
-     Given the empty graph
-     And the graph initializer of
-       """
-       g.addV("vertex")
-       """
-     And using the parameter xx1 defined as "m[{\"t[label]\":\"~vertex\"}]"
-     And the traversal of
-       """
-       g.mergeV([:]).option(Merge.onMatch, xx1)
-       """
-     When iterated to list
-     Then the traversal will raise an error
+     Then the traversal will raise an error with message containing text of 
"Property key can not be a hidden key: ~label"
 +
 +  @MultiMetaProperties
 +  Scenario: g_mergeVXname_markoX_optionXonMatch_age_listX33XX
 +    Given the empty graph
 +    And the graph initializer of
 +      """
 +      g.addV("person").property("name", "marko").property(Cardinality.list, 
"age", 29).property(Cardinality.list, "age", 31).property(Cardinality.list, 
"age", 32)
 +      """
 +    And the traversal of
 +      """
 +      g.mergeV([name: "marko"]).
 +          option(Merge.onMatch, [age: Cardinality.list(33)])
 +      """
 +    When iterated to list
 +    Then the result should have a count of 1
 +    And the graph should return 1 for count of 
"g.V().has(\"person\",\"name\",\"marko\").has(\"age\", 33)"
 +    And the graph should return 1 for count of 
"g.V().has(\"person\",\"name\",\"marko\").has(\"age\")"
 +    And the graph should return 4 for count of 
"g.V().has(\"person\",\"name\",\"marko\").properties(\"age\")"
 +
 +  @MultiMetaProperties
 +  Scenario: g_mergeVXname_markoX_optionXonMatch_age_setX33XX
 +    Given the empty graph
 +    And the graph initializer of
 +      """
 +      g.addV("person").property("name", "marko").property(Cardinality.list, 
"age", 29).property(Cardinality.list, "age", 31).property(Cardinality.list, 
"age", 32)
 +      """
 +    And the traversal of
 +      """
 +      g.mergeV([name: "marko"]).
 +          option(Merge.onMatch, [age: Cardinality.set(33)])
 +      """
 +    When iterated to list
 +    Then the result should have a count of 1
 +    And the graph should return 1 for count of 
"g.V().has(\"person\",\"name\",\"marko\").has(\"age\", 33)"
 +    And the graph should return 1 for count of 
"g.V().has(\"person\",\"name\",\"marko\").has(\"age\")"
 +    And the graph should return 4 for count of 
"g.V().has(\"person\",\"name\",\"marko\").properties(\"age\")"
 +
 +  @MultiMetaProperties
 +  Scenario: g_mergeVXname_markoX_optionXonMatch_age_setX31XX
 +    Given the empty graph
 +    And the graph initializer of
 +      """
 +      g.addV("person").property("name", "marko").property(Cardinality.list, 
"age", 29).property(Cardinality.list, "age", 31).property(Cardinality.list, 
"age", 32)
 +      """
 +    And the traversal of
 +      """
 +      g.mergeV([name: "marko"]).
 +          option(Merge.onMatch, [age: Cardinality.set(31)])
 +      """
 +    When iterated to list
 +    Then the result should have a count of 1
 +    And the graph should return 1 for count of 
"g.V().has(\"person\",\"name\",\"marko\").has(\"age\", 31)"
 +    And the graph should return 1 for count of 
"g.V().has(\"person\",\"name\",\"marko\").has(\"age\")"
 +    And the graph should return 3 for count of 
"g.V().has(\"person\",\"name\",\"marko\").properties(\"age\")"
 +
 +  @MultiMetaProperties
 +  Scenario: g_mergeVXname_markoX_optionXonMatch_age_singleX33XX
 +    Given the empty graph
 +    And the graph initializer of
 +      """
 +      g.addV("person").property("name", "marko").property(Cardinality.list, 
"age", 29).property(Cardinality.list, "age", 31).property(Cardinality.list, 
"age", 32)
 +      """
 +    And the traversal of
 +      """
 +      g.mergeV([name: "marko"]).
 +          option(Merge.onMatch, [age: Cardinality.single(33)])
 +      """
 +    When iterated to list
 +    Then the result should have a count of 1
 +    And the graph should return 1 for count of 
"g.V().has(\"person\",\"name\",\"marko\").has(\"age\", 33)"
 +    And the graph should return 1 for count of 
"g.V().has(\"person\",\"name\",\"marko\").has(\"age\")"
 +    And the graph should return 1 for count of 
"g.V().has(\"person\",\"name\",\"marko\").properties(\"age\")"
 +
 +  @MultiMetaProperties
 +  Scenario: g_mergeVXname_markoX_optionXonMatch_age_33_singleX
 +    Given the empty graph
 +    And the graph initializer of
 +      """
 +      g.addV("person").property("name", "marko").property(Cardinality.list, 
"age", 29).property(Cardinality.list, "age", 31).property(Cardinality.list, 
"age", 32)
 +      """
 +    And the traversal of
 +      """
 +      g.mergeV([name: "marko"]).
 +          option(Merge.onMatch, [age: 33], Cardinality.single)
 +      """
 +    When iterated to list
 +    Then the result should have a count of 1
 +    And the graph should return 1 for count of 
"g.V().has(\"person\",\"name\",\"marko\").has(\"age\", 33)"
 +    And the graph should return 1 for count of 
"g.V().has(\"person\",\"name\",\"marko\").has(\"age\")"
 +    And the graph should return 1 for count of 
"g.V().has(\"person\",\"name\",\"marko\").properties(\"age\")"
 +
 +  @MultiMetaProperties
 +  Scenario: g_mergeVXname_markoX_optionXonMatch_name_allen_age_setX31X_singleX
 +    Given the empty graph
 +    And the graph initializer of
 +      """
 +      g.addV("person").property("name", "marko").property(Cardinality.list, 
"age", 29).property(Cardinality.list, "age", 31).property(Cardinality.list, 
"age", 32)
 +      """
 +    And the traversal of
 +      """
 +      g.mergeV([name: "marko"]).
 +          option(Merge.onMatch, [name: "allen", age: Cardinality.set(31)], 
single)
 +      """
 +    When iterated to list
 +    Then the result should have a count of 1
 +    And the graph should return 0 for count of 
"g.V().has(\"person\",\"name\",\"marko\")"
 +    And the graph should return 1 for count of 
"g.V().has(\"person\",\"name\",\"allen\").has(\"age\", 31)"
 +    And the graph should return 1 for count of 
"g.V().has(\"person\",\"name\",\"allen\").has(\"age\")"
 +    And the graph should return 3 for count of 
"g.V().has(\"person\",\"name\",\"allen\").properties(\"age\")"
 +
 +  @MultiMetaProperties
 +  Scenario: 
g_mergeVXname_markoX_optionXonMatch_name_allen_age_singleX31X_singleX
 +    Given the empty graph
 +    And the graph initializer of
 +      """
 +      g.addV("person").property("name", "marko").property(Cardinality.list, 
"age", 29).property(Cardinality.list, "age", 31).property(Cardinality.list, 
"age", 32)
 +      """
 +    And the traversal of
 +      """
 +      g.mergeV([name: "marko"]).
 +          option(Merge.onMatch, [name: "allen", age: Cardinality.single(31)], 
single)
 +      """
 +    When iterated to list
 +    Then the result should have a count of 1
 +    And the graph should return 0 for count of 
"g.V().has(\"person\",\"name\",\"marko\")"
 +    And the graph should return 0 for count of 
"g.V().has(\"person\",\"name\",\"allen\").has(\"age\", 33)"
 +    And the graph should return 1 for count of 
"g.V().has(\"person\",\"name\",\"allen\").has(\"age\", 31)"
 +    And the graph should return 1 for count of 
"g.V().has(\"person\",\"name\",\"allen\").has(\"age\")"
 +    And the graph should return 1 for count of 
"g.V().has(\"person\",\"name\",\"allen\").properties(\"age\")"

Reply via email to