[VECTOR] fix reset attrs at the wrong address
This commit is contained in:
parent
4f3ee065a7
commit
1584d80d64
@ -714,7 +714,7 @@ int ObExpr::eval_one_datum_of_batch(ObEvalCtx &ctx, common::ObDatum *&datum) con
|
||||
need_evaluate = true;
|
||||
to_bit_vector(frame + eval_flags_off_)->reset(ctx.get_batch_size());
|
||||
reset_datums_ptr(frame, ctx.get_batch_size());
|
||||
reset_attrs_datums(frame, ctx.get_batch_size());
|
||||
reset_attrs_datums(ctx);
|
||||
info->evaluated_ = true;
|
||||
info->cnt_ = ctx.get_batch_size();
|
||||
info->point_to_frame_ = true;
|
||||
@ -779,7 +779,7 @@ int ObExpr::do_eval_batch(ObEvalCtx &ctx,
|
||||
// FIXME bin.lb: maybe we can optimize this by ObEvalInfo::point_to_frame_
|
||||
if (!info->evaluated_) {
|
||||
reset_datums_ptr(frame, size);
|
||||
reset_attrs_datums(frame, size);
|
||||
reset_attrs_datums(ctx);
|
||||
info->notnull_ = false;
|
||||
info->point_to_frame_ = true;
|
||||
info->evaluated_ = true;
|
||||
@ -1113,22 +1113,11 @@ int ObExpr::init_vector(ObEvalCtx &ctx,
|
||||
return ret;
|
||||
}
|
||||
|
||||
void ObExpr::reset_attr_datums_ptr(char *frame, const int64_t size)
|
||||
{
|
||||
ObDatum *datum = reinterpret_cast<ObDatum *>(frame + datum_off_);
|
||||
ObDatum *datum_end = datum + size;
|
||||
char *ptr = frame + res_buf_off_;
|
||||
for (; datum < datum_end; datum += 1) {
|
||||
if (datum->ptr_ != ptr) {
|
||||
datum->ptr_ = ptr;
|
||||
}
|
||||
ptr += res_buf_len_;
|
||||
}
|
||||
}
|
||||
|
||||
void ObExpr::reset_attrs_datums(char *frame, const int64_t size) const
|
||||
void ObExpr::reset_attrs_datums(ObEvalCtx &ctx) const
|
||||
{
|
||||
int64_t size = ctx.get_batch_size();
|
||||
for (uint32_t idx = 0; idx < attrs_cnt_; ++idx) {
|
||||
char *frame = ctx.frames_[attrs_[idx]->frame_idx_];
|
||||
attrs_[idx]->reset_datums_ptr(frame, size);
|
||||
}
|
||||
}
|
||||
|
@ -742,8 +742,8 @@ public:
|
||||
OB_INLINE void unset_null(ObEvalCtx &ctx, int64_t batch_idx) {
|
||||
get_nulls(ctx).unset(batch_idx);
|
||||
}
|
||||
void reset_attr_datums_ptr(char *frame, const int64_t size);
|
||||
void reset_attrs_datums(char *frame, const int64_t size) const;
|
||||
|
||||
void reset_attrs_datums(ObEvalCtx &ctx) const;
|
||||
OB_INLINE bool is_nested_expr() const { return attrs_cnt_ > 0; }
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user