I would like to specify a max quantifier inside a PGQL regular path expression query, using a prepared statement in PGX.
However, the following code gives rise to the error posted below.
I'm running PGX 2.6.1 with support for PGQL 1.1.
==> PgxGraph[name=connections,N=78,E=164,created=1516544954524]
14:29:16,925 ERROR Task - >> [ERROR] MalformedQueryException: PREPARE_PGQL failed
14:29:16,926 ERROR Task - 0. ERROR at line 0:
PATH one_hop AS () -> ()SELECT y MATCH (x)
^
Syntax error, not expected here: '{'
----------1. ERROR at line 0:
PATH one_hop AS () -> ()SELECT y MATCH (x) -/:one_hop{,?}/-> (y) WHERE id(x) = 1
^
Syntax error, not expected here: '}'
----------2 ERRORS
oracle.pgx.api.MalformedQueryException: 0. ERROR at line 0:
PATH one_hop AS () -> ()SELECT y MATCH (x)-/:one_hop{,?}/-> (y) WHERE id(x) = 1
^
Syntax error, not expected here: '{'
----------1. ERROR at line 0:
PATH one_hop AS () -> ()SELECT y MATCH (x) -/:one_hop{,?}/-> (y) WHERE id(x) = 1
^
Syntax error, not expected here: '}'
----------2 ERRORS
at oracle.pgx.engine.pgql.PgqlQueryManagerImpl.parse(PgqlQueryManagerImpl.java:160) ~[pgx-engine-2.6.1.jar:2.6.1]
at oracle.pgx.engine.pgql.PgqlQueryManagerImpl.prepare(PgqlQueryManagerImpl.java:118) ~[pgx-engine-2.6.1.jar:2.6.1]
at oracle.pgx.engine.CorePgqlImpl.lambda$preparePgql$5(CorePgqlImpl.java:68) ~[pgx-engine-2.6.1.jar:2.6.1]
at oracle.pgx.engine.exec.FunctionRequest.doCall(FunctionRequest.java:33) ~[pgx-engine-2.6.1.jar:2.6.1]
at oracle.pgx.engine.exec.Task.call(Task.java:289) [pgx-engine-2.6.1.jar:2.6.1]
at oracle.pgx.engine.exec.Task.run(Task.java:221) [pgx-engine-2.6.1.jar:2.6.1]
at oracle.pgx.engine.Server.enqueue(Server.java:103) [pgx-engine-2.6.1.jar:2.6.1]
at oracle.pgx.engine.CorePgqlImpl.preparePgql(CorePgqlImpl.java:67) [pgx-engine-2.6.1.jar:2.6.1]
at oracle.pgx.engine.CoreImpl.preparePgql(CoreImpl.java:601) [pgx-engine-2.6.1.jar:2.6.1]
at oracle.pgx.api.PgxGraph.preparePgqlAsync(PgxGraph.java:2001) [pgx-api-2.6.1.jar:2.6.1]
at oracle.pgx.api.PgxGraph.preparePgql(PgxGraph.java:3186) [pgx-api-2.6.1.jar:2.6.1]
at oracle.pgx.api.PgxGraph$preparePgql.call(Unknown Source) [pgx-api-2.6.1.jar:2.6.1]
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) [groovy-all-2.4.11.jar:2.4.11]
at groovysh_evaluate.run(groovysh_evaluate:3) [shell:?]
at groovysh_evaluate$run.call(Unknown Source) [shell:?]
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) [groovy-all-2.4.11.jar:2.4.11]
at groovysh_evaluate$run.call(Unknown Source) [shell:?]
at org.codehaus.groovy.tools.shell.Interpreter.evaluate(Interpreter.groovy:70) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.tools.shell.Evaluator$evaluate.call(Unknown Source) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.tools.shell.Groovysh.execute(Groovysh.groovy:191) [groovy-all-2.4.11.jar:2.4.11]
at oracle.pgx.shell.Shell.execute(Shell.java:47) [pgx-shell-2.6.1.jar:2.6.1]
at org.codehaus.groovy.tools.shell.Shell.leftShift(Shell.groovy:122) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.tools.shell.Shell$leftShift$3.call(Unknown Source) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.tools.shell.commands.LoadCommand$_load_closure1.doCall(LoadCommand.groovy:88) [groovy-all-2.4.11.jar:2.4.11]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_151]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_151]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_151]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_151]
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) [groovy-all-2.4.11.jar:2.4.11]
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) [groovy-all-2.4.11.jar:2.4.11]
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022) [groovy-all-2.4.11.jar:2.4.11]
at groovy.lang.Closure.call(Closure.java:414) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.DefaultGroovyMethods.callClosureForLine(DefaultGroovyMethods.java:5284) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.IOGroovyMethods.eachLine(IOGroovyMethods.java:487) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.IOGroovyMethods.eachLine(IOGroovyMethods.java:440) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.ResourceGroovyMethods.eachLine(ResourceGroovyMethods.java:323) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.ResourceGroovyMethods.eachLine(ResourceGroovyMethods.java:307) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.dgm$943.invoke(Unknown Source) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:274) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.tools.shell.commands.LoadCommand.load(LoadCommand.groovy:84) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.tools.shell.commands.LoadCommand$load.callCurrent(Unknown Source) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.tools.shell.commands.LoadCommand.execute(LoadCommand.groovy:73) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.tools.shell.Command$execute.call(Unknown Source) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.tools.shell.Command$execute.call(Unknown Source) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.tools.shell.Shell.execute(Shell.groovy:104) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.tools.shell.Groovysh.super$2$execute(Groovysh.groovy) [groovy-all-2.4.11.jar:2.4.11]
at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_151]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_151]
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) [groovy-all-2.4.11.jar:2.4.11]
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) [groovy-all-2.4.11.jar:2.4.11]
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:132) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.tools.shell.Groovysh.executeCommand(Groovysh.groovy:260) [groovy-all-2.4.11.jar:2.4.11]
at org.codehaus.groovy.tools.shell.Groovysh.execute(Groovysh.groovy:159) [groovy-all-2.4.11.jar:2.4.11]
at oracle.pgx.shell.Shell.execute(Shell.java:47) [pgx-shell-2.6.1.jar:2.6.1]
at oracle.pgx.shell.Console.<init>(Console.java:186) [pgx-shell-2.6.1.jar:2.6.1]
at oracle.pgx.shell.Console.main(Console.java:296) [pgx-shell-2.6.1.jar:2.6.1]
java.util.concurrent.CompletionException: oracle.pgx.api.MalformedQueryException: 0. ERROR at line 0:
PATH one_hop AS () -> ()SELECT y MATCH (x) -/:one_hop{,?}/-> (y) WHERE id(x) = 1
^
Syntax error, not expected here: '{'
----------1. ERROR at line 0:
PATH one_hop AS () -> ()SELECT y MATCH (x) -/:one_hop{,?}/-> (y) WHERE id(x) = 1
^
Syntax error, not expected here: '}'
----------2 ERRORS
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:292)
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:308)
at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:593)
at java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:614)
at java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:1983)
at oracle.pgx.api.PgxFuture.thenApply(PgxFuture.java:62)
at oracle.pgx.api.PgxGraph.preparePgqlAsync(PgxGraph.java:2001)
at oracle.pgx.api.PgxGraph.preparePgql(PgxGraph.java:3186)
at oracle.pgx.api.PgxGraph$preparePgql.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at groovysh_evaluate.run(groovysh_evaluate:3)
at groovysh_evaluate$run.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at groovysh_evaluate$run.call(Unknown Source)
at org.codehaus.groovy.tools.shell.Interpreter.evaluate(Interpreter.groovy:70)
at org.codehaus.groovy.tools.shell.Evaluator$evaluate.call(Unknown Source)
at org.codehaus.groovy.tools.shell.Groovysh.execute(Groovysh.groovy:191)
at oracle.pgx.shell.Shell.execute(Shell.java:47)
at org.codehaus.groovy.tools.shell.Shell.leftShift(Shell.groovy:122)
at org.codehaus.groovy.tools.shell.Shell$leftShift$3.call(Unknown Source)
at org.codehaus.groovy.tools.shell.commands.LoadCommand$_load_closure1.doCall(LoadCommand.groovy:88)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
at groovy.lang.Closure.call(Closure.java:414)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.callClosureForLine(DefaultGroovyMethods.java:5284)
at org.codehaus.groovy.runtime.IOGroovyMethods.eachLine(IOGroovyMethods.java:487)
at org.codehaus.groovy.runtime.IOGroovyMethods.eachLine(IOGroovyMethods.java:440)
at org.codehaus.groovy.runtime.ResourceGroovyMethods.eachLine(ResourceGroovyMethods.java:323)
at org.codehaus.groovy.runtime.ResourceGroovyMethods.eachLine(ResourceGroovyMethods.java:307)
at org.codehaus.groovy.runtime.dgm$943.invoke(Unknown Source)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:274)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at org.codehaus.groovy.tools.shell.commands.LoadCommand.load(LoadCommand.groovy:84)
at org.codehaus.groovy.tools.shell.commands.LoadCommand$load.callCurrent(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
at org.codehaus.groovy.tools.shell.commands.LoadCommand.execute(LoadCommand.groovy:73)
at org.codehaus.groovy.tools.shell.Command$execute.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.tools.shell.Command$execute.call(Unknown Source)
at org.codehaus.groovy.tools.shell.Shell.execute(Shell.groovy:104)
at org.codehaus.groovy.tools.shell.Groovysh.super$2$execute(Groovysh.groovy)
at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:132)
at org.codehaus.groovy.tools.shell.Groovysh.executeCommand(Groovysh.groovy:260)
at org.codehaus.groovy.tools.shell.Groovysh.execute(Groovysh.groovy:159)
at oracle.pgx.shell.Shell.execute(Shell.java:47)
at oracle.pgx.shell.Console.<init>(Console.java:186)
at oracle.pgx.shell.Console.main(Console.java:296)
Caused by: oracle.pgx.api.MalformedQueryException: 0. ERROR at line 0:
PATH one_hop AS () -> ()SELECT y MATCH (x) -/:one_hop{,?}/-> (y) WHERE id(x) = 1
^
Syntax error, not expected here: '{'
----------1. ERROR at line 0:
PATH one_hop AS () -> ()SELECT y MATCH (x) -/:one_hop{,?}/-> (y) WHERE id(x) = 1
^
Syntax error, not expected here: '}'
----------2 ERRORS
at oracle.pgx.engine.pgql.PgqlQueryManagerImpl.parse(PgqlQueryManagerImpl.java:160)
at oracle.pgx.engine.pgql.PgqlQueryManagerImpl.prepare(PgqlQueryManagerImpl.java:118)
at oracle.pgx.engine.CorePgqlImpl.lambda$preparePgql$5(CorePgqlImpl.java:68)
at oracle.pgx.engine.exec.FunctionRequest.doCall(FunctionRequest.java:33)
at oracle.pgx.engine.exec.Task.call(Task.java:289)
at oracle.pgx.engine.exec.Task.run(Task.java:221)
at oracle.pgx.engine.Server.enqueue(Server.java:103)
at oracle.pgx.engine.CorePgqlImpl.preparePgql(CorePgqlImpl.java:67)
at oracle.pgx.engine.CoreImpl.preparePgql(CoreImpl.java:601)
... 60 more
2018-01-21 14:29:17,164 pgx-jvm-shutdown-hook WARN Unable to register Log4j shutdown hook because JVM is shutting down. Using SimpleLogger
Exception in thread "Thread-6" java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.IllegalStateException: engine not running; start first
at oracle.pgx.shell.Console.close(Console.java:315)
at oracle.pgx.shell.Console.lambda$new$0(Console.java:154)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.concurrent.ExecutionException: java.lang.IllegalStateException: engine not running; start first
at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1895)
at oracle.pgx.api.PgxFuture.get(PgxFuture.java:99)
at oracle.pgx.api.ServerInstance.shutdownEngineNowIfRunning(ServerInstance.java:608)
at oracle.pgx.shell.Console.close(Console.java:313)
... 2 more
Caused by: java.lang.IllegalStateException: engine not running; start first
at oracle.pgx.engine.admin.Ctrl.throwIfNotRunning(Ctrl.java:694)
at oracle.pgx.engine.admin.Ctrl.lambda$shutdown$5(Ctrl.java:282)
at oracle.pgx.api.admin.AbstractControl.runOnCallerThread(AbstractControl.java:31)
at oracle.pgx.engine.admin.Ctrl.shutdown(Ctrl.java:281)
at oracle.pgx.engine.admin.Ctrl.shutdownNow(Ctrl.java:313)
at oracle.pgx.api.admin.AbstractControl.lambda$shutdownNowIfRunning$4(AbstractControl.java:83)
at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:981)
at java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2124)
at oracle.pgx.api.PgxFuture.thenCompose(PgxFuture.java:144)
at oracle.pgx.api.admin.AbstractControl.shutdownNowIfRunning(AbstractControl.java:81)
at java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:981)
at java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2124)
at oracle.pgx.api.PgxFuture.thenCompose(PgxFuture.java:144)
at oracle.pgx.api.ServerInstance.onControl(ServerInstance.java:187)
at oracle.pgx.api.ServerInstance.shutdownEngineNowIfRunningAsync(ServerInstance.java:322)
... 4 more