[fix](map) the implementation of ColumnMap::replicate was incorrect" (#26647)
This commit is contained in:
@ -433,14 +433,24 @@ ColumnPtr ColumnMap::replicate(const Offsets& offsets) const {
|
||||
return res;
|
||||
}
|
||||
|
||||
void ColumnMap::replicate(const uint32_t* indexs, size_t target_size, IColumn& column) const {
|
||||
void ColumnMap::replicate(const uint32_t* indices, size_t target_size, IColumn& column) const {
|
||||
auto& res = reinterpret_cast<ColumnMap&>(column);
|
||||
|
||||
// Make a temp column array for reusing its replicate function
|
||||
ColumnArray::create(keys_column->assume_mutable(), offsets_column->assume_mutable())
|
||||
->replicate(indexs, target_size, res.keys_column->assume_mutable_ref());
|
||||
ColumnArray::create(values_column->assume_mutable(), offsets_column->assume_mutable())
|
||||
->replicate(indexs, target_size, res.values_column->assume_mutable_ref());
|
||||
auto keys_array =
|
||||
ColumnArray::create(keys_column->assume_mutable(), offsets_column->assume_mutable());
|
||||
|
||||
auto result_array = ColumnArray::create(res.keys_column->assume_mutable(),
|
||||
res.offsets_column->assume_mutable());
|
||||
keys_array->replicate(indices, target_size, result_array->assume_mutable_ref());
|
||||
|
||||
result_array = ColumnArray::create(res.values_column->assume_mutable(),
|
||||
res.offsets_column->clone_empty());
|
||||
|
||||
auto values_array =
|
||||
ColumnArray::create(values_column->assume_mutable(), offsets_column->assume_mutable());
|
||||
|
||||
/// FIXME: To reuse the replicate of ColumnArray, the offsets column was replicated twice
|
||||
values_array->replicate(indices, target_size, result_array->assume_mutable_ref());
|
||||
}
|
||||
|
||||
MutableColumnPtr ColumnMap::get_shrinked_column() {
|
||||
|
||||
Reference in New Issue
Block a user