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);
|
op->set_is_group_scan(true);
|
||||||
OZ(op->init_group_scan_iter(cur_group_idx_,
|
OZ(op->init_group_scan_iter(cur_group_idx_,
|
||||||
group_size_,
|
group_size_,
|
||||||
op_alloc_,
|
|
||||||
scan_ctdef_->group_id_expr_));
|
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,
|
int ObGroupLookupOp::init_group_scan_iter(int64_t cur_group_idx,
|
||||||
int64_t group_size,
|
int64_t group_size,
|
||||||
ObIAllocator &allocator,
|
|
||||||
ObExpr *group_id_expr)
|
ObExpr *group_id_expr)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
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();
|
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;
|
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);
|
group_iter_.init_group_range(cur_group_idx, group_size);
|
||||||
OZ(group_iter->init_row_store(lookup_ctdef_->result_output_,
|
OZ(group_iter_.init_row_store(lookup_ctdef_->result_output_,
|
||||||
*lookup_rtdef_->eval_ctx_,
|
*lookup_rtdef_->eval_ctx_,
|
||||||
lookup_rtdef_->stmt_allocator_,
|
lookup_rtdef_->stmt_allocator_,
|
||||||
max_row_store_size,
|
max_row_store_size,
|
||||||
group_id_expr,
|
group_id_expr,
|
||||||
&group_iter->get_result_tmp_iter(),
|
&group_iter_.get_result_tmp_iter(),
|
||||||
lookup_rtdef_->need_check_output_datum_));
|
lookup_rtdef_->need_check_output_datum_));
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,9 +22,12 @@ class ObGroupLookupOp : public ObLocalIndexLookupOp
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ObGroupLookupOp() : ObLocalIndexLookupOp(ObNewRowIterator::IterType::ObGroupLookupOp),
|
ObGroupLookupOp() : ObLocalIndexLookupOp(ObNewRowIterator::IterType::ObGroupLookupOp),
|
||||||
|
group_iter_(),
|
||||||
index_group_cnt_(1),
|
index_group_cnt_(1),
|
||||||
lookup_group_cnt_(1)
|
lookup_group_cnt_(1)
|
||||||
{}
|
{
|
||||||
|
lookup_iter_ = &group_iter_;
|
||||||
|
}
|
||||||
virtual ~ObGroupLookupOp();
|
virtual ~ObGroupLookupOp();
|
||||||
virtual void reset() override
|
virtual void reset() override
|
||||||
{
|
{
|
||||||
@ -45,10 +48,10 @@ public:
|
|||||||
virtual bool need_next_index_batch() const override;
|
virtual bool need_next_index_batch() const override;
|
||||||
virtual int init_group_scan_iter(int64_t cur_group_idx,
|
virtual int init_group_scan_iter(int64_t cur_group_idx,
|
||||||
int64_t group_size,
|
int64_t group_size,
|
||||||
ObIAllocator &allocator,
|
|
||||||
ObExpr *group_id_expr);
|
ObExpr *group_id_expr);
|
||||||
virtual int switch_lookup_scan_group() override;
|
virtual int switch_lookup_scan_group() override;
|
||||||
public:
|
public:
|
||||||
|
ObGroupScanIter group_iter_;
|
||||||
int64_t index_group_cnt_; // number of groups fetched from index table
|
int64_t index_group_cnt_; // number of groups fetched from index table
|
||||||
int64_t lookup_group_cnt_; // number of groups fetched from lookup table
|
int64_t lookup_group_cnt_; // number of groups fetched from lookup table
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user