33#include " flex/engines/graph_db/database/graph_db.h"
44
55#include " flex/engines/graph_db/runtime/execute/plan_parser.h"
6+ #include " flex/engines/graph_db/runtime/utils/cypher_runner_impl.h"
67
78namespace gs {
89
@@ -21,43 +22,30 @@ bool CypherWriteApp::Query(GraphDBSession& graph, Decoder& input,
2122 if (!pipeline_cache_.count (query)) {
2223 if (plan_cache_.count (query)) {
2324 } else {
24- const std::string statistics = db_.work_dir () + " /statistics.json" ;
25- const std::string& compiler_yaml = db_.work_dir () + " /graph.yaml" ;
26- const std::string& tmp_dir = db_.work_dir () + " /runtime/tmp/" ;
25+ physical::PhysicalPlan plan;
26+ std::string plan_str;
2727
28- auto & query_cache = db_.getQueryCache ();
29- std::string_view plan_str;
30- if (query_cache.get (query, plan_str)) {
31- physical::PhysicalPlan plan;
32- if (!plan.ParseFromString (std::string (plan_str))) {
33- return false ;
34- }
35- plan_cache_[query] = plan;
28+ if (!gs::runtime::CypherRunnerImpl::get ().gen_plan (db_, query,
29+ plan_str)) {
30+ return false ;
3631 } else {
37- const auto & compiler_path = db_.schema ().get_compiler_path ();
38-
39- for (int i = 0 ; i < 3 ; ++i) {
40- if (!generate_plan (query, statistics, compiler_path, compiler_yaml,
41- tmp_dir, plan_cache_)) {
42- LOG (ERROR) << " Generate plan failed for query: " << query;
43- } else {
44- query_cache.put (query, plan_cache_[query].SerializeAsString ());
45- break ;
46- }
32+ if (!plan.ParseFromString (plan_str)) {
33+ LOG (ERROR) << " Parse plan failed for query: " << query;
34+ return false ;
4735 }
36+ plan_cache_[query] = std::move (plan);
4837 }
4938 }
5039 const auto & plan = plan_cache_[query];
5140 pipeline_cache_.emplace (query, runtime::PlanParser::get ()
5241 .parse_write_pipeline (db_.schema (), plan)
5342 .value ());
54- } else {
5543 }
5644
5745 gs::runtime::GraphInsertInterface gri (txn);
5846 auto ctx = pipeline_cache_.at (query).Execute (gri, runtime::WriteContext (),
5947 params, timer_);
60-
48+ txn. Commit ();
6149 return true ;
6250}
6351AppWrapper CypherWriteAppFactory::CreateApp (const GraphDB& db) {
0 commit comments