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

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


The following commit(s) were added to refs/heads/master by this push:
     new b035aedadd Clarify mergeV() option() modulation and start-step 
semantics
b035aedadd is described below

commit b035aedaddfa8e4a529c30b43fedf4de1f5f6a25
Author: Stephen Mallette <[email protected]>
AuthorDate: Fri Sep 11 17:42:08 2026 +0000

    Clarify mergeV() option() modulation and start-step semantics
    
    Keep the mergeV() Modulation bullets generic as option(Merge, MAP) and
    option(Merge, Traversal), updating the type token to the uppercase MAP,
    and add prose noting that onCreate and onMatch are the only Merge tokens
    option() accepts and when each is applied. Reconcile the Start Step
    column of the summary table with the Considerations by clarifying that
    Start Step applies to the mergeV(MAP) and mergeV(Traversal) overloads
    while the zero-arg mergeV() is mid-traversal only, and note that an empty
    MAP is the reproducible form for searchCreate since null is treated as
    equivalent.
    
    Assisted-by: Kiro:claude-opus-4.8
---
 docs/src/dev/provider/gremlin-semantics.asciidoc | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/docs/src/dev/provider/gremlin-semantics.asciidoc 
b/docs/src/dev/provider/gremlin-semantics.asciidoc
index 27118d2e73..c2b9fdbdb1 100644
--- a/docs/src/dev/provider/gremlin-semantics.asciidoc
+++ b/docs/src/dev/provider/gremlin-semantics.asciidoc
@@ -2749,10 +2749,14 @@ must occur at traversal construction for static values 
(i.e. a `MAP`) and at run
 
 *Modulation:*
 
-* `option(Merge, Map)` - Sets the `onCreate` or `onMatch` arguments directly.
+* `option(Merge, MAP)` - Sets the `onCreate` or `onMatch` arguments directly.
 * `option(Merge, Traversal)` - Sets the `onCreate` or `onMatch` arguments 
dynamically where the `Traversal` must
 resolve to a `MAP`.
 
+The only `Merge` tokens accepted by `option()` are `onCreate` and `onMatch`. 
The `onCreate` argument is applied when
+`searchCreate` finds no match and a new `Vertex` is created, while the 
`onMatch` argument is applied when `searchCreate`
+matches an existing `Vertex`.
+
 *Exceptions:*
 
 * `MAP` arguments are validated for their keys resulting in exception if they 
do not meet requirements defined above.
@@ -2761,7 +2765,12 @@ resolve to a `MAP`.
 
 *Considerations:*
 
-* `mergeV()` (i.e. the zero-arg overload) can only be used mid-traversal. It 
is not a start step.
+* The `Start Step` designation in the summary table applies to the 
`mergeV(searchCreate: MAP)` and
+`mergeV(searchCreate: Traversal)` overloads. The zero-arg `mergeV()` overload 
can only be used mid-traversal, as it
+draws its `searchCreate` argument from the incoming `Traverser`.
+* An empty `MAP` is the reproducible way to request the match-all and 
create-with-defaults behavior for `searchCreate`.
+Supplying `null` is treated as equivalent to an empty `MAP`, so the empty 
`MAP` form is preferred where the overloaded
+signatures make a bare `null` ambiguous.
 * As is common to Gremlin, it is expected that `Traversal` arguments may 
utilize `sideEffect()` steps.
 
 See: 
link:https://github.com/apache/tinkerpop/tree/x.y.z/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MergeVertexStep.java[source],

Reply via email to