[Bug](array) fix array column core dump in get_shrinked_column as not check type (#33295)

* [Bug](array) fix array column core dump in get_shrinked_column as not check type

* add function could_shrinked_column
This commit is contained in:
zhangstar333
2024-04-08 07:26:42 +08:00
committed by yiguolei
parent 1b3e4322e8
commit ebbfb06162
12 changed files with 66 additions and 10 deletions

View File

@ -295,13 +295,22 @@ ColumnPtr ColumnStruct::replicate(const Offsets& offsets) const {
return ColumnStruct::create(new_columns);
}
bool ColumnStruct::could_shrinked_column() {
const size_t tuple_size = columns.size();
for (size_t i = 0; i < tuple_size; ++i) {
if (columns[i]->could_shrinked_column()) {
return true;
}
}
return false;
}
MutableColumnPtr ColumnStruct::get_shrinked_column() {
const size_t tuple_size = columns.size();
MutableColumns new_columns(tuple_size);
for (size_t i = 0; i < tuple_size; ++i) {
if (columns[i]->is_column_string() || columns[i]->is_column_array() ||
columns[i]->is_column_map() || columns[i]->is_column_struct()) {
if (columns[i]->could_shrinked_column()) {
new_columns[i] = columns[i]->get_shrinked_column();
} else {
new_columns[i] = columns[i]->get_ptr();