fix group scan lookup release_op core
This commit is contained in:
@ -123,7 +123,6 @@ int ObDASGroupScanOp::do_local_index_lookup()
|
||||
op->set_is_group_scan(true);
|
||||
OZ(op->init_group_scan_iter(cur_group_idx_,
|
||||
group_size_,
|
||||
op_alloc_,
|
||||
scan_ctdef_->group_id_expr_));
|
||||
}
|
||||
}
|
||||
@ -266,29 +265,20 @@ int ObGroupLookupOp::init_group_range(int64_t cur_group_idx, int64_t group_size)
|
||||
|
||||
int ObGroupLookupOp::init_group_scan_iter(int64_t cur_group_idx,
|
||||
int64_t group_size,
|
||||
ObIAllocator &allocator,
|
||||
ObExpr *group_id_expr)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
void *buf = allocator.alloc(sizeof(ObGroupScanIter));
|
||||
if (OB_ISNULL(buf)) {
|
||||
ret = OB_ALLOCATE_MEMORY_FAILED;
|
||||
LOG_WARN("group scan iter buf allocated failed", K(ret));
|
||||
} else {
|
||||
ObGroupScanIter *group_iter = new(buf)(ObGroupScanIter);
|
||||
lookup_iter_ = group_iter;
|
||||
bool is_vectorized = lookup_rtdef_->p_pd_expr_op_->is_vectorized();
|
||||
|
||||
int64_t max_row_store_size = is_vectorized ? lookup_rtdef_->eval_ctx_->max_batch_size_: 1;
|
||||
group_iter->init_group_range(cur_group_idx, group_size);
|
||||
OZ(group_iter->init_row_store(lookup_ctdef_->result_output_,
|
||||
group_iter_.init_group_range(cur_group_idx, group_size);
|
||||
OZ(group_iter_.init_row_store(lookup_ctdef_->result_output_,
|
||||
*lookup_rtdef_->eval_ctx_,
|
||||
lookup_rtdef_->stmt_allocator_,
|
||||
max_row_store_size,
|
||||
group_id_expr,
|
||||
&group_iter->get_result_tmp_iter(),
|
||||
&group_iter_.get_result_tmp_iter(),
|
||||
lookup_rtdef_->need_check_output_datum_));
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -22,9 +22,12 @@ class ObGroupLookupOp : public ObLocalIndexLookupOp
|
||||
{
|
||||
public:
|
||||
ObGroupLookupOp() : ObLocalIndexLookupOp(ObNewRowIterator::IterType::ObGroupLookupOp),
|
||||
group_iter_(),
|
||||
index_group_cnt_(1),
|
||||
lookup_group_cnt_(1)
|
||||
{}
|
||||
{
|
||||
lookup_iter_ = &group_iter_;
|
||||
}
|
||||
virtual ~ObGroupLookupOp();
|
||||
virtual void reset() override
|
||||
{
|
||||
@ -45,10 +48,10 @@ public:
|
||||
virtual bool need_next_index_batch() const override;
|
||||
virtual int init_group_scan_iter(int64_t cur_group_idx,
|
||||
int64_t group_size,
|
||||
ObIAllocator &allocator,
|
||||
ObExpr *group_id_expr);
|
||||
virtual int switch_lookup_scan_group() override;
|
||||
public:
|
||||
ObGroupScanIter group_iter_;
|
||||
int64_t index_group_cnt_; // number of groups fetched from index table
|
||||
int64_t lookup_group_cnt_; // number of groups fetched from lookup table
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user