[ https://issues.apache.org/jira/browse/TINKERPOP-2957?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17741750#comment-17741750 ]
ASF GitHub Bot commented on TINKERPOP-2957: ------------------------------------------- vkagamlyk commented on code in PR #2127: URL: https://github.com/apache/tinkerpop/pull/2127#discussion_r1258776061 ########## gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversal.java: ########## @@ -2554,21 +2557,30 @@ public default GraphTraversal<S, E> property(final VertexProperty.Cardinality ca */ public default GraphTraversal<S, E> property(final Object key, final Object value, final Object... keyValues) { if (key instanceof VertexProperty.Cardinality) { - if (value instanceof Map) { //Handle the property(Cardinality, Map) signature - final Map<Object, Object> map = (Map)value; + if (value instanceof Map) { + // Handle the property(Cardinality, Map) signature + final Map<Object, Object> map = (Map) value; for (Map.Entry<Object, Object> entry : map.entrySet()) { - property(key, entry.getKey(), entry.getValue()); + final Object val = entry.getValue(); + if (val instanceof CardinalityValueTraversal) { + final CardinalityValueTraversal cardVal = (CardinalityValueTraversal) val; + property(cardVal.getCardinality(), entry.getKey(), cardVal.getValue()); + } else { + property(key, entry.getKey(), entry.getValue()); Review Comment: probably recursive call is not safe here ``` gremlin> g.V(1).property(list, [["k1":"v1", "k2":"v2"]:"value"]) ==>v[1] gremlin> g.V(1).valueMap() ==>[k1:[v1],k2:[v2],name:[marko],age:[29]] ``` > mergeV with sideEffect not correctly updating properties > -------------------------------------------------------- > > Key: TINKERPOP-2957 > URL: https://issues.apache.org/jira/browse/TINKERPOP-2957 > Project: TinkerPop > Issue Type: Bug > Components: process > Affects Versions: 3.6.4 > Reporter: Kelvin Lawrence > Assignee: Stephen Mallette > Priority: Blocker > > A Gremlin user let me know about the following issue. If the query below is > run twice, the name parameter on the 4567 vertex does not get updated. The > name on the 1234 vertex does get updated. The query is written this way as > not all databases support single cardinality as the default. The issue has > been reproduced using both TinkerGraph and Amazon Neptune. > {code:java} > g.mergeV([(T.id): 'test-test-1234']). > option(onCreate, [(T.label): 'someLabel', 'name': 'name1']). > option(onMatch, sideEffect(property(single,"name","name2")).constant([:])). > mergeV([(T.id): 'test-test-4567']). > option(onCreate, [(T.label): 'someLabel', 'name': 'name1']). > option(onMatch, > sideEffect(property(single,"name","name2")).constant([:])){code} -- This message was sent by Atlassian Jira (v8.20.10#820010)