[CP] fix px ordered coord rescan bug

This commit is contained in:
obdev
2024-02-09 05:29:38 +00:00
committed by ob-robot
parent 41954f954c
commit b58a0a8d0c
3 changed files with 11 additions and 1 deletions

View File

@ -464,6 +464,15 @@ int ObPxOrderedCoordOp::next_rows(ObReceiveRowReader &reader, int64_t max_row_cn
return ret;
}
int ObPxOrderedCoordOp::inner_rescan()
{
finish_ch_cnt_ = 0;
all_rows_finish_ = false;
destroy_readers();
int ret = ObPxCoordOp::inner_rescan();
return ret;
}
int ObPxOrderedCoordOp::receive_channel_root_dfo(ObExecContext &ctx,
ObDfo &parent,
ObPxTaskChSets &parent_ch_sets)

View File

@ -105,6 +105,7 @@ public:
public:
virtual int inner_open() override;
virtual void destroy() override;
virtual int inner_rescan() override;
virtual int inner_close() override;
virtual int inner_get_next_row() override;

View File

@ -5401,7 +5401,7 @@ int ObLogicalOperator::find_px_for_batch_rescan(const log_op_def::ObLogOpType op
/*do nothing*/
} else if (LOG_EXCHANGE == get_type()) {
ObLogExchange *op = static_cast<ObLogExchange *>(this);
if (op->is_rescanable()) {
if (op->is_rescanable() && !op->is_task_order()) {
op->set_px_batch_op_id(op_id);
op->set_px_batch_op_type(op_type);
find = true;