From 54fd3652e69c86a2d94a3f2e63dfd1d43936f432 Mon Sep 17 00:00:00 2001 From: Dayue Gao Date: Fri, 6 Sep 2019 15:07:23 +0800 Subject: [PATCH] Fix bug in BetaRowsetReader which results in empty result (#1754) --- be/src/olap/rowset/beta_rowset_reader.cpp | 2 ++ be/test/olap/rowset/beta_rowset_test.cpp | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/be/src/olap/rowset/beta_rowset_reader.cpp b/be/src/olap/rowset/beta_rowset_reader.cpp index f04a78688b..4a200b3ce3 100644 --- a/be/src/olap/rowset/beta_rowset_reader.cpp +++ b/be/src/olap/rowset/beta_rowset_reader.cpp @@ -114,6 +114,8 @@ OLAPStatus BetaRowsetReader::next_block(RowBlock** block) { return OLAP_ERR_ROWSET_READ_FAILED; } } + _output_block->set_pos(0); + _output_block->set_limit(_input_block->num_rows()); _output_block->finalize(_input_block->num_rows()); *block = _output_block.get(); return OLAP_SUCCESS; diff --git a/be/test/olap/rowset/beta_rowset_test.cpp b/be/test/olap/rowset/beta_rowset_test.cpp index bb0f9822eb..4d694d89a3 100644 --- a/be/test/olap/rowset/beta_rowset_test.cpp +++ b/be/test/olap/rowset/beta_rowset_test.cpp @@ -189,6 +189,8 @@ TEST_F(BetaRowsetTest, BasicFunctionTest) { while ((s = rowset_reader->next_block(&output_block)) == OLAP_SUCCESS) { ASSERT_TRUE(output_block != nullptr); ASSERT_GT(output_block->row_num(), 0); + ASSERT_EQ(0, output_block->pos()); + ASSERT_EQ(output_block->row_num(), output_block->limit()); ASSERT_EQ(return_columns, output_block->row_block_info().column_ids); // after sort merge segments, k1 will be 0, 1, 2, 10, 11, 12, 20, 21, 22, ..., 40950, 40951, 40952 for (int i = 0; i < output_block->row_num(); ++i) { @@ -227,6 +229,8 @@ TEST_F(BetaRowsetTest, BasicFunctionTest) { while ((s = rowset_reader->next_block(&output_block)) == OLAP_SUCCESS) { ASSERT_TRUE(output_block != nullptr); ASSERT_GT(output_block->row_num(), 0); + ASSERT_EQ(0, output_block->pos()); + ASSERT_EQ(output_block->row_num(), output_block->limit()); ASSERT_EQ(return_columns, output_block->row_block_info().column_ids); // for unordered result, k3 will be 0, 1, 2, ..., 4096*3-1 for (int i = 0; i < output_block->row_num(); ++i) {