opencypher / front-end Goto Github PK
View Code? Open in Web Editor NEWParsing, AST and semantic analysis for the Cypher Query Language
License: Apache License 2.0
Parsing, AST and semantic analysis for the Cypher Query Language
License: Apache License 2.0
ph-javacc-maven-plugin depends on ParserGeneratorCC which says:
This fork is not really actively maintained, except some severe problems arise
OOTB, ph-javacc-maven-plugin generates code differently than JavaCC 7.0.10. For example:
static
keyword, but they reference generic parameters from the class definition. This causes hundreds of compilation errors similar to the one below:non-static type variable POS cannot be referenced from a static context
static final public List<StringPos<POS>> LabelOrRelTypes() throws ParseException {List<StringPos<POS>> labels = new ArrayList<>();
This is fixed by passing STATIC=false
during code generation.
CypherCharStream
implements generated interface CharStream
, but some of the methods differ in case. For example, Done
is implemented in CypherCharStream
as done
, so, compilation fails. There are other differences where deprecated (but not removed) methods are not implemented.CypherCharStream
is manually modified to fix these errors.
Why use a plugin that depends on one person and a unmaintained codebase?
Is this project ready for production use? Is there any guide for developers?
Hi!,
I'm using the latest release of the front end (9.0.20190305) to parse cypher queries in a server
I would like to create a single CypherParser object at the beginning of the application and then parse queries requests using this single / shared parser object. Is this doable? or should I have to create a Parser every time I have to parse a new query?
Thanks.
Marcelo
the latest version on maven hub is 9.0.20210312
is there anyone build and update there for the latest?
I wonder if this repo is still active. Contributions seem to stop suddenly in sep/2022.
val pipeline = Parsing andThen SemanticAnalysis(warn = false)
val query = "match (n)-[knows]->(m) where m.age>35 return n.name"
val startState = InitialState(query, None, NoPlannerName, Map())
val context = new ErrorCollectingContext()
val r = pipeline.transform(startState, context)
transform() will report an error: Expected none but found UnaliasedReturnItem
does it mean that I should write return n.name as name1
?
do you provide any well-readable test cases of handling a Cypher query?
I'll appreciate very much if there is an official support for sbt.
Assuming that org.opencypher
on Maven really is the place to fetch artifacts, it is a bit frustrating that the artifacts are not cross-published. Artifacts appear to be built with Scala 2.12.7, but no JARS are published with the _2.12
suffix. Here's a quick visual way to spot this on Maven: notice how shapeless
has a column for "Scala" but util-9.0
doesn't.
This is doubly problematic for Scala projects that want to use front-end
:
If possible, it would be nice to have artifacts cross-published for multiple Scala versions (I don't expect support for 2.10, 2.11, 2.12, 2.13, Scala.js, and Scala Native like Shapeless has, but perhaps 2.12 and 2.13?).
At the very least, there should be artifacts published with the right _2.12
suffix. Without that, any Scala project using another Scala version depending on front-end
will encounter confusing run time crashes.
Thanks!
The following file seems to be identified as licensed under both Apache-2.0 and GPL-3.0: https://github.com/opencypher/front-end/blob/f6eb443b5fae17aa9f672a2115a89b502a7fdd29/javacc-parser/src/main/java/org/opencypher/v9_0/parser/javacc/cypher.jj
It would be interesting to know whether both of those licenses apply to the file or it is only Apache-2.0 just like the rest of the project.
hello, does front-end
provide any example to implement a very simple Cypher execution engine?
i want to use front-end to enable my graphdb using Cypher as query language
but i have no idea how to start it
need your kind suggestions!
Any query with union clause can't be prettified
MATCH (n:Actor)
RETURN n.name AS name
UNION ALL MATCH (n:Movie)
RETURN n.title AS name
scala.MatchError: Query(None,UnionDistinct(SingleQuery(List(Match(... (of class org.opencypher.v9_0.ast.Query)
at org.opencypher.v9_0.ast.prettifier.Prettifier.asString(Prettifier.scala:22)
Possible solutions
case class Prettifier(mkStringOf: ExpressionStringifier) {
def asString(statement: Statement): String = statement match {
case Query(_, SingleQuery(clauses)) =>
clauses.map(dispatch).mkString(NL)
case Query(_, union : UnionDistinct) =>
union.unionedQueries.map(q => q.clauses.map(dispatch).mkString(NL)).mkString(NL + "UNION" + NL)
case Query(_, union : UnionAll) =>
union.unionedQueries.map(q => q.clauses.map(dispatch).mkString(NL)).mkString(NL + "UNION ALL" + NL)
}
Tomcat check some vars for leaks when undeploy app and warn some info about opencypher
24-Jun-2019 16:53:12.027 SEVERE [https-jsse-nio-8443-exec-10] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [Octopus2] created a ThreadLocal with key of type [org.opencypher.v9_0.util.Rewritable$$anon$1] (value [org.opencypher.v9_0.util.Rewritable$$anon$1@3d748832]) and a value of type [scala.collection.mutable.HashMap] (value [Map(class org.opencypher.v9_0.expressions.And -> public org.opencypher.v9_0.expressions.And org.opencypher.v9_0.expressions.And.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class scala.collection.immutable.$colon$colon -> public scala.collection.immutable.$colon$colon scala.collection.immutable.$colon$colon.copy(java.lang.Object,scala.collection.immutable.List), class org.opencypher.v9_0.expressions.Pattern -> public org.opencypher.v9_0.expressions.Pattern org.opencypher.v9_0.expressions.Pattern.copy(scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.SingleQuery -> public org.opencypher.v9_0.ast.SingleQuery org.opencypher.v9_0.ast.SingleQuery.copy(scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.RelationshipChain -> public org.opencypher.v9_0.expressions.RelationshipChain org.opencypher.v9_0.expressions.RelationshipChain.copy(org.opencypher.v9_0.expressions.PatternElement,org.opencypher.v9_0.expressions.RelationshipPattern,org.opencypher.v9_0.expressions.NodePattern,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Property -> public org.opencypher.v9_0.expressions.Property org.opencypher.v9_0.expressions.Property.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.PropertyKeyName,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Match -> public org.opencypher.v9_0.ast.Match org.opencypher.v9_0.ast.Match.copy(boolean,org.opencypher.v9_0.expressions.Pattern,scala.collection.Seq,scala.Option,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Where -> public org.opencypher.v9_0.ast.Where org.opencypher.v9_0.ast.Where.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Query -> public org.opencypher.v9_0.ast.Query org.opencypher.v9_0.ast.Query.copy(scala.Option,org.opencypher.v9_0.ast.QueryPart,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Ands -> public org.opencypher.v9_0.expressions.Ands org.opencypher.v9_0.expressions.Ands.copy(scala.collection.immutable.Set,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Not -> public org.opencypher.v9_0.expressions.Not org.opencypher.v9_0.expressions.Not.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.EveryPath -> public org.opencypher.v9_0.expressions.EveryPath org.opencypher.v9_0.expressions.EveryPath.copy(org.opencypher.v9_0.expressions.PatternElement), class scala.Some -> public scala.Some scala.Some.copy(java.lang.Object))]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
25-Jun-2019 12:58:36.291 SEVERE [http-nio-8080-exec-103] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [Octopus2] created a ThreadLocal with key of type [org.opencypher.v9_0.util.Rewritable$$anon$1] (value [org.opencypher.v9_0.util.Rewritable$$anon$1@2e460cff]) and a value of type [scala.collection.mutable.HashMap] (value [Map(class org.opencypher.v9_0.expressions.EveryPath -> public org.opencypher.v9_0.expressions.EveryPath org.opencypher.v9_0.expressions.EveryPath.copy(org.opencypher.v9_0.expressions.PatternElement), class org.opencypher.v9_0.expressions.Ands -> public org.opencypher.v9_0.expressions.Ands org.opencypher.v9_0.expressions.Ands.copy(scala.collection.immutable.Set,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Or -> public org.opencypher.v9_0.expressions.Or org.opencypher.v9_0.expressions.Or.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class scala.Tuple2 -> public scala.Tuple2 scala.Tuple2.copy(java.lang.Object,java.lang.Object), class org.opencypher.v9_0.expressions.Pattern -> public org.opencypher.v9_0.expressions.Pattern org.opencypher.v9_0.expressions.Pattern.copy(scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Return -> public org.opencypher.v9_0.ast.Return org.opencypher.v9_0.ast.Return.copy(boolean,org.opencypher.v9_0.ast.ReturnItemsDef,scala.Option,scala.Option,scala.Option,scala.collection.immutable.Set,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.SingleQuery -> public org.opencypher.v9_0.ast.SingleQuery org.opencypher.v9_0.ast.SingleQuery.copy(scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.RelationshipChain -> public org.opencypher.v9_0.expressions.RelationshipChain org.opencypher.v9_0.expressions.RelationshipChain.copy(org.opencypher.v9_0.expressions.PatternElement,org.opencypher.v9_0.expressions.RelationshipPattern,org.opencypher.v9_0.expressions.NodePattern,org.opencypher.v9_0.util.InputPosition), class scala.Some -> public scala.Some scala.Some.copy(java.lang.Object), class org.opencypher.v9_0.ast.Match -> public org.opencypher.v9_0.ast.Match org.opencypher.v9_0.ast.Match.copy(boolean,org.opencypher.v9_0.expressions.Pattern,scala.collection.Seq,scala.Option,org.opencypher.v9_0.util.InputPosition), class scala.collection.immutable.$colon$colon -> public scala.collection.immutable.$colon$colon scala.collection.immutable.$colon$colon.copy(java.lang.Object,scala.collection.immutable.List), class org.opencypher.v9_0.ast.ReturnItems -> public org.opencypher.v9_0.ast.ReturnItems org.opencypher.v9_0.ast.ReturnItems.copy(boolean,scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.With -> public org.opencypher.v9_0.ast.With org.opencypher.v9_0.ast.With.copy(boolean,org.opencypher.v9_0.ast.ReturnItemsDef,scala.Option,scala.Option,scala.Option,scala.Option,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.CaseExpression -> public org.opencypher.v9_0.expressions.CaseExpression org.opencypher.v9_0.expressions.CaseExpression.copy(scala.Option,scala.collection.IndexedSeq,scala.Option,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.FunctionInvocation -> public org.opencypher.v9_0.expressions.FunctionInvocation org.opencypher.v9_0.expressions.FunctionInvocation.copy(org.opencypher.v9_0.expressions.Namespace,org.opencypher.v9_0.expressions.FunctionName,boolean,scala.collection.IndexedSeq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Query -> public org.opencypher.v9_0.ast.Query org.opencypher.v9_0.ast.Query.copy(scala.Option,org.opencypher.v9_0.ast.QueryPart,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.AliasedReturnItem -> public org.opencypher.v9_0.ast.AliasedReturnItem org.opencypher.v9_0.ast.AliasedReturnItem.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.LogicalVariable,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Where -> public org.opencypher.v9_0.ast.Where org.opencypher.v9_0.ast.Where.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Not -> public org.opencypher.v9_0.expressions.Not org.opencypher.v9_0.expressions.Not.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Property -> public org.opencypher.v9_0.expressions.Property org.opencypher.v9_0.expressions.Property.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.PropertyKeyName,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.And -> public org.opencypher.v9_0.expressions.And org.opencypher.v9_0.expressions.And.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition))]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
26-Jun-2019 10:58:46.544 SEVERE [http-nio-8080-exec-16] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [Octopus2] created a ThreadLocal with key of type [org.opencypher.v9_0.util.Rewritable$$anon$1] (value [org.opencypher.v9_0.util.Rewritable$$anon$1@522894e1]) and a value of type [scala.collection.mutable.HashMap] (value [Map(class org.opencypher.v9_0.ast.SingleQuery -> public org.opencypher.v9_0.ast.SingleQuery org.opencypher.v9_0.ast.SingleQuery.copy(scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Ands -> public org.opencypher.v9_0.expressions.Ands org.opencypher.v9_0.expressions.Ands.copy(scala.collection.immutable.Set,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.AliasedReturnItem -> public org.opencypher.v9_0.ast.AliasedReturnItem org.opencypher.v9_0.ast.AliasedReturnItem.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.LogicalVariable,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Not -> public org.opencypher.v9_0.expressions.Not org.opencypher.v9_0.expressions.Not.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.EveryPath -> public org.opencypher.v9_0.expressions.EveryPath org.opencypher.v9_0.expressions.EveryPath.copy(org.opencypher.v9_0.expressions.PatternElement), class org.opencypher.v9_0.ast.Where -> public org.opencypher.v9_0.ast.Where org.opencypher.v9_0.ast.Where.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.ReturnItems -> public org.opencypher.v9_0.ast.ReturnItems org.opencypher.v9_0.ast.ReturnItems.copy(boolean,scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class scala.collection.immutable.$colon$colon -> public scala.collection.immutable.$colon$colon scala.collection.immutable.$colon$colon.copy(java.lang.Object,scala.collection.immutable.List), class org.opencypher.v9_0.expressions.CaseExpression -> public org.opencypher.v9_0.expressions.CaseExpression org.opencypher.v9_0.expressions.CaseExpression.copy(scala.Option,scala.collection.IndexedSeq,scala.Option,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Property -> public org.opencypher.v9_0.expressions.Property org.opencypher.v9_0.expressions.Property.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.PropertyKeyName,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.FunctionInvocation -> public org.opencypher.v9_0.expressions.FunctionInvocation org.opencypher.v9_0.expressions.FunctionInvocation.copy(org.opencypher.v9_0.expressions.Namespace,org.opencypher.v9_0.expressions.FunctionName,boolean,scala.collection.IndexedSeq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Pattern -> public org.opencypher.v9_0.expressions.Pattern org.opencypher.v9_0.expressions.Pattern.copy(scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Match -> public org.opencypher.v9_0.ast.Match org.opencypher.v9_0.ast.Match.copy(boolean,org.opencypher.v9_0.expressions.Pattern,scala.collection.Seq,scala.Option,org.opencypher.v9_0.util.InputPosition), class scala.Tuple2 -> public scala.Tuple2 scala.Tuple2.copy(java.lang.Object,java.lang.Object), class org.opencypher.v9_0.ast.With -> public org.opencypher.v9_0.ast.With org.opencypher.v9_0.ast.With.copy(boolean,org.opencypher.v9_0.ast.ReturnItemsDef,scala.Option,scala.Option,scala.Option,scala.Option,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Return -> public org.opencypher.v9_0.ast.Return org.opencypher.v9_0.ast.Return.copy(boolean,org.opencypher.v9_0.ast.ReturnItemsDef,scala.Option,scala.Option,scala.Option,scala.collection.immutable.Set,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.RelationshipChain -> public org.opencypher.v9_0.expressions.RelationshipChain org.opencypher.v9_0.expressions.RelationshipChain.copy(org.opencypher.v9_0.expressions.PatternElement,org.opencypher.v9_0.expressions.RelationshipPattern,org.opencypher.v9_0.expressions.NodePattern,org.opencypher.v9_0.util.InputPosition), class scala.Some -> public scala.Some scala.Some.copy(java.lang.Object), class org.opencypher.v9_0.ast.Query -> public org.opencypher.v9_0.ast.Query org.opencypher.v9_0.ast.Query.copy(scala.Option,org.opencypher.v9_0.ast.QueryPart,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.And -> public org.opencypher.v9_0.expressions.And org.opencypher.v9_0.expressions.And.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition))]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
26-Jun-2019 10:58:46.550 SEVERE [http-nio-8080-exec-16] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [Octopus2] created a ThreadLocal with key of type [org.opencypher.v9_0.util.Rewritable$$anon$1] (value [org.opencypher.v9_0.util.Rewritable$$anon$1@522894e1]) and a value of type [scala.collection.mutable.HashMap] (value [Map(class org.opencypher.v9_0.ast.SingleQuery -> public org.opencypher.v9_0.ast.SingleQuery org.opencypher.v9_0.ast.SingleQuery.copy(scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Ands -> public org.opencypher.v9_0.expressions.Ands org.opencypher.v9_0.expressions.Ands.copy(scala.collection.immutable.Set,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.AliasedReturnItem -> public org.opencypher.v9_0.ast.AliasedReturnItem org.opencypher.v9_0.ast.AliasedReturnItem.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.LogicalVariable,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Not -> public org.opencypher.v9_0.expressions.Not org.opencypher.v9_0.expressions.Not.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.EveryPath -> public org.opencypher.v9_0.expressions.EveryPath org.opencypher.v9_0.expressions.EveryPath.copy(org.opencypher.v9_0.expressions.PatternElement), class org.opencypher.v9_0.ast.Where -> public org.opencypher.v9_0.ast.Where org.opencypher.v9_0.ast.Where.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition), class scala.collection.immutable.$colon$colon -> public scala.collection.immutable.$colon$colon scala.collection.immutable.$colon$colon.copy(java.lang.Object,scala.collection.immutable.List), class org.opencypher.v9_0.ast.ReturnItems -> public org.opencypher.v9_0.ast.ReturnItems org.opencypher.v9_0.ast.ReturnItems.copy(boolean,scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.CaseExpression -> public org.opencypher.v9_0.expressions.CaseExpression org.opencypher.v9_0.expressions.CaseExpression.copy(scala.Option,scala.collection.IndexedSeq,scala.Option,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Property -> public org.opencypher.v9_0.expressions.Property org.opencypher.v9_0.expressions.Property.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.PropertyKeyName,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.FunctionInvocation -> public org.opencypher.v9_0.expressions.FunctionInvocation org.opencypher.v9_0.expressions.FunctionInvocation.copy(org.opencypher.v9_0.expressions.Namespace,org.opencypher.v9_0.expressions.FunctionName,boolean,scala.collection.IndexedSeq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.Pattern -> public org.opencypher.v9_0.expressions.Pattern org.opencypher.v9_0.expressions.Pattern.copy(scala.collection.Seq,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Match -> public org.opencypher.v9_0.ast.Match org.opencypher.v9_0.ast.Match.copy(boolean,org.opencypher.v9_0.expressions.Pattern,scala.collection.Seq,scala.Option,org.opencypher.v9_0.util.InputPosition), class scala.Tuple2 -> public scala.Tuple2 scala.Tuple2.copy(java.lang.Object,java.lang.Object), class org.opencypher.v9_0.ast.With -> public org.opencypher.v9_0.ast.With org.opencypher.v9_0.ast.With.copy(boolean,org.opencypher.v9_0.ast.ReturnItemsDef,scala.Option,scala.Option,scala.Option,scala.Option,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.ast.Return -> public org.opencypher.v9_0.ast.Return org.opencypher.v9_0.ast.Return.copy(boolean,org.opencypher.v9_0.ast.ReturnItemsDef,scala.Option,scala.Option,scala.Option,scala.collection.immutable.Set,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.RelationshipChain -> public org.opencypher.v9_0.expressions.RelationshipChain org.opencypher.v9_0.expressions.RelationshipChain.copy(org.opencypher.v9_0.expressions.PatternElement,org.opencypher.v9_0.expressions.RelationshipPattern,org.opencypher.v9_0.expressions.NodePattern,org.opencypher.v9_0.util.InputPosition), class scala.Some -> public scala.Some scala.Some.copy(java.lang.Object), class org.opencypher.v9_0.ast.Query -> public org.opencypher.v9_0.ast.Query org.opencypher.v9_0.ast.Query.copy(scala.Option,org.opencypher.v9_0.ast.QueryPart,org.opencypher.v9_0.util.InputPosition), class org.opencypher.v9_0.expressions.And -> public org.opencypher.v9_0.expressions.And org.opencypher.v9_0.expressions.And.copy(org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.expressions.Expression,org.opencypher.v9_0.util.InputPosition))]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
Sample of code that works in application
CypherAst ast = CypherAst.parse(rewrittenCypher, normalizedParameters);
Translator<String, GroovyPredicate> groovyTranslator =
Translator.builder().gremlinGroovy()
.inlineParameters()
.enableCypherExtensions()
.enableMultipleLabels()
.build();
String asGremlin = ast.buildTranslation(groovyTranslator);
ReturnNormalizer returnNormalizer = ReturnNormalizer.create(ast.getReturnTypes());
DefaultGraphTraversal g = new DefaultGraphTraversal(traversal.clone());
Translator<GraphTraversal, P> translator =
Translator.builder()
.traversal(g)
.enableCypherExtensions()
.enableMultipleLabels()
.build();
try (Transaction tx = traversal.tx()) {
final List<Result> collect = translatedTraversal.toStream()
.map(returnNormalizer::normalize)
.map(Result::new)
.collect(toList());
tx.commit();
}
There's a section in the README that talks about versioning, but omits version compatibility. Please document what versioning scheme are you following (SEMVER?), and compatibility guarantees that you're willing to make. Is 9.1 going to be binary compatible with 9.0 (drop-in replacement?)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.