[fix]:sync json bugfix

This commit is contained in:
obdev
2022-05-20 14:31:56 +08:00
committed by wangzelin.wzl
parent 4177759770
commit 206701c95d
2 changed files with 13 additions and 7 deletions

View File

@ -618,7 +618,13 @@ int ObExprInOrNotIn::calc_resultN(ObObj& result, const ObObj* objs, int64_t para
if (lib::is_oracle_mode() && is_param_is_ext_type_oracle()) {
ret = OB_NOT_SUPPORTED;
} else {
const bool hashset_lookup = need_hash(expr_ctx.exec_ctx_);
bool hash_json_type = false;
for (int i = 0; i < param_num && !hash_json_type; ++i) {
if (ob_is_json(objs[i].get_type())) {
hash_json_type = true;
}
}
const bool hashset_lookup = hash_json_type && need_hash(expr_ctx.exec_ctx_);
bool fall_back = false;
if (hashset_lookup) {
if (row_dimension_ == 1) {
@ -1186,7 +1192,7 @@ int ObExprInOrNotIn::cg_expr_without_row(ObIAllocator& allocator, const ObRawExp
for (int i = 0; i < rt_expr.inner_func_cnt_; i++) {
rt_expr.inner_functions_[i] = (void*)func_ptr;
}
if (!is_param_all_const()) {
if (!is_param_all_const() || (ob_is_json(left_type) || ob_is_json(right_type))) {
rt_expr.eval_func_ = &ObExprInOrNotIn::eval_in_without_row_fallback;
} else {
rt_expr.eval_func_ = &ObExprInOrNotIn::eval_in_without_row;