MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / buildParameterizedViewStorage

Method buildParameterizedViewStorage

src/Interpreters/Context.cpp:3103–3137  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3101
3102
3103StoragePtr Context::buildParameterizedViewStorage(const String & database_name, const String & table_name, const NameToNameMap & param_values) const
3104{
3105 if (table_name.empty())
3106 return nullptr;
3107
3108 StoragePtr original_view = DatabaseCatalog::instance().tryGetTable({database_name, table_name}, getQueryContext());
3109 if (!original_view || !original_view->isView())
3110 return nullptr;
3111 auto * storage_view = original_view->as<StorageView>();
3112 if (!storage_view || !storage_view->isParameterizedView())
3113 return nullptr;
3114
3115 auto original_view_metadata = original_view->getInMemoryMetadataPtr(getQueryContext(), false);
3116 auto query = original_view_metadata->getSelectQuery().inner_query->clone();
3117 StorageView::replaceQueryParametersIfParameterizedView(query, param_values);
3118
3119 ASTCreateQuery create;
3120 create.set(create.select, query);
3121
3122 auto sql_security = make_intrusive<ASTSQLSecurity>();
3123 sql_security->type = original_view_metadata->sql_security_type;
3124 if (original_view_metadata->definer)
3125 sql_security->definer = make_intrusive<ASTUserNameWithHost>(*original_view_metadata->definer);
3126 create.set(create.sql_security, sql_security);
3127
3128 auto view_context = original_view_metadata->getSQLSecurityOverriddenContext(shared_from_this());
3129 auto sample_block = InterpreterSelectQueryAnalyzer::getSampleBlock(query, view_context);
3130 auto res = std::make_shared<StorageView>(StorageID(database_name, table_name),
3131 create,
3132 ColumnsDescription(sample_block->getNamesAndTypesList()),
3133 /* comment */ "",
3134 /* is_parameterized_view */ true);
3135 res->startup();
3136 return res;
3137}
3138
3139
3140void Context::addViewSource(const StoragePtr & storage)

Callers 1

resolveTableFunctionMethod · 0.80

Calls 14

getSampleBlockFunction · 0.70
StorageIDClass · 0.70
ColumnsDescriptionClass · 0.70
emptyMethod · 0.45
tryGetTableMethod · 0.45
isViewMethod · 0.45
isParameterizedViewMethod · 0.45
cloneMethod · 0.45
getSelectQueryMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected