mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-21 09:10:48 +00:00
Merge pull request #24785 from amosbird/projection-fix8
Better exception for invalid projection creation
This commit is contained in:
commit
e3640d172b
@ -134,8 +134,6 @@ ASTPtr ASTProjectionSelectQuery::cloneToASTSelect() const
|
||||
if (groupBy())
|
||||
select_query->setExpression(ASTSelectQuery::Expression::GROUP_BY, groupBy()->clone());
|
||||
// Get rid of orderBy. It's used for projection definition only
|
||||
if (orderBy())
|
||||
select_query->setExpression(ASTSelectQuery::Expression::ORDER_BY, orderBy()->clone());
|
||||
return node;
|
||||
}
|
||||
|
||||
|
@ -172,15 +172,15 @@ ProjectionDescription::getProjectionFromAST(const ASTPtr & definition_ast, const
|
||||
metadata.sorting_key = KeyDescription::getSortingKeyFromAST({}, metadata.columns, query_context, {});
|
||||
metadata.primary_key = KeyDescription::getKeyFromAST({}, metadata.columns, query_context);
|
||||
}
|
||||
if (query_select.orderBy())
|
||||
if (query.orderBy())
|
||||
throw Exception(
|
||||
"When aggregation is used in projection, ORDER BY cannot be specified", ErrorCodes::ILLEGAL_PROJECTION);
|
||||
}
|
||||
else
|
||||
{
|
||||
result.type = ProjectionDescription::Type::Normal;
|
||||
metadata.sorting_key = KeyDescription::getSortingKeyFromAST(query_select.orderBy(), metadata.columns, query_context, {});
|
||||
metadata.primary_key = KeyDescription::getKeyFromAST(query_select.orderBy(), metadata.columns, query_context);
|
||||
metadata.sorting_key = KeyDescription::getSortingKeyFromAST(query.orderBy(), metadata.columns, query_context, {});
|
||||
metadata.primary_key = KeyDescription::getKeyFromAST(query.orderBy(), metadata.columns, query_context);
|
||||
}
|
||||
metadata.primary_key.definition_ast = nullptr;
|
||||
result.metadata = std::make_shared<StorageInMemoryMetadata>(metadata);
|
||||
|
@ -0,0 +1,5 @@
|
||||
drop table if exists tp;
|
||||
|
||||
create table tp (type Int32, eventcnt UInt64, projection p (select sum(eventcnt), type group by type order by sum(eventcnt))) engine = MergeTree order by type; -- { serverError 583 }
|
||||
|
||||
drop table if exists tp;
|
Loading…
Reference in New Issue
Block a user