MCPcopy Create free account
hub / github.com/ByConity/ByConity / execute

Method execute

src/Interpreters/InterpreterReproduceQuery.cpp:44–106  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

42}
43
44BlockIO InterpreterReproduceQuery::execute()
45{
46 auto reproduce_query = query_ptr->as<ASTReproduceQuery &>();
47
48 std::string zip_path = getStringFromLiteral(reproduce_query.reproducePath());
49 PlanReproducer reproducer(zip_path, getContext());
50
51 if (auto cluster = reproduce_query.cluster())
52 {
53 reproducer.setCluster(cluster->as<ASTIdentifier &>().name());
54 }
55
56 // reproduce ddl
57 if (reproduce_query.mode == ASTReproduceQuery::Mode::DDL)
58 {
59 return reproduceDDLImpl(std::move(reproducer));
60 }
61
62 // get queries to reproduce
63 std::vector<PlanReproducer::Query> queries_to_reproduce{};
64 if (ASTPtr subquery = reproduce_query.subquery())
65 {
66 queries_to_reproduce.emplace_back(PlanReproducer::Query{/*query_id=*/"",
67 /*query=*/serializeAST(*subquery),
68 /*current_database=*/getContext()->getCurrentDatabase(),
69 SettingsChanges{}, std::nullopt, std::nullopt});
70 }
71 else if (ASTPtr query_id_literal = reproduce_query.queryId())
72 {
73 queries_to_reproduce.emplace_back(reproducer.getQuery(getStringFromLiteral(query_id_literal)));
74 }
75 else
76 {
77 if (!reproducer.getQueries())
78 throw Exception("there is no query to reproduce in " + zip_path, ErrorCodes::BAD_ARGUMENTS);
79 for (const auto & query_id : reproducer.getQueries()->getNames())
80 queries_to_reproduce.emplace_back(reproducer.getQuery(query_id));
81 }
82
83 // get enforced settings
84 SettingsChanges enforced_settings;
85 if (reproduce_query.settingsChanges())
86 enforced_settings = reproduce_query.settingsChanges()->as<ASTSetQuery &>().changes;
87
88 if (reproduce_query.mode == ASTReproduceQuery::Mode::EXPLAIN)
89 {
90 return reproduceExplainImpl(std::move(reproducer),
91 std::move(queries_to_reproduce),
92 std::move(enforced_settings),
93 reproduce_query.is_verbose);
94 }
95 else if (reproduce_query.mode == ASTReproduceQuery::Mode::EXECUTE)
96 {
97 return reproduceExecuteImpl(std::move(reproducer),
98 std::move(queries_to_reproduce),
99 std::move(enforced_settings),
100 reproduce_query.is_verbose);
101 }

Callers

nothing calls this directly

Calls 15

getStringFromLiteralFunction · 0.85
reproducePathMethod · 0.80
getCurrentDatabaseMethod · 0.80
queryIdMethod · 0.80
getQueriesMethod · 0.80
settingsChangesMethod · 0.80
ExceptionClass · 0.70
serializeASTFunction · 0.50
clusterMethod · 0.45
setClusterMethod · 0.45
nameMethod · 0.45
subqueryMethod · 0.45

Tested by

no test coverage detected