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

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

ryn5 commented on code in PR #2297:
URL: https://github.com/apache/tinkerpop/pull/2297#discussion_r1369404179


##########
gremlin-console/src/main/groovy/org/apache/tinkerpop/gremlin/console/GremlinGroovysh.groovy:
##########
@@ -140,4 +171,48 @@ class GremlinGroovysh extends Groovysh {
 
         maybeRecordResult(result)
     }
+
+    private Object evaluateWithStoredBoundVars(String importsSpec, 
List<String> current) {
+        Object result
+        String variableBlocks = null
+        // To make groovysh behave more like an interpreter, we need to 
retrieve all bound
+        // vars at the end of script execution, and then update them into the 
groovysh Binding context.
+        Set<String> boundVars = 
ScriptVariableAnalyzer.getBoundVars(importsSpec + Parser.NEWLINE + 
current.join(Parser.NEWLINE), interp.classLoader)
+        if (boundVars) {
+            variableBlocks = "$COLLECTED_BOUND_VARS_MAP_VARNAME = new 
HashMap();"
+            boundVars.each({ String varname ->
+                // bound vars can be in global or some local scope.
+                // We discard locally scoped vars by ignoring 
MissingPropertyException
+                variableBlocks += """
+try {$COLLECTED_BOUND_VARS_MAP_VARNAME[\"$varname\"] = $varname;
+} catch (MissingPropertyException e){}"""
+            })
+        }
+        // Evaluate the current buffer w/imports and dummy statement
+        List<String> buff
+        if (variableBlocks) {
+            buff = [importsSpec] + ['try {', 'true'] + current + ['} finally 
{' + variableBlocks + '}']
+        } else {
+            buff = [importsSpec] + ['true'] + current
+        }
+        setLastResult(result = interp.evaluate(buff))

Review Comment:
   Confirmed that multiline queries are fixed for both interpreter modes





> 3.7.0 Remote Console Sends Incomplete Queries
> ---------------------------------------------
>
>                 Key: TINKERPOP-2999
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2999
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: console
>    Affects Versions: 3.7.0
>            Reporter: Ken Hu
>            Priority: Critical
>
> As reported by user "pdsway" on gremlin-users.
> In remote console mode the 3.7.0 Gremlin Console will send incomplete queries 
> to the server causing a parsing error.
> This is caused by the upgrade to Groovy 4. That version of Groovy uses the 
> newer antlr4 parser which throws errors later in execution. So even if the 
> parser says the the line is COMPLETE, it could still be incomplete. We need 
> to add the same try catch to the remote console's execution to make the 
> handling the same as groovysh.



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

Reply via email to