mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-22 01:30:51 +00:00
Fix msan crash from #22517.
This commit is contained in:
parent
6ebc11ff4e
commit
1c1cc22a06
@ -157,9 +157,12 @@ void ExecuteScalarSubqueriesMatcher::visit(const ASTSubquery & subquery, ASTPtr
|
|||||||
if (data.only_analyze || !settings.enable_scalar_subquery_optimization || worthConvertingToLiteral(scalar)
|
if (data.only_analyze || !settings.enable_scalar_subquery_optimization || worthConvertingToLiteral(scalar)
|
||||||
|| !data.getContext()->hasQueryContext())
|
|| !data.getContext()->hasQueryContext())
|
||||||
{
|
{
|
||||||
|
auto alias = subquery.alias;
|
||||||
|
auto prefer_alias_to_column_name = subquery.prefer_alias_to_column_name;
|
||||||
|
|
||||||
auto lit = std::make_unique<ASTLiteral>((*scalar.safeGetByPosition(0).column)[0]);
|
auto lit = std::make_unique<ASTLiteral>((*scalar.safeGetByPosition(0).column)[0]);
|
||||||
lit->alias = subquery.alias;
|
lit->alias = alias;
|
||||||
lit->prefer_alias_to_column_name = subquery.prefer_alias_to_column_name;
|
lit->prefer_alias_to_column_name = prefer_alias_to_column_name;
|
||||||
ast = addTypeConversionToAST(std::move(lit), scalar.safeGetByPosition(0).type->getName());
|
ast = addTypeConversionToAST(std::move(lit), scalar.safeGetByPosition(0).type->getName());
|
||||||
|
|
||||||
/// If only analyze was requested the expression is not suitable for constant folding, disable it.
|
/// If only analyze was requested the expression is not suitable for constant folding, disable it.
|
||||||
@ -167,8 +170,8 @@ void ExecuteScalarSubqueriesMatcher::visit(const ASTSubquery & subquery, ASTPtr
|
|||||||
{
|
{
|
||||||
ast->as<ASTFunction>()->alias.clear();
|
ast->as<ASTFunction>()->alias.clear();
|
||||||
auto func = makeASTFunction("identity", std::move(ast));
|
auto func = makeASTFunction("identity", std::move(ast));
|
||||||
func->alias = subquery.alias;
|
func->alias = alias;
|
||||||
func->prefer_alias_to_column_name = subquery.prefer_alias_to_column_name;
|
func->prefer_alias_to_column_name = prefer_alias_to_column_name;
|
||||||
ast = std::move(func);
|
ast = std::move(func);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
0
|
@ -0,0 +1,3 @@
|
|||||||
|
SELECT a FROM (SELECT ignore((SELECT 1)) AS a, a AS b);
|
||||||
|
|
||||||
|
SELECT x FROM (SELECT dummy AS x, plus(ignore(ignore(ignore(ignore('-922337203.6854775808', ignore(NULL)), ArrLen = 256, ignore(100, Arr.C3, ignore(NULL), (SELECT 10.000100135803223, count(*) FROM system.time_zones) > NULL)))), dummy, 65535) AS dummy ORDER BY ignore(-2) ASC, identity(x) DESC NULLS FIRST) FORMAT Null; -- { serverError 47 }
|
Loading…
Reference in New Issue
Block a user