fix pushdown state func into subplan bug
This commit is contained in:
@ -6507,8 +6507,16 @@ int ObOptimizerUtil::pushdown_filter_into_subquery(const ObDMLStmt &parent_stmt,
|
|||||||
can_pushdown = true;
|
can_pushdown = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (OB_SUCC(ret) && !can_pushdown) {
|
if (OB_SUCC(ret)) {
|
||||||
ret = remain_filters.assign(pushdown_filters);
|
if (can_pushdown) {
|
||||||
|
if (OB_FAIL(remove_special_exprs(candi_filters, remain_filters))) {
|
||||||
|
LOG_WARN("failed to remove special exprs", K(ret));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (OB_FAIL(remain_filters.assign(pushdown_filters))) {
|
||||||
|
LOG_WARN("failed to assign exprs", K(ret));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -6536,8 +6544,6 @@ int ObOptimizerUtil::check_pushdown_filter(const ObDMLStmt &parent_stmt,
|
|||||||
}
|
}
|
||||||
} else if (OB_FAIL(candi_filters.assign(pushdown_filters))) {
|
} else if (OB_FAIL(candi_filters.assign(pushdown_filters))) {
|
||||||
LOG_WARN("failed to assign exprs", K(ret));
|
LOG_WARN("failed to assign exprs", K(ret));
|
||||||
} else if (OB_FAIL(remove_special_exprs(candi_filters, remain_filters))) {
|
|
||||||
LOG_WARN("failed to remove special exprs", K(ret));
|
|
||||||
}
|
}
|
||||||
} else if (OB_FAIL(get_groupby_win_func_common_exprs(subquery,
|
} else if (OB_FAIL(get_groupby_win_func_common_exprs(subquery,
|
||||||
common_exprs,
|
common_exprs,
|
||||||
@ -6629,8 +6635,6 @@ int ObOptimizerUtil::check_pushdown_filter_overlap_index(const ObDMLStmt &stmt,
|
|||||||
} else if (is_match_index) {
|
} else if (is_match_index) {
|
||||||
if (OB_FAIL(candi_filters.assign(pushdown_filters))) {
|
if (OB_FAIL(candi_filters.assign(pushdown_filters))) {
|
||||||
LOG_WARN("failed to assign exprs", K(ret));
|
LOG_WARN("failed to assign exprs", K(ret));
|
||||||
} else if (OB_FAIL(remove_special_exprs(candi_filters, remain_filters))) {
|
|
||||||
LOG_WARN("failed to remove special exprs", K(ret));
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (OB_FAIL(remain_filters.assign(pushdown_filters))) {
|
if (OB_FAIL(remain_filters.assign(pushdown_filters))) {
|
||||||
|
|||||||
Reference in New Issue
Block a user