[ARRAY] hash join bugfix
This commit is contained in:
@ -2464,6 +2464,9 @@ int ObHashJoinVecOp::calc_hash_value_and_skip_null(const ObIArray<ObExpr*> &join
|
||||
ObExpr *expr = join_keys.at(idx); // expr ptr check in cg, not check here
|
||||
if (OB_FAIL(expr->eval_vector(eval_ctx_, *brs))) {
|
||||
LOG_WARN("eval failed", K(ret));
|
||||
} else if (OB_UNLIKELY(expr->is_nested_expr()) &&
|
||||
OB_FAIL(expr->cast_to_uniform(brs->size_, eval_ctx_, brs->skip_))) {
|
||||
LOG_WARN("nested expr cast to uniform failed", K(ret));
|
||||
} else {
|
||||
const bool is_batch_seed = (idx > 0);
|
||||
ObIVector *vector = expr->get_vector(eval_ctx_);
|
||||
|
||||
@ -301,6 +301,18 @@ int ObRawExpr::deep_copy(ObIRawExprCopier &copier,
|
||||
LOG_WARN("failed to assign other expr", K(ret));
|
||||
} else if (OB_FAIL(inner_deep_copy(copier))) {
|
||||
LOG_WARN("failed to deep copy new allocator", K(ret));
|
||||
} else if (OB_UNLIKELY(other.get_attr_count() > 0) && get_attr_count() == 0) {
|
||||
for (int64_t i = 0; i < other.get_attr_count() && OB_SUCC(ret); i++) {
|
||||
ObRawExpr *attr_expr = NULL;
|
||||
if (OB_FAIL(copier.copy(other.get_attr_expr(i), attr_expr))) {
|
||||
LOG_WARN("failed to copy attr expr", K(ret));
|
||||
} else if (OB_ISNULL(attr_expr)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("null expr", K(ret));
|
||||
} else if (OB_FAIL(add_attr_expr(attr_expr))) {
|
||||
LOG_WARN("fail to add attr expr", K(ret));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user