dbms: fixed exceptions in In; unknown element in AST, not found column [#METR-10498]

This commit is contained in:
Pavel Kartavyy 2014-04-09 12:44:15 +04:00
parent e0f8b97cf3
commit d63e779d9d

View File

@ -500,7 +500,7 @@ void ExpressionAnalyzer::normalizeTreeImpl(ASTPtr & ast, MapOfASTs & finished_as
void ExpressionAnalyzer::makeExplicitSets(bool create_ordered_set) void ExpressionAnalyzer::makeExplicitSets(bool create_ordered_set)
{ {
if (storage && ast) if (storage && ast && dynamic_cast<StorageMergeTree *>(storage.get()))
makeExplicitSetsRecursively(ast, storage->getSampleBlock(), create_ordered_set); makeExplicitSetsRecursively(ast, storage->getSampleBlock(), create_ordered_set);
} }
@ -516,8 +516,19 @@ void ExpressionAnalyzer::makeExplicitSetsRecursively(ASTPtr & node, const Block
ASTPtr & arg = args.children[1]; ASTPtr & arg = args.children[1];
if (!dynamic_cast<ASTSet *>(&*arg) && !dynamic_cast<ASTSubquery *>(&*arg)) if (!dynamic_cast<ASTSet *>(&*arg) && !dynamic_cast<ASTSubquery *>(&*arg))
{
try
{
makeExplicitSet(func, sample_block, create_ordered_set); makeExplicitSet(func, sample_block, create_ordered_set);
} }
catch (const DB::Exception & e)
{
/// в sample_block нет колонок, которые добаляет getActions
if (e.code() != ErrorCodes::NOT_FOUND_COLUMN_IN_BLOCK)
throw;
}
}
}
} }
void ExpressionAnalyzer::findGlobalFunctions(ASTPtr & ast, std::vector<ASTPtr> & global_nodes) void ExpressionAnalyzer::findGlobalFunctions(ASTPtr & ast, std::vector<ASTPtr> & global_nodes)