fix pkey to non basic table bug in split_granule

This commit is contained in:
obdev
2023-03-17 05:14:09 +00:00
committed by ob-robot
parent 94d1826e8b
commit ba69498472

View File

@ -1374,16 +1374,20 @@ int ObPWAffinitizeGranuleSplitter::split_granule(ObGranulePumpArgs &args,
ARRAY_FOREACH_X(scan_ops, idx, cnt, OB_SUCC(ret)) { ARRAY_FOREACH_X(scan_ops, idx, cnt, OB_SUCC(ret)) {
const ObTableScanSpec *tsc = scan_ops.at(idx); const ObTableScanSpec *tsc = scan_ops.at(idx);
const ObGranuleIteratorSpec *gi = static_cast<const ObGranuleIteratorSpec *>(tsc->get_parent()); const ObGranuleIteratorSpec *gi = static_cast<const ObGranuleIteratorSpec *>(tsc->get_parent());
const ObOpSpec *gi_spec = tsc->get_parent();
while (OB_NOT_NULL(gi_spec) && PHY_GRANULE_ITERATOR != gi_spec->get_type()) {
gi_spec = gi_spec->get_parent();
}
ObGITaskSet total_task_set; ObGITaskSet total_task_set;
uint64_t op_id = OB_INVALID_ID; uint64_t op_id = OB_INVALID_ID;
uint64_t scan_key_id = OB_INVALID_ID; uint64_t scan_key_id = OB_INVALID_ID;
bool asc_gi_task_order = true; bool asc_gi_task_order = true;
ObGITaskArray &taskset_array = gi_task_array_result.at(idx + task_idx).taskset_array_; ObGITaskArray &taskset_array = gi_task_array_result.at(idx + task_idx).taskset_array_;
if (OB_ISNULL(tsc) || OB_ISNULL(gi)) { if (OB_ISNULL(tsc) || OB_ISNULL(gi_spec)) {
ret = OB_ERR_UNEXPECTED; ret = OB_ERR_UNEXPECTED;
LOG_WARN("get a null tsc/gi ptr", K(ret)); LOG_WARN("get a null tsc/gi ptr", K(ret), K(tsc), K(gi_spec));
} else if (FALSE_IT(op_id = tsc->get_id())) { } else if (FALSE_IT(op_id = tsc->get_id())) {
} else if (FALSE_IT(asc_gi_task_order = !ObGranuleUtil::desc_order(gi->gi_attri_flag_))) { } else if (FALSE_IT(asc_gi_task_order = !ObGranuleUtil::desc_order(static_cast<const ObGranuleIteratorSpec *>(gi_spec)->gi_attri_flag_))) {
} else if (FALSE_IT(scan_key_id = tsc->get_scan_key_id())) { } else if (FALSE_IT(scan_key_id = tsc->get_scan_key_id())) {
} else if (OB_FAIL(taskset_array.prepare_allocate(args.parallelism_))) { } else if (OB_FAIL(taskset_array.prepare_allocate(args.parallelism_))) {
LOG_WARN("failed to prepare allocate", K(ret)); LOG_WARN("failed to prepare allocate", K(ret));