You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by zh...@apache.org on 2019/10/15 23:19:59 UTC

[incubator-doris] branch master updated: Fix wrong group by result bug (#1987)

This is an automated email from the ASF dual-hosted git repository.

zhaoc pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 2fcb79e  Fix wrong group by result bug (#1987)
2fcb79e is described below

commit 2fcb79e3ef98dba8cbfaaeb05a82b7f592177cb8
Author: kangpinghuang <ka...@126.com>
AuthorDate: Wed Oct 16 07:19:53 2019 +0800

    Fix wrong group by result bug (#1987)
---
 be/src/olap/rowset/beta_rowset_reader.cpp | 7 +++++--
 be/src/olap/schema_change.cpp             | 4 ++++
 be/test/olap/rowset/beta_rowset_test.cpp  | 2 ++
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/be/src/olap/rowset/beta_rowset_reader.cpp b/be/src/olap/rowset/beta_rowset_reader.cpp
index d663a77..261593e 100644
--- a/be/src/olap/rowset/beta_rowset_reader.cpp
+++ b/be/src/olap/rowset/beta_rowset_reader.cpp
@@ -93,10 +93,12 @@ OLAPStatus BetaRowsetReader::init(RowsetReaderContext* read_context) {
     RowBlockInfo output_block_info;
     output_block_info.row_num = 1024;
     output_block_info.null_supported = true;
-    output_block_info.column_ids = schema.column_ids();
+    // the output block's schema should be seek_columns to comform to v1
+    // TODO(hkp): this should be optimized to use return_columns
+    output_block_info.column_ids = *(_context->seek_columns);
     RETURN_NOT_OK(_output_block->init(output_block_info));
     _row.reset(new RowCursor());
-    RETURN_NOT_OK(_row->init(*(read_context->tablet_schema), schema.column_ids()));
+    RETURN_NOT_OK(_row->init(*(read_context->tablet_schema), *(_context->seek_columns)));
 
     return OLAP_SUCCESS;
 }
@@ -118,6 +120,7 @@ OLAPStatus BetaRowsetReader::next_block(RowBlock** block) {
     for (size_t row_idx = 0; row_idx < _input_block->num_rows(); ++row_idx) {
         // shallow copy row from input block to output block
         _output_block->get_row(row_idx, _row.get());
+        // this copy function will copy return_columns' row to seek_columns's row_cursor
         s = _input_block->copy_to_row_cursor(row_idx, _row.get());
         if (!s.ok()) {
             LOG(WARNING) << "failed to copy row: " << s.to_string();
diff --git a/be/src/olap/schema_change.cpp b/be/src/olap/schema_change.cpp
index e1589fb..269b706 100644
--- a/be/src/olap/schema_change.cpp
+++ b/be/src/olap/schema_change.cpp
@@ -1310,6 +1310,8 @@ OLAPStatus SchemaChangeHandler::_do_process_alter_tablet_v2(const TAlterTabletRe
         _reader_context.need_ordered_result = true;
         _reader_context.delete_handler = &delete_handler;
         _reader_context.return_columns = &return_columns;
+        // for schema change, seek_columns is the same to return_columns
+        _reader_context.seek_columns = &return_columns;
 
         for (auto& rs_reader : rs_readers) {
             rs_reader->init(&_reader_context);
@@ -1589,6 +1591,7 @@ OLAPStatus SchemaChangeHandler::process_alter_tablet(AlterTabletType type,
         _reader_context.need_ordered_result = true;
         _reader_context.delete_handler = &delete_handler;
         _reader_context.return_columns = &return_columns;
+        _reader_context.seek_columns = &return_columns;
 
         for (auto& rs_reader : rs_readers) {
             rs_reader->init(&_reader_context);
@@ -1696,6 +1699,7 @@ OLAPStatus SchemaChangeHandler::schema_version_convert(
     _reader_context.need_ordered_result = true;
     _reader_context.delete_handler = &delete_handler;
     _reader_context.return_columns = &return_columns;
+    _reader_context.seek_columns = &return_columns;
 
     RowsetReaderSharedPtr rowset_reader;
     RETURN_NOT_OK((*base_rowset)->create_reader(&rowset_reader));
diff --git a/be/test/olap/rowset/beta_rowset_test.cpp b/be/test/olap/rowset/beta_rowset_test.cpp
index 4d694d8..4823948 100644
--- a/be/test/olap/rowset/beta_rowset_test.cpp
+++ b/be/test/olap/rowset/beta_rowset_test.cpp
@@ -180,6 +180,7 @@ TEST_F(BetaRowsetTest, BasicFunctionTest) {
         reader_context.need_ordered_result = true;
         std::vector<uint32_t> return_columns = {0, 1};
         reader_context.return_columns = &return_columns;
+        reader_context.seek_columns = &return_columns;
 
         RowsetReaderSharedPtr rowset_reader;
         create_and_init_rowset_reader(rowset.get(), reader_context, &rowset_reader);
@@ -220,6 +221,7 @@ TEST_F(BetaRowsetTest, BasicFunctionTest) {
         reader_context.need_ordered_result = false;
         std::vector<uint32_t> return_columns = {2};
         reader_context.return_columns = &return_columns;
+        reader_context.seek_columns = &return_columns;
 
         RowsetReaderSharedPtr rowset_reader;
         create_and_init_rowset_reader(rowset.get(), reader_context, &rowset_reader);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org