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

Method executeCreateQuery

src/CloudServices/CnchWorkerResource.cpp:56–77  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

54}
55
56void CnchWorkerResource::executeCreateQuery(ContextMutablePtr context, const String & create_query, bool skip_if_exists, const ColumnsDescription & object_columns)
57{
58 LOG_DEBUG(&Poco::Logger::get("WorkerResource"), "start create cloud table {}", create_query);
59 auto ast_query = parseCreateQuery(context, create_query);
60 auto & ast_create_query = ast_query->as<ASTCreateQuery &>();
61
62 /// set query settings
63 /// TODO: can we remove this? i.e., don't rely on create query to pass query setting
64 if (ast_create_query.settings_ast)
65 InterpreterSetQuery(ast_create_query.settings_ast, context).executeForCurrentContext();
66
67 auto res = createStorageFromQuery(ast_create_query, context);
68 if (auto cloud_table = std::dynamic_pointer_cast<StorageCloudMergeTree>(res))
69 cloud_table->resetObjectColumns(object_columns);
70 res->startup();
71
72 bool throw_if_exists = !ast_create_query.if_not_exists && !skip_if_exists;
73 const auto & database_name = ast_create_query.database; // not empty.
74 const auto & table_name = ast_create_query.table;
75 String tenant_db = formatTenantDatabaseName(database_name);
76 insertCloudTable({tenant_db, table_name}, res, context, throw_if_exists);
77}
78
79void CnchWorkerResource::executeCacheableCreateQuery(
80 ContextMutablePtr context,

Callers 3

addCreateQueryMethod · 0.80
getTableMethod · 0.80

Calls 8

InterpreterSetQueryClass · 0.85
createStorageFromQueryFunction · 0.85
formatTenantDatabaseNameFunction · 0.85
parseCreateQueryFunction · 0.70
getFunction · 0.50
resetObjectColumnsMethod · 0.45
startupMethod · 0.45

Tested by

no test coverage detected