fix white filter pushdown judgement

This commit is contained in:
chaser-ch
2023-02-24 13:41:33 +00:00
committed by ob-robot
parent f372386816
commit 431bb53903
2 changed files with 9 additions and 8 deletions

View File

@ -169,11 +169,12 @@ int ObPushdownFilterConstructor::is_white_mode(const ObRawExpr* raw_expr, bool &
ret = OB_ERR_UNEXPECTED;
LOG_WARN("Unexpected null child expr", K(ret), K(i));
} else {
const ObObjMeta &param_meta = child->get_result_meta();
need_check = child->is_const_expr();
if (need_check) {
const ObObjMeta &param_meta = child->get_result_meta();
need_check = param_meta.is_null() ||
(col_meta.get_type() == param_meta.get_type() && col_meta.get_collation_type() == param_meta.get_collation_type());
if (need_check && !param_meta.is_null()) {
const ObCmpOp cmp_op = sql::ObRelationalExprOperator::get_cmp_op(raw_expr->get_expr_type());
obj_cmp_func cmp_func = nullptr;
need_check = ObObjCmpFuncs::can_cmp_without_cast(col_meta, param_meta, cmp_op, cmp_func);
}
}
}

View File

@ -1218,10 +1218,6 @@ public:
static int eval_pl_udt_compare(const ObExpr &expr, ObEvalCtx &ctx, ObDatum &expr_datum);
protected:
static bool is_int_cmp_const_str(const ObExprResType *type1,
const ObExprResType *type2,
common::ObObjType &cmp_type);
OB_INLINE static common::ObCmpOp get_cmp_op(const ObExprOperatorType type) {
/*
* maybe we can use associative array(table lookup) to get a better
@ -1278,6 +1274,10 @@ protected:
return cmp_op;
}
protected:
static bool is_int_cmp_const_str(const ObExprResType *type1,
const ObExprResType *type2,
common::ObObjType &cmp_type);
OB_INLINE static bool is_expected_cmp_ret(const common::ObCmpOp cmp_op,
const int cmp_ret)
{