[CP] fix calc prefix sort cost bug
This commit is contained in:
@ -770,25 +770,7 @@ int ObOptEstCostModel::cost_prefix_sort(const ObSortCostInfo &cost_info,
|
||||
} else {
|
||||
num_rows_per_group = rows / num_distinct_rows;
|
||||
}
|
||||
if (topn_count >= 0 && num_rows_per_group > 0) {
|
||||
// topn prefix sort
|
||||
double remaining_count = topn_count;
|
||||
while (remaining_count > 0 && num_rows_per_group > 0) {
|
||||
ObSortCostInfo cost_info_per_group(num_rows_per_group,
|
||||
width,
|
||||
prefix_pos,
|
||||
ordering_per_group,
|
||||
false);
|
||||
cost_info_per_group.topn_ = remaining_count;
|
||||
if (OB_FAIL(cost_sort(cost_info_per_group, cost_per_group))) {
|
||||
LOG_WARN("failed to cost sort", K(ret));
|
||||
} else {
|
||||
cost += cost_per_group;
|
||||
remaining_count -= num_rows_per_group;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// normal prefix sort
|
||||
if (OB_SUCC(ret)) {
|
||||
ObSortCostInfo cost_info_per_group(num_rows_per_group,
|
||||
width,
|
||||
prefix_pos,
|
||||
@ -798,7 +780,12 @@ int ObOptEstCostModel::cost_prefix_sort(const ObSortCostInfo &cost_info,
|
||||
cost_info.sel_ctx_);
|
||||
if (OB_FAIL(cost_sort(cost_info_per_group, cost_per_group))) {
|
||||
LOG_WARN("failed to calc cost", K(ret));
|
||||
} else if (topn_count >= 0 && num_rows_per_group > 0) {
|
||||
// topn prefix sort
|
||||
cost = cost_per_group * (topn_count / num_rows_per_group);
|
||||
LOG_TRACE("OPT: [COST PREFIX TOPN SORT]", K(cost), K(cost_per_group), K(topn_count), K(num_rows_per_group));
|
||||
} else {
|
||||
// normal prefix sort
|
||||
cost = cost_per_group * num_distinct_rows;
|
||||
LOG_TRACE("OPT: [COST PREFIX SORT]", K(cost), K(cost_per_group), K(num_distinct_rows));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user