From 95431168c2769ae855a50a2d0e27b3a22fb25487 Mon Sep 17 00:00:00 2001 From: Nikolai Kochetov Date: Thu, 22 Apr 2021 20:07:53 +0300 Subject: [PATCH] Try to enable normal projections. --- src/Parsers/ASTProjectionSelectQuery.cpp | 2 ++ src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp | 2 +- src/Storages/ProjectionsDescription.cpp | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Parsers/ASTProjectionSelectQuery.cpp b/src/Parsers/ASTProjectionSelectQuery.cpp index cc0d387b933..58943ed0430 100644 --- a/src/Parsers/ASTProjectionSelectQuery.cpp +++ b/src/Parsers/ASTProjectionSelectQuery.cpp @@ -134,6 +134,8 @@ 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; } diff --git a/src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp b/src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp index e52c93b03a3..36c1cd781d3 100644 --- a/src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp +++ b/src/Storages/MergeTree/MergeTreeDataSelectExecutor.cpp @@ -313,7 +313,7 @@ QueryPlanPtr MergeTreeDataSelectExecutor::read( } } - if (processed_stage >= QueryProcessingStage::WithMergeableState) + if (query_info.aggregate_projection->type == "aggregate") { /// Here we create shared ManyAggregatedData for both projection and ordinary data. /// For ordinary data, AggregatedData is filled in a usual way. diff --git a/src/Storages/ProjectionsDescription.cpp b/src/Storages/ProjectionsDescription.cpp index 47d5ffc6711..e785c10cb68 100644 --- a/src/Storages/ProjectionsDescription.cpp +++ b/src/Storages/ProjectionsDescription.cpp @@ -104,8 +104,8 @@ ProjectionDescription::getProjectionFromAST(const ASTPtr & definition_ast, const if (!projection_definition->query) throw Exception("QUERY is required for projection", ErrorCodes::INCORRECT_QUERY); - if (projection_definition->type == "normal") - throw Exception("Normal projections are not supported for now", ErrorCodes::NOT_IMPLEMENTED); + // if (projection_definition->type == "normal") + // throw Exception("Normal projections are not supported for now", ErrorCodes::NOT_IMPLEMENTED); ProjectionDescription result; result.definition_ast = projection_definition->clone();