[ 
https://issues.apache.org/jira/browse/TINKERPOP-3008?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17778808#comment-17778808
 ] 

ASF GitHub Bot commented on TINKERPOP-3008:
-------------------------------------------

Cole-Greer commented on code in PR #2306:
URL: https://github.com/apache/tinkerpop/pull/2306#discussion_r1369195143


##########
docs/src/upgrade/release-3.7.x.asciidoc:
##########
@@ -30,7 +30,32 @@ complete list of all the modifications that are part of this 
release.
 === Upgrading for Users
 
 ==== String Manipulation Steps
-Additional String manipulation steps have been added to this version.
+Modifications to the concat() step as well as additional String manipulation 
steps have been added to this version.
+
+===== Updates to concat():
+Concat has been modified to take traversal varargs instead of a single 
traversal. Users no longer have to chain
+concat() steps together to concatenate multiple traversals:
+[source,text]
+----
+gremlin> g.V(1).outE().as("a").V(1).values("name").concat(select("a").label(), 
select("a").inV().values("name"))
+==>markocreatedlop
+==>markoknowsvadas
+==>markoknowsjosh
+----
+
+A notable breaking change from 3.7.0 is that we have corrected the behavior of 
concat() to not special treat inject()
+in arguments. The inject() step injects the incoming traverser as the first 
item in the stream by default. We mistakenly
+skipped it and used its child traversal value in 3.7.0 based on false 
expectation of how inject behaves. The
+behavior below is the expected outcome of inject in arguments.
+[source,text]
+----
+gremlin> g.inject("a").concat(inject())
+==>aa
+gremlin> g.inject("a").concat(inject("b"))
+==>aa
+----

Review Comment:
   I don't think this needs to focus too much on implementation details or 
motivation. I would suggest shortening it and focusing on describing the 
differences.
   ```suggestion
   A notable breaking change from 3.7.0 is that we have output order of 
`inject()` as a child of `concat()` to be consistent with other parent steps. 
Any 3.7.0 uses of `concat(inject(X))` should change to `concat(constant(X))` to 
retain the old semantics.
   [source,text]
   ----
   // 3.7.0
   gremlin> g.inject("a").concat(inject("b"))
   ==>ab
   
   // 3.7.1
   gremlin> g.inject("a").concat(inject())
   ==>aa
   gremlin> g.inject("a").concat(inject("b"))
   ==>aa
   gremlin> g.inject("a").concat(constant("b"))
   ==>ab
   ----
   ```





> Update concat() to accept traversal varargs and remove special treatment of 
> inject child traversals
> ---------------------------------------------------------------------------------------------------
>
>                 Key: TINKERPOP-3008
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-3008
>             Project: TinkerPop
>          Issue Type: Task
>          Components: process
>    Affects Versions: 3.7.0
>            Reporter: Yang Xia
>            Priority: Major
>              Labels: breaking
>
> As proposed on the devlist, updating concat() to accept traversal varags.
> Also to update `concat()` to not special treat `inject()` in parameters and 
> use `TraversalUtil.apply` on it as with any other child traversals. 
> So the corrected result as inject() behaves by default (The inject() step 
> injects the incoming traverser as the first item in the stream by default) 
> would be:
> {code:java}
> gremlin> g.inject("a").concat(inject("b"))
> ==>aa{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to