Skip to content

Using timestamp() in cypher causes Unknown function 'datetime' in the Gremlin layer #409

@vinzenz

Description

@vinzenz

ArcadeDB Version: ArcadeDB Server v22.1.3-SNAPSHOT (build d38e26a/1642118408201/main)

Platform: Docker image from docker hub
JAVA_VERSION=jdk-11.0.13+8

Expected behavior

No ERROR and successful call of timestamp()

Actual behavior

ERROR with the following backtrace:

2022-05-24 20:29:59.546 WARNI [PostQueryHandler] <ArcadeDB_0> Found pending transaction from a previous operation. Rolling back it...<ArcadeDB_0> Error on command execution (PostCommandHandler)
com.arcadedb.exception.QueryParsingException: Error on executing Cypher query
at com.arcadedb.gremlin.query.CypherQueryEngine.command(CypherQueryEngine.java:69)
at com.arcadedb.database.EmbeddedDatabase.command(EmbeddedDatabase.java:1185)
at com.arcadedb.server.ServerDatabase.command(ServerDatabase.java:395)
at com.arcadedb.server.http.handler.PostCommandHandler.executeCommand(PostCommandHandler.java:238)
at com.arcadedb.server.http.handler.PostCommandHandler.execute(PostCommandHandler.java:83)
at com.arcadedb.server.http.handler.DatabaseAbstractHandler.execute(DatabaseAbstractHandler.java:82)
at com.arcadedb.server.http.handler.AbstractHandler.handleRequest(AbstractHandler.java:108)
at io.undertow.server.RoutingHandler.handleRequest(RoutingHandler.java:93)
at io.undertow.server.handlers.PathHandler.handleRequest(PathHandler.java:104)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:387)
at io.undertow.server.protocol.http.HttpReadListener.handleEventWithNoRunningRequest(HttpReadListener.java:256)
at io.undertow.server.protocol.http.HttpReadListener.handleEvent(HttpReadListener.java:136)
at io.undertow.server.protocol.http.HttpReadListener.handleEvent(HttpReadListener.java:59)
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
at org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66)
at org.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:89)
at org.xnio.nio.WorkerThread.run(WorkerThread.java:591)
Caused by: org.opencypher.gremlin.translation.exception.SyntaxException: Unknown function 'datetime'
at org.opencypher.gremlin.translation.walker.ExpressionWalker.org$opencypher$gremlin$translation$walker$ExpressionWalker$$walkLocal(ExpressionWalker.scala:257)
at org.opencypher.gremlin.translation.walker.ExpressionWalker$.walkLocal(ExpressionWalker.scala:49)
at org.opencypher.gremlin.translation.walker.NodeUtils$.$anonfun$asList$2(NodeUtils.scala:167)
at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:233)
at scala.collection.immutable.List.foreach(List.scala:388)
at scala.collection.TraversableLike.map(TraversableLike.scala:233)
at scala.collection.TraversableLike.map$(TraversableLike.scala:226)
at scala.collection.immutable.List.map(List.scala:294)
at org.opencypher.gremlin.translation.walker.NodeUtils$.asList(NodeUtils.scala:167)
at org.opencypher.gremlin.translation.walker.ExpressionWalker.asList(ExpressionWalker.scala:356)
at org.opencypher.gremlin.translation.walker.ExpressionWalker.$anonfun$walkLocal$5(ExpressionWalker.scala:93)
at scala.Option.getOrElse(Option.scala:121)
at org.opencypher.gremlin.translation.walker.ExpressionWalker.org$opencypher$gremlin$translation$walker$ExpressionWalker$$walkLocal(ExpressionWalker.scala:91)
at org.opencypher.gremlin.translation.walker.ExpressionWalker.walkLocal(ExpressionWalker.scala:72)
at org.opencypher.gremlin.translation.walker.ExpressionWalker.walkProperty(ExpressionWalker.scala:331)
at org.opencypher.gremlin.translation.walker.ExpressionWalker$.walkProperty(ExpressionWalker.scala:58)
at org.opencypher.gremlin.translation.walker.SetWalker.setProperty(SetWalker.scala:113)
at org.opencypher.gremlin.translation.walker.SetWalker.$anonfun$walkSetClause$1(SetWalker.scala:58)
at scala.collection.immutable.List.foreach(List.scala:388)
at org.opencypher.gremlin.translation.walker.SetWalker.walkSetClause(SetWalker.scala:56)
at org.opencypher.gremlin.translation.walker.SetWalker.walkClause(SetWalker.scala:45)
at org.opencypher.gremlin.translation.walker.SetWalker$.walkClause(SetWalker.scala:35)
at org.opencypher.gremlin.translation.walker.MergeWalker.$anonfun$walkMerge$1(MergeWalker.scala:54)
at org.opencypher.gremlin.translation.walker.MergeWalker.$anonfun$walkMerge$1$adapted(MergeWalker.scala:52)
at scala.collection.immutable.List.foreach(List.scala:388)
at org.opencypher.gremlin.translation.walker.MergeWalker.walkMerge(MergeWalker.scala:52)
at org.opencypher.gremlin.translation.walker.MergeWalker.walkClause(MergeWalker.scala:39)
at org.opencypher.gremlin.translation.walker.MergeWalker$.walkClause(MergeWalker.scala:31)
at org.opencypher.gremlin.translation.walker.StatementWalker.walkClause(StatementWalker.scala:117)
at org.opencypher.gremlin.translation.walker.StatementWalker.$anonfun$walkSingle$1(StatementWalker.scala:84)
at org.opencypher.gremlin.translation.walker.StatementWalker.$anonfun$walkSingle$1$adapted(StatementWalker.scala:84)
at scala.collection.immutable.List.foreach(List.scala:388)
at org.opencypher.gremlin.translation.walker.StatementWalker.walkSingle(StatementWalker.scala:84)
at org.opencypher.gremlin.translation.walker.StatementWalker.walk(StatementWalker.scala:45)
at org.opencypher.gremlin.translation.walker.StatementWalker$.walk(StatementWalker.scala:32)
at org.opencypher.gremlin.translation.CypherAst.translate(CypherAst.scala:98)
at org.opencypher.gremlin.translation.CypherAst.buildTranslation(CypherAst.scala:119)
at org.opencypher.gremlin.translation.TranslationFacade.toGremlinGroovy(TranslationFacade.java:56)
at org.apache.tinkerpop.gremlin.arcadedb.structure.ArcadeCypher.compileToGremlin(ArcadeCypher.java:102)
at org.apache.tinkerpop.gremlin.arcadedb.structure.ArcadeCypher.(ArcadeCypher.java:53)
at org.apache.tinkerpop.gremlin.arcadedb.structure.ArcadeGraph.cypher(ArcadeGraph.java:137)
at com.arcadedb.gremlin.query.CypherQueryEngine.command(CypherQueryEngine.java:64)
... 16 more

Steps to reproduce

{cypher} MERGE (n:dog {value: 2}) ON CREATE SET n.created = timestamp(), n.updated = timestamp() ON MATCH SET n.updated = timestamp() RETURN n

Metadata

Metadata

Assignees

Labels

wontfixThis will not be worked on

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions