[fix](set) incorrect result of set operator (#35607)
If there are duplicated expressions in the select list, the result will be incorrect. ## Proposed changes Issue Number: close #28438 <!--Describe your changes.-->
This commit is contained in:
@ -335,8 +335,8 @@ void VSetOperationNode<is_intersect>::add_result_columns(RowRefListWithFlags& va
|
||||
int& block_size) {
|
||||
auto it = value.begin();
|
||||
for (auto idx = _build_col_idx.begin(); idx != _build_col_idx.end(); ++idx) {
|
||||
const auto& column = *_build_block.get_by_position(idx->first).column;
|
||||
_mutable_cols[idx->second]->insert_from(column, it->row_num);
|
||||
const auto& column = *_build_block.get_by_position(idx->second).column;
|
||||
_mutable_cols[idx->first]->insert_from(column, it->row_num);
|
||||
}
|
||||
block_size++;
|
||||
}
|
||||
@ -426,7 +426,7 @@ Status VSetOperationNode<is_intersect>::extract_build_column(Block& block,
|
||||
const auto* column = block.get_by_position(result_col_id).column.get();
|
||||
raw_ptrs[i] = column;
|
||||
DCHECK_GE(result_col_id, 0);
|
||||
_build_col_idx.insert({result_col_id, i});
|
||||
_build_col_idx.insert({i, result_col_id});
|
||||
}
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user