org.neo4j.cypher.internal.ExecutionEngine
其中execute()
val preParsedQuery = preParser.preParseQuery(query, profile)
val executableQuery = getOrCompile(context, preParsedQuery, queryTracer, params)
if (preParsedQuery.executionMode.name != "explain") {
checkParameters(executableQuery.paramNames, params, executableQuery.extractedParams)
}
val combinedParams = params.updatedWith(executableQuery.extractedParams)
context.executingQuery().compilationCompleted(executableQuery.compilerInfo, supplier(executableQuery.planDescription()))
executableQuery.execute(context, preParsedQuery, combinedParams)
preParsedQuery–>executableQuery

举个例子,查询语句
match (n)-[dad]->(m) where m.age>35 return n.name
翻译成executableQuery

本文探讨了Neo4j的Cypher执行引擎,从execute()开始,讲解了如何将预解析查询转化为可执行查询。通过示例查询,展示了logicalPlan、Property和Pipe的概念。FilterPipe和AllNodesScanPipe作为Pipe的实例,展示了其实现方式。同时,解释了如何通过InterpretedPipeBuilder将logicalPlan转换为Pipe,并提到了使用explain命令在neo4j-browser中查看执行计划的方法。
最低0.47元/天 解锁文章
2124

被折叠的 条评论
为什么被折叠?



