[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

@ -663,6 +663,12 @@ bool VScanNode::_is_predicate_acting_on_slot(
if (_slot_id_to_value_range.end() == entry) {
return false;
}
// if the slot is a complex type(array/map/struct), we do not push down the predicate, because
// we delete pack these type into predict column, and origin pack action is wrong. we should
// make sense to push down this complex type after we delete predict column.
if (is_complex_type(remove_nullable(slot_ref->data_type()))) {
return false;
}
*slot_desc = entry->second.first;
DCHECK(child_contains_slot != nullptr);
if (child_contains_slot->type().type != (*slot_desc)->type().type ||