From fc711d89c8ce4d98478d41612d625ca9afea6797 Mon Sep 17 00:00:00 2001 From: Kikyou1997 <33112463+Kikyou1997@users.noreply.github.com> Date: Sun, 9 Oct 2022 18:43:45 +0800 Subject: [PATCH] [fix](projections) Open the project expressions properly. (#13162) In current 'ExecNode::open' function, the 'open(_projections)' is unreachable which might cause serious crashed. (#13150) --- be/src/exec/exec_node.cpp | 3 +-- .../suites/correctness/test_view_varchar_length.groovy | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/be/src/exec/exec_node.cpp b/be/src/exec/exec_node.cpp index ff22f26b84..a70db3f510 100644 --- a/be/src/exec/exec_node.cpp +++ b/be/src/exec/exec_node.cpp @@ -249,14 +249,13 @@ Status ExecNode::open(RuntimeState* state) { if (_vconjunct_ctx_ptr) { RETURN_IF_ERROR((*_vconjunct_ctx_ptr)->open(state)); } + RETURN_IF_ERROR(vectorized::VExpr::open(_projections, state)); if (typeid(*this) != typeid(doris::vectorized::VOlapScanNode) && typeid(*this) != typeid(doris::vectorized::NewOlapScanNode)) { return Expr::open(_conjunct_ctxs, state); } else { return Status::OK(); } - RETURN_IF_ERROR(Expr::open(_conjunct_ctxs, state)); - return vectorized::VExpr::open(_projections, state); } Status ExecNode::reset(RuntimeState* state) { diff --git a/regression-test/suites/correctness/test_view_varchar_length.groovy b/regression-test/suites/correctness/test_view_varchar_length.groovy index a639519cf1..992be1d672 100644 --- a/regression-test/suites/correctness/test_view_varchar_length.groovy +++ b/regression-test/suites/correctness/test_view_varchar_length.groovy @@ -24,7 +24,7 @@ Type before bug fix: varchar(*) suite("test_view_varchar_length") { sql """ DROP TABLE IF EXISTS T """ sql """ - CREATE TABLE `T` ( + CREATE TABLE `t_test_view_varchar_length` ( `id` int, `name` varchar(32) ) ENGINE=OLAP @@ -36,13 +36,13 @@ Type before bug fix: varchar(*) "storage_format" = "V2" ); """ - sql "drop view if exists V;" + sql "drop view if exists v_test_view_varchar_length;" sql """ - create view V as select name from T; + create view v_test_view_varchar_length as select name from t_test_view_varchar_length; """ qt_sql """ - desc V; + desc v_test_view_varchar_length; """ }