This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 153f42a873 [enhancement](exprcontext) modify
get_output_block_after_execute_expr method more clear to avoid mis usage
(#19310)
153f42a873 is described below
commit 153f42a87372c45782b1a95a1cdb362ff1f9375a
Author: yiguolei <[email protected]>
AuthorDate: Sat May 6 09:03:22 2023 +0800
[enhancement](exprcontext) modify get_output_block_after_execute_expr
method more clear to avoid mis usage (#19310)
The original method signature is Block
VExprContext::get_output_block_after_execute_exprs(
const std::vectorvectorized::VExprContext*& output_vexpr_ctxs, const Block&
input_block,
Status& status)
It return error status as a out parameter and the block as return value. It
has to check the block.rows == 0 and then check error status.
It is not conforming to the convention.
---------
Co-authored-by: yiguolei <[email protected]>
---
be/src/vec/exprs/vexpr_context.cpp | 13 +++++--------
be/src/vec/exprs/vexpr_context.h | 4 ++--
be/src/vec/runtime/vfile_result_writer.cpp | 9 +++------
be/src/vec/sink/vjdbc_table_sink.cpp | 6 +++---
be/src/vec/sink/vmysql_result_writer.cpp | 8 +++-----
be/src/vec/sink/vmysql_table_writer.cpp | 10 +++-------
be/src/vec/sink/vodbc_table_sink.cpp | 6 +++---
be/src/vec/sink/vtablet_sink.cpp | 7 ++-----
8 files changed, 24 insertions(+), 39 deletions(-)
diff --git a/be/src/vec/exprs/vexpr_context.cpp
b/be/src/vec/exprs/vexpr_context.cpp
index 37155455bf..6fc72fb03a 100644
--- a/be/src/vec/exprs/vexpr_context.cpp
+++ b/be/src/vec/exprs/vexpr_context.cpp
@@ -127,22 +127,19 @@ Status VExprContext::filter_block(VExprContext*
vexpr_ctx, Block* block, int col
return Block::filter_block(block, result_column_id, column_to_keep);
}
-Block VExprContext::get_output_block_after_execute_exprs(
+Status VExprContext::get_output_block_after_execute_exprs(
const std::vector<vectorized::VExprContext*>& output_vexpr_ctxs, const
Block& input_block,
- Status& status) {
+ Block* output_block) {
vectorized::Block tmp_block(input_block.get_columns_with_type_and_name());
vectorized::ColumnsWithTypeAndName result_columns;
for (auto vexpr_ctx : output_vexpr_ctxs) {
int result_column_id = -1;
- status = vexpr_ctx->execute(&tmp_block, &result_column_id);
- if (UNLIKELY(!status)) {
- return {};
- }
+ RETURN_IF_ERROR(vexpr_ctx->execute(&tmp_block, &result_column_id));
DCHECK(result_column_id != -1);
result_columns.emplace_back(tmp_block.get_by_position(result_column_id));
}
-
- return {result_columns};
+ *output_block = {result_columns};
+ return Status::OK();
}
} // namespace doris::vectorized
diff --git a/be/src/vec/exprs/vexpr_context.h b/be/src/vec/exprs/vexpr_context.h
index 1629860f6b..91410fa02a 100644
--- a/be/src/vec/exprs/vexpr_context.h
+++ b/be/src/vec/exprs/vexpr_context.h
@@ -69,8 +69,8 @@ public:
[[nodiscard]] static Status filter_block(VExprContext* vexpr_ctx, Block*
block,
int column_to_keep);
- static Block get_output_block_after_execute_exprs(const
std::vector<vectorized::VExprContext*>&,
- const Block&, Status&);
+ [[nodiscard]] static Status get_output_block_after_execute_exprs(
+ const std::vector<vectorized::VExprContext*>&, const Block&,
Block*);
int get_last_result_column_id() const {
DCHECK(_last_result_column_id != -1);
diff --git a/be/src/vec/runtime/vfile_result_writer.cpp
b/be/src/vec/runtime/vfile_result_writer.cpp
index c94c7f9752..cefebb4ea2 100644
--- a/be/src/vec/runtime/vfile_result_writer.cpp
+++ b/be/src/vec/runtime/vfile_result_writer.cpp
@@ -229,12 +229,9 @@ Status VFileResultWriter::append_block(Block& block) {
Status status = Status::OK();
// Exec vectorized expr here to speed up, block.rows() == 0 means expr exec
// failed, just return the error status
- auto output_block =
-
VExprContext::get_output_block_after_execute_exprs(_output_vexpr_ctxs, block,
status);
- auto num_rows = output_block.rows();
- if (UNLIKELY(num_rows == 0)) {
- return status;
- }
+ Block output_block;
+
RETURN_IF_ERROR(VExprContext::get_output_block_after_execute_exprs(_output_vexpr_ctxs,
block,
+
&output_block));
if (_vfile_writer) {
_write_file(output_block);
} else {
diff --git a/be/src/vec/sink/vjdbc_table_sink.cpp
b/be/src/vec/sink/vjdbc_table_sink.cpp
index 671c736e12..38526e1e5e 100644
--- a/be/src/vec/sink/vjdbc_table_sink.cpp
+++ b/be/src/vec/sink/vjdbc_table_sink.cpp
@@ -82,9 +82,9 @@ Status VJdbcTableSink::send(RuntimeState* state, Block*
block, bool eos) {
if (block == nullptr || block->rows() == 0) {
return status;
}
-
- auto output_block =
vectorized::VExprContext::get_output_block_after_execute_exprs(
- _output_vexpr_ctxs, *block, status);
+ Block output_block;
+
RETURN_IF_ERROR(vectorized::VExprContext::get_output_block_after_execute_exprs(
+ _output_vexpr_ctxs, *block, &output_block));
materialize_block_inplace(output_block);
uint32_t start_send_row = 0;
diff --git a/be/src/vec/sink/vmysql_result_writer.cpp
b/be/src/vec/sink/vmysql_result_writer.cpp
index fcb133db10..086e28aec0 100644
--- a/be/src/vec/sink/vmysql_result_writer.cpp
+++ b/be/src/vec/sink/vmysql_result_writer.cpp
@@ -588,12 +588,10 @@ Status
VMysqlResultWriter<is_binary_format>::append_block(Block& input_block) {
// Exec vectorized expr here to speed up, block.rows() == 0 means expr exec
// failed, just return the error status
- auto block =
VExprContext::get_output_block_after_execute_exprs(_output_vexpr_ctxs,
input_block,
- status);
+ Block block;
+
RETURN_IF_ERROR(VExprContext::get_output_block_after_execute_exprs(_output_vexpr_ctxs,
+
input_block, &block));
auto num_rows = block.rows();
- if (UNLIKELY(num_rows == 0)) {
- return status;
- }
std::vector<MysqlRowBuffer<is_binary_format>> rows_buffer;
rows_buffer.resize(num_rows);
if constexpr (is_binary_format) {
diff --git a/be/src/vec/sink/vmysql_table_writer.cpp
b/be/src/vec/sink/vmysql_table_writer.cpp
index 661b1c7f00..c4c7e48393 100644
--- a/be/src/vec/sink/vmysql_table_writer.cpp
+++ b/be/src/vec/sink/vmysql_table_writer.cpp
@@ -102,14 +102,10 @@ Status VMysqlTableWriter::append(vectorized::Block*
block) {
if (block == nullptr || block->rows() == 0) {
return status;
}
-
- auto output_block =
vectorized::VExprContext::get_output_block_after_execute_exprs(
- _vec_output_expr_ctxs, *block, status);
-
+ Block output_block;
+
RETURN_IF_ERROR(vectorized::VExprContext::get_output_block_after_execute_exprs(
+ _vec_output_expr_ctxs, *block, &output_block));
auto num_rows = output_block.rows();
- if (UNLIKELY(num_rows == 0)) {
- return status;
- }
materialize_block_inplace(output_block);
for (int i = 0; i < num_rows; ++i) {
RETURN_IF_ERROR(insert_row(output_block, i));
diff --git a/be/src/vec/sink/vodbc_table_sink.cpp
b/be/src/vec/sink/vodbc_table_sink.cpp
index 1cdf1a6d24..2b8a1e8806 100644
--- a/be/src/vec/sink/vodbc_table_sink.cpp
+++ b/be/src/vec/sink/vodbc_table_sink.cpp
@@ -71,9 +71,9 @@ Status VOdbcTableSink::send(RuntimeState* state, Block*
block, bool eos) {
if (block == nullptr || block->rows() == 0) {
return status;
}
-
- auto output_block =
vectorized::VExprContext::get_output_block_after_execute_exprs(
- _output_vexpr_ctxs, *block, status);
+ Block output_block;
+
RETURN_IF_ERROR(vectorized::VExprContext::get_output_block_after_execute_exprs(
+ _output_vexpr_ctxs, *block, &output_block));
materialize_block_inplace(output_block);
uint32_t start_send_row = 0;
diff --git a/be/src/vec/sink/vtablet_sink.cpp b/be/src/vec/sink/vtablet_sink.cpp
index 398e2a0cb2..6feda4278e 100644
--- a/be/src/vec/sink/vtablet_sink.cpp
+++ b/be/src/vec/sink/vtablet_sink.cpp
@@ -1184,11 +1184,8 @@ Status VOlapTableSink::send(RuntimeState* state,
vectorized::Block* input_block,
vectorized::Block block(input_block->get_columns_with_type_and_name());
if (!_output_vexpr_ctxs.empty()) {
// Do vectorized expr here to speed up load
- block = vectorized::VExprContext::get_output_block_after_execute_exprs(
- _output_vexpr_ctxs, *input_block, status);
- if (UNLIKELY(block.rows() == 0)) {
- return status;
- }
+
RETURN_IF_ERROR(vectorized::VExprContext::get_output_block_after_execute_exprs(
+ _output_vexpr_ctxs, *input_block, &block));
}
auto num_rows = block.rows();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]