PDML delete with barrier should not throw MEMORY_EXCEED error.
This commit is contained in:
@ -93,12 +93,11 @@ int ObPDMLOpDataDriver::destroy()
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ObPDMLOpDataDriver::set_with_barrier(uint64_t op_id,
|
int ObPDMLOpDataDriver::set_dh_barrier_param(uint64_t op_id,
|
||||||
const ObPxMultiPartModifyOpInput *modify_input)
|
const ObPxMultiPartModifyOpInput *modify_input)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
op_id_ = op_id;
|
op_id_ = op_id;
|
||||||
with_barrier_ = true;
|
|
||||||
if (OB_ISNULL(modify_input)) {
|
if (OB_ISNULL(modify_input)) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
LOG_WARN("table modify is null", K(ret));
|
LOG_WARN("table modify is null", K(ret));
|
||||||
|
|||||||
@ -67,7 +67,7 @@ public:
|
|||||||
|
|
||||||
int destroy();
|
int destroy();
|
||||||
|
|
||||||
int set_with_barrier(uint64_t op_id, const ObPxMultiPartModifyOpInput *modify_input);
|
int set_dh_barrier_param(uint64_t op_id, const ObPxMultiPartModifyOpInput *modify_input);
|
||||||
|
|
||||||
int get_next_row(ObExecContext &ctx, const ObExprPtrIArray &row);
|
int get_next_row(ObExecContext &ctx, const ObExprPtrIArray &row);
|
||||||
private:
|
private:
|
||||||
|
|||||||
@ -65,14 +65,15 @@ int ObPxMultiPartDeleteOp::inner_open()
|
|||||||
LOG_WARN("failed to inner open", K(ret));
|
LOG_WARN("failed to inner open", K(ret));
|
||||||
} else if (OB_FAIL(ObDMLService::init_del_rtdef(dml_rtctx_, del_rtdef_, MY_SPEC.del_ctdef_))) {
|
} else if (OB_FAIL(ObDMLService::init_del_rtdef(dml_rtctx_, del_rtdef_, MY_SPEC.del_ctdef_))) {
|
||||||
LOG_WARN("init delete rtdef failed", K(ret));
|
LOG_WARN("init delete rtdef failed", K(ret));
|
||||||
} else if (OB_FAIL(data_driver_.init(get_spec(), ctx_.get_allocator(), del_rtdef_, this, this, this, false))) {
|
} else if (OB_FAIL(data_driver_.init(get_spec(), ctx_.get_allocator(), del_rtdef_, this, this, this, false, MY_SPEC.with_barrier_))) {
|
||||||
LOG_WARN("failed to init data driver", K(ret));
|
LOG_WARN("failed to init data driver", K(ret));
|
||||||
} else if (MY_SPEC.with_barrier_) {
|
} else if (MY_SPEC.with_barrier_) {
|
||||||
if (OB_ISNULL(input_)) {
|
if (OB_ISNULL(input_)) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
LOG_WARN("the input is null", K(ret));
|
LOG_WARN("the input is null", K(ret));
|
||||||
} else if (OB_FAIL(data_driver_.set_with_barrier(MY_SPEC.get_id(),
|
} else if (OB_FAIL(data_driver_.set_dh_barrier_param(
|
||||||
static_cast<const ObPxMultiPartModifyOpInput *>(input_)))) {
|
MY_SPEC.get_id(),
|
||||||
|
static_cast<const ObPxMultiPartModifyOpInput *>(input_)))) {
|
||||||
LOG_WARN("faile to set barrier", K(ret));
|
LOG_WARN("faile to set barrier", K(ret));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user