fix ObRawExpr::add_child_flags bug
This commit is contained in:
@ -431,11 +431,11 @@ int ObRawExpr::pull_relation_id()
|
||||
int ObRawExpr::add_child_flags(const ObExprInfo &flags)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
ObExprInfo tmp = flags;
|
||||
if (INHERIT_MASK_BEGIN < tmp.bit_count()) {
|
||||
int64_t mask_end = INHERIT_MASK_END < tmp.bit_count() ?
|
||||
static_cast<int64_t>(INHERIT_MASK_END) : tmp.bit_count() - 1;
|
||||
if (tmp.do_mask(INHERIT_MASK_BEGIN, mask_end)) {
|
||||
if (INHERIT_MASK_BEGIN < flags.bit_count()) {
|
||||
ObExprInfo tmp(flags);
|
||||
int64_t mask_end = INHERIT_MASK_END < flags.bit_count() ?
|
||||
static_cast<int64_t>(INHERIT_MASK_END) : flags.bit_count() - 1;
|
||||
if (OB_FAIL(tmp.do_mask(INHERIT_MASK_BEGIN, mask_end))) {
|
||||
LOG_WARN("failed to do mask", K(ret));
|
||||
} else if (OB_FAIL(info_.add_members(tmp))) {
|
||||
LOG_WARN("failed to add expr info", K(ret));
|
||||
|
||||
@ -576,19 +576,19 @@ int ObRawExprInfoExtractor::visit(ObSysFunRawExpr &expr)
|
||||
|| T_FUN_SYS_XML_ELEMENT == expr.get_expr_type()
|
||||
|| T_FUN_SYS_XMLPARSE == expr.get_expr_type()
|
||||
|| IS_LABEL_SE_POLICY_FUNC(expr.get_expr_type()))
|
||||
&& expr.has_flag(IS_CONST_EXPR)) {
|
||||
expr.clear_flag(IS_CONST_EXPR);
|
||||
&& OB_FAIL(expr.clear_flag(IS_CONST_EXPR))) {
|
||||
LOG_WARN("failed to clear flag", K(ret));
|
||||
}
|
||||
|
||||
if (OB_SUCC(ret) && T_FUN_SYS_JSON_VALUE == expr.get_expr_type()) {
|
||||
if (expr.get_param_count() >= 12) {
|
||||
ObRawExpr * sub_expr = expr.get_param_expr(7);
|
||||
if (OB_NOT_NULL(sub_expr)) {
|
||||
sub_expr->clear_flag(IS_CONST_EXPR);
|
||||
}
|
||||
sub_expr = expr.get_param_expr(4);
|
||||
if (OB_NOT_NULL(sub_expr)) {
|
||||
sub_expr->clear_flag(IS_CONST_EXPR);
|
||||
if (OB_NOT_NULL(sub_expr)
|
||||
&& OB_FAIL(sub_expr->clear_flag(IS_CONST_EXPR))) {
|
||||
LOG_WARN("failed to clear flag", K(ret));
|
||||
} else if (OB_NOT_NULL(sub_expr = expr.get_param_expr(4))
|
||||
&& OB_FAIL(sub_expr->clear_flag(IS_CONST_EXPR))) {
|
||||
LOG_WARN("failed to clear flag", K(ret));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2137,9 +2137,10 @@ int ObRawExprResolverImpl::resolve_func_node_of_obj_access_idents(const ParseNod
|
||||
std::pair<ObRawExpr*, int64_t> param(index_expr, 0);
|
||||
if (OB_FAIL(access_ident.params_.push_back(param))) {
|
||||
LOG_WARN("push back error", K(ret));
|
||||
} else if (OB_FAIL(ctx_.parents_expr_info_.del_member(IS_PL_ACCESS_IDX))) {
|
||||
LOG_WARN("failed to del member", K(ret));
|
||||
}
|
||||
}
|
||||
ctx_.parents_expr_info_.del_member(IS_PL_ACCESS_IDX);
|
||||
for (int64_t i = start_child; i < ctx_.columns_->count(); ++i) {
|
||||
ctx_.columns_->at(i).is_access_root_ = false;
|
||||
}
|
||||
@ -5933,7 +5934,7 @@ int ObRawExprResolverImpl::process_is_json_node(const ParseNode *node, ObRawExpr
|
||||
OZ(SMART_CALL(recursive_resolve(node->children_[i], para_expr)));
|
||||
CK(OB_NOT_NULL(para_expr));
|
||||
if (OB_SUCC(ret)) {
|
||||
para_expr->clear_flag(IS_CONST_EXPR);
|
||||
OZ(para_expr->clear_flag(IS_CONST_EXPR));
|
||||
OZ(func_expr->add_param_expr(para_expr));
|
||||
}
|
||||
} //end for
|
||||
|
||||
Reference in New Issue
Block a user