Fix clear filter mistakenly in filter IN pushdown.

This commit is contained in:
XIAO-HOU
2024-04-02 12:44:55 +00:00
committed by ob-robot
parent f3aa96144c
commit d58caf4dc4
4 changed files with 14 additions and 7 deletions

View File

@ -2706,10 +2706,7 @@ void PushdownFilterInfo::reset()
}
allocator_ = nullptr;
}
if (OB_NOT_NULL(filter_)) {
filter_->clear();
filter_ = nullptr;
}
filter_ = nullptr;
param_ = nullptr;
context_ = nullptr;
is_inited_ = false;

View File

@ -903,7 +903,7 @@ public:
virtual void clear_in_datums()
{
if (WHITE_OP_IN == filter_.get_op_type()) {
datum_params_.reset();
datum_params_.clear();
param_set_.destroy();
}
}

View File

@ -60,6 +60,11 @@ ObTableIterParam::ObTableIterParam()
ObTableIterParam::~ObTableIterParam()
{
cg_read_info_handle_.reset();
if (nullptr != pushdown_filter_) {
pushdown_filter_->clear();
pushdown_filter_ = nullptr;
}
ObSSTableIndexFilterFactory::destroy_sstable_index_filter(sstable_index_filter_);
}
void ObTableIterParam::reset()
@ -79,7 +84,10 @@ void ObTableIterParam::reset()
need_trans_info_ = false;
is_same_schema_column_ = false;
pd_storage_flag_ = 0;
pushdown_filter_ = nullptr;
if (nullptr != pushdown_filter_) {
pushdown_filter_->clear();
pushdown_filter_ = nullptr;
}
ss_rowkey_prefix_cnt_ = 0;
op_ = nullptr;
output_exprs_ = nullptr;

View File

@ -1110,7 +1110,9 @@ int ObDictColumnDecoder::datum_dict_val_in_op(
bool hit_shortcut = false;
int cmp_ret = 0;
if (is_sorted_dict) {
if (filter.null_param_contained()) {
hit_shortcut = true;
} else if (is_sorted_dict) {
if (OB_FAIL(filter.cmp_func_(*min_it, filter.get_max_param(), cmp_ret))) {
LOG_WARN("Failed to compare min dict value and max param", KR(ret), K(*min_it), K(filter.get_max_param()));
} else if (cmp_ret > 0) {