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; NamesAndTypesList columns;
/// Столбцы после ARRAY JOIN и/или агрегации. /// Столбцы после ARRAY JOIN, JOIN и/или агрегации.
NamesAndTypesList aggregated_columns; NamesAndTypesList aggregated_columns;
/// Таблица, из которой делается запрос. /// Таблица, из которой делается запрос.

View File

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

View File

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