dbms: fixed error with JOIN [#METR-14847].

This commit is contained in:
Alexey Milovidov 2015-01-31 00:19:35 +03:00
parent 261a549407
commit 1e18ff37c6
3 changed files with 10 additions and 2 deletions

View File

@ -147,7 +147,7 @@ private:
*/
NamesAndTypesList columns;
/// Столбцы после ARRAY JOIN и/или агрегации.
/// Столбцы после ARRAY JOIN, JOIN и/или агрегации.
NamesAndTypesList aggregated_columns;
/// Таблица, из которой делается запрос.

View File

@ -85,6 +85,13 @@ void ExpressionAction::prepare(Block & sample_block)
{
// std::cerr << "preparing: " << toString() << std::endl;
/** Константные выражения следует вычислить, и положить результат в sample_block.
* Для неконстантных столбцов, следует в качестве column в sample_block положить nullptr.
*
* Тот факт, что только для константных выражений column != nullptr,
* может использоваться в дальнейшем при оптимизации запроса.
*/
switch (type)
{
case APPLY_FUNCTION:
@ -156,7 +163,7 @@ void ExpressionAction::prepare(Block & sample_block)
case JOIN:
{
for (const auto & col : columns_added_by_join)
sample_block.insert(ColumnWithNameAndType(col.type->createColumn(), col.type, col.name));
sample_block.insert(ColumnWithNameAndType(nullptr, col.type, col.name));
break;
}

View File

@ -152,6 +152,7 @@ void ExpressionAnalyzer::analyzeAggregation()
group_asts.pop_back();
i -= 1;
continue;
}