[ https://issues.apache.org/jira/browse/TINKERPOP-2959?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17901998#comment-17901998 ]
ASF GitHub Bot commented on TINKERPOP-2959: ------------------------------------------- andreachild commented on code in PR #2919: URL: https://github.com/apache/tinkerpop/pull/2919#discussion_r1864000319 ########## gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/GraphStep.java: ########## @@ -64,11 +68,40 @@ public class GraphStep<S, E extends Element> extends AbstractStep<S, E> implemen public GraphStep(final Traversal.Admin traversal, final Class<E> returnClass, final boolean isStart, final Object... ids) { super(traversal); this.returnClass = returnClass; - this.ids = (ids != null && ids.length == 1 && ids[0] instanceof Collection) ? ((Collection) ids[0]).toArray(new Object[((Collection) ids[0]).size()]) : ids; + + // if ids is a single collection like g.V(['a','b','c']), then unroll it into an array of ids + this.ids = GValue.ensureGValues(tryUnrollSingleCollectionArgument(ids)); + this.isStart = isStart; + this.iteratorSupplier = () -> (Iterator<E>) (Vertex.class.isAssignableFrom(this.returnClass) ? - this.getTraversal().getGraph().get().vertices(this.ids) : - this.getTraversal().getGraph().get().edges(this.ids)); + this.getTraversal().getGraph().get().vertices(GValue.resolveToValues(this.ids)) : Review Comment: Nit: extract to variable to avoid looping over the `ids` twice: ``` Object[] idValues = GValue.resolveToValues(this.ids); this.iteratorSupplier = () -> (Iterator<E>) (Vertex.class.isAssignableFrom(this.returnClass) ? this.getTraversal().getGraph().get().vertices(idValues) : this.getTraversal().getGraph().get().edges(idValues)); ``` > Allow the grammar to support parameters > --------------------------------------- > > Key: TINKERPOP-2959 > URL: https://issues.apache.org/jira/browse/TINKERPOP-2959 > Project: TinkerPop > Issue Type: Improvement > Components: language > Affects Versions: 3.6.4 > Reporter: Stephen Mallette > Assignee: Stephen Mallette > Priority: Major > Fix For: 3.7.0 > > > Allow the grammar to support parameters similar to how the groovy engine does > like, {{g.inject(x,y,z)}}. Doing this will make it easier for a transition > away from the groovy engine as a lot of Gremlin in the world today uses > parameters. The grammar may have to come with some limitations though as > groovy is wide open in terms of what can be treated as a variable. Probably > going to keep parameters tied to primitives, collections and tokens/enums > like {{Order}} and {{Scope}}. Collections themselves will not contain > parameters and things like a {{Traversal}} or {{P}} cannot be treated as one. -- This message was sent by Atlassian Jira (v8.20.10#820010)