fix bug: dynamic param not deep copy in recieve op

This commit is contained in:
obdev
2023-02-13 04:12:03 +00:00
committed by ob-robot
parent 947377240e
commit a5e5719fa7
8 changed files with 92 additions and 28 deletions

View File

@ -517,6 +517,8 @@ public:
OB_INLINE int eval_batch_param_value(ObEvalCtx &ctx, const ObBitVector &skip,
const int64_t size, TS &...args) const;
OB_INLINE int deep_copy_self_datum(ObEvalCtx &ctx) const;
// deep copy %datum to reserve buffer or new allocated buffer if reserved buffer is not enough.
OB_INLINE int deep_copy_datum(ObEvalCtx &ctx, const common::ObDatum &datum) const;
@ -1060,6 +1062,17 @@ OB_INLINE int ObExpr::eval_batch(ObEvalCtx &ctx,
return ret;
}
OB_INLINE int ObExpr::deep_copy_self_datum(ObEvalCtx &ctx) const
{
int ret = OB_SUCCESS;
const ObDatum &datum = locate_expr_datum(ctx);
if (OB_FAIL(deep_copy_datum(ctx, datum))) {
SQL_LOG(WARN, "fail to deep copy datum", K(ret), K(ctx), K(datum));
}
return ret;
}
OB_INLINE int ObExpr::deep_copy_datum(ObEvalCtx &ctx, const common::ObDatum &datum) const
{
int ret = common::OB_SUCCESS;