Fix wrong group by result bug (#1987)
This commit is contained in:
@ -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();
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -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);
|
||||
|
||||
Reference in New Issue
Block a user