[FIX](filter) update for filter_by_select logic (#25007)

this pr is aim to update for filter_by_select logic and change delete limit

only support scala type in delete statement where condition
only support column nullable and predict column support filter_by_select logic, because we can not push down non-scala type to storage layer to pack in predict column but do filter logic
This commit is contained in:
amory
2023-10-09 21:27:40 +08:00
committed by GitHub
parent 37247ac449
commit 53b46b7e6c
23 changed files with 125 additions and 345 deletions

View File

@ -262,16 +262,6 @@ size_t ColumnStruct::filter(const Filter& filter) {
return result_size;
}
Status ColumnStruct::filter_by_selector(const uint16_t* sel, size_t sel_size, IColumn* col_ptr) {
auto to = reinterpret_cast<vectorized::ColumnStruct*>(col_ptr);
const size_t tuple_size = columns.size();
DCHECK_EQ(to->tuple_size(), tuple_size);
for (size_t i = 0; i < tuple_size; ++i) {
static_cast<void>(columns[i]->filter_by_selector(sel, sel_size, &to->get_column(i)));
}
return Status::OK();
}
ColumnPtr ColumnStruct::permute(const Permutation& perm, size_t limit) const {
const size_t tuple_size = columns.size();
Columns new_columns(tuple_size);