From 5f0bb49d46260873b8aada594d2f833f4267e894 Mon Sep 17 00:00:00 2001 From: Pxl Date: Wed, 21 Jun 2023 13:06:52 +0800 Subject: [PATCH] [Feature](materialized-view) support create mv contain aggstate column (#20812) support create mv contain aggstate column --- be/src/olap/task/engine_alter_tablet_task.cpp | 9 +- .../aggregate_function_min_max_by.h | 4 + be/src/vec/data_types/data_type_nullable.cpp | 8 +- .../org/apache/doris/analysis/ColumnDef.java | 3 +- .../analysis/CreateMaterializedViewStmt.java | 31 +- .../java/org/apache/doris/catalog/Column.java | 31 +- .../java/org/apache/doris/catalog/Env.java | 4 + .../org/apache/doris/catalog/FunctionSet.java | 1305 ++++------------- .../doris/catalog/MaterializedIndexMeta.java | 2 +- .../catalog/external/HMSExternalTable.java | 5 +- .../doris/external/jdbc/JdbcMySQLClient.java | 3 +- .../mv_p0/agg_state/test_agg_state_max_by.out | 8 + .../agg_state/test_agg_state_max_by.groovy | 55 + .../sum_divede_count/sum_devide_count.groovy | 5 - .../mv/newMv/sum_devide_count.groovy | 5 - 15 files changed, 393 insertions(+), 1085 deletions(-) create mode 100644 regression-test/data/mv_p0/agg_state/test_agg_state_max_by.out create mode 100644 regression-test/suites/mv_p0/agg_state/test_agg_state_max_by.groovy diff --git a/be/src/olap/task/engine_alter_tablet_task.cpp b/be/src/olap/task/engine_alter_tablet_task.cpp index f2df074494..30c3e95809 100644 --- a/be/src/olap/task/engine_alter_tablet_task.cpp +++ b/be/src/olap/task/engine_alter_tablet_task.cpp @@ -25,6 +25,7 @@ #include #include "common/config.h" +#include "common/exception.h" #include "olap/schema_change.h" #include "runtime/memory/mem_tracker_limiter.h" #include "runtime/thread_context.h" @@ -45,8 +46,12 @@ EngineAlterTabletTask::EngineAlterTabletTask(const TAlterTabletReqV2& request) Status EngineAlterTabletTask::execute() { SCOPED_ATTACH_TASK(_mem_tracker); DorisMetrics::instance()->create_rollup_requests_total->increment(1); - - Status res = SchemaChangeHandler::process_alter_tablet_v2(_alter_tablet_req); + Status res = Status::OK(); + try { + res = SchemaChangeHandler::process_alter_tablet_v2(_alter_tablet_req); + } catch (const Exception& e) { + res = e.to_status(); + } if (!res.ok()) { DorisMetrics::instance()->create_rollup_requests_failed->increment(1); return res; diff --git a/be/src/vec/aggregate_functions/aggregate_function_min_max_by.h b/be/src/vec/aggregate_functions/aggregate_function_min_max_by.h index 6fa82fa2a1..ca21db0c11 100644 --- a/be/src/vec/aggregate_functions/aggregate_function_min_max_by.h +++ b/be/src/vec/aggregate_functions/aggregate_function_min_max_by.h @@ -188,6 +188,10 @@ template