Clear sub expr evaluated flag of black filter when apply filter
This commit is contained in:
@ -720,14 +720,14 @@ int ObPushdownFilterExecutor::find_evaluated_datums(
|
||||
ObExpr *expr, const ObIArray<ObExpr*> &calc_exprs, ObIArray<ObExpr*> &eval_exprs)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (0 < expr->arg_cnt_ && is_contain(calc_exprs, expr)) {
|
||||
if (is_contain(calc_exprs, expr)) {
|
||||
if (OB_FAIL(eval_exprs.push_back(expr))) {
|
||||
LOG_WARN("failed to push back expr", K(ret));
|
||||
}
|
||||
}
|
||||
for (uint32_t i = 0; i < expr->arg_cnt_ && OB_SUCC(ret); ++i) {
|
||||
if (OB_FAIL(find_evaluated_datums(expr->args_[i], calc_exprs, eval_exprs))) {
|
||||
LOG_WARN("failed to find evaluated datums", K(ret));
|
||||
for (uint32_t i = 0; i < expr->arg_cnt_ && OB_SUCC(ret); ++i) {
|
||||
if (OB_FAIL(find_evaluated_datums(expr->args_[i], calc_exprs, eval_exprs))) {
|
||||
LOG_WARN("failed to find evaluated datums", K(ret));
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user