Fix clear filter mistakenly in filter IN pushdown.
This commit is contained in:
@ -2706,10 +2706,7 @@ void PushdownFilterInfo::reset()
|
||||
}
|
||||
allocator_ = nullptr;
|
||||
}
|
||||
if (OB_NOT_NULL(filter_)) {
|
||||
filter_->clear();
|
||||
filter_ = nullptr;
|
||||
}
|
||||
param_ = nullptr;
|
||||
context_ = nullptr;
|
||||
is_inited_ = false;
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
if (nullptr != pushdown_filter_) {
|
||||
pushdown_filter_->clear();
|
||||
pushdown_filter_ = nullptr;
|
||||
}
|
||||
ss_rowkey_prefix_cnt_ = 0;
|
||||
op_ = nullptr;
|
||||
output_exprs_ = nullptr;
|
||||
|
||||
@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user