提交 7c25a9bc 编写于 作者: A alesapin

Fix schema of storage

上级 f9816492
......@@ -236,14 +236,22 @@ void PushingToViewsBlockOutputStream::process(const Block & block, size_t view_n
if (view.query)
{
/// We prepare columns set for our temporary storage from a single block.
/// It's union of columns from the block, and columns of source storage,
/// because block may not contain alias columns.
auto columns = storage->getColumns();
for (const auto & column : block.getNamesAndTypesList())
if (!columns.has(column.name))
columns.add(ColumnDescription{column.name, column.type});
/// We create a table with the same name as original table and the same alias columns,
/// but it will contain single block (that is INSERT-ed into main table).
/// InterpreterSelectQuery will do processing of alias columns.
Context local_context = *views_context;
local_context.addViewSource(
StorageValues::create(
storage->getStorageID(),
ColumnsDescription(block.getNamesAndTypesList()), block));
storage->getStorageID(), columns, block));
select.emplace(view.query, local_context, SelectQueryOptions());
in = std::make_shared<MaterializingBlockInputStream>(select->execute().in);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册