diff --git a/be/src/pipeline/exec/nested_loop_join_probe_operator.cpp b/be/src/pipeline/exec/nested_loop_join_probe_operator.cpp index 9546ed8df56671..fe8ff26801841d 100644 --- a/be/src/pipeline/exec/nested_loop_join_probe_operator.cpp +++ b/be/src/pipeline/exec/nested_loop_join_probe_operator.cpp @@ -390,6 +390,7 @@ void NestedLoopJoinProbeLocalState::_process_left_child_block( .get_data() .resize_fill(origin_sz + max_added_rows, 0); } else { + // TODO: for cross join, maybe could insert one row, and wrap for a const column dst_columns[i]->insert_many_from(*src_column.column, _left_block_pos, max_added_rows); } } diff --git a/be/src/vec/columns/column_decimal.cpp b/be/src/vec/columns/column_decimal.cpp index 2e385653842305..cf0193b29e187e 100644 --- a/be/src/vec/columns/column_decimal.cpp +++ b/be/src/vec/columns/column_decimal.cpp @@ -305,9 +305,7 @@ void ColumnDecimal::insert_many_from(const IColumn& src, size_t position, siz auto old_size = data.size(); data.resize(old_size + length); auto& vals = assert_cast(src).get_data(); - for (auto i = 0; i < length; ++i) { - data[old_size + i] = vals[position]; - } + std::fill(&data[old_size], &data[old_size + length], vals[position]); } template diff --git a/be/src/vec/columns/column_vector.cpp b/be/src/vec/columns/column_vector.cpp index 6e801750046513..3d3aa89243f866 100644 --- a/be/src/vec/columns/column_vector.cpp +++ b/be/src/vec/columns/column_vector.cpp @@ -436,9 +436,7 @@ void ColumnVector::insert_many_from(const IColumn& src, size_t position, size auto old_size = data.size(); data.resize(old_size + length); auto& vals = assert_cast(src).get_data(); - for (auto i = 0; i < length; ++i) { - data[old_size + i] = vals[position]; - } + std::fill(&data[old_size], &data[old_size + length], vals[position]); } template